Data/머신러닝 & 딥러닝

엔트로피와 크로스엔트로피

빛날희- 2021. 7. 28. 02:17

참고강의1 - 엔트로피

참고강의2 - 크로스 엔트로피


 

▶ 엔트로피란

entropy 는 무질서도를 의미한다. 따라서 엔트로피 값이 클수록 데이터가 혼재되어있어 분류가 잘 되어있지 않은 상태이고 그 값이 작을 수록 데이터가 잘 분리되어있다는 뜻이다. 즉 불확실성의 정도를 나타내는 수치라고 볼 수 있다. 

 

 

 

▶엔트로피 공식

어떤 특정 현상이 발생할 확률을 p라고 할 때 엔트로피의 공식은 다음과 같다. 

특정 사건이 발생할 확률 p에 로그를 취해준 p를 곱한 후 모두 더한 값에 -를 취해준다. 

 

 

 

▷예제 

해당 공식의 예제를 들어보자. 

동전을 던졌을 때 앞이 나올지 뒤가 나올지 예측하는 문제가 있다고 해보자. 앞이 나올 사건과 뒤가 나올 사건에 대해 예측한 확률 분포값에 따라 각각의 엔트로피를 구해보자. 

 

1)

앞이 나올 확률: 50%

뒤가 나올 확률: 50%

엔트로피: -(0.5 * log0.5 + 0.5*log0.5) = 1

 

2) 

앞이 나올 확률: 100%

뒤가 나올 확률: 0%

엔트로피: -(1*log1 + 0*log0)= 0

 

3) 

앞이 나올 확률: 90%

뒤가 나올 확률: 10%

엔트로피: -(0.9*log0.9 + 0.1*log0.1)= 0.47

 

 

앞과 뒤가 나올 확률이 각각 50%인 1번 케이스는 그만큼 어떤 면이 나올지 불확실하기 때문에 엔트로피 값이 가장 큰 1이 나왔다. 반면 앞이 나올 확률이 100%이기 때문에 의심할 여지가없는 2번 케이스의 경우 엔트로피가 가장 낮은 0이 나왔다. 그리고 그 외의 경우인 3번 케이스는 0에서 1사이의 값이 도출되었음을 알 수 있다. 

해당 예제를 통해 사건의 불확실성이 클수록 엔트로피값이 커짐을 확인할 수 있었다. 

 

예제의 경우 분류해야하는 타겟의 클래스가 앞과 뒤, 두가지 였으므로 2^ 1=2로 엔트로의 최대값이 1이된다. 만일 구분해야하는 클래스가 8개라면 엔트로피의 최대값은 2^3=8로 3이 된다. 분류해야할 클래스가 32개라면 2^5= 32로 엔트로피 최대값은 5가 된다. 

 

 

 

▶크로스 엔트로피란

크로스 엔트로피는 엔트로피와 상당히 유사한 개념이다. 엔트로피가 정답이 나올 확률만을 대상으로 측정한 값이었다면 크로스 엔트로피는 모델에서 예측한 확률과 정답확률을 모두 사용해 측정한 값이다. 

크로스 엔트로피는, 모델에서 예측한 확률값이 실제값과 비교했을 때 틀릴 수 있는 정보량을 의미한다. 엔트로피와 마찬가지로 그 값이 적을 수록 모델이 데이터를 더 잘 예측하는 모델임을 의미한다. 

딥러닝의 손실함수로 많이 사용되는 개념으로 딥러닝 모델에선 예측값과 정답값의 크로스 엔트로피 값을 줄이기 위해 가중치와 편향을 업데이트하며 학습을 수행한다.  

 

 

 

▶ 크로스 엔트로피 공식

모델에서 각 클래스에 대해 예측한 확률값을 q, 실제 값의 확률을 p라고 하면 공식은 다음과 같다.

엔트로피의 공식과 다른 점은 로그를 취해주는 값이 실제 값의 확률이 아닌 모델에서 예측한 확률 값이라는 것이다. 크로스 엔트로피는 예측값이 정답과 얼마나 근사한지 알아보기 위한 것이므로 정보량은 예측값의 확률을 사용해야하기 때문이다. 

 

 

 

▷ 예제

다음 그림과 같이 모델이 클래스에 대한 확률값을 예측하고 정답 확률이 있다고 해보자. 각 케이스에 대해 크로스 엔트로피값을 구해보자. 

1) 

Q값: 0.0, 1.0, 1.0

크로스 엔트로피: -(log 0 * 1 + log1 *0 + log1* 0)= Infinity

 

2) 

Q값: 0.8, 0.1, 0.1

크로스 엔트로피: -(log 0.8 * 1 + log 0.1 * 0 + log 0.1 * 0) = 0.32

 

3) 

Q값: 1, 0, 0

크로스 엔트로피: -(log 1 * 1 + log 0 * 0 + log 0* 0) = 0

 

예측한 확률이 정답 확률과 완전히 다른 1번 케이스의 경우 크로스 엔트로피는 무한대가 나오는 반면 두 값이 완전히 같은 3번 케이스의 경우 크로스 엔트로피는 0이 나온다. 그 중간의 케이스인 2번에서는 0보다 큰 수치가 도출되는 것을 볼 수 있다. 

 

크로스 엔트로피는 정보량을 모델이 예측한 확률을 사용하는 반면 엔트로피는 정답 확률을 정보량으로 사용하기 때문에 크로스 엔트로피의 값이 엔트로피 값보단 크거나 같은 수치를 가진다. 즉 크로스 엔트로피 손실함수를 사용했을 때 틀릴 수 있는 정보량이 엔트로피보다 더 많기 때문에 그 값이 더 클 수 있는 것이다.