어텐션 메커니즘을 이용한 예측 예제
이번 예제에서는 단순한 숫자 벡터를 이용하여, 어텐션 메커니즘이 어떻게 시퀀스 예측을 수행하는지 단계별로 설명합니다.
1. 문제 정의
문장: "I like" 다음에 올 단어를 예측한다고 가정합니다. 각 단어는 2차원 임베딩 벡터로 표현됩니다.
2. Query, Key, Value 정의
예를 들어, 이미 문장에 등장한 단어들의 벡터:
단어 | 벡터 |
---|---|
I | [1, 0] |
like | [0, 1] |
예측 대상 단어에 대한 Query:
Query(Q) |
---|
[0.5, 0.5] |
Key와 Value는 기존 단어들의 벡터를 그대로 사용:
Key(K) | Value(V) |
---|---|
[1, 0] | [1, 0] |
[0, 1] | [0, 1] |
3. Dot-Product Attention 계산
Scaled Dot-Product Attention 수식:
Attention(Q, K, V) = softmax((Q * K^T) / sqrt(d_k)) * V
dk = 2 → sqrt(2) ≈ 1.414
- Q·KT = [0.5,0.5]·[[1,0],[0,1]]T = [0.5,0.5]
- 스케일링: [0.5/1.414, 0.5/1.414] ≈ [0.354, 0.354]
- Softmax: [exp(0.354)/(exp(0.354)+exp(0.354)), exp(0.354)/(exp(0.354)+exp(0.354))] = [0.5, 0.5]
4. Value와 곱하기
Attention Output = Softmax(scores) × V
- Output = 0.5*[1,0] + 0.5*[0,1] = [0.5,0.5]
5. 예측
최종 벡터 [0.5,0.5]는 다음 단어를 예측하는 입력으로 사용됩니다. 예를 들어, 임베딩 공간에서 가장 유사한 단어를 찾으면 “apples” 또는 “bananas”처럼 적절한 단어를 선택할 수 있습니다.
6. 요약
- Query: 다음 단어 예측용 벡터
- Key: 기존 단어 벡터
- Value: 기존 단어 벡터
- 유사도 계산 → Softmax → 가중치 부여 → Value 합산
- 최종 출력 벡터를 기반으로 다음 단어 예측
댓글 없음:
댓글 쓰기