반응형
Sequence to Sequence with Attention
Seq2Seq with attention, Encoder & Decoder architecture, Attention mechanism
Seq2Seq model
rnn의 구조중 many to many의 형태 - 입력시퀀스를 모두 읽은 후 출력 시퀀스 생성
dialog system
- encoder : 입력문장 읽기 마지막
- decoder : 출력 문장 생성
- hiddenstate vector가 decoder의 첫 hidden state vector
- start of sentence , end of sentence 토큰으로 시작, 종료문제
- 마지막 timestep의 hidden state vector에 모든 정보를 넣어야함
- 앞에서부터 정보를 읽으면 입력문장이 길어지면 멀리 있는 정보는 점차 변질, 소실 가능성
해결
- 입력 문장을 거꾸로
- attention 모듈
Attention 모듈
- Input : decoder hidden state vector, encoder hidden state vector set
- Output : context vector
Seq2Seq Model with Attention
- encoder의 모든 hidden state vector를 decoder에 전달
- encoder의 hidden state vector를 적절히 선택해서 사용
- encoder의 마지막 hidden state vector 가 decoder의 입력으로
- decoder의 첫번째 hidden state vector(hd) 계산
- hd와 encoder의 hidden state vector 와 각각 내적값(유사도) 구하고 softmax 함수 통과 -> 각각의 확률값
- 계산한 확률 값은 각각 encoder hidden state vector의 가중치로 사용
- 가중 평균된 벡터(context vector) 와 decoder hidden state vector 와 concat 되어 output layer의 입력-> 다음 값 예측
- backpropagation 진행할 때 바로 encoder로
- teacher forcing : ground truth의 단어를 입력으로 넣어 잘못 예측한 경우에도 다음 timestep에서는 올바른 입력으로
- 학습이 빠르고 용이하지만 실제 사용할 때와 괴리
- 초반에 teacher forcing 사용하다가 후반에 실제 output값 사용하여 실제 상황에 더 가깝도록 학습
- dot
- generalized dot (내적 확장)
- 벡터 계산할 때 다른 행렬을 중간에 곱해줘서 벡터들간의 서로 다른 dimension 간의 곱셈 값들에 각각 가중치 부여
- concat
- 두 벡터를 concat 해서 fully connected layer 통과 후 하나의 scalar 값
- layer를 더 쌓아도 됨
- Attention의 장점
- 유사도 구하는 방법
- NMT performance 향상
- encoder의 어떤 벡터를 이용해서 학습할지
- attention 은 timestep 거치지 않고 바로 attention 계산 모듈 바로 통과해서 원하는 encoder 벡터에 gradient 전달
- 각 단어를 예측할 때 어떤 단어를 집중했는지 해석가능성 제공
- alignment 스스로 학습
반응형
'Boostcamp AI Tech > [week 6-14] LEVEL2' 카테고리의 다른 글
[Week 10] PStage 과정 정리 (0) | 2021.10.06 |
---|---|
[Week 10] SentencePieceTokenizer (0) | 2021.10.05 |
[Week 9] F1 Score , Stratified K Fold (0) | 2021.10.01 |
[week 7 - day 1,2] Transformer (0) | 2021.09.14 |
[Week 6 - Day 2] RNN, LSTM, GRU (0) | 2021.09.07 |