안녕하세요! 이번글에서는 지금까지 배워온 내용을 총 요약해보려고합니다. 


근래 딥러닝 모델이라고 하면 Deep Neural Network (DNN or Multi-Layer Perceptron(MLP)라고 하는 인공신경망(Artificial Neural Network; ANN)을 일컫는데요. 다음장부터는 수식이 조금 더 디테일하고 복잡하게 다루어질 수 있기 때문에 이번장에서 중간점검차 요약을 한 번 할까해요.


그럼 이제부터 시작하겠습니다~ (이번장에서는 말투를 좀 편하게 할께요 ㅎㅎ;;)



[1. Supervised Learning]


- 딥러닝(Deep Neural Network) 모델 학습방식  --> Supervised Learning VS Unsupervised Learning

- Supervised Learning: DNN 모델이 예측하는 값과 실제 정답지 (학습데이터)를 통해 DNN 모델을 학습시킴

- Unsupervised Learning: 정답지 없이 데이터의 패턴을 분석해서 데이터의 특징이나 구조를 발견

- 이번글에서는 Supervised Learning을 목적으로하는 DNN 모델들에 대해 설명할 예정




<사진1>


[2. Deep Neural Network]


<1.기본구조>


- DNN은 기본적을로 아래와 같은 구조를 갖음.

- x=Training data --> 'Training data' X '신경망 가중치(weight; w)' = Wx--> activation function (아래그림에서 z=f(U)에서 f가 activation function)) -> 신경망예측값(=z) --> Error = 신경망예측값(=z) - 정답지 --> Backpropagation을 통해 가중치 업데이트

- 결국 DNN은 최상의 분류성능을 내기위한 최적의 '가중치값'을 갖으려는 것이 목적


          


<사진2>                                                  <사진3>










<2. Cost(Error) function>


- Supervised Learning에서 "(Calculate) Error = Training data(정답지) - DNN모델 예측값"이라고 규정함

- 이때 Error를 도출하는 함수식(function)을 cost function이라고 함

- 그런데 Supervised Learning에서도 여러 문제들이 있음, 문제유형에 따라 Error값을 도출하는 방식이 달라짐 --> 즉, cost function 식이 조금씩 다름


<사진4>





- 위의 수식을 가정하고 설명하면


1) Regression(회귀) 문제의 Cost function

- Mean Square Error (MSE) 개념 이용

- 분모 1/2은 backpropagation때 미분계산하려고 할때 편하기 계산하려고 붙임




2) Binary Classification (이진분류) 문제의 Cost function

- Maximum Likelihood Estimation(MSE; 최대우도법) 개념 이용


3) Multi-Class Classification (다분류) 문제의 Cost function

-Cross Entropy 개념 이용









<4. Backpropagation (가중치 학습방법)>


- 제가 블로그에서 식의 유도과정을 전부 기술해놓은 글이 있는데, 대부분 내용이 '딥러닝 제대로 시작하기'에 있는 내용이라 비공개로 설정했어요. 그래서 여기에서는 제가 직접 계산한 과정을 수기로 쓴 파일을 올려놓을테니 한번 보시면 좋을거에요. 이곳에서는 간단한 설명만 하도록 하겠습니다.


- Backpropagation은 DNN에서 가중치를 학습(업데이트)시키는 알고리즘 with Chain 

- 보통은 아래와 같이 업데이트 방식이 진행


<사진5>


- 아래파일은 실제로 업데이트가 어떻게 이루어지는지 계산한것을 수기로 작성한 파일


6. Backpropagation (2).pdf


아래영상은 Backpropagation이 학습이 어떻게 되는지 보여주는 영상이에요. 참고하세요!












<5.Activation function>


- 활성함수를 쓰는 목적은 DNN 모델이 비선형성을 표현할 수 있게 도와줌

- Layer를 더 쌓을 수록 비선형성을 더욱 잘 표현해줄 수 있는데, activation function까지 같이 활용해주면 더욱 비선형 모델을 잘 표현해줄 수 있음


<사진6. 왼쪽: Target function, 오른쪽 Activation function>



    

<사진7. activation function을 통해 non-linearity를 표현한 경우>



- Activation function 종류에는 아래와 같은 것들이 있음


<사진8>


- 변천과정은 아래와 같음


뉴런은 다음 뉴런에게 신호를 보내던지 안보내던지 둘 중에 하나야 --> Step(Binary step) function을 쓰자 --> Backpropagation으로 학습시키려고 하는데 미분이 안돼 --> sigmoid(Logistic) function으로 바꿔 그럼 --> Backpropagation은 기본적으로 미분으로 학습하는데 sigmoid function에는 기울기가 굉장히 낮은 곳들이 있어서 Chain rule을 관점에서 입력층에 가까운 가중치들은 학습이 거의 안됨 (Vanishing Gradient) --> 그럼 기울기 잘되게 ReLU로 바꿔 --> 근데 음수부분은 어떻게 함??? 그쪽은 미분값이 0인데? --> 그럼 Leaky ReLU로 학습시켜봐 --> 아 그런데 뭔가 새로운 방법은 없을까? --> activation function은 계속해서 연구중이야, 아래표 보면 cifar10 성능에서 maxout이라는 activation function이 제일 좋다고 나오지? 앞으로 다른 activation function들이 계속해서 나올거야 아마 --> 그런데 보통 ReLU까지를 기본적으로 배우더라고 그외 것들은 알아서 공부하면 돼!

(참고로 maxout관련 설명은 아래사이트를 참고해!)

http://blog.naver.com/laonple/220836305907


<사진9>









<6. Regularization>


- DNN을 학습시키는 목적이 분류라고 가정 (학습시키는 목적은 Cost function을 어떻게 해주느냐에 따라 회귀문제, 다클래스문제 등 다양함)

- 보통 학습데이터로 학습을 시키고, 다른데이터로 테스트했을 때 역시 성능이 좋아야함

- 그런데, 지나치게 학습데이터를 학습하면 Overfitting이 일어나서 일반화성능이 떨어짐. (그 이유는 학습데이터에도 종종 noise가 있는 안좋은 데이터가 있을 수 도 있고, 학습데이터에 불필요한 특징들이 포함되어 있을 가능성이 있기 때문)



<사진10>


- DNN은 Overfitting과의 싸움이라고 할 정도로, Overfitting을 방지하기 위한 여러가지 방법이 있음 그 중에 하나가 Regularization


1) Regularization의 철학

- 낮은 가중치 값들은 어차피 있거나 없거나 DNN 성능에 중요한 요소는 아님. 

- 높은 가중치 값들이 DNN 성능에 큰 영향을 미침

- 학습데이터에 지나치게 학습시켰을 때, DNN 가중치는 학습데이터에 최적화. 이렇게 되면 일반화성능 떨어짐

- 그래서 학습시 높은 가중치들에게 Penality를 부여 <-- 이것에 Regularization의 핵심 포인트

<사진11>


2) Regularizaton 종류


- L1 norm을 사용했는지, L2 norm을 사용했는지에 따라 종류가 달라짐

- L1-regularization은 L2-regularization 보다 낮은 가중치 값을 0으로 만들어줘 입력차원을 줄여주는 경향이 있고, 이것은 입력차원을 낮춰주는 효과가 있음

보통은 weight decay regularization에서는 L2-regularization이 사용되고 있음


L1 Regularization ->   

L2 Regularization -> 



아래 영상은 DNN이 이미지를 학습하는 과정을 visualization한 영상이에요.

지금까지 잘따라오셧다면 아래영상에서 소개되는 DNN 학습(진행)과정이 한눈에 들어오실거에요!


 






지금까지 배웠던 내용들을 간략하게 정리해봤어요. 

아마 1~6장 내용이 딥러닝을 배우는 가장 기초적인 뼈대가 될거에요.


다음장부터서는 Overfitting을 피하는 방법들을 좀 더 소개하고 Neural Network 챕터는 마무리하려고 할까해요.


그럼 다음 글에서 찾아뵐게요!!




[사진 래퍼런스]

사진1

https://www.elfarchive.org/2017/12/backpropagation.html

사진4

https://www.deeplearning-academy.com/p/ai-wiki-machine-learning-vs-deep-learning

사진5

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

사진6,7

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

사진8

https://en.wikipedia.org/wiki/Activation_function

사진9

https://coolingoff.tistory.com/category/%5B%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D%5D?page=2

<사진10>

https://ko.wikipedia.org/wiki/%EA%B3%BC%EC%A0%81%ED%95%A9

<사진11>

https://slidesplayer.org/slide/12402488/



+ Recent posts