[DL] Deep Learning 코드 공부(1): Training, Validation, Test data set, Activation Functions, Pooling Layer, DropOut, Convolution Layer, Fully Connected Layer
Author: Joonhee Lim
Date: 2022/07/28
본문은 Pytorch Deep Learning By Example 책을 공부하며 작성한 글

심층 강화학습(Deep Reinforcement Learning)에 대한 공부를 계속하다가 심층 학습(Deep Learning) 코드 정도는 따닥따닥 빠르게 구현하고 싶은 욕망이 생겨 연구실 Library에 있는 책 가지고 공부하는 그런 글이 될 것 같다. 이론보다는 테크닉적으로 딥러닝을 다룰 예정이고 이 책을 다 보는 날 이 공부글도 종료될 예정.
0. Training, Validation, Test data set
- Traing data set: 모델의 파라미터를 조정하기 위해(학습하기 위해) 사용하는 데이터셋
- Validation data set: 모델의 Overfitting 등 편향되지 않았는가를 확인하기 위해 사용하는 데이터셋(세밀한 파라미터 튜닝을 하게된다.)
- Test data set: 실제 성능을 확인하기 위한 데이터셋
일반적으로 해당 비율을 6:2:2로 가져간다.
많이들 검증을 위해 K-fold Validation을 이용한다.
1. Activation Functions
- sigmoid: 값을 0~1로 바꿔준다.
- tanh: 값을 -1 ~ +1로 바꿔준다.
- softmax: 가능한 결과들을 확률로 바꿔준다.
- ReLu: 0 이하는 0으로 바꾸고 이상은 그대로 출력한다.
- Leaky ReLu: 0 이하는 0.01x, 이상은 x
선택하는 방법:
Classifier은 일반적으로 Sigmoid가 빠른 학습 수렴 속도를 가진다.
Softmax는 마지막 Output Layer에 온다.
그 외의 것들은 ReLu와 그 변형들을 사용해보자.
2. Pooling Layer
일반적으로 Pooling Layer는 max, average로 나뉘는데
Max Pooling Layer가 Feature Space의 유니크한 정보를 강조하는데 더 뛰어나기 때문에 Max Pooling Layer 추천
3. Dropout Layer
Over-fitting을 막기 위해 거의 대부분 사용한다.
4. Convolution Layer와 Fully Connected Layer의 관점
CL은 이미지의 Local Patterns을 학습하려는 경향이 있고 FCL은 Global Patterns을 학습하려는 경향이 있다.
꼼꼼히 잘 봐야할 때는 CL를 많이, 넓게 봐야할 때는 FCL를 많이 사용하면 될까?
코드 공부라 썼지만 정작 코드는 없는 이상한 글