1. 어텐션 연산
우리는 글을 읽을 때 모든 단어에 동일한 중요도를 부여하지 않습니다. 어떤 단어들은 특별히 주목하고, 다른 단어들은 상대적으로 덜 집중하며 전체 맥락을 파악합니다. 트랜스포머 모델의 핵심인 어텐션 연산은 이러한 인간의 읽기 방식을 모방한 연산입니다.
1) 어텐션이란 무엇인가?
어텐션은 단어들 사이의 관계를 파악하여 문맥을 이해하는 방식으로, 다음과 같은 과정으로 작동합니다:
- 단어와 단어 사이의 관계를 계산하여 관련성의 깊이를 판단
- 관련이 깊은 단어는 더 많이, 관련이 적은 단어는 더 적게 맥락에 반영
이 연산은 모델이 문장 내에서 단어 간의 복잡한 관계를 이해하고, 문맥에 따라 단어의 의미를 적절히 해석할 수 있게 합니다.
2. QKV(쿼리, 키, 값) 모델 이해하기
트랜스포머 아키텍처를 개발한 연구진은 정보 검색 분야에서 영감을 받아 쿼리(Query), 키(Key), 값(Value)이라는 개념을 도입했습니다.
1) QKV 모델의 역할
구성 요소 역할 검색 시스템 예시
역할 | 설명 | 검색 예시 |
쿼리(Query) | 우리가 찾고자 하는 정보 | 사용자의 검색어 |
키(Key) | 쿼리와의 관련성을 판단하기 위한 특징 | 문서의 제목, 저자 |
값(Value) | 실제로 활용하게 될 정보 | 문서의 본문 내용 |
이 구조에서 모델은 쿼리와 키의 관련도를 계산한 뒤, 가장 관련이 깊은 키에 연결된 값을 활용합니다. 이를 통해 맥락에 따라 단어의 의미를 다르게 해석할 수 있게 됩니다.
2) 규칙 기반 방법의 한계
어텐션을 구현하기 위한 초기 시도로, 몇 가지 규칙 기반 방법들이 있었습니다:
- 모든 단어를 동등하게 반영하는 방식
- 문제점: 정보의 우선순위를 표현할 수 없음
- 거리 기반 가중치 적용
- 가정: "가까운 단어일수록 관련이 깊다"
- 문제점: 문맥과 무관하게 단순 거리만으로 의미 관계를 결정하는 한계
이러한 규칙 기반 방법들의 핵심 문제는 유연성 부족입니다. 예를 들어, "파리"를 "박물관"으로 바꿔도 동일한 계산 결과가 나온다면, 문맥에 따른 의미 변화를 포착할 수 없습니다.
3) 벡터 기반 어텐션의 등장
이러한 한계를 극복하기 위해, 트랜스포머는 토큰의 임베딩 벡터를 활용한 계산 방식을 도입했습니다. 벡터 간 연산을 통해 관련도를 계산하면 문자열이 일치하지 않더라도 의미적으로 유사한 정보를 활용할 수 있습니다. 하지만 이 방식에도 문제가 있었습니다.
- 쿼리와 키의 임베딩이 동일할 경우, 관련도가 지나치게 높게 계산되어 주변 맥락 반영이 미흡해질 수 있음
- 직접적인 관련성은 잘 포착하지만, 문법적 관계와 같은 간접적 관련성은 반영하기 어려움
4) 가중치 도입을 통한 문제 해결
트랜스포머는 토큰 임베딩을 변환하는 학습 가능한 가중치를 도입하여 이러한 문제를 해결했습니다:
- 쿼리-키 임베딩 일치 문제 해결: 서로 다른 가중치 행렬을 통해 동일한 임베딩도 다르게 변환
- 간접 관계 반영: 가중치 행렬이 단어의 위치, 역할, 문장 구조 등을 학습하여 간접적 관계도 포착
결과적으로, 트랜스포머는 QKV 가중치를 통해 문맥에 따라 단어 간 관계를 유연하게 계산하고 적절히 반영하는 방법을 학습합니다.
5) 스케일 점곱 방식
"Attention is All You Need" 논문에서 처음 소개된 스케일 점곱 어텐션의 연산 과정은 다음과 같습니다.
- 쿼리와 키를 곱한 후, 임베딩 차원의 제곱근으로 나눔 (분산 증가 방지)
- 계산된 스코어에 소프트맥스를 적용하여 합이 1이 되는 가중치로 변환
- 이 가중치와 값을 곱해 최종 출력 계산
3. 멀티 헤드 어텐션
한 번의 어텐션 연산으로는 문장 내 복잡한 관계를 모두 포착하기 어렵습니다. 트랜스포머는 여러 개의 어텐션을 동시에 계산하는 '멀티 헤드 어텐션'을 도입해 이 문제를 해결했습니다.
1) 멀티 헤드 어텐션의 작동 원리
- 쿼리, 키, 값을 헤드 수만큼 분할하여 각각의 어텐션 연산 수행
- 각 헤드의 결과를 결합하여 입력과 동일한 형태로 변환
- 선형층을 통과시켜 최종 결과 생성
이를 통해 모델은 하나의 문장에서 다양한 관계와 패턴을 동시에 파악할 수 있습니다.
4. 트랜스포머의 핵심 구성 요소
1) 층 정규화(Layer Normalization)
딥러닝 모델에서 데이터가 일정한 분포를 유지하도록 만드는 정규화는 학습 안정성과 속도에 중요한 영향을 미칩니다.
(1) 배치 정규화 vs 층 정규화
- 배치 정규화
- 배치 내 데이터 간 정규화 수행
- 이미지 처리에 주로 사용
- 문제점: 자연어 처리에서는 문장 길이가 다양하여 효과적이지 않음
- 층 정규화
- 특정 차원에서 정규화 수행
- 각 토큰 임베딩의 평균과 표준편차를 구해 정규화
- 자연어 처리에 적합
(2) 정규화 적용 방식
- 사후 정규화: 원 트랜스포머 논문 방식 - 어텐션과 피드 포워드 층 이후에 정규화 적용
- 사전 정규화: 최신 방식 - 먼저 정규화 적용 후 다른 층 통과 (학습 안정성 향상)
2) 피드 포워드 층(Feed-Forward Layer)
트랜스포머에서 피드 포워드 층은 데이터의 특징을 학습하는 완전 연결 층으로, 다음과 같은 역할을 합니다:
- 멀티 헤드 어텐션이 단어 간 관계를 파악한다면, 피드 포워드 층은 텍스트 전체 맥락 이해 담당
- 선형 층, 드롭아웃 층, 층 정규화, 활성 함수로 구성
- 모델이 입력 텍스트의 고수준 특성과 의미를 포착할 수 있도록 함
참고자료
LLM을 활용한 실전 AI 애플리케이션 개발 - 허정준
'DeepLearning' 카테고리의 다른 글
[Transformer] 인코더와 디코더 (0) | 2025.04.15 |
---|---|
[Text Embedding] 텍스트를 임베딩하는 3단계 (0) | 2025.04.11 |
[Transformer] RNN과 트랜스포머 아키텍처의 이해 (0) | 2025.04.10 |
[DeepLearning] 메모리 효율적인 딥러닝 (0) | 2025.04.08 |
[DeepLearning] 언어 모델 최적화 개념 정리 (0) | 2025.02.14 |