저번 게시글에서는 MAE, MSE, RMSE 에 대해 올렸습니다.

 

이번 게시글은 그 외 다른 Loss Function 입니다.

 

그 전에 Entropy 먼저 살펴보겠습니다.

 

※ 참고로 아래 글에서 쓰일 \(log\)는 밑이 자연상수인 자연로그 입니다.

 


 

1. Entropy

 

Entropy는 불확실성의 척도로 정보이론에서의 Entorpy는 불확실성을 나타내며

 

Entropy가 높다는 것은 불확실성이 높고, 정보가 많다는 것을 의미 (매우 놀라운 사건).

Entropy가 낮다는 것은 불확실성이 낮고, 정보가 적다는 것을 의미 (흔히 일어나는 사건).

 

여기서 불확실성은 어떤 데이터가 나올지 예측하기 어려운 경우입니다.

 

Entropy

여기서, \(p(x_i)\) 와 \(logp(x_i)\) 의 의미를 보겠습니다.

  • \(log(\frac{1}{p(x_i)})\) : 정보량
  • \(p(x_i)\) : 그 정보가 나올 확률

Shannon Entropy에서는 \( log_2 \) 로 쓰던데 여기서는 밑을 \( e \) 로 합니다.

 

Example)

 

※ 동전 던지기& 주사위 던지기

  • 동전을 던졌을 때, 앞/뒷면이 나올 확율은 각각 1/2 입니다.
  • 주사위는 각 6면이 나올 확률은 모두 1/6 입니다.

위: 동전, 아래: 주사위

위의 식을 계산하면

 

동전의 경우 0.693, 주사위의 경우 1.79가 나오게 됩니다.

 

즉, 주사위의 Entropy가 더 높습니다.

 

※ 중요) \( log(\frac{1}{p(x_i)}) \) 가 정보량인 이유! ※

더보기

기대값

기대값의 예시를 들어보겠습니다.

 

주사위를 던졌을 때 생각해보면 1 ~ 6 까지의 숫자가 나오고 각각 확률은 같습니다.

 

그렇다면 주사위를 던졌을 때의 기대값은 아래와 같습니다.

 

주사위의 기대값

 

즉, 데이터의 정보확률을 곱해주는 것입니다.

 


 

자 그러면 여기서 기대값의 식과 Entorpy의 식을 비교해보겠습니다.

 

위 : 기대값, 아래 : Entropy

 

\( x_i \) 와 \( log_2(\frac{1}{p_i}) \) 를 제외하면 전부다 동일합니다.

 

즉, Entropy는 기대값의 식과 동일한 Format을 가지게 됩니다.

 

\( x_i \) 는 정보량이므로 \( log_2(\frac{1}{p_i}) \) 도 정보량이라고 볼 수 있습니다.

 

더욱 자세한건 허민석 님의 유튜브를 참고!

 

https://www.youtube.com/watch?v=CdH7U3IjRI8

 


 

 

2. Cross-Entropy

 

Cross-Entropy는 예측값이 정답값과 얼마나 근사한지를 볼 수 있는 척도 입니다.

 

예측한 정보량을 실제 확률에 곱하게 됩니다!

 

Cross-Entropy

  • \( p(x) \) : 예측 확률
  • \( log\frac{1}{p(x_i)} \) : 예측값의 정보량
  • \( q(x) \) : 실제 데이터값의 확률

 

학습이 잘되고 있다면 Cross-Entropy 값은 정답의 Entropy 값에 가까워 집니다.

 

그러므로 Cross-Entropy 의 값은 Entropy의 값보다 크거나 같습니다.

 

 

Example)

 

실제로 가방에는 아래와 같은 확률로 3가지 색의 공이 들어있습니다.

  • 빨간 공 : 0.8
  • 초록 공 : 0.1
  • 노랑 공 : 0.1

하지만 예측값

  • 빨간 공 : 0.2
  • 초록 공 : 0.2
  • 노랑 공 : 0.6

그렇다면 Entropy와 Cross-Entropy는 아래와 같이 계산이 됩니다.

 

Cross-Entropy

 

※ KL Divergence ( Kullback Leibler Divergence )

더보기

KL Divergence는 두 개의 서로 다른 확률 분포를 비교하는 방법입니다.

 

KL Divergence
  • \( p_i \) : 예측 확률 분포
  • \( q_i \) : 실제 확률 분포

 

위의 식은 KL Divergence 입니다.

 

식을 보면 KL Divergence에 Cross-Entropy의 내용이 포함되어 있습니다.

 

Entropy(q)는 결국 상수값이므로

 

즉, KL Divergence를 최소화 시키기 위해서는 결국 Cross-Entropy를 최소화 시켜야 합니다.


 

 


Binary Cross Entropy

 

Binary Cross Entropy는 이진분류를 수행할때 사용되는 Loss Function 으로

 

sigmoid activation의 Output 값을 이용합니다.

 

즉, 참 or 거짓 경우의 수가 2가지인 경우 입니다.

 

이러한 기능을 해주는 것이 \( log \) 입니다.

 

정답값이 1이라고 했을때 \(x\)값이 1로 다가갈때 값이 감소하는 \( -log \) 를 사용하고,

 

정답값이 0이라고 했을때 \(x\)값이 0으로 다가갈때 값이 감소하는 \( -log(1-x) \) 를 사용하면 됩니다.

 

위의 두가지 경우를 모두 만족시키는 식을 만들어보면 아래와 같이 이루어집니다.

 

 

아래는 Cross Entropy에서 유도한 식입니다.

Binary Cross Entropy 유도

 

 

 


Categorical Cross-Entropy

 

Categorical Cross-Entropy는 분류해야할 Class가 3개 이상인 경우,

 

즉, Multi Class 분류에 사용됩니다.

 

널리 쓰이는 프레임워크 3가지에서는 multi-class에서 쓸 수 있는 cross entropy loss를 정의해놓았습니다.


물론 이는 binary class에서도 적용이 가능합니다. 클래스가 2개일 때 sigmoid와 softmax는 같은 식이 됩니다.

  • Caffe : SoftmaxWithLoss Layer
  • Pytorch : torch.nn.CrossEntropyLoss
  • TensorFlow : tf.nn.softmax_cross_entropy (deprecated) → tf.nn.softmax_cross_entropy_v2

 

보통 softmax 후에 Cross-Entropy를 적용해줘야 하지만,

 

Pytorch의 torch.nn.CrossEntropyLoss 안에 softmax가 포함되어 있습니다.

 

아래 접은 글을 보면 Cross Entropy Loss가 가중치를 다르게 주어지는걸 알 수 있습니다.

 

※ softmax

더보기

sofrmax

만약 총 Class의 수가 3개면

  • softmax를 사용하게 되면 벡터를 합이 1이 되는 확률값으로 변환해준다!
  • 값이 조금만 변하여도 출력은 크게 변한다!

 

Example)

학생으로 이루어진 집단 A가 있다. 이 집단은 초등학생 1명, 중학생 1명, 고등학생 3명으로

A(1, 1, 3) 인 집단이다.

이 중 임의로 한명을 콕 집었을 때 그 학생이 초등학생, 중학생, 고등학생일 확률을 각각 구하여라.

  • 초등학생 수 : es
  • 중학생 수 : ms
  • 고등학생 수 : hs

Case 1) 일반적인 확률

Case 2) softmax

이걸로 알 수 있듯이 큰 값의 가중치를 크게 부여 한다는 것을 알 수 있습니다!

 

또한, 값을 변화시켰을 때도 softmax에서 더 두드러지게 표현됩니다.

 

 

 

https://toyourlight.tistory.com/16

https://syj9700.tistory.com/38


 

 

 

 

 

 

출처 :

 

 

softmax : 

 

'Deep Learning > deep learning' 카테고리의 다른 글

07_성능 평가 방법 AP (Average Precision)  (0) 2022.05.12
06_Loss Function_3_Focal Loss, IoU Loss  (0) 2022.05.11
06_Loss Function_1_MAE,MSE,RMSE  (0) 2022.05.03
05_Overfitting, Regularization  (0) 2022.04.18
04_Max Pooling  (0) 2022.04.18

+ Recent posts