본 게시글은 필자가 강의, 책 등을 통해 개인적으로 학습한 것으로
본문의 모든 정보는 출처를 기반으로 작성되었습니다.
이전에 overfitting problem에 대한 포스팅을 한 적이 있다.
이 때 제시한 over fitting problem 해결 방법 3가지 외에
NN(Neural Network)이 deep and complex한 경우에 사용 가능한 방법이 있는데,
바로 Drop out이다.
그림을 보면 아주 쉽게 이해가 된다.
복잡한 NN을 training시키는 과정에서 random하게, 일정한 비율만큼의
neuron을 무시하는 것이다.
neuron들이 너무 traning set에 의존적으로 학습 되는것은 overfitting을 유발하는데
이 drop out을 사용하면 반대로 traning 과정에서 neuron들의 상호 의존성을 감소시켜 준다.
주의해야 할 점은, testing단계나 실제 실험 단계에서는 drop out없이 구현해야 한다.
drop out의 역할은 앞서 설명한것 처럼 train과정에서 overfitting을 예방하는 것임을 기억하자.
사용 방법은
layer.Dropout(drop_rate)을 model에 add해주면 된다.
예를 들면 다음과 같이 사용할 수 있다.
tf.model.add(tf.keras.layers.Dense(input_dim=784, units=512, kernel_initializer='glorot_normal', activation='relu'))
tf.model.add(tf.keras.layers.Dropout(0.3))
tf.model.add(tf.keras.layers.Dense(units=512, kernel_initializer='glorot_normal', activation='relu'))
tf.model.add(tf.keras.layers.Dropout(0.3))
tf.model.add(tf.keras.layers.Dense(units=512, kernel_initializer='glorot_normal', activation='relu'))
tf.model.add(tf.keras.layers.Dropout(0.3))
tf.model.add(tf.keras.layers.Dense(units=512, kernel_initializer='glorot_normal', activation='relu'))
tf.model.add(tf.keras.layers.Dropout(0.3))
tf.model.add(tf.keras.layers.Dense(units=nb_classes, kernel_initializer='glorot_normal', activation='softmax'))
참고 문헌 및 자료
1. Sung Kim Youtube channel : https://www.youtube.com/channel/UCML9R2ol-l0Ab9OXoNnr7Lw
Sung Kim
컴퓨터 소프트웨어와 딥러닝, 영어등 다양한 재미있는 이야기들을 나누는 곳입니다.
www.youtube.com
2. Andrew Ng Coursera class : https://www.coursera.org/learn/machine-learning
3. 조태호(2017). 모두의 딥러닝. 서울: 길벗
'IT study > 모두를 위한 딥러닝' 카테고리의 다른 글
CNN(2) - ex.1 (0) | 2020.09.03 |
---|---|
CNN(1) (0) | 2020.08.26 |
Weight Initialization (0) | 2020.08.25 |
ReLU and Sigmoid(tensorboard ex.1) (0) | 2020.08.24 |
Tensorboard (0) | 2020.08.21 |