반응형
Deep Learning Series · 06
어텐션 메커니즘
Attention — 필요한 곳에 집중하다, 인코더 출력 전체를 동적으로 가중합하는 혁신적 아이디어
병목 문제
전통적인 Seq2Seq 모델에서 인코더는 모든 입력 정보를 단 하나의 고정 크기 컨텍스트 벡터 c에 압축해야 했다. 입력이 길어질수록 성능이 급격히 저하되는 문제가 있었다.
2015년 Bahdanau et al.이 제안한 어텐션 메커니즘은 디코더가 매 타임스텝마다 인코더의 모든 은닉 상태를 참조하되, 현재 생성 중인 출력과 가장 관련 있는 입력 위치에 더 집중하도록 학습한다.
Q / K / V 구조
어텐션은 세 요소로 작동한다: Query(Q), Key(K), Value(V).
// 1. 유사도 점수 계산
eᵢⱼ = score(sⱼ, hᵢ)
// 2. 소프트맥스로 정규화
αᵢⱼ = exp(eᵢⱼ) / Σₖ exp(eₖⱼ)
// 3. 가중합으로 컨텍스트 벡터 생성
cⱼ = Σᵢ αᵢⱼ · hᵢ
스케일드 닷-프로덕트 어텐션
Transformer에서 사용되는 가장 효율적인 형태다.
Attention(Q, K, V) = softmax(QKᵀ / √dₖ) · V
// √dₖ로 나누는 이유: 내적값이 커지면 softmax 기울기가 극도로 작아지는 것을 방지
아래는 "나는 밥을 먹었다"를 번역할 때 'ate'를 생성하는 순간의 어텐션 가중치 예시다.
나는
밥을
먹었다
I
ate
rice
0.82
0.10
0.08
0.05
0.15
0.80
0.08
0.72
0.20
'ate'를 생성할 때 '먹었다'에 높은 가중치 집중
어텐션 유형
| 유형 | Q 출처 | K/V 출처 | 사용 예 |
|---|---|---|---|
| Bahdanau | 디코더 | 인코더 | 기계 번역 (RNN 기반) |
| Self-Attention | 자기 자신 | 자기 자신 | Transformer 핵심 |
| Cross-Attention | 디코더 | 인코더 | Transformer 디코더 |
| Multi-Head | 병렬 여러 헤드 | 병렬 여러 헤드 | 다양한 표현 학습 |
셀프 어텐션의 의미
시퀀스 내의 각 위치가 자기 자신을 포함한 모든 위치와의 관계를 계산한다. "그 은행은 파산했다"에서 '은행'이 금융 기관인지 강둑인지 파악하기 위해 문장의 다른 단어들과의 관계를 동시에 고려한다.
AttentionSelf-AttentionQ / K / VContext VectorBahdanau
반응형
댓글