ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Activation functions
    Deep Learining/Activation Function 2015. 9. 24. 12:45

    Activation function


    Activation function은 말 글대로 활성함수로 각 뉴런에 입력된 데이터에 대한 뉴런의 출력이다.

    예를 들어, Neural Network에서는 한 노드는 inputs과 각 weights과의 곱을 모두 더한 값을 입력받는다. 받아들인 이 값이 Activation function을 지난 값이 이 뉴런이 출력한 output이다. 



    1. activation function의 종류



    Activation function의 위의 그림처럼 여러 종류가 존재한다. 


    신경망 초기에는 그림(b)와 같이 입력값이 어느정도에 도달해야만 값을 출력하도록하는 step function을 사용했다. 하지만 step function은 미분이 불가능하기 때문에 gradient descent를 통한 훈련이 불가능했다. 따라서 이후에 미분가능한 함수(연속 함수)를 사용하였는데 이것이 그림(d)의 Sigmoid function이다. sigmoid function은 0에서 1 사이의 값만을 가지고 있는데 중간지점에서 급격하게 값이 증가하는 것이 특징이다. 연속함수기 때문에 미분이 가능하고 gradient descent를 활용한 신경망의 학습이 가능하다.


    최근에 딥러닝이 발전하면서 activation function도 새로운 함수를 사용하게된다. 이러한 이유는 sigmoid function에 비해 더 좋은 성능을 보여주는 activation function이 생겼기 때문이다. 이 함수 ReLu(Restified Linear Unit)라는 새로운 activation function이며 다음 그림과 같이 입력이 0이하의 값을 가질 경우 0의 값 출력하고 0이상의 값을 입력받았을 때에 linear하게 출력한다. 이러한 ReLu의 사용은 오류를 가진 값이 전파되지 않도록하여 모델이 더 정교하게 학습되도록한다.





    2. theano에서의 activation function


    그럼 실제 구현상에서 어떻게 theano에서 제공되는지 알아보도록하자. theano는 현재 0.7.0 version이 배포되어있다. 0.7.0 version에서는 sigmoid function과 softmax함수 등이 제공되며 차후에 나올 0.7.1 version에서 relu를 제공한다고 한다.


    설명은 다음과 같이 theano를 import했다고 가정한다.

    import theano

    import theano.tensor as T


    1) sigmoid functionm

    시그 모이드 함수는 theano.tensor.sigmoid(x) 로 제공한다. Neural Network에서 다음과 같이 쓸 수 있다. 

    T.nnet.sigmoid(T.dot(W, x) + b)


    2) softmax function
    소프트맥스 함수는 theano.tensor.sigmoid(x) 로 제공한다. Neural Network에서 다음과 같이 쓸 수 있다. 

    T.nnet.softmax(T.dot(W, x) + b)


    3) relu function
    relu는 현재버젼에서는 제공하진 않지만 theano의 switch함수와 maximum함수를 이용하여 구현이 가능하다.
    구현시 다음과 같이 구현이 가능하다. 현재 theano 최신버젼에서는 ReLu를 라이브러리 함수로 제공하고 있다.

        def relu(x):
             return T.switch(x<0, 0, x)

            or

        def relu(x):
            return T.maximum(x, 0)

    theano 0.7.1 버젼에서는 theano.tensor.relu(x) 로 제공된다고 한다. Neural Network에선 다음과 같이 쓸 수 있다. 

    T.nnet.relu(T.dot(W, x) + b)








    'Deep Learining > Activation Function' 카테고리의 다른 글

    Softmax  (1) 2016.10.12
    ReLu(Rectified Linear Unit)  (0) 2016.10.03
Designed by Tistory.