Attention 기법
Attention Value는 Gradient Vanishing 문제를 보완하기 위한 방법으로, Encoder의 hidden state를 모아서 Decoder에서 이용하는 방법입니다.
Background
Sequence-to-sequence model
- Seq2seq 모델은 번역 문제를 학습하기 위해서 많이 사용되는 RNN 구조
- SOS(start of sequence), EOS(End of sequence)는 문장의 시작과 끝을 알리는 예약어
- Encoder에서는 데이터가 단어 별로 입력되고, RNN 사이에 hidden state가 전달됨
- Context에 Encoder의 모든 feature vector를 압축해서 담아 Decoder로 전달
Gradient vanishing 문제 발생
- Context에 Encoder의 모든 정보를 담는데는 한계가 있음
- 입출력 연관 관계가 너무 멀리 떨어져 있으면 기울기 소실이 발생하여 학습이 잘 안됨
- 예) 번역에서 어순이 반대인 경우
Attention 구성 요소
- Query: 질의, 찾고자 하는 대상/정보
- Key: 키, 저장된 데이터를 찾고자 할 때 참조하는 값
- Value: 값, 저장된 데이터
- Dictionary: Key-Value Pair로 이루어진 집합
Querying
Query를 날리면 Key를 비교해서 Value를 반환하는 과정을 말합니다.
Attention mechanism
- Query를 날리면 Q에 대해 어떤 K가 유사한지 비교
- 유사도를 반영하여 V들을 합성한 것이 Attention Value
- Q와 K는 dimension이 n인 실수
- Compare 함수는 Dot-Product(벡터의 내적 - Inner Product)으로 유사도
- Normalize를 위해 Compare 결과에 Softmax 수행
- Aggregation은 weighted sum을 많이 사용하며, 비슷할수록 더 많은 비중으로 출력됨
Attention - Seq2seq
- Seq2seq에서는 Encoder의 hidden layer들을 key와 value로 사용함
- Seq2seq에서는 하나 앞의 time step Decoder의 hidden layer들을 Query로 사용함
- s는 i번째 step의 Query
- 보통 key와 value는 같은 값을 이용하므로, K, V의 값이 같음
- Encoder의 K와 비교하고 집계여 attention value 구함
- LSTM의 hidden state에 이전 attention value를 concatenate하고 dense layer로 넘겨줌
Encoder 입출력
- B: Batch Size
- L: Sequence Length
- N: Embedding feature 길이(Input Layer의 Node수)
- M: Hidden state의 feature vector
Decoder 입출력
Output
감사합니다.
Reference
- Fast Campus
댓글
댓글 쓰기