김성훈 교수님의 강의를 보면서 딥러닝을 공부중.
정리를 하지 않고 보다 보니, 나중에 무얼 봤는지 조차 기억나지 않아서 간단히 블로그에 남긴다.
lec10-3: Dropout 과 앙상블 : https://youtu.be/wTxMsp22llc
overfitting : training dataset에 model이 fit된 상태
solution for overfitting
- more training data
- reduce the number of features (딥러닝에서는 상관없다고 함)
- regularization
여기서는 regualarization에 대해서 좀 더 설명
cost + (lamda)(sigma) w^2
여기서 (lamda)를 regularization strength라고 한다.
(lamda)의 값에 따라 강도를 이 0이면 끄는 것이고, 값에 따라 영향력이 달라진다고 보면 된다.
이것을 l2reg라고 한다.
(tensorflow code)
l2reg = 0.001 & tf.reduce_sum(tf.square(W))
그리고, NN(neural networks)에서는 overfitting을 해결하는 다른 방법이 있는데, 그것이 dropout이다.
딥네트워크에서 몇몇 노드를 끊어버리는 방법이다.
(단, 학습시에만 dropout을 사용하고, 실제로 적용할 때는 dropout을 사용하지 않는다.)
(tensorflow code)
dropout_rate = tf.placeeholder("float")
_L1 = tf.nn.relu(tf.add(tf.matmul(X, W1), B1)) <= 이렇게 한 노드를 넣어서
L1 = tf.nn.dropout(_L1, dropout_rate)
# train
sess.run(optimizer, feed_dict={X: batch_xs, batch_ys, dropout_rate : 0.7})
# evaluation
sess.run(optimizer, feed_dict={X: batch_xs, batch_ys, dropout_rate : 1})
마지막으로는 ensemble이 있다.
머신이 많고, 학습 데이터도 충분할 때 사용하는 방법이다.
training set 마다 초기값이 달라 결과도 조금씩 다르고, 모드 학습시킨 다음에 결합하는 것이다.
=> 여러명의 전문가에게 결과를 얻는 것을 보면 된다.
'Computer > DeepLearning' 카테고리의 다른 글
CNN case study (0) | 2016.06.14 |
---|---|
CNN : Max pooling 과 Full Network (0) | 2016.06.14 |
ConvNet의 Conv 레이어 만들기 (0) | 2016.06.14 |
레고처럼 넷트웍 모듈을 마음껏 쌓아 보자 (0) | 2016.06.09 |