1 minute read



2.5.1 Overfitting

Overfitting은 데이터를 과도하게 학습해서 발생하는 문제이다. 예측값과 실제 값 사이의 오차는 감소하지만, 새롭게 들어오는 데이터에 대해서는 오차가 증가할 가능성이 있다.

아래 예시에서 검은색은 일반 model을, 초록색은 overfitted model을 나타낸다.



Overfitting을 해결하는 대표적인 방법은 dropout이다. 말 그대로, 학습 과정 중에서 임의로 일부 노드를 학습에서 제외시키는 것이다.1



다음은 pytorch에서 dropout을 구현한 예시이다.



2.5.2 Gradient Vanishing

Hidden layer가 많아지는 NN에서는 backpropagation 과정에서 output layer로부터 hidden layer로 전달될 때 오차가 크게 줄어들게 된다.

즉 gradient가 소멸되면서 weight의 학습량이 0에 가까워져 학습이 제대로 이루어지지 못하고 그대로 수렴해버리게 된다.

Sigmoid나 hyperbolic tangent 함수 대신 ReLu를 사용하면 해결 가능.



2.5.3 Gradient Descent

경사 하강법은 loss function의 cost가 최소가 되는 지점을 찾을 떄까지 기울기가 낮은 쪽으로 이동시킨다. 즉 minimum에 도달할 때까지 점점 성능이 낮아지는 단점이 생긴다.


배치 경사 하강법(Batch Gradient Descent, BGD)은 전체 dataset에 대한 error를 구하고 gradient를 한 번만 계산해 model의 parameter를 업데이트한다.

\[W = W-a \nabla J(W, b)\]

한 step마다 모든 training dataset을 사용하므로 학습이 오래 걸리는 단점이 있다.


확률적 경사 하강법(Stochastic Gradient Descent, SGD)은 임의로 dataset을 선택하여 error를 구한다.

계산이 빨라지지만 parameter의 변경이 불안정하고 때떄로 BGD보다 정확도가 낮을 수 있다.


미니 배치 경사 하강법(Mini-batch Gradient Descent)은 전체 dataset을 여러 개의 mini-batch로 나누고 각각 기울기를 구한 뒤 그 평균 기울기를 선택한다.

전체 dataset 계산보다 빠르고 SGD보다 안정적이다. pytorch에서는 다음과 같이 구현.



  1. Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever, and Ruslan Salakhutdinov. 2014. Dropout: a simple way to prevent neural networks from overfitting. J. Mach. Learn. Res. 15, 1 (January 2014), 1929–1958.