Introduce to Activation Function

Activation Function에 대해 알아봅시다!

딥러닝을 공부하다보면 계속해서 소개되고 사용되는 용어가 있습니다. 바로 활성함수입니다. 그러나 이 활성함수에 대한 설명을 생략하거나 간추려서 가볍게 설명한 후 넘어가는 것이 아쉬워서 이렇게 정리를 하게 되었습니다.

예를 들어

* 활성화 함수 : 왜 sigmoid? 왜 relu?
* 옵티마이저 : RMSProp와 Adam의 차이는 뭐야?
* 손실함수 : 분류문제에서 categorical_crossentropy와 sparse_categorical_crossentropy의 차이는?

이런 매개변수들을 디테일하게 알고 넘어가는 것이 딥러닝을 공부하는데 있어서 많은 도움이 될 듯 싶습니다.
앞으로 딥러닝에 관한 용어, 알고리즘, 이론 등을 하나하나씩 정리를 해보려 합니다. 오늘은 activation function입니다.

시작해보겠습니다.

1. Activation Function의 역할

활성화 함수 라고 번역되는 Activation Function은 인공신경망의 출력을 결정하는 식 입니다.
1

인공신경망에서는 뉴런(노드)에 연산 값을 계속 전달해주는 방식으로 가중치(weights)를 훈련하고, 예측(prediction)을 진행합니다.

각각의 함수는 네트워크의 각 뉴런에 연결되어 있으며, 각 뉴런의 입력이 모델의 예측과 관련되어 있는 지 여부에 따라 활성화 됩니다. 이런 활성화를 통해 인공신경망은 입력값에서 필요한 정보를 학습합니다.

활성화 함수는 훈련 과정에서 계산량이 많고, 역전파(back backpropagation)에서도 사용해야 하므로 연산에 대한 효율성은 중요합니다. 그렇다면 이런 활성화 함수의 종류를 살펴보겠습니다.

2. Activation 3가지 분류

2.1 Binary step function

2

이미지 출처 : https://missinglink.ai/guides/neural-network-concepts/7-types-neural-network-activation-functions-right

Binary step function 은 임계치 를 기준으로 출력을 해주는 함수입니다. 퍼셉트론(perceptron) 알고리즘에서 활성화 함수로 사용합니다.

3

이 함수의 경우, 다중 분류 문제(Multi-Classification)와 같은 문제에서 다중 출력을 할 수 없다는 단점이 있습니다.

2.2 Linear activation function

스크린샷 2020-10-13 오후 10 03 38

이미지 출처 : https://missinglink.ai/guides/neural-network-concepts/7-types-neural-network-activation-functions-right

Linear activation function 는 말그대로 선형 활성화 함수입니다.

5

입력 값에 특정 상수 값을 곱한 값을 출력으로 가집니다. 다중 출력이 가능하다는 장점이 있지만, 다음과 같은 문제점을 가집니다.

  1. 역전파(back-propagation) 알고리즘 사용이 불가능합니다.

기본적으로 역전파는 활성화함수를 미분하여 이를 이용해 손실값을 줄이기 위한 과정입니다. 하지만 선형함수의 미분값은 상수이기때문에 입력값과 상관없는 결과를 얻습니다.

그렇기 때문에 예측과 가중치에 대해 관계에 대한 정보를 얻을 수 없습니다.

  1. 은닉층을 무시하고, 얻을 수 있는 정보를 제한합니다.

흔히 딥러닝을 구겨진 공을 피는 과정 이라고 표현을 합니다. 이는 복잡한 입력을 신경망, 활성화 함수를 이용해 정보를 컴퓨터가 이해하기 쉽게 변환하는 딥러닝의 과정을 비유한 의미입니다.

스크린샷 2020-10-13 오후 10 05 07

활성화 함수를 여러 층을 통해 얻고자 하는 것은 필요한 정보를 얻기 위함 입니다. 하지만 선형함수를 여러번 사용하는 것은 마지막에 선형함수를 한번 쓰는 것과 같습니다.

h(x)=cx 일때, h(h(h(x)))=c′x이기 때문입니다.

2.3 Non-linear activation function

이제 위의 두 종류의 활성화 함수의 단점때문에 활성화 함수는 비선형 함수를 주로 사용합니다.

최근 신경망 모델에서는 거의 대부분 비선형 함수를 사용합니다. 입력과 출력간의 복잡한 관계를 만들어 입력에서 필요한 정보를 얻습니다. 비정형적인 데이터에 특히 유용합니다. (이미지, 영상, 음성 등의 고차원 데이터)

비선형 함수가 좋은 이유는 선형 함수와 비교해 다음과 같습니다.

  1. 입력과 관련있는 미분값을 얻으며 역전파를 가능하게 합니다.
  2. 심층 신경망을 통해 더 많은 핵심 정보를 얻을 수 있습니다.

3. Non-linear Activation 종류

케라스에서 제공하는 activation function을 위주로 만들어 보았습니다.

3.1 Sigmoid

로지스틱(logistic)으로도 불리는 sigmoid 함수는 s자 형태를 띄는 함수입니다.

7

그래프는 살짝 아쉽지만 볼 수 있듯이 입력값이 커질수록 1로 수렴하고, 입력값이 작을수록 0에 수렴합니다.

함수의 식과 미분 값은 다음과 같습니다.

Pros
유연한 미분값을 가집니다.
출력값의 범위가 (0, 1)로 제한됩니다. 정규화 관점에서 exploding gradient 문제를 방지합니다.
미분 식이 단순한 형태를 가집니다.

Cons
Vanishing Gradient 문제가 발생합니다. 미분 값의 범위는 (0, 1/4) 임을 알 수 있습니다. 입력이 아무리 커도 미분 값의 범위는 제한됩니다. 층이 쌓일수록 gradient 값이 0에 수렴할 것이고, 학습의 효율이 매우 떨어지는 것을 직관적으로 알 수 있습니다. 또한 극값으로 갈수록 값이 포화됩니다. 

출력의 중심이 0이 아닙니다.

이것이 단점인 이유를 직관적으로 알기는 어렵습니다. 또한 exp연산은 비용이 큽니다.
퍼셉트론 등 초기 신경망에 많이 사용했지만 여러 단점 때문에 현재는 많이 사용하지 않는 함수입니다.

3.2 Tanh

tanh 또는 hyperbolic tangent 함수는 쌍곡선 함수입니다. 시그모이드 변형을 이용해 사용가능합니다.

8
Pros
Zero Centered 입니다.
이 부분에 대한 sigmoid의 단점을 해결할 수 있습니다.
다른 장점은 sigmoid와 같습니다.

Cons
center문제를 제외하고 sigmoid와 같습니다.
tanh도 시그모이드와 함께 잘 사용하지 않는 함수입니다.

3.3 ReLU

Rectified Linear Unit 함수의 준말로 개선 선형 함수라고 생각할 수 있습니다. 그래프만 봐도 명칭을 이해할 수 있습니다. CNN에서 좋은 성능을 보였고, 현재 딥러닝에서 가장 많이 사용하는 활성화 함수 중 하나입니다.

실제 뇌와 같이 모든 정보에 반응하는 것이 아닌 일부 정보에 대해 무시와 수용을 통해 보다 효율적인 결과를 낸다고 생각할 수 있습니다.

9
Pros
연산이 매우 빠릅니다.
함수의 원형을 통해 알 수 있듯, 연산은 비교연산 1회를 통해 함숫값을 구할 수 있습니다. 수렴속도 자체는 위의 두 함수보다 6배 이상 빠릅니다.
비선형 입니다.
모양 자체는 선형같지만, 이 함수는 비선형 함수입니다. 도함수를 가지며, backpropagtion을 허용합니다. 또한 위에서 언급한 바와 같이 정보를 효율적으로 받습니다.

Cons
Dying ReLU
입력값이 0또는 음수일때, gradient값은 0이 됩니다. 이 경우 학습을 하지 못합니다. 데이터의 희소성은 ReLU를 효과적으로 만들어줬고, 이것이 ReLU의 단점이기도 합니다.

이 문제를 해결하기 위해 다양한 유사함수가 만들어집니다. 유사함수는 아래에 소개되어 있습니다.

3.4 Leaky ReLU

Leaky의 의미는 새는, 구멍이 난 입니다. ReLU에서 Dying ReLU 문제를 해결하기 위해 만든 함수입니다. 음수부에 매우 작은 상수를 곱한 ReLU입니다. 범위가 작아 그래프는 거의 유사하게 그려졌습니다.

10
Pros
Dying ReLU문제를 방지합니다.
연산이 (여전히) 빠릅니다.
ReLU보다 균형적인 값을 반환하고, 이로 인해 학습이 조금 더 빨라집니다.

Cons
ReLU보다 항상 나은 성능을 내는 것은 아니며, 하나의 대안책으로 추천합니다.

3.5 ELU

ELU 는 Exponential Linear Unit을 의미합니다. 음수일 때 exp를 활용하여 표현합니다.

11
Pros
ReLU의 모든 장점을 포함합니다.
Dying ReLU 문제를 해결했습니다.

Cons
exp 함수를 사용하여 연산 비용이 추가적으로 발생합니다.
큰 음수값에 대해 쉽게 포화됩니다.

3.6 softmax

MNIST 등의 기본적인 다중 분류 문제를 해결하신 분들에게는 익숙한 함수입니다.

softmax함수는 입력받은 값을 0에서 1사이의 값으로 모두 정규화하며, 출력 값이 여러개입니다. 출력 값의 총합은 항상 1이 되는 특징을 가집니다.

Pros
다중 클래스 문제에 적용 가능합니다.
정규화 기능을 가집니다.

Cons
지수함수를 사용하여 오버플로 발생이 가능합니다. (분모분자에 C를 곱해 이를 방지)

3.7 Maxout

softmax와 마찬가지로 출력이 여러개로 이루어진 활성화 함수입니다. 효과가 매우 좋은 활성화 함수라고 합니다.

이 함수에 대한 소개 글 중에 매우 좋은 자료가 있어 링크를 올립니다.

[라온피플 : Machine Learning Academy_Part VI. CNN 핵심 요소 기술] 4.Maxout

Pros
ReLU의 장점을 가집니다.
성능이 매우 좋습니다.
Dropout과 함께 사용하기 좋은 활성화 함수입니다.

Cons
계산량이 많고 복잡합니다.

그 외 Swish, softplus, softsign, Thresholded ReLU, SoftExponential 등 다양한 활성화 함수가 존재하며, 어떤 함수가 제일 좋다고는 할 수 없지만, 자주 사용하는 활성화 함수는 이미 일부 정해져있습니다. 하지만 모든 문제에 최적화된 함수는 없다 는 것이 포인트입니다.

어떤 문제에 있어서는 새로운 활성화 함수가 유용한 케이스가 존재할 것이고, 간단한 아이디어만으로 성능을 향상 시킬 수 있다고 생각합니다. 그런만큼 딥러닝에서는 직관을 키우는 것이 매우 중요하다고 생각합니다.

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.