AI Tech

활성 함수 (Activation Functions)

cpnubplzhelp 2024. 8. 13. 15:17

활성 함수 (Activation Function)은 비선형성을 학습하고 표현할 수 있도록 만들어주는 비선형 함수이다.

 

만약 활성화 함수 없이 선형 함수만 사용한다면, 신경망은 단순히 입력값의 선형 조합만을 학습하게 되어 복잡한 문제를 해결하는 데 한계가 있다.

 

1. 시그모이드 함수 (Sigmoid Function)

 

범위: (0, 1)

 

특징: 

  • 입력 값을 0과 1 사이의 값으로 압축하며,  이진 분류의 출력층에서 유용하게 사용된다..
  • 기울기 소실 문제가 발생할 수 있다. 큰 입력 값에 대해 기울기가 매우 작아져 학습이 느려질 수 있다.
  • 출력 값들이 zero-centered 하지 않다.

2. 하이퍼볼릭 탄젠트 함수 (Tanh Function)

범위: (-1, 1)

 

특징: 

  • 시그모이드 함수와 유사하지만 출력 값의 범위가 더 넓어 시그모이드 함수보다 학습이 빠를 수 있습니다.
  • 기울기 소실 문제가 발생할 수 있다. 큰 입력 값에 대해 기울기가 매우 작아져 학습이 느려질 수 있다.
  • 출력 값들이 zero-centered 하다.

3. ReLU (Rectified Linear Unit)

 

범위: [0, ∞)

특징:

  • 기울기 소실 문제완화해줍니다.
  • 계산이 효율적이며, 학습 속도를 빠르게 한다.
  • 죽은 ReLU 문제(dying ReLU): 뉴런이 0만 출력하게 되어 학습이 멈추는 현상이 발생할 수 있다.

4. Leaky ReLU

 

이때 α에는 몹시 작은 값이 들어간다. ex) α = 0.01

범위: (-∞, ∞)

특징:

  • ReLU의 변형으로, 입력 값이 0 이하일 때도 작은 기울기를 가지게 하여 죽은 뉴런 문제완화한다.
  • 음수 입력 값에 대해 작은 기울기를 제공해, 역전파 과정에서 기울기가 사라지지 않도록 한다.

5. Swish (SiLu)

 

특징:

  • 구글이 제안한 새로운 활성화 함수로, σ(x)는 시그모이드 함수이다.
  • 일부 심층 신경망에서 ReLU보다 더 좋은 성능을 보인다.
  • Swish 함수는 음수 입력에 대해 완전히 없어지지 않고, 여전히 일부 기울기를 유지하여 죽은 뉴런 문제 완화한다.

 

그 외에도 수많은 활성 함수가 존재한다.

https://pytorch.org/docs/stable/nn.html#non-linear-activations-weighted-sum-nonlinearity

 

torch.nn — PyTorch 2.4 documentation

Shortcuts

pytorch.org

pytorch가 제공하는 활성함수.