본문 바로가기
Artificial Intelligence

Activation Function (활성화 함수)

by HanByol Jang 2022. 6. 28.
728x90

Activation Function의 역할

Neural Network는 layer에서 데이터를 연산하고 다음 layer로 값을 전달해주는 방법으로 설계되어있습니다.

이때 값을 그대로 전달하는 것이 아니고, activation function을 통해 변화된 값을 전달하게 됩니다.

 

가장 시초인 Single layer 퍼셉트론일때는 Step function을 통해 threshold를 넘으면 1, 못넘으면 0으로 전달유무만 결정했습니다. 하지만 Multi layer 뉴럴네트워크로 발전하면서 단순한 전달유무가 아닌 값을 변화시켜 전달하는 함수를 사용하게 되었습니다.

 

또한 활성함수로는 반드시 선형(linear)함수가 아닌 비선형(non-linear)함수를 사용해야만 합니다. 왜냐하면 네트워크가 선형 수식으로만 이루어져 있으면 아무리 layer를 깊게 쌓더라도 이는 layer 1개와 같기 때문입니다.

 

예를들어 활성화 함수 h(x) = cx이고 layer 3개를 통과하면, y(x) = h(h(h(x))) = c^3x  입니다.

이는 활성화 함수 h(x) = c^3x이고 layer 1개를 통과하는 y(x) = h(x) = c^3x 와 같습니다.

 

이렇게 선형함수로 활성화함수를 사용하면, layer를 깊게 쌓는 이유가 없어집니다. 반면 비선형함수는 선형수식으로는 구현할 수 없기 때문에, 여러 layer를 쌓을수록 더 복잡한 식을 만들 수 있게됩니다. 이는 네트워크가 더 많은 정보를 추출할 수 있어 복잡한 관계의 문제도 해결할 수 있음을 뜻하기에 반드시 비선형함수의 활성화 함수를 사용해야만 합니다.


Sigmoid

가장 기초인 Sigmoid 함수는 평균이 0.5이고, 모든 값을 0~1 사이로 만드는 활성함수입니다. 0~1 사이의 확률값으로 결과를 표현하고 싶을 때 사용합니다.

하지만, Sigmoid 함수는 미분(gradient)을 하게되면 값이 굉장히 작아진다는 치명적인 단점이 있기에 깊은 신경망에서 거의 사용하지 않습니다.

Gradient Vanishing

작은 미분값이 문제가 되는 이유는, 모델을 학습하며 업데이트할 때 활성함수의 미분 값을 곱해서 이전 layer에 반영을 하는 과정이 있습니다. 이를 backpropagation이라고 하고, 뉴럴 네트워크의 학습 원리입니다.

그런데 layer가 깊다보면, 계속해서 작은 미분값을 곱하게 되고 결국 제일 먼 layer에서는 0에 수렴하기 때문에 영향을 받지 못합니다. 이러한 문제를 gradient vanishing (기울기 소실 현상)이라 하고, 이 문제때문에 깊은 신경망에서 활성화 함수로 sigmoid를 사용하지 않습니다.


ReLU

두번째로 Rectifier Linear Unit (ReLU)는 양수일때는 그대로, 음수일때는 0으로 변환하는 활성함수입니다.

Sigmoid와 다르게 양수일때 ReLU의 미분값은 항상 1로, layer가 깊더라도 1을 곱하는 것이기 때문에 전혀 손실이 발생하지 않습니다. 즉, Gradient vanishing이 발생하지 않기 때문에, convolution layer의 활성화함수로 ReLU를 가장 많이 사용합니다.

 

하지만 학습도중 하나의 layer의 모든 값이 음수가 되버리면, 활성화 함수의 미분값은 항상 0이기 때문에 이후의 layer의 업데이트가 멈춘다는 단점이 있습니다.


Leaky ReLU & ELU

앞선 ReLU의 문제점을 보완하기 위해, Leaky ReLU와 Exponential Linear Unit (ELU)가 고안되었습니다. 음수 값을 모두 0으로 출력했던 ReLU와 다르게, 음수 값도 영향을 줄 수 있도록 변형시킨 함수들입니다.

모든 값을 활용할 수 있다는 장점이 있지만, 음수영역도 미분을 계산해줘야하기 떄문에 연산속도에서 ReLU보다 오래 걸린다는 단점이 있습니다. 또한 결과 역시 ReLU와 특별히 큰 차이를 보이지 않기 때문에 ReLU를 더 많이 사용합니다.


Softmax

마지막으로 softmax 활성함수는 출력값을 0~1 사이의 확률값으로 변환해주고, 변환된 값들의 합을 항상 1로 만들어줍니다. Classification 학습의 마지막 출력층에 사용하는 활성화 함수입니다.

(n = 출력층의 뉴런 수(총 클래스 수), x = x번째 클래스)

Classification 모델에서의 최종 output 값은 softmax 함수를 거쳐 각 class에 속할 확률값으로 변환됩니다. 가장 높은 확률을 가진 class가 모델이 예측한 class가 됩니다. 

728x90

'Artificial Intelligence' 카테고리의 다른 글

Loss Function (손실 함수)  (0) 2022.07.08
Dataset 분리  (0) 2022.06.20
Classification Labeling (One Hot Encoding)  (0) 2021.12.09
인공지능이란  (0) 2021.07.01

댓글