본문 바로가기
Boostcamp AI Tech/[week 6-14] LEVEL2

[Week 6 - Day 3 ] seq2seq

by newnu 2021. 9. 9.
반응형

Sequence to Sequence with Attention

Seq2Seq with attention, Encoder & Decoder architecture, Attention mechanism

Seq2Seq model

rnn의 구조중 many to many의 형태 - 입력시퀀스를 모두 읽은 후 출력 시퀀스 생성

스크린샷 2021-09-10 오후 12 56 33

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를 더 쌓아도 됨
    -> 학습을 필요로 하는 parameter가 포함된 모듈로 바뀜
  • Attention의 장점
  • 유사도 구하는 방법
  • NMT performance 향상
  • encoder의 어떤 벡터를 이용해서 학습할지
  • attention 은 timestep 거치지 않고 바로 attention 계산 모듈 바로 통과해서 원하는 encoder 벡터에 gradient 전달
  • 각 단어를 예측할 때 어떤 단어를 집중했는지 해석가능성 제공
  • alignment 스스로 학습
반응형