신경망모델의 각 층(layer)에서는 인력값과 가중치를 곱한 후 전체를 합하여 $ y=x_i w_i + b $를 계산하고 마지막에 활성화 함수를 거쳐 $ h(x) $를 출력한다. 그렇다면 신경망에서 활성화 함수를 사용하는 이유는 무엇일까?
활성화함수란?
노드에 입력된 값들을 비선형 함수에 통과시킨 후 다음 레이어로 전달하게 되는데, 이때 사용하는 함수를 활성화 함수(Activation function)라고 한다.
활성화함수를 사용하는 이유
다층 퍼셉트론(MLP)에서 봤듯이 은닉층을 무작정 쌓는다고 퍼셉트론을 선형 모델에서 비선형 모델로 바꿀 수 있는 것은 아니다. 기본적으로 퍼셉트론은 $ y=ax+b $ 꼴의 선형 함수를 나타내기 때문에, 층이 두 개인 신경망을 생각해 볼 경우 $ y=h(h(x)) = a^2x $ 형태로 나타낼 수 있다. 즉, 층을 아무리 쌓아도 단순화 될 수 있다는 것이다. 따라서 비선형 함수인 활성화 함수를 통해 모델을 비선형 모델로 만들어 줄 수 있다.
시그모이드(Sigmoid) 함수
$$ y=\frac{1}{1+e^{-x}} $$
결괏값을 0에서 1 사이로 만들어준다. 데이터의 평균은 0.5를 갖게 된다.
[장점]
1) 출력값을 0과 1 사이의 값으로 매핑하기 때문에 이진 범주형으로 표현이 가능하다.
[단점]
1) 계산식이 복잡하기 때문에 계산 효율성이 낮다.
2) 함숫값 중심이 0이 아니기 때문에 학습이 느려질 수 있다.
3) 위 그림에서 시그모이드 함수의 기울기를 보면, 값이 어느정도 크거나 작아진다면 기울기가 매우 작아지게 된다. 이로 인에 기울기 소실(Vanishing gradiend)이 발생할 수 있다.
※ 왜 중심이 0이 아니라면 학습이 느려질까?
만약 함수의 출력값이 중심이 0이 아니라 모든 입력 $x$가 양수라면, 해당 함수의 미분값이 모두 같은 부호를 가지게 된다. 이는 모든 파라미터 $w$에 대한 미분값이 같은 부호를 가지게 되어, 경사하강법 업데이트가 같은 방향으로 이루어지게 된다. 이러한 상황에서 학습이 zigzag 형태로 이루어져 느려질 수 있다. 따라서 함수의 출력값이 중심이 0이 아니면, 학습이 효율적으로 이루어지지 않을 수 있다.
※ 기울기 소실
기울기 소실은 역전파(backpropagation) 과정에서 발생하는 현상이다. 모델을 최적화하는 방법으로 경사하강법(Gradient descent)을 쓰게 되는데, 신경망의 활성화 함수의 도함수 값이 계속 곱해지면서 가중치에 따른 결괏값의 기울기가 0이 되어 경사하강법을 이용할 수 없게 된다.
하이퍼볼릭 탄젠트(tanh) 함수
$$ y = \frac{e^x-e^{-x}}{e^x+e^{-x}} $$
그래프 자체는 시그모이드 함수와 매우 유사하다. 하이퍼볼릭 탄젠트(tanh) 함수는 -1에서 1 사이의 값을 갖고, 데이터의 평균은 0이다.
[장점]
1) 함숫값 중심이 0이기 때문에 시그모이드 함수보다 성능이 좋다.
[단점]
1) 시그모이드와 마찬가지로 기울기 소실(Vanishing gradient) 문제가 발생한다.
ReLU 함수
$$ y=max(0,x) $$
대부분의 경우 일반적으로 ReLU 함수의 성능이 가장 좋기 때문에 해당 함수를 사용한다.
[장점]
1) 대부분의 입력값에 대해서 기울기가 0이 아니기 때문에 학습이 빨리 된다.
2) 연산 비용이 크지 않고, 구현이 매우 간단하다.
[단점]
1) $x<0$인 값에 대해서는 기울기가 0이기 때문에 뉴런이 죽는 현상이 발생한다.
일반적으로 노드의 값이 음수가 나오는 경우는 드물기 때문에 무시할 수 있는 수준이긴 하다.
LeakyReLU
$$ y=max(0.01x,x) $$
Leaky ReLU는 ReLU의 뉴런이 죽는 현상을 해결하기 위해 나온 함수이다. 위의 식에서 0.01 대신 다른 매우 작은 값을 사용할 수 있다.
[장점]
1) Leaky ReLU는 0보다 작을 때 기울기가 0이 되는 현상이 발생하지 않아 ReLU에 비해 학습 성능이 좋다.
---
References
https://velog.io/@kang9366/%ED%99%9C%EC%84%B1%ED%99%94-%ED%95%A8%EC%88%98-Activation-Function
https://ganghee-lee.tistory.com/32
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=handuelly&logNo=221824080339
'AI > Machine Learning' 카테고리의 다른 글
ML: 최적화(Optimization)와 경사하강법 (Gradient Descent) (0) | 2024.01.18 |
---|---|
ML: 손실함수(Loss Function) (0) | 2024.01.16 |
ML: 인공신경망(Artificial Neural Network)과 퍼셉트론(Perceptrons) (0) | 2024.01.16 |
ML: 머신러닝이란? (0) | 2024.01.16 |