본문 바로가기

Model/인공신경망

Activation Function (활성화 함수)

반응형

Activation Function이란, 신경망의 출력값을 비선형적으로 변형시키는 역할을 합니다. 신경망의 출력이 선형(Linear)이라면 여러 층으로 쌓은 신경망을 단층 신경망으로 줄일 수 있습니다. 신경망 하나를 행렬로 볼 수 있는데, 여러 개의 행렬을 곱하면 하나의 행렬로 나타낼 수 있기 때문입니다.

Activation Function이 적용된 수식은 아래와 같습니다.. input값 x와 weight W를 곱하고 bias b를 더한뒤 씌워줍니다.

$\sigma(Wx +b) $

 

활성화 함수로 선형 함수를 사용하면 안 되는 이유

왜 선형 함수를 활성화 함수로 사용하면 안되는 걸까요? 이유는 다음과 같습니다.

우선, 여러 층으로 된 모델을 하나의 층만으로도 나타낼 수 있기 때문입니다. Activation Function이 선형 함수이면 레이어를 여러 층 쌓은 것을 행렬의 곱으로 나타낼 수 있습니다. 행렬을 곱한 값은 하나의 행렬로 나타낼 수 있습니다. 그러므로 레이어가 여러 층 쌓여 있더라도 하나의 레이어로 나타낼 수 있는 것입니다.

예를 들어 $h(x) = cx$를 활성화 함수로 3 layer network를 만들면 $y(x) = ccc*x = c^3(x)$ 가 되므로 또 하나의 $y(x) = ax$ 꼴이 되어버립니다.

그 다음은 vanishing gradient 문제입니다. backpropagation(틀린정도를 미분한 것을 전달하는 것)에서. 레이어가 깊을 수록 업데이트가 사라지면서 underfitting 발생하게 됩니다.

 

자주 쓰이는 활성화 함수

일반적으로 사용하는 활성화 함수에 대해 알아보겠습니다. 각 활성화 함수가 어떻게 생겼고, 어떤 특징을 가졌는지 이해할 필요가 있습니다. 사용 용도에 따라 서로 다른 활성화 함수를 사용하기도 합니다.

 

계단 함수

인공신경망의 일반적인 활성화 함수입니다. 인공신경망에서 입력 각각을 각각의 weight에 곱한 뒤, bias를 더한 값이 0 이하이면 0, 0 초과이면 1을 출력합니다.

  1. 입력 각각을 각각의 weight에 곱한 뒤 bias를 더합니다.
  2. 1단계의 값이 0 이하이면 0, 0 초과이면 1을 출력합니다. (활성화 함수 적용 단계)

출력되는 값은 Perceptron과 동일합니다. 값은 항상 0 아니면 1을 가집니다.

 

Sigmoid

0에서 1 사이의 값을 갖는 함수입니다. 0 근처에선 기울기가 크나, 0에서 멀어질수록 기울기가 작아집니다. 따라서 모델에 Layer가 많은 경우 이 활성화 함수를 사용하면 학습이 잘 되지 않습니다.

그럼에도 불구하고 비선형 함수로서 잘 쓰였던 이유는 2가지가 있습니다. 우선 미분이 편리합니다. 자기 자신으로 미분되기 때문입니다. 그리고 확률 값을 반환하기 때문입니다.

 

ReLU

0 이하는 0, 0 초과는 입력값을 그대로 내놓는 함수입니다. 비선형 함수입니다. 입력값이 0 이하면 모든 출력이 0이 되는 단점이 있습니다. numpy로는 np.maximum(0, x)으로 구현할 수 있습니다. 여기서 x는 배열이며, 배열 내의 값이 0 이상이면 해당 값을, 0 미만이면 0으로 채우는 함수입니다.

 

Softmax

각 입력값을 정규화해서 최대가 1인 확률값을 만드는 활성화 함수입니다. 

분류(Classification)를 한다면 출력 Layer를 Softmax로 하면 됩니다. 단, 숫자가 매우 크면 overflow가 발생할 수 있습니다. 로그 법칙에 의하여 softmax를 구할때 입력값, 입력값의 합 각각에 같은 수를 더하거나 빼어도 값은 동일합니다. 보통은 입력값의 최댓값을 뺀다.

 

Leaky ReLU

0 이상이면 입력값을 그대로, 0 보다 작으면 매우 작은 값(예: 0.01 등)을 곱해서 출력하는 함수입니다.

ReLU에서 발생하는 dying ReLU를 보완하기 위한 함수이다. dying ReLU란, ReLU에서 0 이하의 값이 전부 0으로 고정되어 출력되는 현상으로, 0 이하일 때의 정보를 잃어버린다고 볼 수 있습니다.

Leaky ReLU 뿐만 아니라, PArametric ReLU나 ELU 모두, dying ReLU를 보완하기 위한 활성화 함수입니다.

 

Parametric ReLU

0 이상이면 입력값을 그대로, 0 보다 작으면 ax를 출력합니다.

 

ELU

0 이상이면 입력값을 그대로, 0 보다 작으면 a(e^x-1)를 출력한다.

 

Activation Function 선택하는 팁

ReLU

  • 무난한 선택. 특히 계층이 깊을 때 선택합니다.
  • 비선형 함수이기 때문에 자주 쓰입니다.

Sigmoid

  • 출력값이 확률값인 경우: sigmoid 함수의 범위가 0과 1 사이에 있기 때문입니다.
  • 이진 분류를 사용할 때 (0/1으로 분류)

Softmax

  • Classification 문제인 경우 선택합니다. softmax 함수의 출력값의 합이 1이기 때문입니다.

 

반응형