728x90

Major types of Loss function

1. MSE /. MSE / ,,, (회귀에 사용됨)

2. Margin-based (Discriminative setting)
• 0/1 loss
• logloss
• exponential loss
• hinge loss

 

3. Probabilistic setting
• Cross-Entropy (실제로 많이 사용됨)

- 크로스 엔트로피란 무엇?: https://3months.tistory.com/436 (아주 잘 정리됨, 이하 내용의 출처)

예측 모형은 실제 분포인 q를 모르고, 모델링을 하여 q 분포를 예측하고자 하는 것이다.
예측 모델링을 통해 구한 분포를 p(x) 라고 해보자. 실제 분포인 q를 예측하는 p 분포를 만들었을 때, 이 때 cross-entropy 는 아래와 같이 정의된다. 

Cross-Entropy

- q와 p가 모두 식에 들어가기 때문에, cross-entropy 라는 이름이 붙었다고 할 수 있다. 

- 머신러닝을 통한 예측 모형에서 훈련 데이터에서는 실제 분포인 p 를 알 수 있기 때문에(지도 학습) cross-entropy 를 계산할 수 있다.

- 즉, 훈련 데이터를 사용한 예측 모형에서 cross-entropy는 실제 값과 예측값의 차이(dissimilarity)를 계산하는데 사용.

 

예를 들어, 가방에 0.8/0.1/0.1 의 비율로, 빨간/녹색/노랑 공이 들어가 있다고 하자, 하지만 직감에는 0.2/0.2/0.6의 비율로 들어가 있을 것 같다. 이 때, entropy 와 cross-entropy 는 아래와 같이 계산된다.

 

 

- 크로스 엔트로피 based on Negative Log-likelihood

why log?: 곱의 계산을 합의 계산으로 바꾸기 위해


정답인 class에 대해 우리 모델이 부여한 score (정답이 아닌 class로 예측할 확률은 모두 생략)


why negative?


*잠시, Likelihood-function이 뭔데?

https://angeloyeo.github.io/2020/07/17/MLE.html

- likelihood 라는 것은 특별히 어려운 것이 아니고, 지금 얻은 데이터가 특정 분포로부터 나왔을 가능도.

그림 1. 획득한 데이터와 추정되는 후보 분포 2개(각각 주황색, 파란색 곡선으로 표시)

눈으로 보기에도 파란색 곡선 보다는 주황색 곡선에서 이 데이터들을 얻었을 가능성이 더 커보인다. 왜냐면 획득한 데이터들의 분포가 주황색 곡선의 중심에 더 일치하는 것 처럼 보이기 때문이다. 이 예시를 보면, 우리가 데이터를 관찰함으로써 이 데이터가 추출되었을 것으로 생각되는 분포의 특성을 추정할 수 있음을 알 수 있다. 여기서는 추출된 분포가 정규분포라고 가정했고, 우리는 분포의 특성 중 평균을 추정하려고 했다.

출처: https://angeloyeo.github.io/2020/07/17/MLE.html

그림 2. 주황색 후보 분포에 대해 각 데이터들의 likelihood 기여도를 점선의 높이로 나타냈다.

 

- 수치적으로 이 likelihood를 계산하기 위해서는 각 데이터 샘플에서 후보 분포에 대한 높이(즉, likelihood 기여도)를 계산해서 다 곱함.

출처: https://angeloyeo.github.io/2020/07/17/MLE.html

 

 

  • CrossEntropyLoss != Log-likelihood model
    ("Negative Log"-likelihood는 loss function의 미분이 용이하고 직관적이도록 돕는 아이디어같은.)

    ("Likelihood function" 역시 파라미터 추정을 위한 컨셉' 느낌.)
  • 파이토치에서 CrossEntropyLossLogSoftmax를 적용한 후 Negative Log-likelihood(NLL) Loss까지 적용한 식과 동일하다. (여기서 LogSoftmax는Softmax 함수를 적용한 후 Log 함수를 적용하는 것과 동일한 함수.)
  • CrossEntropyLoss 안에서 LogSoftmax와 Negative Log-likelihood 가 진행되기 때문에 softmax나 log 함수가 적용되지 않은 모델 output(raw data)을 input으로 주어야 합니다.
  • 이와 달리 NLLLoss 안에서는 softmax나 log함수가 이뤄지지 않습니다. 그래서 모델 output(raw data)을 input으로 그대로 사용하는 것이 아니라 LogSoftmax 함수를 적용한 후 input으로 사용해야합니다.

 

 

출처: https://supermemi.tistory.com/entry/Loss-Cross-Entropy-Negative-Log-Likelihood-%EB%82%B4%EC%9A%A9-%EC%A0%95%EB%A6%AC-Pytorch-Code


• KL Divergence (예측 분포와 정답 분포 간 차이 기반)

 

728x90

+ Recent posts