Sigmoid neurons

2016. 1. 19. 13:37machine learning

http://neuralnetworksanddeeplearning.com/ 의 e-book을 의역함.


Sigmoid neurons


학습 알고리즘이란 단어는 매우 매력적이다. 예를 들어 input 데이터가 스캐너의 raw data라든지, handwritten된 숫자 이미지일 경우에, 숫자의 정확한 분류를 output으로 출력하기 위해 weight와 bias를 학습해야 할 것이다. 어떻게 학습이 이루어지는지를 확인하기 위해서, 네트워크의 몇몇의 weight 또는 bias를 약간 변경할 수 있다고 가정하자. 우리가 weight를 조금 변경하면 그와 일치하게 output도 변화가 일어날 것이다. 이러한 속성은 학습을 가능하게 한다. 



만약에 weight 혹은 bias의 변화를 준 결과 값이 참이라면, 우리는 해당 결과를 얻기 위해서 weight와 bias들을 수정할 수가 있다. 예를 들어 "9"라는 이미지 숫자를 "8"로 분류된 뉴럴 네트워크가 있다고 가정해보자. 우리는 weight와 bias를 변경함으로써 "9"에 근접하게 분류가 가능하도록 수정을 해야 한다. 그리고 이 작업을 반복을 해야 한다. weight와 bias값이 변경 되면 될 수록 그 결과값은 점점 더 나아딜 것이다. 네트워크가 학습이 되고 있는 것이다.


문제는 네트워크가 perceptron을 포함하고 있다면 이러한 일들이 발생하지 않는다는 것이다. 사실 하나의 perceptron의 weight 혹은 bias를 약간 변경함으로써 완변하게 반전되는 perceptron의 output을 야기할 수가 있다. (0에서 1로) 

이러한 반전은 네트워크의 나머지 행동들이 매우 복잡한 방법으로 변경될 수 있음을 야기할 수있다. 당신의 "9"라는 숫자가 완벽하게 분류될 수 있을지는 몰라도, "9"이외의 나머지 이미지들은 다소 제어하기 어려운 방향으로 변경될 수가 있다. 이것은 weight와 bias를 점진적으로 수정함으로써 원하는 네트워크의 행동을 얻는 것이 얼마나 어려운지를 보여주고 있다.

아마도 이 문제를 해결할 수 있는 명백한 방법이 있을 것이다. 하지만 학습을 위한 perceptron의 네트워크를 얻는 방법으로는 적절하지가 않다.


우리는 sigmoid neuron이라는 새로운 타입의 인공 뉴런을 통해 이 문제를 극복할 수가 있다. sigmoid neuron은 perceptron과 유사하지만 weight와 bias를 약간 변경하더라도 오직 약간의 output만을 변경할 뿐이다. 

자 이제 sigmoid neuron에 대해 살펴보자.



perceptron과 비슷하게 sigmoid neuron 또한 x1,x2...의 input을 가진다. 하지만 0 또는 1의 값을 가지는게 아니라 0과 1 사이의 값을 가질 수가 있다. 예를 들어 sigmoid neuron에서는 0.638이 올바른 input 데이터를 가진다. perceptron과 마찬가지로 sigmoid neuron도 각각 input에 대한 weight를 가지고, 전체적인 bias도 가진다. 그러나 output이 0 또는 1은 아니다. 대신에 라는 값을 가지고, 는 sigmoid 함수라고 불리며 아래와 같이 정의한다.



좀 더 명확하게 표현하자면, input x1,x2,..., weight w1,w2,... 그리고 bias b와 함께 sigmoid neuron은 아래와 같이 표현한다.



첫 번째 식을 보면, sigmoid와 perceptron은 매우 차이가 나 보인다. 사실 perceptron과 sigmoid neuron 사이에는 많은 유사함을 가지고 있다.


perceptron 모델과의 유사성을 이해하기 위해 가 큰 양수라고 가정하자. 그러면 이 되고 

이 된다. 다시 말해서 z가 큰 양수일 경우에 sigmoid neuron의 출력은 대략적으로 1이 된다. 이는 perceptron과 비슷하다. 이제는 z이 음수라고 가정해보자. 그러면 가 되고 이 된다. 이것 역시 perceptron과 비슷한 결과를 나타낸다. 


이번에는 에 대하여 알아보자. 사실 정확한 수식 보다는 함수의 모양이 더욱 중요하다. 아래의 그림이 에 대한 그림이다.


아래 모양은 step 함수의 버전을 나타낸다.



만약 가 step 함수였다면, sigmoid neuron은 perceptron과 같았을 것이다. 왜냐하면 결과 output이 0 또는 1로만 나뉘기 때문이다. 함수의 평평함은 weight와 bias의 작은 변화가 output의 작은 변화를 생성한다는 것을 의미한다. output은 대략적으로 아래와 같이 구할 수가 있다.



합계는 모든 weights,  를 나타내고, 와  는 와 b와 관련하여 output의 편미분을 의미한다. output은 weight의 변화량과 bias의 변화량의 선형 함수로 표현이 가능하다. 이는 weight와 bias를 약간만 변경하더라도 원하는 output 결과를 얻을 수 있음을 의미한다.