앞선 2장에서는 MSE(Mean Square Error)를 cost function으로 사용했습니다. 그런데, 모든 딥러닝에서 Cost function이 MSE로 통일되는건 아니에요. 그래서 이번장에서는 또 다른 cost function에 대해서 알아보려고 해요.



<1. 이진분류에 사용되는 Cost function; Logistic cost function>



상품을 품질 테스트 할때, 테스트의 합격 여부를 구분하려는 문제가 있다고 해볼께요. 어떤 입력 X가 들어왔을 때, d=0 을 '불합격', d=1 을 '합격'이라고 한다면 아래와 같이 표현할 수 있게 됩니다. 




1번은 상품의 품질에 영향을 미칠 수 있는 변수들 (ex: x11=색이변한정도, x12=내구성 ...)에 대한 정보를 담고 있습니다. 그리고, 3번 처럼 각 변수들이 가지고 있는 값들이 합격(d=1)인지, 불합격(d=0)인지에 대한 정보를 갖고 있습니다. 1~3번에 대한 정보를 갖고 신경망(가중치)을 학습시킵니다. 우리의 목표는 4번처럼 우리가 갖고 있지 않은 미지의 입력값 x가 들어오더라도 최적화된 가중치 w를 통해 상품이 합격인지 불합격인지 구분해 낼 수 있는 신경망을 얻는 것입니다.




앞에서 간단한 흐름을 언급했으니 이제부터 이진분류에 대한 문제정의를 해볼거에요.



입력값 x가 들어왔을 때, d=1일 확률(=조건부확률)을 수식으로 써보면 아래와 같습니다.



앞서 설명한 neural network의 perceptron(neural network) 모델 기반으로 설명하자면 아래와 같습니다.


① 상품 품질에 영향을 미칠만한 변수들 x11, x12, ... 등을 입력으로 받는다.

② 입력값에 가중치 값을 곱해준다.

③ Activation function을 거친 결과가 50%(0.5) 이상이면 1이라는 값을 출력하여 합격이라는 결과를 주고, 50% 이하면 0이라는 값을 출력하여 불합격이라는 결과를 주게 된다. (Activation function에 대한 자세한 설명은 바로 다음장에서 이어지니 우선은 이런 과정이 있구나 정도로 이해해주시면 될거같아요!)


<사진1>


지금까지 설명한 내용을 수식으로 정리하면 아래와 같습니다. "x를 입력으로 받았을 때, w값이 곱해진 결과가 d=1 or d=0일 확률"이라는 문장을 아래 수식하나로 표현할 수 있게 됐네요. (아래의 확률값이 activation function을 거쳐 최종 output 값(0 or 1)을 갖게 됩니다)



다시 종합해서 정리해 보겠습니다. 우리에게는 상품품질에 영향을 미치는 변수정보 x1={x11, x12, ...} 가 있고, 그 상품이 합격인지 불합격인지에 대한 정보도 가지고 있습니다. 이미 우리가 갖고있는 입력값에 대한 합격 또는 불합격 정보를 통해 최적의 가중치 값 w를 찾을 예정입니다.


그런데, 최적의 가중치 값 w를 어떻게 찾는지 궁금하지 않으신가요? 이를 이해하기 위해서는 최대우도법(maximum likelihood estimation)이라는 개념을 알아둘 필요가 있습니다. 


먼저 아래 영상을 통해 maximum likelihood estimation에 대한 의미를 알아보도록 할께요.


위의 강의에서 log가 쓰인 이유를 간단히 정리하자면 아래와 같습니다.

log함수는 concave(오목)이기 때문에, 미분 시 maximum 값을 고를 수 있게 된다.

log 함수는 미분이 쉽다.

log 함수는 곱하기 부분을 덧셈으로 나눌 수 있기 때문에, 전체 식을 미분하기 쉽다.



그리고 두번째로 기하적인 관점에서 Maximum likelihood estimation이 어떻게 동작하는지 살펴볼께요. (영어설명이긴 한데, 자막과 같이 보면 이해하는데 크게 어렵진 않으실거에요!)


강의는 잘 보셨나요? 그렇다면 제가 다시 정리해서 설명드려 볼께요.

먼저 아래 그림을 살펴볼께요.

<사진2>


우리에게는 X라는 입력데이터가 있습니다. 위의 사진에서 보면 X축에 있는 빨간점들이 되겠네요. 위의 확률분포는 Normal distribution 입니다. 가운데에 있는 입력변수들은 합격과 관련된 입력변수들입니다. 그런데, 위에 있는 Normal distribution 위치는 조금 이상하죠? 합격으로 부터 멀리떨어진 불합격과 관련된 입력변수의 확률값이 굉장히 높게 나오네요. 왜 이렇게 나온건지 지금부터 천천히 살펴 보겠습니다.



우리가 세운 모델(=위의 수식)에서는 X입력값 말고도 확률값에 영향을 미치는것이 있었습니다. 그것이 w(가중치)입니다. 


다시 사진2를 보게 되면 초기에는 가중치값이 랜덤하게 설정되어 있다보니, 합격이 아닌 입력데이터X가 들어오더라도 최적화되지 않은 가중치 w의 영향으로 합격일 확률이 굉장히 높게 나왔어요. 


하지만, 가중치들이 학습을 거치게되면 아래와 같이 입력데이터들에 따른 합격, 불합격 정보를 잘 나타나게 해줍니다. 



       

<사진3>                                                                                          <사진4>



이제는 MLE(최대우도추정법)에 대한 정의를 이해하실 수 있으실 겁니다.


"우도(likelihood = L(Θ;w|x) 란 이미 주어진 표본데이터(X)들에 비추어 봤을 때 모집단의 parameter인 가중치(w)에 대한 추정이 그럴듯한 정도를 가리키며, 미지의 가중치(=parameter)값인 확률분포에서 뽑은 X값들을 바탕으로 우도를 가장 크게 해주는 추정방식을 Maximum Likelihood Estimation 이라고 한다" 

 


자! 그렇다면 이제 수식을 살펴볼까요?


우리는 처음에 이진분류의 문제정의를 아래와 같이 만들었습니다.



그렇다면 위의 수식모델을 기반으로 입력데이터 X에 영향을 미치는 w에 대한 우도(Likelihood)를 아래처럼 구할 수 있게 됩니다. (첫번째 영상강의를 보시면 아래 수식의 의미를 정확히 이해하실수 있으실거에요!)




마지막으로 첫 번째 강의에서 언급해주신 대로 위의 수식을 log화 해주면 아래와 같은 수식이 완성되고, 우리의 최종 오차함수가 됩니다. (식 앞에 마이너스를 해준 이유는 신경망의 cost 함수에서는 미분시 최소값을 찾아야 하기 때문이에요!)






지금까지 이진분류에 따른 오차함수를 설정하는 방법에 대해서 알아보았어요.


오차함수를 정하는 방법을 아래처럼 요약할 수 있겠네요!

1. 문제정의에 따라 신경망이 출력하는 예상값과 실제 정답지에 대한 오차를 어떻게 설정할지 결정한다.

2. 오차함수를 결정할 때에는 미분이 쉽게 되는지, 기하적으로 미분시에 cost(오차)값을 최소한으로 만들어 줄 수 있는지를 살펴보아야 합니다.




<2. 다 클래스 분류에 사용되는 Cost function; Cross Entropy function>


다음장에서는 이진클래스 분류가 아닌 여러 클래스 분류에 대해서 알아보도록 할거에요. 핵심적인 설명은 이진분류에서 설명을 다했기 때문에 여기서는 수식만 설명을 하겠습니다.


이진 분류의 수식을 이해했으면 다 클래스에 대한 수식도 금방 이해할 수 있어요. 몇 가지 다른 점들만 설명할께요!


1. 분류하려고 하는 클래스를 아래와 같이 정의 한다.


2. 앞선 이진분류에서 언급한 (x,d) training data들에서 d의 표현식을 아래와 같이 정의한다. (dn의 각 성분은 대응하는 클래스가 정답 클래스일 때 1이 된다) 예를 들어, 우리가 0~9 숫자를 분류한다고 했을때, 우리가 갖고 있는 이미지 데이터 x가 2라고 하면 d는 d=[0 1 0 0 0 0 0 0 0 0] 가 됩니다.



그럼 이진분류의 기본개념을 생각해보면 다 클래스 분류의 cost function을 만들어 볼까요?


1. 먼저 사후확률 분포를 만들어 줍니다 ('사후확률분포'라는 용어 대해 깊게 생각 하실 필요는 없습니다!)


2. 위의 표기식에 우도를 구하면 아래와 같다


3. 위의 우도식을 log 취하여 부호를 반전한 것을 오차함수로 삼고, 이 함수를 cross entropy(or negative log likelihood)라고 한다.


사실 cross entropy라는 개념은 정보이론에서 KL divergence와 연계되서 설명이 많이 되는 개념이에요. 정보이론에서 사용되는 cross entropy 개념은 여기를 참고해주세요!




지금까지 딥러닝에서 쓰이는 대표적인 오차함수들에 대해서 알아보았습니다.


실제로는 딥러닝에서 쓰이는 cost function 종류가 많지는 않다고 해요. 하지만, 오차함수라는 개념이 왜 나왔는지에 대한 맥을 잡고 있다면, 자신이 새로이 문제정의를 하고 새로운 cost function을 만들어 좀 더 딥러닝 모델의 효율을 높일 수 있겠죠??







혹시, 글 초반부분에 Activation function에 대해서 언급하고 추후에 설명하겠다고 했던말 기억하시나요? 다음 장에서 Activation function에 대해 설명할 예정이니 많이 기대해주세요!





#Cost function   #오차함수   #Maximum Likelihood Estimation (MLE)   #Cross Entropy   

#Logistic cost function

 


P.S 2장에서와 같이 책을 하나 더 추천해 주고 싶은데요. 수식에 대한 이해를 좀 더 깊게 하시고 싶으신 분이 계신다면 아래 책을 추천해드려요! 이번장에서 설명한 내용 대부분은 아래 책을 참고했으니 관심있으신 분은 한 번 읽어보시길 바랍니다!



<사진5>





[사진래퍼런스]

사진1

http://www.yoonsupchoi.com/wp-content/uploads/2017/08/neuron.jpg

사진2,3,4

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

사진5

https://www.coupang.com/vp/products/41622004?itemId=151541085&vendorItemId=3349262725&src=1042503&spec=10304968&addtag=400&ctag=41622004&lptag=GOOGLE_SHOPPING&itime=20191230173732&pageType=PRODUCT&pageValue=41622004&wPcid=11713953347767192453648&wRef=&wTime=20191230173732&redirect=landing&isAddedCart=

+ Recent posts