신경망모델의 각 layer에서는 각 input 값에 상응하는 가중치 W(weight)를 곱하고, 마지막에 편향 b(bias)를 더한다. 즉, Y=WX+b를 계산하고 마지막에 활성화 함수를 거쳐 h(a)를 출력한다. 이렇게 각 layer마다 sigmoid, softmax, relu 등.. 여러 활성화 함수를 이용하는데 그 이유가 뭘까?
기존 퍼셉트론은 AND와 OR문제는 해결할 수 있었지만 XOR문제는 선형(직선)으로 해결할 수 없었다.
XOR문제를 해결하기 위해서는 비선형 분류가 필요했다. 이를 해결하기 위해서 hidden layer 개념이 나왔다. 여담으로 hidden layer때문에 층을 깊게(deep) 쌓아 학습이 가능하다고 해서 딥러닝이라는 명칭을 사용한다. 그러나 이 hidden layer도 무작정 쌓기만 해서 비선형 분류가 가능하지는 않다. 왜냐하면 아무리 선형 시스템이 깊어지더라도 결국은 선형이기 때문이다. 이를 해결하기 위해 활성 함수(activation function)가 등장했다. 활성 함수를 사용하면 결과값이 linear하게 나오지 않기 때문에 비선형 분류기를 만들어 XOR문제를 해결할 수 있기 때문이다.
- 시그모이드(Sigmoid) $a=\frac{1}{1+e^{-z}}$
output값을 0에서 1사이로 만들어준다. 데이터의 평균은 0.5를 갖게된다. binary classification경우 출력층 노드가 1개이므로 이 노드에서 0~1사이의 값을 가져야 마지막에 cast를 통해(ex. 0.5이상이면 1, 미만이면 0) 1혹은 0값을 output으로 받을 수 있다. 따라서 이때는 시그모이드를 사용한다.
위 그림에서 시그모이드 함수의 기울기를 보면 알 수 있듯이 input값이 어느정도 크거나 작으면 기울기가 아주 작아진다. 이로인해 생기는 문제점은 시그모이드로 여러 layer를 쌓았다고 가정하자. 그러면 출력층에서 멀어질수록 기울기가 거의 0인 몇몇 노드에 의해서 점점 역전파해갈수록, 즉 입력층 쪽으로갈수록 대부분의 노드에서 기울기가 0이되어 결국 gradient가 거의 완전히 사라지고만다. 결국 입력층쪽 노드들은 기울기가 사라지므로 학습이 되지 않게 된다. 이를 vanishing gradient현상이라고 한다.
- Tanh $a=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}$
시그모이드 함수와 유사하다. 차이점은 -1~1값을 가지고 데이터의 평균이 0이라는 점이다. 데이터의 평균이 0.5가 아닌 0이라는 유일한 차이밖에 없지만 대부분의 경우에서 시그모이드보다 Tanh가 성능이 더 좋다. 그러나 시그모이드와 마찬가지로 Vanishing gradient라는 단점이 있다.
- ReLU $a=max(0,z)$
Vanishing gradient 현상을 방지하기 위해 ReLU가 등장했다. 일반적으로 ReLU의 성능이 가장 좋기 때문에 어떤 활성함수를 사용할지 모르면 ReLU사용해도 좋을 정도로 활용빈도가 가장 높다. 그림을 보면 input이 0보다 작을 경우 기울기가 0이기 때문에 대부분의 경우에서 기울기가 0이 되는것을 막아주는게 납득이 안 될수 있지만 실제로 hidden layer에서 대부분 노드의 z값은 0보다 크기 때문에 기울기가 0이 되는 경우가 많지 않다. 단점으로는 언급했듯이 z가 음수일때 기울기가 0이라는 것이지만 실제로는 거의 무시할 수 있는 수준으로 학습이 잘 되기 때문에 단점이라 할 수도 없다.
- Leaky ReLU $a=max(0.01z,z)$
input값인 z가 음수일 경우 기울기가 0이 아닌 0.01값을 갖게 된다. leaky ReLU를 일반적으로 많이 쓰진 않지만 ReLU보다 학습이 약간 더 잘 된다.
'지식공학 > 기계학습' 카테고리의 다른 글
The Gaussian Distribution (0) | 2021.07.20 |
---|---|
Binary Variables (0) | 2021.07.20 |
Gradient Descent Optimization (0) | 2021.06.29 |
Generative Adversarial Network (GAN) (0) | 2021.05.27 |
딥러닝 기초 (0) | 2021.05.04 |
댓글