본문 바로가기
머신러닝

머신러닝(Machine Learning) 13장 - ReLU function -

by ChocoPeanut 2017. 6. 1.

머신러닝(Machine Learning) 13

- ReLU function -

 

XOR 문제를 해결하는 방법으로 Multiple logistic regression이라는 방법을 사용하는 Neural Network를 사용하였다. Neural Networklogistic regression을 사용하는 만큼 sigmoid function을 이용하여 결과 값을 도출하였다. sigmoid function은 값의 결과를 01로 나타나게 되므로 Activation function이라고 불렸다. 특정 범위가 되면 활성화되고 아니면 비활성화가 되는 것을 나타내기 때문이다. Neural Networklayerregression의 부분을 나누게 된다. 맨 처음 입력 값이 들어오는 부분은 Input layer라고 하고 맨 마지막의 결과 값이 나오는 부분을 Output layer라고 한다. 그리고 그 사이에 존재하는 모든 regression의 부분을 Hidden layer들로 숨겨진 층이라고 나타낸다. 각각의 regression은 앞 layer의 결과 값을 입력 값으로 받고 학습에 의해 계산된 결과 값을 또 다른 regression의 입력 값으로 넣게 된다.


그런데 layer의 양이 많아질수록 결과가 나빠지는 경우가 발생하게 된다. Backpropagation이라는 알고리즘을 사용하여 Neural Network를 학습하게 되는데 이 방법은 실제 결과 값과 예측한 결과 값을 비교하여 이를 역으로 끝에서 출발하여 처음의 입력 값이 어떻게 영향을 끼치는지를 예측하여 학습하는 방법을 말한다. 이 때 각 입력 값을 전체 결과 값을 편미분한 값을 계산하여 나타낼 수 있는데 이는 chain rule에 의해 최종 layer에서부터 역으로 계산하게 된다. 그런데 만약 regression에서 sigmoid의 값의 결과 값을 가지므로 1보다 작은 결과를 나타나게 되는데 이에 대한 편미분을 역으로 계속 하게 되면 값을 곱해서 나타나게 된다. 그러면 0이라는 값에 가까워지게 되고 이 layer의 앞에 있는 input 값들에 의해서는 어떤 영향을 주는지를 예측할 수 없게 되거나 거의 영향을 주지 않는다는 결론이 나타나게 된다. 이는 특정 데이터의 input 값에 의한 결과로만 학습이 되기 때문이다. 따라서 특정 입력 값에 의해 정확한 학습이 불가능하게 된다. 그림에서 진하기의 차이에 따라 영향을 끼치는 정도의 차이를 나타나게 된다.



위의 문제는 sigmoid라는 함수가 원인이라고 할 수 있다. sigmoid 함수는 어떻게 입력 값을 넣어도 01사이의 값을 가지게 된다. 따라서 이 값들이 각각의 layer를 역으로 곱해져서 입력 값이 끼치는 영향을 계산하게 되면 계산 값이 계속 작아지는 것을 예측할 수 있을 것이다. 따라서 layer가 많을수록 입력 값이 끼치는 영향은 매우 작아진다고 할 수 있다. 그래서 고안된 함수의 형태가 ReLU이다. ReLU는 아주 간단하게 0보다 작으면 0으로 나타내고 0보다 크게 되면 직선의 형태로 값을 가지게 된다.



ReLURectified Linear Unit으로 sigmoid function이 들어가는 자리에 ReLU의 모형을 사용하게 되면 입력 값이 영향을 끼치는 것을 더욱 잘 관찰할 수 있게 된다. 하지만 마지막의 결과 값을 출력하는 Output layer에서는 sigmoid 함수를 사용하게 된다. 왜냐하면 마지막의 결과 값으로는 sigmoid function의 결과인 01사이로 나와야하기 때문이다.