안녕하세요! 이번글에서는 지금까지 배워온 내용을 총 요약해보려고합니다.
근래 딥러닝 모델이라고 하면 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>
- 아래파일은 실제로 업데이트가 어떻게 이루어지는지 계산한것을 수기로 작성한 파일
아래영상은 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/
'딥러닝 이론 > Deep Neural Network (DNN)' 카테고리의 다른 글
9. Mini-Batch (데이터가 많은 경우에는 학습을 어떻게 시키나요?) (0) | 2020.01.09 |
---|---|
8. 데이터 전처리 (Data Preprocessing and Normalization) (2) | 2020.01.08 |
7. Curse of Dimension, Reduction of input dimension (차원의저주) (2) | 2020.01.05 |
6. 학습을 잘 시킨다는 것은 무엇을 의미하나요? (Regularization, Generalization(일반화)) (1) | 2020.01.02 |
5.Multi-Layer Perceptron (MLP), Universal Theorem (2) | 2020.01.02 |