Attention
1. seq2seq의 한계
seq2seq란?
- 인코더 - 디코더라 불리는 두 개의 순환 신경망을 활용해 각각 입력 시퀀스를 벡터화하고 새로운 시퀀스를 출력하는 모델. ex) 기계번역
1) 압축에 따른 정보 손실 문제
- 인코더가 문장(시퀀스)을 길이에 상관 없이 하나의 고정된 크기의 벡터(Context Vecor)에 모든 정보를 압축하여 정보 손실 발생.
2) RNN의 기울기 소실 문제
- 기울기가 일정 수준 이하로 작아지면 장기 의존 관계 학습이 어려움.
- ex) 하이퍼볼릭 탄젠트 함수의 미분 → x가 0에서 멀수록 작아짐.
따라서, 입력 시퀀스(문장) 이 길어져도 출력의 정확도를 지킬 수 있는 기법 필요 → 어텐션!
2. 어텐션(Attention)
어텐션의 기본 아이디어
- 매 시점마다 전체 입력 시퀀스를 참고하기.: 순환 신경망이 잊은 정보를 리마인드시켜주는 도우미 함수라고 생각하면 편한듯.
- → 이 때, 필요한 부분을 집중(attention)해서 본다.
어텐션 함수
Attention(Q, K, V) = Attention Value
- 주어진 Q에 대해 모든 K의 값 V를 Q-K간 유사도만큼 가중합.
- seq2seq+ 어텐션 모델에서 Q,K,V는..
- Q(Query) : t 시점에 디코더 셀에서의 은닉 상태
- K(Key) : 모든 시점의 인코더 셀의 은닉 상태들
- V(valyes) : 모든 시점의 인코더 셀의 은닉 상태들 (값)
- attention output계산을 위한 가중합은 value(encoder hidden state)가 가지는 정보의 선별적 사용으로 해석할 수 있고, query(decoder hidden state)는 이 정보가 어디에 집중할 지를 결정한다.
3. 닷-프로덕트 어텐션(Dot-Product Attention)
개요 : 어텐션 스코어 → 어텐션 분포 → 어텐션 값 → 값 연결
1. 어텐션 스코어 : Enc-Dec 은닉 상태 간 유사도
- 디코더의 시점 t에서 은닉 상태 & 인코더의 시점 i에서 은닉 상태를 곱합니다.
- 출력으로 나오는 스칼라가 인코더-디코더의 은닉 상태 간의 유사도가 된다.
- e_t는 어텐션 스코어 모음 for 모든 인코더 시점.
2. 어텐션 분포 : 어텐션 가중치의 모음값
- 어텐션 스코어를 softmax 함수에 통과시켜 비율로 변환
- 각 인코더 시점 i에서 은닉 상태가 s_t와 얼마나 관련 있는지 비율로 나타남.
- 특정 시점에서 인코더의 은닉 상태는 해당 시점에 입력된 단어(x_i)와 이전 은닉 상태(h_i-1)을 입력으로 받기 때문에 해당 시점 입력 단어의 의미를 크게 담고 있다.
- → 디코더 t시점 단어와 인코더 i시점 단어의 관계를 많이 담고 있다고도 말할 수 있음.
3. 어텐션 값을 구하고 연결 및 변환 : 새로운 s_t 만들기
- 만들어진 어텐션 가중치 모음 a_t와 디코더의 기존 은닉 상태 s_t를 연결 (concatenate)
- 출력의 형상 유지를 위해 가중치 행렬을 곱한다.(편향은 그림 생략)
- 이를 tanh함수에 통과시키면 새로운 은닉 상태 s_t가 된다.
'데이터 스터디 > DL' 카테고리의 다른 글
[Pytorch] 파이토치 텐서(tensor) 기초함수, 연산 (0) | 2023.11.17 |
---|---|
[논문 읽기] Attention IS All You Need (Transformer) (0) | 2023.11.15 |
[논문 읽기] Sequence to Sequence Learning with Neural Networks (Seq2Seq) (0) | 2023.11.14 |
[논문 읽기] Generating Sequences With Recurrent Neural Networks (LSTM) (0) | 2023.11.14 |
RNN - 역전파와 한계점 (0) | 2023.11.10 |