Q. 왜 단층 Perceptron 모델에서 Layer를 추가하게 되었나요? 

Q. Universal Approximation Theorem은 뭔가요? 



2~4장까지 배웠던 부분을 아래와 같이 하나의 그림으로 요약을 할 수 있습니다. 

1.입력값들이 가중치를 곱합니다(=aj) 결과가 aj로 표현되고 

2. aj는 activation function 'f'를 통과하고 자신들이 예측한 값 yj을 도출합니다.

3. 실제 정답 값 tj의 오차값을 (문제정의에) 알맞은 cost function을 통해 도출(=ej=(tj-yj)^2/2)합니다.

4. 오차값(ej)을 기반으로 backprogation을 통해 가중치 w를 업데이트 함으로써 학습진행하게 됩니다.


<사진1>



이러한 Perceptron은 많은 문제를 해결해 줄 것으로 기대했어요. 예를들어 두 개의 입력값 x1, x2 ∈ {0,1} 중 하나만 1이라는 입력이 들어오면 1이라는 결과를 도출하는 OR 문제같은 경우나, 두 개의 입력값이 모두 1이어야만 1이라는 결과를 도출하는 AND 문제와 같은 경우는 쉽게 해결이 가능했어요.


x1을 X로, x2를 Y라고 하고 Y를 C라는 임의의 상수라고 표현하면 activation function을 거치기 직전인 w1X+w2Y=C 라는 식이 만들어 지겠네요. 그런데 왼쪽 식을 Y=(-w1X+C)w2 라고 바꿔주면 직선의 방정식 (linear) 이 되는 것을 볼 수 있죠?


충분히 두 개의 입력으로 구성된 perceptron으로 문제 해결이 가능해졌어요.

 

  

 

<사진2>




하지만 XOR 문제를 푼다라고 가정해봅시다. 두 개의 독립변수 x1, x2 ∈ {0,1} 가 입력으로 받아들여지고 이 두 개의 입력중 오직 하나의 입력만이 1인 경우에만 1이라는 결과를 출력할 수 있는 문제입니다. 이를 간단히 표현하면 아래와 같이 표현할 수 있겠네요. 


 그런데 우리가 정의한 문제공간(Original x space = 사진2 '가운데 그림')은 직선으로는 구분하게 힘들어 보여요. 물론 w1x1+w2x2=c 라는 식이 non-linear한 성격인 activation function을 거치면 어떤 곡선을 나타내는 식이 만들어져 XOR 문제를 해결할 수 있겠지만 현재 우리가 알고 있는 activation function으로는 힘들다고 해요. (제 생각으로는 activation function이 직선형태(linear)라고 할 수는 없지만, ReLU, Leaky ReLU 와 같은 함수들은 영역에 따라 상당히 linear(직선)한 성격을 갖고 있어요. 그래서 아래와 같은 문제를 해결할 수 없는거 같아요)


<사진2>


이렇게 간단한 문제조차도 해결하지 못했기 때문에, 신경망 연구는 더이상 지속되기 힘들다고 했지만 단순히 Layer를 추가 함으로써 위와 같은 문제를 쉽게 해결할 수 있게 되었어요. 


우선 기존의 perceptron 모델은 input layer 하나만 있었다면, 우리는 hidden layer라는 층을 추가해서 layer를 2개 이상으로 만들거에요 (=Multi-Layer Perceptron). 그리고 W, w, c는 이미 학습을 완료했다고 가정하고 그림으로 요약하면 아래와 같아요.


<사진3>



처음에 "WX+c --> activation function"과정은 perceptron에서도 봤던 과정이에요. 그런데, 이렇게 한번 거치고 나면 "Original x space->Learned h space"로 문제공간이 변경된 것을 볼 수 있을거에요. 이렇게 변형된 "Learned h space"를 보면 직선(linear)하게 문제를 해결할 수 있게됩니다.


<사진4>


위와같이 문제공간을 변형시키는 트릭을 Kernel trick이라고도 부르는데요. 보통은 문제공간의 차원을 변형시켜서 푸는 방법을 의미합니다. 알아두시면 좋아요!

<사진5. Kernel trick>


Hidden layer를 하나 추가함으로써 non-linear한 문제를 아래와 같이 풀 수 있게 되었어요!


<사진6>



결과적으로 이야기하자면 layer를 하나 더 추가(hidden layer)함으로써 non-linear problem을 linear problem으로 변경해주게 되는데요. 이렇게 layer를 추가해준다는 개념은 linear한 성격만 지닌 perceptron에 non-linear한 성격을 마구 부과해주는 역할로 이해될 수 있어요. (아래의 그림을 보면 더욱 직관적으로 이해하실거에요!)



       

<사진7>



이전장에서 activation function에 대한 큰 의미가 non-linear한 성격을 지니는 것이라고 언급한바 있죠? 이제는 이해가 되시나요? activation function이 없다면 아무리 layer를 추가한들 "f(x)=ax+b,  h(x)=cx à y(x)=h(h(h(x)))=c×c×c×x=(c^3)x --> a=c^3 or "a and c are constant" 라고 한다면 결국 같은 linear 한 성격만 갖게 됩니다. 즉, 아무리 hidden layer를 추가한들, activation function이 없다면 MLP 또한 linear한 문제밖에 풀지 못할거에요! (예를들어 위에 사진5 수식에서 ReLU안에 인자들이 ReLU를 거치지 않고 모두 더해진다고 생각해보세요. 결국 또 직선의 방정식이 나올거에요!)


지금까지 설명한 것을 요약하자면, "activation function을 포함한 다수의 layer를 갖고 있는 MLP는 non-linear한 문제를 풀 수 있다"정도가 되겠습니다. 그리고, 이러한 설명을 하나의 이론으로 설명하고 있는것이 있는데 그것이 바로 'Universal approximation theorem'입니다.


아래글은 위키백과에 나온 universal approximation theorem을 인용한 것 입니다. 



"In the mathematical theory of artificial neural networks, the universal approximation theorem states[1] that a feed-forward network with a single hidden layer containing a finite number of neurons can approximate continuous functions on compact subsets of Rn, under mild assumptions on the activation function. The theorem thus states that simple neural networks can represent a wide variety of interesting functions when given appropriate parameters."


"activation function영향 아래에서 추가된 hidden layer는 연속함수를 근사화할 수 있고, 이에 따라 적절한 가중치가 주어진다면, 다양한 함수들(with non-linear function)을 표현할 수 있다"



그럼 지금부터 요약을 해볼께요. 우선 지금까지 배운 MLP를 아래와 같은 그림으로 나타낼 수 있겠어요!


<사진8>



<사진9>



앞에선 하나의 hidden layer만 추가했지만, layer가 더 깊이 쌓여지면 쌓여질수록 deep한 neural network(신경망)이 많들어질거에요. 그리고 우리는 이를 deep neural network (DNN)이라고 부르고, 오늘날 딥러닝이라는 학문의 핵심적인 모델이됩니다.


<사진10>


현재 딥러닝에서 언급하고 있는 Artificial Neural Network (ANN)은 Multi-Layer Perceptron (MLP) 또는 Deep Neural Network (DNN)이라는 용어와 동일하게 사용되고 있어요. 


그런데, 무조건 layer를 추가한다고 좋을까요? 계속 추가하게 되면 가중치도 많아지고 뭔가 복잡해질것같지 않나요? 시스템이 복잡해지면 학습이 잘 될까요? 


위와같은 질문때문에 DNN에서 어떻게 하면 학습을 더 잘시킬 수 있을지에 대해 많은 방법론이 나오고 있어요. 그리고 다음장에서는 이러한 방법론중 가장 대표적인 '정규화(Regularization)'에 대해서 알아보도록 할거에요! 




#Multi-Layer Perceptron    #Universal Theorem   #Activation function   #Non-linearity   #Kernel Trick


[사진 래퍼런스]

사진1

https://blog.yani.io/backpropagation/

사진2

http://www.birc.co.kr/2018/01/22/xor-%EB%AC%B8%EC%A0%9C%EC%99%80-neural-network/

https://poddeeplearning.readthedocs.io/ko/latest/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0%20%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94%20%EB%94%A5%EB%9F%AC%EB%8B%9D/2.Perceptron/

사진5

http://solarisailab.com/archives/2552

사진6

https://towardsdatascience.com/the-magic-behind-the-perceptron-network-eaa461088367

사진7

https://towardsdatascience.com/can-neural-networks-really-learn-any-function-65e106617fc6

사진8

딥러닝 제대로 시작하기

사진9

https://bbangko.tistory.com/5

사진10

http://neuralnetworksanddeeplearning.com/chap6.html



Q. Activation function은 왜 쓰이는건가요? 

Q. Activation function은 왜 이렇게 종류가 다양한건가요?


앞서 Neural Network에 대해서 배워보았습니다. 다시 Neural Network를 살펴볼까요? 아래그림중에 f라고 표시된 activation function이 담당하고 있는 역할이 뭘까요?


<사진1>



본래 뉴런은 여러 경로를 통해 들어온 전기신호의 합이 일정치 이상이 되면 다음 뉴런으로 신호를 전달하게 됩니다. 앞서 언급한 "일정치 이상이 되는 기준"이 Activation function이 되는 것입니다. 예를 들어, 일정 값 이상이 되면 1을 출력하여 다음 뉴런에 값을 전달해 주고, 일정 값 이하가 되면 0을 출력하여 다음 뉴런에 값을 전달해주지 않게 합니다.


사실 굳이 출력 값을 activation function을 통해 0 or 1 값으로 범위를 한정하는 것이 얼마나 큰 의미를 갖고 있는지는 모르겠습니다. 그냥 가중치에 입력값을 곱한 것을 그대로 다음 신경망에 넘겨줘도 되지 않을까요? (물론 값이 굉장히 커지거나 굉장히 작아지는 것 이외에도 우리가 모르는 문제가 생기긴 하겠습니다만 명확하게 그렇게 하면 안되는 이유를 찾긴 힘들어보입니다)


하지만 분명한 사실은 non-linear한 성격을 가진 activation function의 역할이 Multi-Layer Perceptron (MLP)에서 두드러지게 되는데요. 결론부터 이야기하지면 Deep Neural Network에서 layer가 깊어질수록 Wx라는 linear function만으로는 non-linear한 모델을 표현할 수 없기 때문에 문제가 발생하게 됩니다(이 부분은 이해가 안되는게 당연해요! 자세한 내용은 5장 Multi-Layer Perceptron에서 설명하겠습니다)


그래서 Activation function의 존재이유를 5장으로 미루고 이번장에서는 간단히 activation function의 변천과정을 살펴보도록 할께요!



1)Step function


초기에는 뉴런의 특성을 그대로 적용하여 step function을 activation function으로 삼았습니다. 단지 다음 뉴런으로 전기신호를 보내줄지 말지를 결정하는 모델을 본따서 만든 것 같습니다. 그런데, step function이 가지는 가장 큰 단점은 미분이 불가능 하기 때문에 backpropagation을 통한 학습이 불가능해진다는 것 입니다. (Backpropagation 설명은 아래 사이트를 참고해주세요! 아니면 "밑바닥부터 시작하는 딥러닝"이라는 책의 backpropagation 부분을 참고하셔도 됩니다! 좀 더 압축된 내용은 제가 따로 정리한 pdf파일을 올려놓을께요. 그런데 글씨가.. ㅜㅜ)

6. Backpropagation (2).pdf

https://kolikim.tistory.com/46


(아니면 backpropgation관련 아래 영상을 참고하셔도 되요!)




<사진2>




2) Sigmoid function


Backpropagation을 통한 학습이 가능하게 하기 위해서, 미분이 불가능한 step function을 sigmoid function 으로 대체하게 됩니다. 함수가 연속성을 갖고 있기 때문에 모든 구간에서 미분이 가능하게 되죠! 


<사진3>



하지만 sigmoid function에도 문제가 생기게 되는데요. Backpropagation으로 가중치가 업데이트되는 원리를 알고 계신다면 sigmoid function의 치명적인 단점을 볼 수 있게 됩니다. 예를 들어, sigmoid function은 0~1 사이의 값을 도출하게 되는데 sigmoid 그래프를 보면 알 수 있듯이 입력 값들이 점점 위의 그래프 가운데서 멀어지게 되면 미분시 굉장히 작은 값을 도출하게 됩니다.


제가 업로드한 PDF파일을 보시면 알겠지만, backprogation으로 학습하는 방식은 chain rule을 이용하게 되는데, 만약 Wx 값이 아주 크게나오거나 아주 작게 나오게 되는 경우 제일 마지막에 연결된 뉴런에 해당하는 가중치 업데이트가 아래와 같이 이루어지게 됩니다. 


∇W = 0.1x0.4x.0.3x.0.60=0.0072


결과적으로, 제일 뒤에 연결된 뉴런들은 가중치 업데이트를 못하는 상황이 발생하게 되는데요. 이를 Vanishing Gradient 문제라고 합니다. 



<사진4>




 

3) ReLU (Rectifier Liner Unit = ramp function)


Vanishing Gradient 문제를 해결하기 위해서는 어떻게 하면 좋을까요? 시그모이드 함수에서 미분값이 문제가 되었으니 이를 해결해주면 되지 않을까요?


이러한 문제를 해결해주고자 ReLU라는 activation function이 나오게 됩니다. 



위의 수식을 보시면 알겠지만 Activation function을 통해 나온 값을 굳이 0~1 사이로 제한하지 않았네요! 


<사진5>





0이상이면 미분이 항상 일정한 기울기 값이 나오기 때문에, Backpropagation을 통해 학습을 하더라도 맨 뒤에 있는 뉴런까지 학습이 잘 되겠네요! (결과론적이지만 아래 cost function이 최저로 수렴하는 속도를 보더라도 ReLU가 학습이 빠른시간내에 된다는것을 알 수 있습니다!)


<사진6>



그런데 한가지 의아한 부분이 있습니다. x<0 인경우에 그냥 미분값이 0으로 설정되게 했는데, 그렇다면 Wx 값이 0이하에 관련된 weight parameter들은 backpropagation을 통해 업데이트가 이루지지 않게 됩니다. Wx 값이 음수가 나오더라도 음수값이 지니는 의미가 있을테니 이를 잘 활용하여 가중치들을 업데이트 시키면 좋지 않을까요?



4) 기타 사용되는 activation function


위에서 던진 질문을 해결하고자 나온 activation function들은 아래와 같습니다.




제시된 activation function을 보면 모두 음수값을 어떻게든 활용하려는게 보이시죠?


<사진7>



2015년에 나온 논문에는 ELU(Exponential Linear Unit) activation function을 사용했다고 하네요?



<사진8>


다양한 activation function이 나오고 있지만 결과적으로 ReLU와 큰 차이를 보이진 않는다고 해요. Activation function은 x<0 이하의 값들을 어떻게 출력해줄지, 또는 현재 x>=0 인 경우를 어떻게 출력해줄지에 따라서 굉장히 다양한 조합으로 activation function을 만들어 줄 수 있어요 (물론 현재는 x>=0인 경우는 그대로 x를 출력해주는게 보편화 되었지만요).


"하지만 개인적인 생각으로는 가중치의 초기값을 어떻게 설정해주는지에 따라, 또는 초기 가중치 값에 따른 Wx 값들이 어떤 분포를 이루는지 따라서 어떤 activation function을 사용하면 좋을지를 판단하는게 좋을 것 같아요. 물론 이 부분에 있어서 많은 경험적or이론적 연구가 많이 진행되어야겠지만요"


5) Softmax activation function


마지막으로 알아볼 것은 softmax activation function이에요. Softmax는 아래와 같은 수식을 나타내요. 결론적으로 말하자면 Softmax는 최종적인 결과를 확률로 알아보기 위해 사용되요. 우선 아래그림을 살펴볼께요.


아래수식이 그림에 표현된 softmax라는 영역에 다 적용이되요. 아직 Deep Neural Network에 대해서 설명한건 아니지만, Neural Network를 아래와 같이 구성할 수 있어요. 만약 아래와 같이 입력뉴런이 다음 뉴런들에 연결이 되고, 그 연결된 뉴런에서 결과값 z를 얻는다고 해볼께요. 임의로 설정된 z는 k개이고, 이 k라는 인자가 softmax에서 중요한 역할을 해요. 우리는 z라는 뉴런들의 결과들을 확률로써 이해하고 싶다고 해볼께요. 그렇다면 z1~zk의 합은 1이되어야 겠죠? 그리고 z1와 z2의 값이 상대적으로 큰 경우 확률로 변환되었을 때에도 상대적인 차이가 유지되어야겠죠? 

<사진9>


위에있는 설명을 사진하나로 요약하면 아래와 같습니다. 이젠 Softmax가 어떤목적으로 사용되는지 아시겠죠? 다음장에서 Deep Neural Network를 보시면 더 잘 이해가 되시겠지만 Softmax는 마지막 layer가 되는 부분에서 확률적인 결과값을 얻기 위해종종 사용됩니다. (ReLU, Sigmoid 처럼 매번 쓰이는것과는 다르게 마지막 layer에서 한번 사용되는게 일반적이에요~)


<사진10>





지금까지 Activation function을 살펴봤습니다. 사실 이번장에서는 Activation function이 가지는 큰 의미에 대해서 깊게 살펴보지는 못했어요. 하지만 다음장 Multi-Layer Perceptron (MLP)에서 activation function이 지니는 유용성을 알아볼꺼에요 (힌트는 non-linearity 에요!). 




#Activation function    #Step function   #Sigmoid function   #ReLU    #Leaky ReLU     #PReLU    #ELU

#Non-Linearity   #SoftMax function




[사진래퍼런스]

사진4

http://blog.naver.com/PostView.nhn?blogId=ehdrndd&logNo=221406005034&parentCategoryNo=&categoryNo=45&viewDate=&isShowPopularPosts=false&from=postView

사진5

https://en.wikipedia.org/wiki/Rectifier_(neural_networks)

사진6

https://pythonkim.tistory.com/40

사진7

https://seongkyun.github.io/study/2019/05/01/activations/

사진8

https://ml-cheatsheet.readthedocs.io/en/latest/activation_functions.html

사진9

http://rinterested.github.io/statistics/softmax.html

앞선 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