활성화 함수(Activation Function)이란?
활성화 함수(Activation Function)이란 인공신경망의 출력값을 결정하는 비선형 함수(non-linear Function)이다. 활성화 함수는 퍼셉트론의 입력값 총합을 전달 유무를 결정하며, 출력할 경우 어떠한 형태로 출력하는지를 결정하는 함수이다.
그림과 같이 여러 input들의 가중합을 구한뒤, 활성화 함수를 이용하여 출력값과 형태를 결정한다.
왜 비선형 함수인가?
출력을 하는데 왜 비선형 함수가 필요한 것일까? 기존에 배웠던 $F\cdot x$ 와 같이 선형 함수를 중첩해서 사용하면 안되는 것일까?
활성화 함수까지 꼭 필요한 이유는 다음과 같다.
1. 신경망의 표현성을 높이기 위해
우리는 인공신경망을 실생활에 적용하기 위해 사용한다. 실생활에서 이상적인 선형의 형태로 나탄지는 경우는 거의 없다. 따라서 비선형인 활성화 함수를 이용하여 실생활의 문제를 효과적으로 푼다. 우리는 선형함수와 비선형함수를 여러 층으로 쌓아 더 정확하고 효율적으로 문제를 접근한다.
2. 다층 선형함수의 한계
선형함수만을 이용하여 층을 쌓더라도 성능이 크게 향상되지 않는다. 왜냐하면 여러 선형함수의 층은 하나의 선형함수로 귀결될 수 있기 때문이다. 이를 더욱 자세하기 위해서는 수식을 통해 알아보자.
선형함수인 $y= W\cdot x$가 존재한다고 가정하자. 입력값이 3개의 선형함수를 통과한다고 생각하자. 그렇다면 우리는 $y=f(f(f(x)))$라 수식을 세울 수 있다. 사실 이는 $y=W^3\cdot x$인 하나의 선형함수로 표현할 수 있다.
다음과 같은 특징을 보았을때 선형함수의 연속된 중첩은 모델의 표현성과 성능을 현격히 저하하고, 망을 깊게 쌓는 의미를 퇴색시킨다. 따라서 인공신경망은 비선형함수를 중간에 포함한다.
3. 활성화 함수의 종류
1) Sigmoid
sigmoid function $\sigma (x) = \frac{1}{1+e^{-x}}$는 초기에 많이 사용되었던 activation function이었다. 0을 기준으로 neuron이 활성화 되어 인공신경망에 많이 사용되었다.
그러나 해당 활성화 함수는 크게 3가지 문제점을 가지고 있다.
1. Vanishing Gradient
backpropagation 과정을 다시한번 살펴보자. Backpropagation에서는 Chain Rule이 핵심 로직이다. Gradient를 계산하기 위해 위의 Global gradient(Upstream Gradient)와 Local Gradient를 곱한다. 곱한 결과값은 Global Gradient가 되어 이후 변수의 gradient를 계산하는데 사용된다. 이 과정에서 1보다 작은 Gradient가 계속 곱해질 경우 결국 gradient가 0으로 수렴하여 기울기가 소실된다는 문제점을 Vanishing Gradient라 한다. 반대로 1보다 큰 Gradient값이 계속 곱해질 경우 기울기가 폭발한다고 한다.
2. Output이 zero-centered가 되어있지 않다.
output이 zero centered 되어있지 않은 경우 $y=f(x^tw)$는 항상 양수 또는 항상 음수가 나온다. 특히 sigmoid 함수의 경우 양수만 나오기에, chain rule에 따라 모든 gradient값이 양수만 나온다. 즉 모든 gradient값이 같은 부호만 나오게 되어, 2차원 평면으로 표시해보면 같은 방향으로 움직이는 1사분면 또는 3사분면 방향으로밖에 움직이지 못한다.
만약 Optimal Weight가 파란색일 선일 경우, 1사분면과, 3사분면 방향을 번갈아가며 비효율적인 학습이 이루어진다.
Zero-Centered는 필수 고려사항은 아니지만, 학습을 효율적으로 하게 해준다.
3. Exponential의 계산은 비싸다.
Exponential 계산은 다른 계산보다 느리다는 단점이 존재한다.
다음과 같은 3가지 한계점 때문에, 다른 Activation function을 사용한다.
2)tanh
$tanh(x)$의 그래프는 다음과 같다. sigmoid function와 유사한 모양을 가지고 있다. 기존의 $[0,1]$에서 $[-1,1]$로 범위가 바뀌어 zero-centered 문제를 해결하였지만, 여전히 vanishing gradient문제를 가지고 있다.
3)ReLU
$ReLU = max(0,x)$는 머신러닝에서 가장 많이 사용되는 활성화 함수이다. 해당 함수는 실제 신경망과 가장 유사한 형태를 지니고 있다고 한다. 선형 함수로 생각 할 수도 있지만, 0보다 작은 값은 0으로 출력하기에, 비선형 함수에 해당한다. 기존에 보았던 sigmoid, tanh함수보다 계산 비용이 적게드며, 0보다 큰 경우에 한해 기울기 소실 문제를 해결했다고 할 수 있다.
하지만 여전히 0보다 작은 경우에 대해서는 Vanishing Gradient문제가 발생한다. 또한 Output이 zero centered되어있지 않다.
ReLU의 Vanishing Gradient 문제를 해결하기 위해 Leaky ReLU $f(x) = max(0.01x,x)$, PReLU $f(x) = max(\alpha x,x)$ 등이 등장하였다.
'공부 > 머신러닝' 카테고리의 다른 글
Optimizer (0) | 2024.04.06 |
---|---|
Weight Initialization (0) | 2024.03.25 |
Convolution Neural Network (0) | 2024.03.19 |
Backpropagation (0) | 2024.03.17 |
Loss Function and Optimization (0) | 2024.03.05 |