Attention
셀프어텐션은 입력 시퀀스 내의 각 토큰이 ‘자신을 포함한’ 다른 ‘모든 토큰과 상호작용’하며, 상호 간의 관계를 파악하는 메커니즘. 인코더(Encoder)와 디코더(Decoder) 내부의 각 층에서 사용되며, 입력 시퀀스 내의 문맥 정보를 파악하는 데 도움.
크로스 어텐션은 입력 시퀀스와 목표 시퀀스(예: 인코더에서 디코더로 전달된 시퀀스) 사이의 상호 작용을 파악하는 메커니즘. 트랜스포머의 디코더 층에서 사용. 인코더에서 전달된 정보에다가 디코더의 현재 상태를 조합하여 문맥 정보를 파악하고 예측을 수행. 즉, 인코더가 처리한 입력 시퀀스를, 디코더가 처리하고 있는 다른 시퀀스와의 관련성을 찾기 위해 사용. 이로써 더 나은 ‘출력을 생성’할 수 있음.
요약하면, 셀프 어텐션은 동일한 시퀀스 안에서의 토큰 간의 관계를 파악하는 데 사용되며, 크로스 어텐
션은 서로 다른 시퀀스(예: 인코더와 디코더의 시퀀스) 간의 관계를 파악하는 데 사용
[20230331_Everything Everywhere All at Once AI가 불러온 신산업 혁명_미래에셋증권]
https://www.perplexity.ai/
Attention의 계산 방법은 다음과 같습니다:
1. Query, Key, Value 벡터 생성:
- Query (Q): 현재 디코더의 hidden state
- Key (K): 인코더의 hidden states
- Value (V): 인코더의 hidden states
2. Attention Score 계산:
- Query와 각 Key 간의 유사도를 계산합니다.
- 일반적으로 내적(dot product)을 사용: Score = Q · K^T
3. Softmax 적용:
- Attention Score에 softmax를 적용하여 가중치를 정규화합니다.
- Weight = softmax(Score)
4. 가중합 계산:
- 정규화된 가중치와 Value를 곱하여 가중합을 구합니다.
- Output = Σ(Weight * V)
5. Multi-Head Attention (선택적):
- 여러 개의 attention head를 병렬로 계산하고 결과를 연결합니다.
이 과정을 통해 모델은 입력 시퀀스의 각 부분에 대해 서로 다른 중요도를 부여하며, 문맥을 더 잘 이해할 수 있게 됩니다. Self-attention의 경우 Q, K, V가 모두 동일한 입력에서 생성되며, cross-attention에서는 Q가 다른 소스(예: 디코더)에서 생성됩니다.
Citations:
[1] https://skyil.tistory.com/256
[2] https://zzziito.tistory.com/56
[3] https://pongdangstory.tistory.com/389
[4] https://wikidocs.net/22893
[5] https://velog.io/%40sjinu/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC-Attention-Mechanism
Q. attention 문장과 벡터 예시로 계산법 보여줘
Attention의 계산 방법은 다음과 같습니다:
1. Query, Key, Value 벡터 생성:
- Query (Q): 현재 디코더의 hidden state
- Key (K): 인코더의 hidden states
- Value (V): 인코더의 hidden states
2. Attention Score 계산:
- Query와 각 Key 간의 유사도를 계산합니다.
- 일반적으로 내적(dot product)을 사용: Score = Q · K^T
3. Softmax 적용:
- Attention Score에 softmax를 적용하여 가중치를 정규화합니다.
- Weight = softmax(Score)
4. 가중합 계산:
- 정규화된 가중치와 Value를 곱하여 가중합을 구합니다.
- Output = Σ(Weight * V)
5. Multi-Head Attention (선택적):
- 여러 개의 attention head를 병렬로 계산하고 결과를 연결합니다.
이 과정을 통해 모델은 입력 시퀀스의 각 부분에 대해 서로 다른 중요도를 부여하며, 문맥을 더 잘 이해할 수 있게 됩니다. Self-attention의 경우 Q, K, V가 모두 동일한 입력에서 생성되며, cross-attention에서는 Q가 다른 소스(예: 디코더)에서 생성됩니다.
Citations:
[1] https://skyil.tistory.com/256
[2] https://zzziito.tistory.com/56
[3] https://pongdangstory.tistory.com/389
[4] https://wikidocs.net/22893
[5] https://velog.io/%40sjinu/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC-Attention-Mechanism
Discussion