티스토리 뷰

Dropout: A Simple Way to Prevent Neural Networks from Overfitting 문단 별 번역/요약

Introduction

1.1 (p.1) DNN의 문제 중 overfitting을 해결하기 위해, validation accuracy가 증가하지 않을 때까지 학습시키기, regularization, soft weight sharing 등의 메서드를 적용하는 시도들이 있었다. 


1.2 (p.1-2) 연산량에 대한 제약을 고려하지 않는다면, 어떤 모델을 regularize하는 가장 좋은 방법은 "가능한 parameter 조합에 따른 prediction값을 가중치 매겨서 평균내는 것" (여기서 가중치는 각 parameter 조합에 대해 training data가 주어졌을 때의 posterior probability)이다. 물론 이러한 방법이 small, simple models에 대해서는 좋은 결과를 낼 수 있다. 하지만 우리는 연산량을 줄이는 동시에 Bayesian gold standard의 퍼포먼스를 향상시키고자 한다. (베이지안 분류기로 앙상블할 것이라는 듯) 이를 위해, parameter들을 공유하는 학습된 모델들의 prediction들의 가중 기하 평균을 근사할 것이다. 


1.3. (p.2) 일반적으로 model combination을 사용하면 성능이 향상되지만, 신경망의 규모가 커지면 연산량이 매우 커진다. Model combination이 효과적인 경우는 (1) 각 모델들이 구조적으로 다르거나 (2) 각 모델들이 서로 다른 training data를 사용하는 경우이다. 하지만 이는 학습을 위해 매우 큰 연산량 및 매우 많은 training data를 요구하게 되고, 학습이 어찌어찌 된다 쳐도, test 상황에서 여러 가지 모델을 실행해야하기 때문에 response time이 길어져서 실효성이 떨어진다. 


1.3 (p.2) Dropout은 위의 두 가지 문제들(Overfitting 문제 / Model combination에서 발생하는 문제)을 해결하기 위해 등장했다. Dropout은 overfitting을 방지하는 동시에, 여러 개의 서로 다른 신경망을 지수적으로 결합(model combination)할 수 있게 한다. Dropout은 말 그대로 신경망의 뉴런을 부분적으로 생략시키는 것을 의미하는데, 어떤 뉴런을 생략시킬지는 랜덤이다. 이 논문에서는 '각 뉴런이 retained될(생략되지 않을) 확률'을 p로 설정한다. 


1.4(p.3) Dropout을 적용한 뉴럴 넷을 학습시키는 것은, 마치 "thinned network" 여러 개 학습시키는 것과 같은 효과이다. Thinned network는 dropout 과정에서 생략되지 않은 뉴런들로만 구성된, 가지치기 당한 뉴럴 넷을 의미한다. 원래의 전체 뉴럴 넷에 n개의 뉴런이 있었다고 하면, 가능한 thinned network의 수는 2^n개이고, 이 네트워크들은 모두 weight를 공유한다.


1.5(p.3) Test time에서, 위에서 언급한 exponentially many(2^n개의) thinned network들 각각의 prediction들을 더해서 평균내는 것은 좋은 생각이 아니다. 그러므로 이들은 approximate averaging method를 제안한다. 네트워크의 특정 뉴런이 training 시에 retained될(생략되지 않을) 확률이 p일 경우, test시에는 해당 뉴런에 연결된 가중치에 p를 곱해주는 형식이다. (위 그림 참조)


1.6 (p.3) 본 논문에서 제안하는 dropout 개념은 feed-forward 뉴럴 넷 뿐만 아니라, 볼츠만 머신(Boltzmann Machine)을 비롯한 일반적인 그래프 모델에도 적용될 수 있다. 본 논문에서는 dropout RBM과 standard RBM을 비교하며, 실험 결과를 통해 전자가 낫다고 주장한다. 

참고 - 볼츠만 머신에 대한 이해가 부족하다면 여기에 잘 설명되어 있음


1.7(p.3-4) 논문 섹션 구조 요약


2. Motivation

(p.4) 유전학 및 음모론으로부터 모티브를 얻었다고 한다. (유전자 복제를 통한 무성 생식이 아닌, 양성 생식을 통해 유전자를 결합한다는 점 / 적은 수의 사람을 필요로 하는 여러 개의 음모가 더 효과적임)


3. Related Work

4. Model description



Dropout을 적용한다는 것은, 즉 activation 값인 y에, 확률 변수 r을 곱해주는 셈이다.
이 때 확률 변수 r은 Bernoulli(p) 확률 분포를 따른다. (p의 확률로 값이 1, 1-p의 확률로 값이 0)
위 수식을 참고하자. 

5. Learning Dropout Nets

본 섹션에서는 Dropout neural net을 학습(train)시키는 프로세스를 다룬다.

5.1. Backpropagation

5.1.1 (p.6) 각 mini-batch에 대해 forward pass와 backpropagation은 thinned network에서 진행된다. 그리고 각 training case가 인풋으로 들어감에 따라 그래디언트들은 averaged out되게 된다. 본 논문에서는 optimization 방법 중 SGD를 사용하는데, SGD를 보완하기 위한 방법들인 momentum, annealed learning rate, L2 weight decay 등을 dropout neural network에서 적용해도 유용함을 확인했다.
5.1.2 (p.6-7) 하지만 그 중에서도, dropout neural network와 함께 적용하면 좋은 regularization method로 본 논문에서는 "Max-norm regularization"에 주목한다. 이는 아래와 같은 수식으로 나타낼 수 있는데, 여기서 w는 hidden neuron의 가중치 벡터를 의미한다. (참고, hidden layer L의 hidden neuron z_i(L)이 있으면, 그 hidden neuron z_i(L)으로 들어가는 weight vector가 w_i(L)이다.) 즉, 가중치 벡터의 크기가 특정 상수 c보다 작도록 제약을 두는 것인데, 여기서 c는 validation dataset을 통해 조정할 수 있는 hyperparameter이다. 

5.1.3 (p.7) Dropout에 max-norm regularization, large decaying learning rates, high momentum을 병행한 SGD를 적용하면 가시적인 성능 향상을 관측할 수 있었다. 왜 max-norm이 효과적인지에 대해 합리적으로 추측하자면, 마치 가중치 벡터의 가능한 범위를 특정 크기의 구로 제한시키는 셈이기 때문에, 초기에 다소 큰 learning rate를 사용하더라도 exploding gradient problem을 방지할 수 있는 것이다. 그리고 dropout으로 인해 노이즈를 주기 때문에, optimization 과정에서 여러 영역을 explore할 수 있고, learning rate가 decay하면서 점차 minimum에 도달할 수 있는 것이다. 


5.2 Unsupervised Pretraining

Unsupervised learning의 경우 pretraining을 활용했다. Pretrained RBM, autoencoders, DBM을 사용했다. 이 때, 각 뉴런의 output기댓값을 맞춰주기 위해 pretraining을 통해 얻은 weight들에 1/p 를 곱해줘야 함에 유의하자. 그리고 pretraining에서 사용된 learning rate보다 더 작은 learning rate를 선택해야, dropout의 stochastic nature로 인해 갈아 엎이는 현상을 방지할 수 있다.


6. Experimental Results

실험에 사용된 데이터는 아래 그림 참조

6.1. 실험 결과

Dropout이 짱이다^^..논문에 있는 표들만 보면 좋다는거 다 알겠음


사진, 텍스트, 음성 다 해봐도 dropout 적용한 네트워크에서 에러가 낮다 - 


7. Salient Features

7.1 Effect on Features

Feature들이 좀 더 선명해진다 (Figure 7참고)

7.2 Effect on Sparsity

Dropout을 사용했더니 모델이 좀 더 sparse해졌다. 참고로 여기서 sparse 하다는 것은, 뉴런들의 activation 값이 대부분 0임을 의미한다. 즉, sparse할수록 데이터가 잘 분류된다는 것은 다소 직관적이다. 아래 그래프에서 볼 수 있듯이, 우측의 두 그래프가 dropout을 적용한 것으로, activation 평균값도 0에 가깝고, 대부분이 0임을 볼 수 있다.   


7.3. Effect on Dropout Rate

Dropout 확률인 p가 hyperparameter이기 때문에, 최적의 p를 계산하기 위해 두 가지 실험을 진행했다.

참고로 hidden layer에 있는 뉴런의 수를 n이라고 하자.

1) n을 고정시키고 p를 변화시키며 test/training error측정
2) np를 고정시키고, p를 변화시키며 (n도 변함) test/training error 측정

실험 1)을 통해 p가 0.4~0.8 범위일 경우 오차가 일정함을 확인할 수 있다.

실험 2)를 통해, p가 낮을 경우(0.2 정도) hidden neuron의 수를 늘려줬을 때 (np를 일정하게 둠으로써) 에러가 더 낮다는 것을 확인할 수 있다. 이는 p가 낮다는 것이, 적은 수의 뉴런이 보존된다는(많은 뉴런을 생략시킨다는) 것이기 때문에, 다소 당연한 결과이다. 

종합했을 때 약 0.6이 최적의 p이고, 계산의 편의성 때문에 0.5로 써도 무방하다.


7.4 Effect of Data Set Size

데이터의 수가 1K 이상은 되어야 dropout의 효과를 볼 수 있으며, dataset 크기가 점점 커질수록 효과가 drastic하지는 않다는 것도 확인할 수 있다. 이는 애초에 데이터 수가 많으면 overfitting될 가능성이 낮아져서로 해석된다.


7.5. Monte-Carlo Model Averaging vs. Weight Scaling

원래 제안한 바로는 training 시에만 dropout을 적용하고, test 시에는 weight을 p만큼 scaling해서, deterministic한 prediction을 얻어내자는 것이었다. 하지만 이는 사실 approximate한 방법이고, 보다 정확하게 test하자면 test 시에도 dropout을 적용하는 것이 맞다. Monte-carlo dropout는, k개의 thinned neural net을 샘플링하여 각각의 prediction을 averaging하는 것으로, 아래 그래프에서 볼 수 있듯이 k가 점점 커질수록 weight scaling으로 근사했을 경우의 error값에 수렴한다. 

8. Dropout RBM

이 섹션은, feed-forward neural network뿐만 아니라 RBM에도 적용할 수 있음을 보여준다. RBM에 적용하더라도 feature들이 더 선명해지고, sparse해진다는 것을 확인할 수 있다.


9. Marginalizing Dropout

Dropout의 stochastic한 특성을, loss 함수를 marginalizing 해줌으로써 deterministic하게 해주고자 한다. 본 논문에서는 linear regression을 통해 이를 시행했다.

















댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함