본문 바로가기
공부/ML&DL

[머신러닝 공부] 딥러닝/Activation Function종류

by 로디네로 2021. 7. 11.
반응형

 

활성화 함수(Activation Function) 은 어디에서 쓸까?

딥러닝 네트워크를 쪼개보면 시작은 하나의 퍼셉트론 구조임을 알 수 있다.

 

여기서 출력 f를 바로 다음 레이어로 전달하지 않고 활성화함수를 통과시킨 후 전달한다.

 

왜 활성화 함수를 통과시키나?

https://www.facebook.com/groups/TensorFlowKR/permalink/900098033664589/

단층 신경망인 퍼셉트론은 XOR연산을 할 수 없었다. 이를 풀기 위해서는 출력을 비선형으로 분리해야 했다.

 

1. 직선 하나만으로는 여러 입력을 제대로 구분할 수 없기 때문에 히든레이어가 필요했다. (여러 직선 필요)

 

2. 비선형으로 된 활성화 함수로 신경망의 출력을 변환해야 한다. (단순히 중간층 연결한다고 비선형이 되지는 않음)

 

  • 출력을 활성화함수를 거치지 않고 그대로 출력해준다면 layer 가 아무리 깊어져도 하나의 linear 연산으로 나타낼 수 있게 되고 이는 즉 층을 많이 쌓는 의미가 줄어들게 되는 것인데 식으로 나타내면 다음과 같다.

   - y(x)=ax

   - y(x)=h(h(h(x)))

  • 1번이나 2번 둘 다 hidden layer 가 없는 네트워크로 표현할 수 있다.

 

따라서 활성화함수는 출력값을 비선형으로 만들기 위한 함수

 


 

 

활성화 함수의 종류

 

많은 종류의 함수가 존재하지만 가장 많이 쓰이고 의미있는 함수들만 정리해보려 한다.

 

1. Sigmoid (시그모이드)

https://ganghee-lee.tistory.com/32
https://saintbinary.tistory.com/8

output을 0~1 로 만들어주고 평균값은 0.5가 되게 된다. 특징으로는 input이 일정값 이상이거나 이하이면 gradient가 0에 수렴하게 되는 것이 있다.

 

단점 : 

Vanishing gradient - 여러 layer를 쌓았을 때 back propagation을 거치며 대부분의 노드에서 기울기가 0이 되어 결국 입력층 노드들의 기울기가 사라져 학습이 되지 않게 된다. 

 

사용 : 

기울기 소실에의 단점으로 인해 최근에는 layer 를 쌓을때 대부분 ReLU 함수를 사용한다. 하지만 binary classification 마지막 layer의 경우 출력 노드가 1개 이므로 0,1 값을 output 으로 받으므로 시그모이드 함수를 사용할 수 있다.

 


2. ReLU (Rectified Linear Unit)

 

https://ganghee-lee.tistory.com/32

 

https://joonable.tistory.com/2

앞서 말했듯 최근 hidden layer단에 가장 많이 사용되는 함수이다. 대부분 input 에 대해 기울기가 0으로 되지 않아 vanishing gradient 현상이 덜 발생하게 된다.

 

0 이하에서는 기울기가 0이지만 이 부분에 대해서는 대부분의 input값은 0보다 크기 때문에 실제로 기울기가 0이 되는 경우는 많지 않다.

 


3. Leaky ReLU

https://ganghee-lee.tistory.com/32

f(x) = max(0.01x, x)

 

ReLU에서 만약 Batch normalization을 사용한다면 input값의 중심은 0이 되고 0 이하로 normalized 된 input들은 기울기가 0이 되게 된다. -> vanishing gradient 로 이어질 수 있다.

 

따라서 기울기가 0이 되는 Dying ReLU를 해결하기 위해 나온 함수가 Leaky ReLU이다.

 

하지만 ReLU와 성능차이가 크지 않아 일반적으로 많이 쓰지는 않는다.

 


 

4. Tanh

https://ganghee-lee.tistory.com/32
https://bbangko.tistory.com/5

 

시그모이드 함수와 비슷한 함수의 모양이지만 평균이 0이라는 점이 다르다.

 

하지만 시그모이드와 마찬가지로 일정 값 이상이거나 이하일 때 기울기가 0이므로 Vanishing gradient 문제가 발생할 수 있다.

 

 


 

 

이 외에도 Hard Sigmoid, ELU, PReLU, Swish, Softsign, Softplus, ThresholdReLU 등의 활성화 함수도 존재한다.

 

각각의 특징이 존재하기 때문에 상황에 맞춰 사용하면 된다.

 

 

반응형

댓글