ML/AI/SW Developer

Beam search and BLEU score

BLEU score가 번역 문장 평가에 있어서 갖는 단점은 무엇이 있을까요?

1. Beam search

1.1 Greedy decoding

  • 다음에 나올 단어로 가장 확률이 높은 단어만으로 학습을 하는 것
  • 즉, 가장 좋아보이는 단어를 그때 그때 선택하는 greedy 형태
  • 한번 잘 못 선택하면 뒤로 돌아갈 수 없음
  • $P(y \vert x) = P(y_1 \vert x)P(y_2 \vert y_1, x)… $
  • 전체적인 문장의 확률을 고려할 수 있음
  • 하지만 디코더의 각 time step마다 $V^t$ 개의 가능한 경우의 수를 검토해야함, 이것은 시간복잡도가 $O(V^t)$ 로 매우 비효율적
  • Greedy와 Exhaustive의 사이에 있는 방법
  • Core idea: 정해진 k개 경우의 수(hypothesis)만 검토하는 방법
    • 보통 5~10개
  • $score(y_1, …, y_t)=logP_{LM}(y_1,…,y_t \vert x)= \sum_{i=1}^t logP_{LM} (y_t \vert y_1, …,y_{i-1},x)$
    • log => 단조증가, 큰값은 log를 취해도 다른 수에비해 큰값으로 유지됨
    • 매 time step 마다 k개 tracking
  • Process
    • 확률이 높은 K개의 단어 선택
    • 즉, 매 time step마다 K^2개의 후보만 searching 후 확률이 가장 높은 K개의 후보만 선택
    • hypothesis들이 각각 다른 시점에서 < END > 를 생성할 수 있음
      • 다른 시점에 생성에 종료됨
      • 또는 Stopping criterion을 활용해 강제 종료 가능
  • 상대적으로 길이가 길수록 joint probability가 작아짐
    • 각 hypothesis 별로 단어의 길이로 나누어 주어 공평하게 비교

2. BLEU score

2.1 단순한 비교방식

  • 자리와 단어를 비교하는 방식으로 정확한 평가가 어려움
  • E.g
    • GT: I Love you
    • Pred: oh I Love you
    • 위와 같은 경우 score는 0
  • Recall
    • 소환해야 하는 대상중에 얼마나 잘 소환했는가…
  • 평균
    • 산술평균: 일반 평균
    • 기하평균: 곱해서 루트
    • 조화평균: 역수의 산술 평균의 역수
    • 산술 >= 기하 >= 조화
      • 조화평균은 작은쪽에 더 가중치가 있는 평균
      • F-score => 조화평균으로 Precision과 Recall을 계산

2.2 BLEU score

  • N-gram overlap
    • I love this movie very much
    • 나는 이 영화를 많이 사랑한다.
    • (정말)이 없지만, 충분히 괜찮은 번역임 -> Recall을 고려하지 않는 이유
  • $BLEU = min (1, \ {length \ of \ prediction \over length \ of \ reference }) (\prod_i^n precision_i)^{1/n}$
    • 기하평균
    • reference보다 짧은 문장을 생성했을 때, 짧은 비율만큼 precision을 낮추어주고, 길게 생성했을 때는 1로 설정해 원하는 모든 단어가 있을 경우 100%을 기대할 수 있다.
  • Examples
    • model 1
      • Precision (1-gram): 9개의 단어 중 Half, my, heart, is, in, ooh, na 7개의 단어 일치 $\rightarrow {7 \over 9}$
      • Precision (2-gram): 8개의 단어 묶음 중 my heart, heart is, is in, ooh na 4개의 묶음 일치 $\rightarrow {4 \over 8}$
      • Precision (3-gram): 7개의 단어 묶음 중 my heart is, heart is in 2개의 묶음 일치 $\rightarrow {2 \over 7}$
      • Precision (4-gram): 6개의 단어 묶음 중 my heart is in 1개의 묶음 일치 $\rightarrow {1 \over 6}$
      • Breviry penalty: reference는 10개 단어, model1은 9개의 단어를 생성했기 때문에 $\rightarrow {9 \over 10}$
      • $ BLEU score = 0.9 \times ( {7 * 4 * 2 * 1 \over 9 * 8 * 7 * 6})^{1 \over 4} $
    • model 2
      • 모든 단어들은 동일하게 구성되어있지만, 2-gram 부터는 맞는 것이 없음
      • $ BLEU score = 1 \times 0 $