Today I Learned
- seq2seq
- bottleneck problem : previous hidden state 정보 누적 및 압축 → 손실 발생 및 time step 간 거리가 멀 경우 정보 반영 ↓
- attention
- "focus on particular part on source sequence."
h[e]·h[d]
(inner product of encoder's hidden state and decoder's hidden state) → attention distribution → weighted sum of the encoder hidden states.
- various attention mechanisms ('inner product' is one of the mechanisms)
- no more bottleneck.
- vanishing gradient problem ↓ (shortcut for back prop.)
- Beam Search
- greedy search
- 매 time step마다 가장 확률이 높은 예측 단어 선정
- 우선 매 time step에서 가장 확률이 높은 단어의 조합으로 만들어진 문장의 전체 확률이 가장 높을 것이라는 보장은 없음. (첫 단어가 다음 단어들의 선정에 영향을 끼치게 되므로.)
(문제를 단순화하여 생각하면 t=1에서 후보가 a1, b1가 있고 t=2에서 a2, b2가 있을 때 t=1에서 a1을 고르면 t=2에서 P(a2)=0.1, P(b2)=0.3이 되고 t=1에서 b1을 고르면 t=2에서 P(a2) = 0.5, P(b2) = 0.4가 된다고 해보자. 또 t=1에서의 확률은 P(a1) = 0.7, P(b2) = 0.5라고 가정하면 각 순간에서 최고확률을 가지는 선택을 한다면 전체 확률은 P(a1)*P(b2)=0.7*0.3=0.21이 된다. 하지만 P(b1)*P(a2)=0.5*0.5=0.25가 되어 greedy한 방식의 탐색이 항상 가장 높은 전체 확률을 반환한다고 볼 수 없다.)
- Exhaustive search
- 매 time step에서 가능한 후보군을 모두 뽑고, 해당 후보군에 대해 다음 time step에서 또 가능한 후보군을 모두 뽑아 전체 확률을 계산한다.
- 가능한 후보군의 개수는 곧 vocab size라고 볼 수 있다.(V라고 하자) 전체 time step의 개수를 T라 하면 Exhaustive search가 확률을 살펴보는 전체 경우의 수는 V+V^2+V^3+・・・+V^T =
O(V^T)
→ too expensive
- Beam search
- 매 time step마다 미리 정해둔 k개의 상위 확률 후보군만 선정.
- t=1에서 k개, t=2에서 t=1의 k개에 대해 각각 k개, 총 k^2개의 확률 계산 후 그 중 상위 확률 k개 선정 → 다시 k개에 대해 k^2개의 상위 확률 계산 후 k개 선정 → k+k^2+k^2+・・・+k^2 =
O(k^2)
- beam search의 특성을 생각해보면 모든 경우의 수를 다 고려했을 때만큼 정답을 맞출 수는 없다. 하지만 '효율적'이면서 꽤나 정확하다는 것.
- beam search 알고리즘에서는 stopping criterion이 필요. → 특정 time step T에 도달할 때 끝내는 방식, n개의 hypothesis를 뽑아내면 끝내는 방식 사용 가능
- predicted sentence의 길이가 다를 수 있다는 점 → predicted sentence의 길이가 길다는 건 예측된 단어의 수가 많다는 것이고, 예측된 단어가 많을 수록 [0,1]의 확률이 곱해진 횟수가 많다는 뜻이므로 긴 sentence는 짧은 sentence에 비해 확률적으로 불리하다. → 길이로
normalize
- BLEU score
precision
(정확도) : #(correct words) / #(words of predicted sentence)
recall
(재현율) : #(correct words) / #(words of reference sentence)
F-measure
: (precision*recall) / (0.5)*(precision+recall) (precision과 recall의 조화평균)
- 하지만 precision, recall, F-measure는 단순히 맞춘 개수만을 고려하므로 순서에 대한 정확성을 보장하지 못한다.
BLEU score
:
min(1, )
을 이용해 너무 짧은 sentence에는 penalty를 주고 또 너무 긴 sentence는 그 영향을 1로 제한.
precision 확률곱 부분
에서는 n-gram(n개의 연속된 단어) 개념을 이용해 1-gram ~ 4-gram의 precision을 계산. '순서'와 '맞춘 개수'를 모두 고려할 수 있도록 함.
- 'recall'이 아닌 'precision'을 사용하는 이유는 '정말', '매우' 등이 빠져도 의미적으로 큰 차이가 없는데 recall에서는 이렇게 누락된 단어들로 인해 그 확률값이 낮아지기 때문.
- BLEU score는 여러 평가방법들이 갖는 문제점을 조금씩 보완해서 조합한 형태라고 보면 될 것 같다.
More
- seq2seq과 관련하여 reverse seq를 이용하는게 있다고 들은 것 같다.
- inner product 외의 attention mechanisms
- attention의 구체적 적용
- BLEU과 관련하여 또다른 scoring 방법들
Reference
seq2seq과 관련하여 reverse seq를 이용하는게 있다고 들은 것 같다.
-> bi-directional seq2seq 키워드로 찾아보시면 될 것 같습니다,