신경망모델의 각 layer에서는 input 값과 W, b를 곱, 합연산을 통해 a=WX+b를 계산하고 마지막에 활성화 함수를 거쳐 output을 출력한다. 이렇게 각 layer마다 sigmoid, softmax, relu 등 여러 활성화 함수를 이용한다.
인공신경망에 대한 연구가 한계를 맞게된 첫 과제는 바로 XOR문제였다.
아래 그림에서 확인할 수 있듯이 기존의 퍼셉트론은 AND와 OR문제는 해결할 수 있었지만 선형 분류기라는 한계에 의해 XOR과 같은 non-linear한 문제는 해결할 수 없었다.
이를 해결하기 위해 나온 개념이 hidden layer이다. 그러나 이 hidden layer도 무작정 쌓기만 한다고 해서 퍼셉트론을 선형분류기에서 비선형분류기로 바꿀 수 있는 것은 아니다.
왜냐하면 선형 시스템이 아무리 깊어지더라도 f(ax+by)=af(x) + bf(y)의 성질 때문에 결국 하나의 layer로 깊은 layer를 구현할 수 있기 때문이다.
즉, linear한 연산을 갖는 layer를 수십개 쌓아도 결국 이는 하나의 linear 연산으로 나타낼 수 있기 때문에 layer를 깊게 쌓는 의미가 없어진다.
이에 대한 해결책이 바로 활성화 함수(activation function이다.
활성화 함수를 사용하면 입력값에 대한 출력값이 linear하게 나오지 않으므로 선형분류기를 비선형 시스템으로 만들 수 있다.
따라서 다층퍼셉트론(Multiple Layer Perceptron)은 단지 linear layer를 여러개 쌓는 개념이 아닌 활성화 함수를 이용해 linear layer를 non-linear 시스템으로 바꾸어 여러 layer로 쌓는 개념이라고 할 수 있다.
결론적으로 활성화 함수는 입력값을 non-linear한 방식으로 출력값을 도출하기 위해 사용한다.
논리회로 게이트에서 우리가 궁금한 점은 연산결과가 0인지 1인지에 대한 것이다.
따라서 우리는 활성화 함수를 통해 이를 최종 출력값으로 내보내줘야할 필요가 있다.
퍼셉트론 모델에서 이 활성화 함수는 Step Function(계단함수) 라고 부른다.
계단함수는 계산한 값이 임계점 이상이면 1이, 아니면 0이 나오는 매우 심플한 함수이다.
퍼셉트론에서는 이 계단함수를 사용하지만 실제로는 값이 너무 극단적이기 때문에 계단함수를 잘 쓰지는 않는다.
물론 이게 최종 결과로 쓰여야한다면 상관없지만 중간층에서 써야한다면 계단 함수를 선택하는건 리스크가 있다.
우리는 퍼셉트론을 쌓을 것인데 최종 결과가 아닌 중간 계층에서는 값이 계산하기 유용한 상태로 전달되는것이 좋다.
계단함수는 극단적으로 반환값이 0과 1이므로 중간 계층에서 값을 살리기 너무 힘들게 되어 있다. 그래서 등장한 것이 바로 시그모이드 함수이다.
sigmoid 함수는 Logistic 함수라고 불리기도 하며, x의 값에 따라 0~1의 값을 출력하는 S자형 함수이다.
sigmoid 함수의 특징은 다음과 같다.
이러한 특징을 가지는 sigmoid는 신경망 초기에는 많이 사용되었지만, 최근에는 아래의 단점들 때문에 사용하지 않는다.
Hyperbolic tangent란 쌍곡선 함수중 하나이다.
Hyperbolic tangent 함수는 시그모이드 함수를 transformation해서 얻을 수 있다.
-1 vertical shift & 1/2 horizontal squeeze & 2 vertical stretch
함수는 다음과 같이 정의된다.
ReLu함수는 최근 가장 많이 사용되는 활성화 함수이다. 함수는 아래와 같이 정의된다.
ReLU함수의 특징은 다음과 같다.
leakly ReLU는 ReLU의 뉴런이 죽는 Dying ReLu 현상을 해결하기위해 나온 함수이다. 함수도 매우 간단한 형태로 다음과 같다.
위의 식에서 0.01대신 다른 매우 작은 값 사용 가능하다.
Leakly ReLU함수의 특징은 다음과 같다.
Leakly ReLU와 거의 유사하지만 새로운 파라미터 α 를 추가하여 x<0에서 기울기를 학습할 수 있게 하였다.
PReLU의 특징은 다음과 같다.
ELU는 비교적 가장 최근에 나온 함수이다.
ELU 의 특징은 다음과 같다.
Maxout 함수는 다음과 같다.
이 함수는 ReLU가 가지는 모든 장점을 가졌으며, dying ReLU문제 또한 해결한다. 하지만 파라미터의 개수가 두배로 늘어나기 때문에 계산량이 복잡하다는 단점이 있다.