Vanishing Gradient Problem & ReLU(Rectified Linear Unit)

1. Vanishing Gradient Problem 이란?

Vanishing Gradient Problem(경사 사라짐 문제)란, 뉴럴 네트워크의 레이어 수가 많아지고, 각 레이어의 노드 수가 많아 질 수록, 마지막 레이어는 학습이 이루어지는 반면, 초기 레이어는 학습이 이루어지지 않는 문제를 의미합니다. 쉬운 이해를 위해 예시를 들어 설명해드리겠습니다.

<figure 1>은 지난 시간에 다루었던 XOR 문제를 나타내고 있습니다. 우선, XOR 문제를 2개의 hidden layer를 사용하여 모델의 학습을 수행했습니다. <figure 2>는 학습 모델의 구조를 나타내며 <figure 3>은 학습 횟수에 따른 cost 값의 변화를, <figure 4>는 학습 횟수에 따른 Accuracy의 변화를 나타내고 있습니다. 2개의 hidden layer로 구성된 뉴럴 네트워크의 활성화 함수는 Sigmoid 함수를 적용했습니다. <figure 3>을 살펴보면 학습이 반복될 수록  cost 값은 낮아지는 것을, Accuracy 값은 높아지는 것을 확인할 수 있습니다.

<figure 1> OR, AND, XOR problem

 

<figure 2> Neural Network #1 Structure

<figure 3> Neural Network #1 Cost

<figure 4> Neural Network #1 Accuracy

그렇다면, 네트워크의 수를 깊고 넢게 설계한다면 어떤 일이 발생하는지 알아보도록 하겠습니다. <figure 5>는 활성화 함수를 Sigmoid 함수로 적용하여 hidden layer의 개수를 9개, 각 hidden layer의 노드 수를 5개로 구성한 뉴럴 네트워크의 구조를 나타내고 있습니다.

<figure 5> Neural Network #2 Structure

2 개의 hidden layer로 구성된 뉴럴 네트워크와의 객관적인 비교를 위하여 학습 횟수를 10,000번으로 제한하였으며, <figure 6>과 <figure 7>은 9개의 hidden layer로 구성된 뉴럴 네트워크의 Cost와 Accuracy를 나타내는 그래프입니다. <figure 6>을 살펴보면, 학습이 진행됨에 따라서 Cost값이 위 아래로 변화하는 것을 확인할 수 있으며, <figure 7>을 살펴보면 학습이 진행됨에 따라서 Accuracy 값이 0.5로 수렴되는 것을 알 수 있습니다.

<figure 6> Neural Network #2 Cost

<figure 7> Neural Network #2 Accuracy

이와 같은 현상은 뉴럴 네트워크의 활성화 함수인 sigmoid 한계로 인해 발생하는 문제입니다. Sigmoid 함수는 <figure 8>과 같이 0~1사이 값을 갖는 함수입니다. 지난 포스트에서 설명 했듯이 뉴럴 네트워크는 Backpropagation을 활용하여 모델의 학습을 수행하게 됩니다. 이 때, Chain-rule에 의해서 Backpropagation 수행 시, 초기 레이어의 weigth와 bias는 활성화 함수인 sigmoid에 큰 영향을 받게 됩니다. 만약 모델 학습을 위해 설계된 네트워크가 총 9개로 구성되어 있다면, 초기 레이어는 총 9번의 sigmoid 함수에 적용된 숫자를 곱하게 됩니다. 예를들어 0.1의 9제곱은 0.000000001이므로 초기 레이어의 weight와 bias에는 0.000000001이 곱해져서 변하게 되므로 결국 <figure 9>와 같이 weight값과 bias 값에는 변동이 적어지게 되는 Vanishing Gradient Problem이 발생하게 됩니다.

<figure 8> Sigmoid function

<figure 9> Vanishing Gradient Problem

활성화 함수 Sigmoid의 한계를 극복하기 위해 아래의 <figure 10>와 같은 Rectified Linear Unit(이하 ReLU)함수가 등장하게 됩니다. ReLU 함수는 Sigmoid 함수와 input 값이 0 이하이면 0을 출력하고, input 값이 0 이상일 때는 0에서 무한대의 값을 출력하게 됩니다. 출력되는 값의 범위가 무한대이므로 Backpropagation 수행 시 초기 레이어의 weight 값과 bias 값을 변동하는데 용이하다는 장점이 있습니다.

<figure 10> Rectified Linear Unit(ReLU)

이제 네트워크의 활성화 함수를 ReLU로 적용하여 실험을 수행해보겠습니다. Sigmoid 함수와의 객관적인 비교를 위해 뉴럴 네트워크 #2와 같이 hidden layer의 개수를 9개, 각 hidden layer의 노드 수를 5개로 네트워크를 설계했으며, <figure 11>은 ReLU 함수를 활성화 함수로 적용한 네트워크의 구조를 나타냅니다.

<Figure 11> Neural Network #3 Structure

아래의 <figure 12>와 <figure 13>은 ReLU 함수를 활성화 함수로 적용 했을 때의 Cost와 Accuracy 값의 변화를 나타내고 있습니다. <figure 12>를 살펴보면 학습이 반복 될 수록 Cost 값이 0에 수렴하는 것을 알 수 있으며, <figure 13>을 살펴보면 학습이 반복 될 수록 Accuracy 값이 1에 수렴하는 것을 알 수 있습니다.

<figure 12> Neural Network #3 Cost

<figure 13> Neural Network #4 Accuracy

지금까지 Vanishing Gradient Problem과 Sigmoid 함수의 특징, ReLU 함수의 특징을 살펴보았습니다. XOR과 같이 Input의 수가 적고 데이터의 개수 또한 적을 때는 Sigmoid 함수를 활성화 함수로 적용한 비교적 작은 규모의 뉴럴 네트워크를 구성하는 것이 효과적이며, Input의 수가 크고, 데이터의 개수 또한 클 때는 ReLU 함수를 활성화 함수로 적용한 비교적 큰 규모의 뉴럴 네트워크를 구성하는 것이 효과적일 것으로 사료됩니다.

 

댓글 남기기