5. 확률 분포와 정보엔트로피
엔트로피는 분자의 무질서도 혹은 에너지의 분산정도를 이르는 말이다.
이에 클로드 셰넌은 1948년 엔트로피의 개념에서 확률분포의 무질서도나 불확실성 , 정보 표현의 어려움 정도를 나타내는 정보 엔트로피의 개념을 고안한다.
컴퓨터로 특정 사건을 표현해보자.
아까 말한 이진 분류 문제 의 경우는 0,1
xor 같은 문제는 00,01,10,11로 표현 가능하다.
그럼
가위바위보 같은 문제는 ? 00,01,10 ?
이처럼 특정한 사건의 경우를 비트로 나타내는 최소 비트수를 정보량이라고 하고 밑이 2인 log로 이야기 한다.
정보량을 정의하고 확률분포에 대한 정보 엔트로피라고 한다면 아래와 같이 표현 가능하다.

이렇게 정의 되는 정보 엔트로피는 어떤 확률 분포로 일어나는 사건을 표현하는데 필요한 정보량이며 이 값이 커질수록 확률 분포의 불확실성이 커지고 결과의 예측이 어려워 진다.
교차 엔트로피
정보엔트로피가 하나의 확률 분포가 갖는 불확실성을 의미한다면
교차 엔트로피는 두가지 확률 분포가 얼마나 비슷한지를 나타내는 개념이다.

실제의 정보 엔트로피와 예측에 대한 엔트로피를 구해 추정하는 방식이 된다.
실제 딥러닝 학습에서 교차 엔트로피는 학습중에 수시로 수정되는 딥러닝 모델의 추정확률 분포 P가 있고 실제의 확률 분포 Q가 있다고 하면 P와 Q의 교차 엔트로피를 계산하거나 추정 할 수 있으면 교차 엔트로피가 작아지는 쪽으로 P를 꾸준히 수정하면 되겠다.
시그모이드의 계산값 폭주 문제
import numpy as np
def sig(x):
return 1/(1+np.exp(-x))
이 경우에 지수가 들어있다는 연유로 양수면 괜찮은데 큰 음수가 들어오는 경우에 오버플로가 발생할 수 있다.
따라서 분자 분모에 e^x를 곱해주면 아래 와 같이 된다.
def sig(x):
return np.exp(x)/(1+np.exp(x))


하지만
여기에 시그모이드가 사용되어 오버플로의 문제가 생길수 있다.
이또한 다음과 같이 처리 할 수 있다.

하지만 배치 형태로 쏟아지는 여러 데이터 중에 큰 양수 큰 음수도 있을텐데 이 경우는 어떻게 해야 하나?
들어오는 값마다 부호를 반별해서 나눠 줄수도 있겠지만 효율적이지 않다.
따라서 시그모이드와 시그모이드 교차 엔트로피함수의 정의식을 조합해 아래와 같이 변형 한다.

이를 코드로 나타내면 아래와 같다.
import numpy as np
def sig(x):
return np.exp(-relu(-x)) / (1+np.exp(-abs(x)))
def relu(x):
return max(x,0)
def sig_cross_ent(z,x):
return relu(x) - x*z + np.log(1+np.exp(-abs(x)))
def derv_sig_cross_ent(z,x):
return -z+sig(x)
https://cjstntjd.tistory.com/7
1. Titanic 데이터에 대한 시그모이드와 교차 엔트로피를 통한 이진 분류
https://cjstntjd.tistory.com/4 3. 이진 판단 문제 이진판단 문제의 신경망 처리 이진 판단 문제는 예/ 아니오로 답하는 문제이다. 특정 문제 해결에 있어서 예/ 아니오 로만 답하면 된다고 생각하면 굉장
cjstntjd.tistory.com