어텐션 메커니즘(Attention Mechanism) 이해
어텐션 메커니즘은 입력 시퀀스의 각 요소가 출력에 얼마나 중요한지를 가중치로 반영하는 방법입니다. 주로 Transformer 구조에서 사용됩니다.
1. 어텐션 수식
Scaled Dot-Product Attention은 다음과 같이 정의됩니다:
Attention(Q, K, V) = softmax((Q * K^T) / sqrt(d_k)) * V
Q
: Query 행렬 (질문 벡터)K
: Key 행렬 (입력의 특징 벡터)V
: Value 행렬 (실제 정보)d_k
: Key 벡터 차원 수
2. 숫자를 활용한 예제
단순화를 위해 2차원 벡터를 사용합니다.
Step 1: 행렬 정의
입력 2개 단어에 대한 Query, Key, Value 행렬
Q1 | Q2 | |
---|---|---|
dim1 | 1 | 0 |
dim2 | 0 | 1 |
K1 | K2 | |
---|---|---|
dim1 | 1 | 0 |
dim2 | 0 | 1 |
V1 | V2 | |
---|---|---|
dim1 | 1 | 2 |
dim2 | 0 | 1 |
Step 2: Query와 Key의 내적(Dot Product)
Q * KT 계산:
Q1·K1 = 1*1 + 0*0 = 1
Q1·K2 = 1*0 + 0*1 = 0
Q2·K1 = 0*1 + 1*0 = 0
Q2·K2 = 0*0 + 1*1 = 1
Step 3: 스케일링
Key 차원 d_k = 2이므로 √d_k = √2 ≈ 1.414
Scaled scores = Dot product / √d_k
- Q1-K1: 1 / 1.414 ≈ 0.707
- Q1-K2: 0 / 1.414 = 0
- Q2-K1: 0 / 1.414 = 0
- Q2-K2: 1 / 1.414 ≈ 0.707
Step 4: Softmax 적용
Softmax는 각 Query에 대한 Key 가중치를 계산합니다:
- Q1: softmax([0.707, 0]) = [e^0.707 / (e^0.707+e^0), e^0 / (e^0.707+e^0)] ≈ [0.668, 0.332]
- Q2: softmax([0, 0.707]) ≈ [0.332, 0.668]
Step 5: Value와 곱하기
최종 어텐션 값 = softmax(scores) * V
- Q1: 0.668*V1 + 0.332*V2 = 0.668*[1,0] + 0.332*[2,1] ≈ [1.332, 0.332]
- Q2: 0.332*V1 + 0.668*V2 = 0.332*[1,0] + 0.668*[2,1] ≈ [1.668, 0.668]
3. 결과
Query | Attention Output |
---|---|
Q1 | [1.332, 0.332] |
Q2 | [1.668, 0.668] |
이처럼 어텐션 메커니즘은 각 Query가 Key-Value 쌍에 얼마나 집중할지 결정하여 최종 출력 벡터를 만듭니다. 숫자를 통해 보면 각 Query가 어느 Value에 더 많이 집중하는지 명확히 알 수 있습니다.
댓글 없음:
댓글 쓰기