Patrick's 데이터 세상
Loss 함수 본문
loss는 손실 함수를 의미합니다.
손실 함수는 실제 값과 예측 값의 차이를 수치화해주는 함수입니다.
이 두 값의 차이 즉, 오차가 클수록 손실 함수의 값은 크고 오차가 작을수록 손실 함수의 값은 작아집니다.
회귀에서는 평균 제곱 오차, 분류 문제에서는 크로스 엔트로피를 주로 손실 함수로 사용합니다.
손실 함수의 값을 최소화하는 두 개의 매개변수인 가중치 w와 편향 b를 찾아가는 것이 딥러닝의 학습 과정이므로 손실 함수의 선정은 매우 중요합니다.
loss: 손실함수. 훈련셋과 연관. 훈련에 사용.
1) 크로스 엔트로피(Cross-Entropy)
Cross Entropy는 일반적으로 분류 태스크에 사용되는 손실함수입니다. 값이 낮을수록 예측한 확률이 실제 데이터의 확률과 비슷하다는 것을 뜻합니다.
두 개의 확률 분포가 주어졌을 때, 둘이 얼마나 비슷한지를 나타내는 수치라고 할 수 있습니다.
낮은 확률로 예측해서 맞추거나, 높은 확률로 예측해서 틀리는 경우 loss가 더 큽니다.
Cross Entropy의 손실 함수는 다음과 같습니다.
t_i는 i번째 클래스의 실제 확률을, y_i는 i번째 클래스의 모델 예측 확률입니다.
Cross Entropy는 자연어처리에서 MLM(Masked Language Model) 태스크에 주로 사용됩니다. 모델은 마스킹되거나 치환된 토큰의 실제 값(y)이 주어진 토큰중 무엇인지를, 즉 각 토큰의 확률을 예측합니다.
Cross Entropy를 pretrain 태스크에 사용하는 대표적인 모델로는 BERT가 있습니다.
※ 일반적인 분류 태스크에서, 이진 분류에서는 Binary Cross Entropy를 사용하기도 합니다.
2) Perplexity(PPL)
펄플렉서티(perplexity)는 언어 모델을 평가하기 위한 내부 평가 지표입니다. 보통 줄여서 PPL이 라고 표현합니다.
PPL은 쉽게 말해 '헷갈리는 정도' 쯤으로 표현 가능하고 수치가 낮을수록 언어 모델의 성능이 좋다는 것을 의미합니다.
PPL은 단어의 수로 정규화(normalization) 된 테스트 데이터에 대한 확률의 역수입니다. PPL을 최소화한다는 것은 문장의 확률을 최대화하는 것과 같습니다. 문장 WW의 길이가 NN이라고 하였을 때의 PPL은 다음과 같습니다.
문장의 확률에 체인룰(chain rule)을 적용하면 아래와 같습니다.
여기에 n-gram을 적용해볼 수도 있습니다. 예를 들어 bigram 언어 모델의 경우에는 식이 아래와 같습니다.
즉, 위의 수식은 타겟 단어의 바로 전 단어만 확인하고 나머지는 무시합니다.
PPL은 간단하게 얘기하면 모델이 다음 토큰을 몇개의 선택지중 고민하고 있는지 라고 할 수 있습니다. 즉 PPL이 작을수록 더 적고 정확한 선택지중 고민하는지를 나타냅니다.
다만 PPL이 높다고 해서 반드시 사람이 보기에 적절한 문장인지를 판단하긴 어렵습니다.
Perplexity를 pretrain 태스크에 사용하는 대표적인 모델로는 GPT가 있습니다.
3. BLEU
BLEU는 기계 번역 결과와 사람이 직접 번역한 결과가 얼마나 유사한지 비교하여 번역에 대한 성능을 측정하는 방법입니다.
측정 기준은 n-gram에 기반합니다.
언어에 구애받지 않고 사용할 수 있으며, 계산 속도가 빠릅니다. BLEU는 PPL과는 달리 높을 수록 성능이 더 좋음을 의미합니다.
1) 유니그램 정밀도(Unigram Precision) - 단어 개수 카운트로 측정하기
Example
- Candidate1 : It is a guide to action which ensures that the military always obeys the commands of the party.
- Candidate2 : It is to insure the troops forever hearing the activity guidebook that party direct.
- Reference1 : It is a guide to action that ensures that the military will forever heed Party commands.
- Reference2 : It is the guiding principle which guarantees the military forces always being under the command of the Party.
- Reference3 : It is the practical guide for the army always to heed the directions of the party.
가장 직관적인 성능 평가 방법은 Ref 1, 2, 3 중 어느 한 문장이라도 등장한 단어의 개수를 Ca에서 세는 것입니다. 그리고 그 후에 Ca의 모든 단어의 카운트의 합. 즉, Ca에서의 총 단어의 수으로 나눠줍니다.
이러한 측정 방법을 유니그램 정밀도(Unigram Precision)라고 합니다.
2) Modified Unigram Precision - 중복을 제거하여 보정하기
Example
- Candidate : the the the the the the the
- Reference1 : the cat is on the mat
- Reference2 : there is a cat on the mat
유니그램이 하나의 Ref에서 최대 몇 번 등장했는지를 카운트합니다. 이 값을 maximum reference count를 줄인 의미에서 Max_Ref_Count라고 부르겠습니다. Max_Ref_Count가 기존의 단순 카운트한 값보다 작은 경우에는 이 값을 최종 카운트 값으로 대체합니다. 정밀도의 분자 계산을 위한 새로운 카운트 방식을 식으로 표현하면 다음과 같습니다.
위의 카운트를 사용하여 분자를 계산한 정밀도를 보정된 유니그램 정밀도(Modified Unigram Precision)라고 합니다.
3) 순서를 고려하기 위해서 n-gram으로 확장하기
p_n을 계산하기 위한 함수를 별도로 다시 구현할 필요는 없는데, 앞서 구현한 함수 simple_count, count_clip, modified_precision은 모두 n-gram의 n을 함수의 인자로 받으므로, n을 1대신 다른 값을 넣어서 실습해보면 바이그램, 트라이그램 등에 대해서도 보정된 정밀도를 구할 수 있습니다.
p_n : 각 gram의 보정된 정밀도입니다.
N : n-gram에서 nn의 최대 숫자입니다. 보통은 4의 값을 가집니다. NN이 4라는 것은 p_1,p_2,p_3,p_4를 사용한다는 것을 의미합니다.
w_n : 각 gram의 보정된 정밀도에 서로 다른 가중치를 줄 수 있습니다. 이 가중치의 합은 1로 합니다. 예를 들어 N이 4라고 하였을 때, p_1,p_2,p_3,p_4에 대해서 동일한 가중치를 주고자한다면 모두 0.25를 적용할 수 있습니다.
4) Brevity Pernalty - 짧은 문장 길이에 대한 패널티
n-gram으로 단어의 순서를 고려한다고 하더라도 여전히 남아있는 문제가 있는데, 바로 Ca의 길이에 BLEU의 점수가 과한 영향을 받을 수 있다는 점입니다. 기존 Example 1에 다음의 Ca를 추가한다고 해보겠습니다.
Example
Candidate4 : it is
이 문장은 유니그램 정밀도나 바이그램 정밀도가 각각 2222, 1111로 두 정밀도 모두 1이라는 높은 정밀도를 얻습니다. 이과 같이 제대로 된 번역이 아님에도 문장의 길이가 짧다는 이유로 높은 점수를 받는 것은 이상합니다. 그래서 Ca가 Ref보다 문장의 길이가 짧은 경우에는 점수에 패널티를 줄 필요가 있습니다. 이를 브레버티 패널티(Brevity Penalty)라고 합니다.
다시 Ref보다 Ca의 길이가 짧을 경우에 패널티를 주는 브레버티 패널티의 이야기로 돌아보겠습니다. 브레버티 패널티는 앞서 배운 BLEU의 식에 곱하는 방식으로 사용합니다. 브레버티 패널티를 줄여서 BP라고 하였을 때, 최종 BLEU의 식은 아래와 같습니다.
위의 수식은 패널티를 줄 필요가 없는 경우에는 BPBP의 값이 1이어야 함을 의미합니다. 이를 반영한 BPBP의 수식은 아래와 같습니다.
c : Candidate의 길이
r : Candidate와 가장 길이 차이가 작은 Reference의 길이
출처 : wikidocs.net/31695
'Deep Learning > 이론' 카테고리의 다른 글
Subword Tokenizer (0) | 2021.04.22 |
---|---|
딥 러닝 학습 방법 (0) | 2021.04.11 |
정보 검색 개념 (0) | 2021.02.18 |
BOW(Bag of Words) (0) | 2020.12.17 |
텍스트 분석(Text Analytics) (0) | 2020.12.14 |