[TIL] 03.10(목)

ivor·2022년 3월 11일
0

부스트캠프 AI TECH

목록 보기
14/18

Today I Learned

  1. seq2seq
    • bottleneck problem : previous hidden state 정보 누적 및 압축 → 손실 발생 및 time step 간 거리가 멀 경우 정보 반영 ↓
  2. 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.)
  3. 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
  4. 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

  1. seq2seq과 관련하여 reverse seq를 이용하는게 있다고 들은 것 같다.
  2. inner product 외의 attention mechanisms
  3. attention의 구체적 적용
  4. BLEU과 관련하여 또다른 scoring 방법들

Reference

  • 부스트캠프 AI TECH 강의 및 수업 자료
profile
BEST? BETTER!

2개의 댓글

comment-user-thumbnail
2022년 3월 11일

seq2seq과 관련하여 reverse seq를 이용하는게 있다고 들은 것 같다.
-> bi-directional seq2seq 키워드로 찾아보시면 될 것 같습니다,

답글 달기
comment-user-thumbnail
2022년 3월 11일

bleu에서 들어주신 예시를 보다 든 생각인데, 한국어는 어떻게 점수를 계산 하는지 찾아보면 좋을 것 같습니다.
영어는 공백을 기준으로 단어가 나뉘지만 한국어는 조사가 있기 때문에 조금 다르게 계산해야 할 것 같습니다!

답글 달기