코딩복습장

CrossEntropy 와 Logistic Regression 본문

딥러닝

CrossEntropy 와 Logistic Regression

코복장 2024. 4. 1. 22:00
728x90

자 샤논 엔트로피를 검색해보자

 

일반적으로 엔트로피는 무질서도 또는 불확실성을 가리킨다. 섀넌 엔트로피의 개념은 클로드 섀넌이 자신의 1948년 논문 "수학적 통신 이론"에서 도입하였다.[1] 섀넌 엔트로피는 정보 소스(source)를 무손실 인코딩 또는 압축할 때 가능한 최상의 평균 길이의 절대적 한계치를 제공해준다

 

출처는 나무위키다.

 

정말 무슨 소리인지 하나도 모르겠다. 

그래서 정리를 시작했다...

 

샤논은 정보를 bits라는 것으로 표현했는데 이는 0, 1로 표시한다는 뜻이다.

위의 가능한 최상의 평균 길이의 절대적 한계치란 가장 효율적으로 즉 가장 짧은 길이의 bits로 정보를 무손실 인코딩

(압축)한 경우를 말하는 것이다. 

 

예를 들어보자!

 

내가 교수님께 하트를 보낼 확률을 p(x1)라고 하자

내가 교수님께 ㅗㅗ 를 보낼 확률을 p(x2)라고 하자

 

설마 교수님께 ㅗㅗ을 많이 보내겠는가? ㅋㅋㅋ 

 

당연히 하트를 많이 보낼것이다.

그렇다면 하트를 비트로 표현해보자 

하트 111

ㅗㅗ 0

 

하트를 3번 보내자

111 111 111

 

너무 비효율적이다.

 

하트를 0으로 표현하면

111보다 보내야하는 비트 수가 3분의 1로 줄어들게 된다.

 

자 여기서 알 수 있는 점 -> 자주 보낼수록 적은 비트를 쓰는 것이 효율적~!

 

이 문장을  그래프로 나타내보자

 

 

이제 이 그래프가 이해가 갈 것이다.

최상의 평균 길이의 절대적 한계치를 제공 -> 비트를 적게 쓰도록 만든다. -> 발생확률이 높다면 적은 비트(정보)사용

 

 

발생확률이 적을수록 비트량이 많아지는 것이 효율적이다. 

우리는 위의 함수모양을 어디서 봤을까?

 

바로! 로그함수에서 봤다. 위의 함수도 1에서 0이되는 것이 보이는가?

로그함수를 뒤집은 것이 위의 함수모양이다.

 

여기서 정의를 한번 더 보자

 

최상의 평균 길이의 절대적 한계치

 

평균은 확률에서 기댓값으로 구한다는 것을 다들 알 것이다.

 

따라서 위의 확률을 p라고 했을때 발생가능 확률p에 따른 정보의(비트의) 양은 다음과 같이 정의할 수 있다.

 

그렇다면 어떨때 entropy가 가장 커질까? 

바로 Uniform 분포상태일때이다.

 

왜일까? 

 

-> 규칙없이 아무렇게나 비트를 놔보자 정말 비효율적일 것이다. 

비트의 양을 가장 효율적으로 놨을때 정보의 양의 lowerbound가 위의 그래프이다.

-> 엔트로피 값이 엄청 커질 것이다. ( 코드 길이의 기댓값 최대) -> 효율 최악

 

자 이제 Cross Entropy를 살펴보자

 

이거 어디서 많이 봤는데..?

엔트로피의 로그식에서 p가 예측 확률로 변한 식과 동일하다.

 

그렇다면 이 값이 가장 작아지는 값은 엔트로피 값이 될 것이다.

즉 위의 식에서는 yi^이 yi가 될 경우 이다.( 최솟값)

 

여기서 다른 방식으로 해석을 해보자

 

yi^이 가장 효율적인 확률인 yi 가까워질 수록 위의 Loss값을 작아진다.

-> yi와 yi^이 얼마나 비슷한가? 측정하는 지표로 사용이 가능하다!

 

 

 

자 이어서 로지스틱 회귀를 살펴보자

 

우리는 로지스틱에서 시그모이드 함수를 activation으로 쓴다는 것을 알고 있다. (모르면 공부하고 오는걸 추천)

이진분류를 예시로 살펴보자

label이 0, 1이 있을때 시그모이드를 거쳐온 값을 우리는 1일 확률이라고 해석 가능하다.

 

 

자 이때 우리는 시그마 (z)를 세타와 x가 주어졌을때 나올 확률이라고 생각할 수 있다. 

d를 label이라고 한다면 p(d=1;세타, x) 로 d가 1일 확률을 표현할 수 있다.

 

여기에서 최대 우도법을 사용해보자. (Maximum Likelihood Estimation)

 

 

모르면 공부하고 오는게 좋다!

 

여기서 최댓값을 가지는 것이 실제 확률분포값과 거의 동일하기 때문에

yi = label

작은파이는 label이 1일 확률 (각각의 시행은 베르누이 분포로 설명 가능하다.)

L이 최댓값을 가질때 예측함수는 실제함수와 거의 동일한 분포를 가진다.

 

여기서 양번에 로그를 씌워보면 

 

다음과 같은 식이 만들어진다.

여기서 yi*log(pi)식을 어디서 많이 보지 않았나?

엔트로피 식이다. yi가 실제값이고 pi가 예측값이기 때문에 yi와 pi가 비슷할 정도로 나타낼 수 있다.

여기서 -만 붙으면 샤논의 엔트로피 식이 완성이 된다.

 

이것이 Logistic Regression에서 loss값으로 Cross Entropy를 쓰는 이유이다.

 

 

자 이러면 kl divergence도 간단하게 해석할 수 있다. 

- p(x) log Q(x) - ( - p(x) log p(x)) 

 

자기가 추정해서 만든 bits의 길이 - 최적의 bits길이 -> 자기가 얼마나 바보같이 bits를 짰는지

 

-> 얼마나 실제값과 차이가 나는지

 

 

728x90

'딥러닝' 카테고리의 다른 글

LSTM을 이용한 spam 메일 분류하기 ( Pytorch )  (0) 2023.08.25
Comments