Skip to content

Vanishing gradient problem

그라디언트 안정화 문제 (Vanishing (and Exploding) Gradients)

In machine learning, the vanishing gradient problem is a difficulty found in training artificial neural networks with gradient-based learning methods and backpropagation. In such methods, each of the neural network's weights receives an update proportional to the gradient of the error function with respect to the current weight in each iteration of training. Traditional activation functions such as the hyperbolic tangent function have gradients in the range (-1, 1) or [0, 1), and backpropagation computes gradients by the chain rule. This has the effect of multiplying n of these small numbers to compute gradients of the "front" layers in an n-layer network, meaning that the gradient (error signal) decreases exponentially with n and the front layers train very slowly.

About

RNNs의 역사는 제법 깁니다. 1980년대에 이미 RNNs에 대한 논문이 여럿 나왔습니다. 그리고 1990년대 초반에 그라디언트 소실(vanishing gradient)이라는 문제가 나타났습니다.

gradient의 개념은 아주 단순합니다. x-y평면에 직선을 그으면, 직선의 미분값은 정의에 따라 x의 작은 변화량에 따른 y의 변화량의 비율을 나타냅니다. 이를 인공 신경망에 적용하면 신경망의 모든 가중치와 오차의 관계를 구할 수 있습니다. 즉, 신경망의 값을 얼만큼 변화시키면 그 결과로 오차가 어떻게 변하는지를 알아낼 수 있습니다. 따라서 gradient의 계산은 아주 중요합니다. 만일 gradient를 잘 구할 수 없다면 계수와 오차의 관계를 알 수가 없고, 결과적으로 학습이 잘 되지 않습니다.

RNNs은 시간을 거슬러 올라가며 과거 은닉값을 추적합니다. 그런데 이 추적이 이어질수록 - 즉 과거로 많이 거슬러 올라가면 - gradient의 계산이 잘 되지 않는 경우가 있습니다.

이것은 신경망이 곱하기 연산을 기반으로 이루어져있기 때문입니다.

은행의 적금 상품을 보면 1보다 아주 조금만 큰 값이라도 여러 번 곱하면 나중엔 제법 큰 값이 됩니다. 복리의 마법이라고도 하는데, 적은 이율로도 아주 오랜 기간을 보관하면 나중엔 엄청난 금액이 됩니다. 마찬가지로 1보다 아주 살짝 작은 값이라도 계속 곱하게 되면 나중엔 0에 가까운 값이 됩니다.

인공 신경망의 연산도 많은 곱하기로 이루어져 있고, 계속 곱해나가다보면 그라디언트가 완전 소실되거나(vanishing) 발산하는(exploding) 경우가 있습니다.

그라디언트가 발산하는 경우엔 최종적으로 컴퓨터가 다를 수 있는 가장 큰 숫자를 넘어서버립니다. 그러나 발산은 비교적 제어하기가 쉽습니다. 그라디언트의 최대 범위를 지정해주면 됩니다. 문제는 바로 그라디언트가 소실되는 경우입니다.

아래 그래프를 보면 시그모이드를 여러 번 곱하면 어떻게 되는지 알 수 있습니다. 딱 네 번 곱했을 분인데 굉장히 함수가 굉장히 평평해집니다. RNNs의 backprop도 마찬가지입니다. 이렇게 평평해지면 기울기가 거의 모든 구간에서 0에 가까워집니다. 즉, 그라디언트가 제대로 전파 되지 않습니다.

Sigmoid_vanishing_gradient.png

See also

Favorite site