본문 바로가기

Deeplearning

활성함수의 필요 및 종류

728x90
반응형

배경

데이터를 표현하는 표현형을 찾거나 또는 피쳐(feature)를 알기 위해서 변형함수(transformation)를 선택해야 하는데 아래 세 가지 방법이 주로 사용된다.

  1. 직접 함수를 디자인 : 머신러닝이 이에 해당하며 딥러닝 이전에는 일반적이었다.
  2. 포괄적 함수 선택 : 커널 함수가 대표적인데 데이터를 다른 차원으로 보내서 이상적인 모델의 확률 밀도를 계산한다.
  3. 딥러닝이 변형 함수 자체를 학습하게 함 : 이 경우 변형 함수는 비선형(non-linear)이어야 한다. 

그렇다면 왜 비선형으로 변환해야 할 필요가 있을까? 가볍게 이진 분류를 생각했을 때 선형으로 분류할 수 없는 경우가 있다. 아래 그림은 2차원에 표현된 X와 O의 클래스로 나눠진 데이터이다. 해당 데이터를 AND(x축과 y축의 값으로 and 연산)나 OR(x, y 축의 값으로 or 연산) 관계일 때 하나의 직선으로 클래스를 분류할 수 있지만 XOR( x, y축의 값이 같을 경우 0, 다를 경우 1) 관계일 경우 하나의 직선으로 O, X 클래스를 분류하는 것이 불가능하다. 

여기서 Vapnik-Chervonekis Dimension(VC-dimension)라고 하는 VC차원이 나온다. VC(H)는 H라는 분류기(정확히는 hypothesis set, 예를들어 y=mx+b)에 의해서 최대로 부술 수 있는 포인트의 수라고 하는데 쉽게 생각하면 분류기가 얼마나 복잡한 데이터를 표현할 수 있나라고 이해할 수 있을 것 같다. 
선형 분류기의 경우 VC차원은 (n+1)차원이다. 예시를 들어보자면

  • 3개 이상 일직선으로 겹치는 점이 3개인 경우 (1차원) : 1차원+1 = 2, 부술 수 있는 포인트 수는  2로써 부술 수 없는 경우가 생긴다.

  • 3개 이상 일직선으로 겹치지 않는 점이 3개인 경우 (2차원) : 2+1 = 3

  • 3개 이상 일직선으로 겹치지 않는 점이 4개인 경우 (2차원) : 2+1=3, VC 차원이 점의 개수보다 작으므로 쪼갤 수 없는 경우가 있다.

 


활성함수

데이터의 차원이 높아질 수록 선형함수로는 표현하지 못하는 경우가 많고, 신경망에서는 비선형성을 표현하기 위해 활성함수(Activation Function)를 사용한다. 아래와 같이 각 노드의 선형 연산의 결과에 대해 활성 함수를 취해줌으로써 다음 노드의 입력값은 비선형 연산으로 나온 결괏값을 받게 된다. 

 


비선형 활성함수의 종류

Tanh

$z = Wx+b, f(z)=tanh(z)$, -1에서 1로 결과값을 압축할 수 있다. 0이 중심이 되기 때문에 최종 예측값의 bias shift를 방지할 수 있다. 하지만 sigmoid함수의 문제라고 잘 알려진 saturation 문제 (레이어가 깊어질수록 변화도 없이 1에 가깝게 수렴하거나, 또는 발산하는 문제)를 가지고 있다.

 

ReLU (Rectified Linear Unit; 정류 선형 유닛)

$f(z) = max(0, z), where z=Wx+b$, 가장 많이 사용되는 활성함수이다. 쉽게 그래디언트 계산 시, 쉽게 미분 계산이 가능하고(결과가 0 또는 1) sparsity 성질, 즉 희박하게 활성화를 시킬 수 있다. 다시 말하면 값이 0인 부분이 많으므로 연산이 줄어든다. 
또한, 그래디언트가 사라지는 gradient vanishing 문제 발생 가능성이 낮다.

하지만 단점도 존재하는데, 값이 무한대가 나오면 이후 결과가 크게 튈수도 있다. (unbounded) 그리고 활성 함수의 결괏값이 0이 아니기 때문에 weight의 업데이트가 항상 같은 방향으로만 일어난다. 또한 레이어가 아주 깊거나 learning rate 등이 잘못 세팅되면 항상 죽어있는 문제가 발생한다. (Dyning ReLU)

이런 문제를 해결하기 위해 다음의 Generalize된 ReLU함수를 사용하기도 한다.

 

Leaky ReLU

$z=Wx+b, f(z) = max(0, z) if x\ge 0, f(z)=\alpha max(0, z) if z <0$, 0 이하인 값에 약간의 수를 가해준다. 퍼포먼스 적으로 조금 손해 볼 수는 있지만 saturation 문제나 dying ReLU를 조금 완화할 수 있다. 하지만 ReLU 대비해서 데이터가 적을 경우 오버피팅 가능성도 있다. 

 

ELU (Exponential Linear Unit)

$f(z) = z if z \ge 0, f(z) = \alpha(exp(x)-1) if z<0$, 좀 더 일반화된 방법으로 볼 수 있다. 음수 결괏값이 Leaky ReLU보다 자연스럽게 바뀌고 일반적으로 가장 효과가 좋다고 알려져 있다. 

728x90
반응형