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를 선별한다.
- 인코더에서 각 단어마다 hidden state가 만들어진다.
- 마지막 인코더를 마치고, 디코더에 h₀로 입력이 들어가고 SoS가 x₁으로 들어간다.
- 입력 받은 것을 바탕으로 디코더의 첫 번째 time step의 hidden state vector를 만든다.
- 단어들의 각 hidden state에서 선별적으로 정보들을 골라내는 과정을 수행하기 위해 각각 단어(인코더에서 나온)의 hidden state와 내적을 한다. 이 내적 결과에 기반한 게 유사도 score다.
- 방금 구한 값들을 softmax를 거쳐서 확률을 구하는데, 이것을 가중치로 삼아서 가중 평균을 구한다.
- 가중 평균된 벡터인 결과(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
Beam Search
디코더의 매 타임스텝마다 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