주어진 문장 x 에 대한 출력 문장 y 이른바 joint probability (동시 사건)에 대한 확률분포를 수식으로 쓸 수 있다
출력문장 y 전체로써 확률값을 최대가 되도록 하는 답을 뽑는것이 최선이다
그러면 이 경우 첫번째 생성하는 단어가 그 당시에는 값이 가장 큰 확률값을 가지는 단어였다 하더라도 뒷부분에서 상대적으로 낮은 확률값을 가지게 되면 총 확률값은 크지 않을 경우가 발생될 수 있다
이런경우 첫번째 생성하는 단어의 확률값이 제일 큰 확률값이 아니더라도 뒷부분에서 상대적으로 더 큰 확률값들을 내어줄수 있는 선택을 하는것이 전체적인 joint probability의 값을 최대화 하는데 더 좋은 결과를 낼수 있다
we could try computing all possible sequences y
그럼 결국 어떤 time step t 까지의 가능한 모든 경우를 따진다면 그 경우는 매 time step 마다 고를수 있는 단어의 수가 vocab size V가 되고 매 time step마다 V의 가짓 수 그리고 time step t 가 있으면 Vt로 가능한 가지 수를 다 고려해야한다
이 경우 기하급수적으로 증가하는 경우의 수를 현실적으로 다 계산하기에는 너무 많은 시간과 계산량이 필요로 하게 된다
O(Vt) complexity
차선책으로 나온 방법이 Beam search 방법이다
Beam Search
Core idea : decoder의 매 time step마다 하나의 candidate만을 고려하는것도 아니고 기하급수적으로 늘어나는 Vt 만큼 고려하는것도 아니라 사용자가 정의해놓은 k개의 가능한 가지수를 고려하고 time step 이 진행함에도 k개의 경우의 수를 유지하고 마지막 까지 decoding을 진행한 후 최종적으로 나온 k개의 candidate중에서 가장 확률이 높은것을 택하는 방식이다
k개의 경우의 수에 해당하는 decoding의 output을 hypothesis 라 부른다
k is the beam size(in practice around 5 to 10)
A hypothesis y1,...,yt has a score of its log probability:
precision 과 recall 을 조화평균을 내서 하나의 값으로 summarize 할때 작은 값에 좀 더 치중된 값으로 개선하겠다는 의도
정밀도와 재현율이 균등하게 반영될 수 있도록 정밀도와 재현율의 조화평균을 계산한 값으로 생성된 문장을 종합적으로 평가하는 지표이다
이 값이 높을수록 생성된 문장이 좋다고 말할 수 있다
자연어 생성의 ground truth 값 대비 예측값의 정확도를 개선하는 방식
example)
predicted (from model 1) : Half as my heart is in Obama ooh na
reference (ground truth) : Half of my heart is in Havana ooh na na
predicted (from model 2) : Havana na in heart my is Half ooh of na
Metric
Model 1
Model 2
Precision
78%
100%
Recall
70%
100%
F-measure
73.78%
100$
model 2가 예측한 값은 전혀 문법적으로 말이 되지 않는 문장이 된다 하지만 전체 sequence의 단어 갯수도 ground truth와 동일하고 또 각각의 단어들이 순서는 다르지만 ground truth에 있는 단어들과 정확하게 일치하기 때문에 precision, recall, f-measure 모두 100% 가 나온다
이러한 문제를 보안하기 위해서 기계번역 task 에서 제안된 성능평가 measure인 BLEU score를 사용한다
개별 단어 레벨에서 봤을때 얼마나 공통적으로 ground truth 문장과 겹치는 단어가 나왔는지에 대한 계산 뿐만 아니라 N-gram 이라 불리는 즉, 연속된 n개의 연속된 단어로 봤을때 phrase가 정확하게 ground truth와 얼마나 겹치는지를 계산해서 최종 평가 measure에 반영하는 것이 BLEU에 가장 큰 특징
recall 은 무시하고 precision 만을 고려한다
가령 'I love this movie very much' 라는 문장이 있다고 생각할때 이를 한글로 번역하는 경우에 '나는 이 영화를 많이 사랑한다' 라고 번역을 한 경우에 ground truth 단어의 'very' 에 해당하는 '정말' 이라는 단어가 생략된것을 알수 있다
그렇지만 이 단어가 생략됬다 하더라도 이 문장이 충분히 좋은 정확도를 가지는 번역 결과라고 볼 수 있다
따라서 precision 이라는 것은 주어진 예측 문장에서 ground truth 단어와 얼마나 겹치는가 즉, 재현율에 해당하는 ground truth 에서 하나하나 다 빠짐없이 번역했는지에 대한 요소보다는 번역 결과만을 보고 몸소 느낄수 있는 정확도에 해당하는 precision만을 고려하는 measure가 된다
compute precision for n-grams of size one to four
4-gram 까지를 단위로 해서 각 경우에 대해서 precision에 대해서 기하평균을 구한다
이 기하평균의 의미는 4개의 서로 다른 precision 값을 좀 더 값이 작은쪽에 더 많은 가중치를 부여한 형태로 평균값을 계산한다
Add brevity penalty (for too short translations)
reference 길이보다 좀 더 짧은 문장을 생성한 경우에 짧아진 비율만큼 precision 값을 낮춰주겠다는 의미가 된다
recall의 최대값을 의미한다 즉, reference 문장에 10개의 단어가 있고 생성하는 문장의 길이가 10개면 실제 recall을 계산하기 이전에 10개 단어가 모두가 매칭이 된 이상적인 상황에선 100% recall을 기대할 수 있게 된다
마찬가지로 예측된 문장의 단어가 reference 단어보다 많은 경우에 ground truth에 있는 모두다 소환했다라는 이상적인 경우를 생각해보면 recall의 최대값으로써 1이 나오게된다
recall 을 아이에 고려하지 않은 simple한 형태의 brevity penalty로써 recall의 요소도 고려하게 된다
BLEU score example
predicted (from model 1) : Half of my heart is in Obama ooh na
reference (ground truth) : Half of my heaert is in Havana ooh na na
predicted (from model 2) : Havana na in heart my is Half ooh of na