Seq2Seq Model

Seq2Seq 모델은 어제 보았던 RNN의 종류 중 many-to-many, 그 중에서도 첫번째 유형에 해당하는 모델이다. 먼저 input을 모두 받아온 후 이를 기반으로 output을 내보내는 형태이다.

위 구조에서 입력 문장을 읽어내는 RNN 모델을 Encoder 라고 부르고,문장을 한 단어씩 출력하는 RNN 모델을 Decoder라고 한다. 그리고 RNN 모델로는 LSTM을 사용했다.

RNN기반의 모델 구조 이기 때문에 hidden state의 dim이 고정된 상태로 계속해서 정보를 누적한다. 길이가 짧을 때는 괜찮지만 길어지게 되면 앞부분의 정보를 잃을 수 있다. 이러한 문제를 해결하기위해 Attention 모듈을 사용한다.

Attention 모듈은 decoder의 hidden state 하나와 encoder의 각 time step의 hideen state를 입력으로 받아 현재 decoder에서 어떤 time step의 encoder hidden state를 어느정도 사용할지 결정한다.

Attention in Seq2Seq

Encoder의 입력에 Decoder 값을 사용 한다. Decoder의 hidden state와 Encoder의 각 time step의 hidden state의 유사도(Attention scores)를 구한다.
이후 softmax를 통해 각 hidden state를 사용하는 비율을 구하고, 이 비율을 나타내는 벡터를 Attention Vector라고 한다.

Attention Score(유사도)를 구하는 방법

  1. 단순히 두 vector의 내적으로 계산
    • $score(h_t, \bar{h_s})=h_t^T\bar{h_s}$
  2. 단순한 내적을 구하는 것이 아닌 학습 가능한 가중치 행렬을 추가하는 방법
    • $score(h_t,\bar{h}_s)=h_t^TW_a\bar{h_s}$
  3. 두 hidden state를 concat하여 FC_layer의 입력으로 넣어 유사도를 구하는 방법
    • $score(h_t, \bar{h_s})=v_a^Ttanh(W_a[h_t;\bar{h_s}])$

Teacher forcing

  • decoder에 input 데이터를 넣을 때 이전 step에서 잘못된 단어를 예측하더라도 올바른 단어를 다음 decoder에 넣어주면서 학습

Attention 구조의 특징

  • 번역 성능의 향상

    • Attention 구조에서는 Encoder의 hidden state vector에 가중 평균을 가하여 구한 벡터를 output을 출력하는데에 활용한다. 이에 따라 우리는 우리가 원하는 특정 단어에 포커스를 맞추어 보다 중요한 단어를 확실히 번역할 수 있다는 이점을 가져올 수 있다.
  • Bottleneck problem 해결

    • 앞서 앞 부분 단어에 대한 정보가 뒷부분까지 잘 전달되지 않을 수 있는 문제를 해결하였다.
    • 따라서 긴 문장 번역이 보다 수월 해진다.
  • Backpropagation에서의 이점

    • 기존 Encoder-Decoder만 사용하던 구조에서는 Decoder에서 도출되는 loss를 역전파시키기 위해 Decoder sequence에 Encoder sequence를 더한 길이 만큼의 역전파를 전달해야 했다. 이렇게 되면 문장이 조금만 길어져도 긴 timestep를 다 거쳐야 해서 아무리 LSTM/GRU를 도입했어도 맨 앞단에서는 역전파의 vanishing 현상이 일어날 수 있다.
    • 하지만 attention 구조에서는 역전파 시 긴 sequence를 거칠 필요 없이 attetion output을 통해 들어가 맨 앞단에서도 direct 하게 역전파를 전달받을 수 있다는 장점이 있다.
  • 모델의 해석 가능성(interpretability)를 제시

    • AI system에서 해석 가능성이 존재한다는 점이 매우 큰 강점이 될 수 있는데, 모델의 개선 가능성 및 디버깅이 훨씬 수월해지기 때문이다.
    • 해석 가능성이란 모델이 내놓는 output이나 학습 과정에서 사용되는 파라미터 등이 어떤 식으로 변화하는지, 그래서 최종적으로 왜 모델이 이러한 output을 내놓는지를 사람이 이해할 수 있는 가능성을 말한다.
    • 우리는 Attention 단에서 가중 평균이 어떤 식으로 계산되었는지(어느 벡터에 더 가중치가 부여 되었는지)를 관찰함으로써 Decoder가 각 timestep에서 어데어 포커시앟엿는지를 쉽게 알 수 있다.
    • 또한 softmax loss만으로 내부 모듈이 학습되기 때문에 신경망이 언제 어떤 단어를 더 잘 보아야하는지 스스로 학습할 수 있게 된다.

'딥러닝 > NLP' 카테고리의 다른 글

Transformer  (0) 2021.03.18
BLEU  (0) 2021.03.18
LSTM/GRU  (0) 2021.03.17
Basic RNN  (0) 2021.03.17
NLP 기초  (0) 2021.03.12
ariz1623