akaSonny

활성화 함수 (Activation Function) 정리 본문

Study (Programming)/Python

활성화 함수 (Activation Function) 정리

Jihyeoning 2023. 1. 5. 13:48

활성화 함수(Activation Function)란?

 

  • 딥러닝 모델에서, 노드의 정보들이 이전 레이어에서 다음 레이어로 전달될 때 비선형 함수를 거쳐 전달되는데, 이 때 사용하는 비선형 함수활성화 함수라고 한다.
  • 활성화 함수를 통해 다음 레이어에 정보를 얼마만큼 전달해 줄 것인지 결정
  • 선형 함수를 아무리 연결해도 결국 선형함수이기 때문에* 비선형 함수를 사용한다.
  • * f(x)와 g(x)가 모두 선형함수일 때, f(g(x))는 결국 어떤 또다른 선형함수 h(x)와 같다.

 

활성화 함수 종류

1. Sigmoid 함수

Sigmoid  함수

$$S(x) = \frac{1}{1+e^{-x}}$$

  • 그래프에서 보는 것과 같이 0과 1사이의 값을 가지며, 이진 분류(Binary Classification) 문제에서 마지막 출력층의 활성화 함수로 사용된다.
  • 계단 함수와는 다르게, 연속적인 값을 가지므로 모든 곳에서 기울기 계산이 가능하다.
  • 하지만, 그래프에서 양끝으로 갈수록 기울기가 0에 가까워지므로, 이 부분이 곱해지게 된다면 기울기가 잘 전달되지 않는 기울기 소실  (Vanishing Gradient) 문제가 발생할 수 있다. 
  • 또한, 학습 속도가 저하된다는 단점이 있다. (sigmoid 값이 항상 양수이기 때문에 미분값의 부호가 모두 같고, 이는 학습을 지그재그 형태로 만드는 원인이 된다고 한다.)
  • 따라서, sigmoid 함수는 학습 중간에 사용하는 것은 지양되고 출력층이나 출력층에 가까운 은닉층에 사용하는 것이 좋다!

 

2. Tanh (Hyperbolic Tangent) 함수

출처: reniew's blog

$$Tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$$

  • Sigmoid 함수를 변형해서 만든 함수
  • Sigmoid 함수와 달리 중심점을 0으로 옮겨 학습속도 저하 문제를 해결
  • 하지만 여전히 양끝에서 기울기 소실 문제가 남아있다는 단점이 있다.

3. ReLU (Rectified Linear Unit) 함수

  • Simgoid 함수에서 발생하는 기울기 소실 문제를 해결하기 위한 함수이다.
  • 학습이 빠르고, 구현이 간단하고, 연산 비용이 적다는 특징을 갖고 있다.
  • 하지만 x<0인 값들에 대해서는 기울기가 0이기 때문에 정보들이 죽을 수 있다.
  • 위의 단점을 보완하기 위해 변형된 ReLU 함수들 (Leaky ReLU, PReLU 등)이 많이 나왔다. (따로 포스팅 or 추가 예정)

 

4. Softmax 함수

  • 3개 이상의 클래스를 분류하는 다중 클래스 분류 (Multi-class classification) 문제에 사용된다.
  • 만약 k개의 클래스를 분류한다면, softmax 함수의 출력값은 크기가 k인 벡터 형식이다.
  • 각각의 출력값을 '확률'이라고 해석할 수 있으며, 모든 출력값의 합은 1이 된다.