hozy연 2023. 3. 13. 01:58

#1. non-linear activation 이진 분류 (unit step function )

unit step fuction_https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=leesu52&logNo=90189504569

단점: 미분 불가능, 직선 형태이기 때문에 엄격하게 구분

단점을 해결해 줄 다른 수식이 필요함. 그것이 시그모이드!

 

#2. sigmoid 

sigmoid 그래프

 

장점: 전 구간에서 미분 가능, 곡선이기 때문에 조금 덜 엄격함, 확률로 표현가능 --> 1과 0으로 가장 잘 나눠주는 선(결정경계)을 만들어서 출력값을 반환


*그렇다면 예시를 보자,

강아지 그림(확률 q) =1

고양이 그림(확률 1-q)=0

 

따라서 강아지의 확률을 높이려면 q를 최대화 해야하며, 고양이 확률을 높이려면 1-q를 최대화 해야한다. 

즉, 간단한 식으로 보면 아래와 같다. 

자 그러면 사건 하나하나를 넣어서 확률을 구해보자. 사건은 독립시행이기 때문에 곱으로 표현된다.

우리는 이 곱의 값을 키워야한다. 하지만 0~1 사이의 값을 반환하는 확률을 특성상 곱하면 곱할수록 0으로 수렴하게 된다. 

이를 해결하기 위해 log를 취해준다. 

log를 취함으로써 덧셈으로 변경되었다. 또한 log함수는 단조증가하기 때문에 값이 커지는대로 그대로 커진다.

여기서 위 수식에서 '-'를 취함으로써 Loss함수를 정의할 수 있다.  

따라서, 위의 loss 함수에 weight를 미분하여 backpropagation하면 된다. loss 값이 작아지는 방향으로 나아가게 된다.


추가 지식>

사실 시그모이드 함수 표현은 logit으로부터 왔다고 볼 수 있다. 전개를 확인해 보자.

양변에 지수 취해주면, 

q의 확률을 구할 수 있다.  즉, 시그모이드는 logit을 linear regression한 것으로 볼 수 있다. 

따라서 모델은 sigmoid를 취하기 전까지는 logit결과 값으로 훈련하며 loss 확률을 구하기 위해 sigmoid를 통과한다고 기억해보자. 


Q. loss함수를 log-odds가 아닌 MSE를 사용한다면?

비교해보자!

sigmoid를 통과시켜 q의 값을 구해보면,

 

local minimum에 빠지지 않기 위해서는 convex한 그래프가 좋다. 

따라서 logit을 사용한 loss값이 더 적합해보인다. 


여기서 놀라운 사실!! 딥러닝에서 loss를 구하기 위해서는 MLE를 쓴다. 따라서 MSE, logit 둘다 근본은 MLE에서 왔다는 것! 단지 가정이 다를 뿐!! 전개를 살펴보자.

 

*NLL = Negative Log-Likelihood maximize

MLE

 

즉, Binary한 분류에서는 베르누이 확률분포 가정이 best가 된다.