본문 바로가기
Computer/DeepLearning

Dropout & Ensemble

by hexists 2016. 6. 9.

김성훈 교수님의 강의를 보면서 딥러닝을 공부중.

정리를 하지 않고 보다 보니, 나중에 무얼 봤는지 조차 기억나지 않아서 간단히 블로그에 남긴다.


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