RNN, LSTM, GRU, Seq2seq with Attention, Beam Search and BLEU Score

RNN, LSTM, GRU

RNN, LSTM 부분은 짧게 정리했다.

RNN TYPES

one-to-one : 입력과 출력의 time step이 단 하나..시퀀스 데이터가 아냐
one to many : 입력이 하나의 time step 그러나 출력은 여러…예를 들어 하나의 이미지 넣으면 이미지에 대한 설명을 예측 혹은 설명하는 아웃풋
many to one : 입력 시퀀스를 입력으로 받아서 최종값을 마지막 time step에서 출력으로 준다. 감정분석 같은 것. 문장의 각 단어를 워드임베딩 벡터로 각 time step에서 받아서 마지막 time step 이후에 최종 분석 결과를 얻는다.
many to many 1 : 그림참조. 기계번역이 대표적인 예.
many to many 2 : 입력이 주어질 때마다 예측 수행. 단어별로 품사 예측이나 동영상의 이미지프레임이 어떤 장면인지 분류.

character-level language model

문자열이나 단어의 순서를 바탕으로 다음 단어를 예측하는 과제. hello 의 글자 집합을 만들고, 원핫벡터를 만든다. h : [1 0 0 0]

이걸로 논문도 작성할 수 있다카더라..

rnn은 큰따옴표나 괄호로 구분되는 코드의 조건문이나 인용문 같은 걸 구분한다.

이토록 훌륭하지만 단점이 있다.

“Multiplying the same matrix at each time step during backpropagation causes gradient vanishing or Exploding”

같은 수를 계속해서 곱한다고 생각해보자. 등비수열 구조를 갖는 이 상황에서는 공비에 따라 수가 무한대로 커지거나 혹은 0으로 수렴하게 될 것이다.

LSTM

  • 기존 RNN이 가지는 Gradient Vanishing)과 폭주(Exploding) 해결, time step이 길어도 학습이 잘 되도록 함.

  • 히든 스테이트가 단기기억을 담당하는 기억소자인데, 시퀀스가 계속 되어도 기억이 잘 보존되도록 함.

  • cell state vector : 전반적인 정보.
  • hidden state vector : cell state보다 요약된 정보…현 시점에서 중요한 것만 보관

gate 설명 강의 1030부터.

GRU

  • LSTM을 보다 경량화해서 공간복잡도와 시간복잡도 향상
  • hidden state vector만 존재

위의 둘은 시퀀스가 진행될 때 각 시점에서 필요한 정보를 덧셈으로 얻기에 기존 문제 해결

• RNNs allow a lot of flexibility in architecture design
• Vanilla RNNs are simple but don’t work very well
• Backward flow of gradients in RNN can explode or vanish
• Common to use LSTM or GRU: their additive interactions improve gradient flow


Sequence to Sequence with Attention

Seq2Seq

  • 기본적으로 입력을 다 읽어들인 후에 출력 시퀀스 생성
  • 입력 문장을 읽어들이는 모델을 인코더
  • 출력 문장은 디코더
  • 인코더와 디코더는 독립적인 모델
  • 디코더의 첫 번째 단어로 넣어주는 걸 start of sentence…start token이라고 함. 그리고 eos라는 토큰이 나올 때까지 작업

단, 히든 스테이트 벡터의 차원이 고정되어 있다는 점 때문에 시퀀스가 지속될 수록 정보 압축에 한계가 있다. 그래서 입력의 첫 부분을 제대로 전달 못할 수도 있음.

이러한 이유로 attention을 사용한다.

Attention

  • 각각의 hidden state vector가 인코딩한 각각의 단어들에 좀 더 비중을 둔다.
  • 디코더는 각 타임 스텝에서 필요한 인코더 hidden state vector를 선별한다.

  1. 인코더에서 각 단어마다 hidden state가 만들어진다.
  2. 마지막 인코더를 마치고, 디코더에 h₀로 입력이 들어가고 SoS가 x₁으로 들어간다.
  3. 입력 받은 것을 바탕으로 디코더의 첫 번째 time step의 hidden state vector를 만든다.
  4. 단어들의 각 hidden state에서 선별적으로 정보들을 골라내는 과정을 수행하기 위해 각각 단어(인코더에서 나온)의 hidden state와 내적을 한다. 이 내적 결과에 기반한 게 유사도 score다.
  5. 방금 구한 값들을 softmax를 거쳐서 확률을 구하는데, 이것을 가중치로 삼아서 가중 평균을 구한다.
  6. 가중 평균된 벡터인 결과(attention output)와 디코더의 hidden state를 concat 해서 output layer의 입력으로 넣는다.

디코더 히든 스테이트 하나 당 어떤 입력 단어들을 중점적으로 가져올지 결정하는 역할과 아웃풋 예측을 하는 두 개의 임무를 수행

Teacher Forcing

교사강요를 사용할지 안 할지 학습 도중에 정할 수도 있다.

요약

  • Attention significantly improves NMT performance
    • It is useful to allow the decoder to focus on particular parts of the source
  • Attention solves the bottleneck problem
    • Attention allows the decoder to look directly at source; bypass the bottleneck
  • Attention helps with vanishing gradient problem
    • Provides a shortcut to far-away states
  • Attention provides some interpretability
    • By inspecting attention distribution, we can see what the decoder was focusing on
    • The network just learned alignment by itself

<

Beam Search and BLEU score

디코더의 매 타임스텝마다 k(beam size)개의 가능한 가지 수를 고려해서 가장 확률이 높은 결과를 내놓는다.

  • k=1인 경우 greedy search와 같아진다. k가 2라면 이진트리처럼 과정이 그려진다.
  • 매 타임스텝 점수를 계산해서 k개의 가설을 선택한다.
  • 가설의 점수는 생성된 토큰들의 log probability의 합으로 나타낸다.
  • 디코딩 과정이 진행되다가 end 토큰을 발생시키면 해당 가설은 종료하고 임시저장한다.
  • 임시저장한 완료된 가설들 중에서 log씌운 joint probability 값이 가장 높은 걸 채택한다. 그런데 계산 원리상 문장 길이가 짧을수록 당연히 joint probability가 높게 될 것이다. 그래서 정규화를 위해 결과 문장의 단어 개수로 joint probability를 나누어서 최종 점수를 평가한다.

BLEU score

BLEU 스코어 : 생성모델의 품질(결과 정확도) 평가 지표

Reference : Half of my heart is in Havana ooh na na.
Predicted : Half as my heart is in Obama ooh na.

precision and recall

각 단어의 위치에 상관없이 생성한 시퀀스 문장과 원하는 예측 문장끼리의 유사도로 평가

  • precision(정밀도)은 예측 결과가 나왔을 때 우리가 실질적으로 느끼는 정확도라고 볼 수 있다. 결과가 얼마나 의도에 부합하나?
  • recall(재현율)은 의도에 부합하는 결과를 얼마나 빠짐없이 다 예측에 성공했나??? 아비터의 리콜..얼마나 잘 소환했는가
  • F-measure는 조화평균값이다.

그런데 precision, recall, F-measure가 다 만점이더라도 문법적인 면에서 틀린 문장이 생성 될 수 있다.

BLEU score

위와 같은 문제를 해결하기 위해서 BLEU score가 필요하다.

• N-gram overlap between machine translation output and reference sentence
• Compute precision for n-grams of size one to four
• Add brevity penalty (for too short translations

예시

Reference :                         Half of my heart is in Havana ooh na na
Predicted (from model 1) : Half as my heart is in Obama ooh na
Predicted (from model 2) : Havana na in heart my is Half ooh of na