머신러닝/딥러닝

활성화 함수(Activation Function)

yc7764 2022. 12. 8. 15:26

활성화 함수란?

  • 은닉층과 출력층의 뉴런에서 출력값을 결정하는 함수
  • 신경망의 목적, 층(Layer)의 역할에 따라 선택적으로 적용
  • 극성에 따른 분류
    • 단극성 활성화 함수 : 출력값이 양수만 가능한 함수
    • 양극성 활성화 함수 : 출력값이 음수와 양수 모두 가능한 함수
  • 선형 함수가 아닌 비선형 함수를 활성화 함수로 사용해야 함

비선형 함수

  • 선형 함수란 출력이 입력의 상수배만큼 변하는 함수, 즉 식을 그래프로 시각화했을 때 직선으로 표현
  • 비선형 함수란 직선 1개로 표현할 수 없는 함수

활성화 함수를 사용하지 않은 경우

  • 왼쪽 그림의 신경망에서 x1 * w1 + x2 * w2 + bias를 출력값으로 가짐
  • 복잡한 문제를 해결하기 위해 Layer를 추가해 x1 * (w11 + w21) + x2(w12 + w22) + (bias1 + bias2)를 출력값으로 가짐
  • 괄호 안에 가중치(w11+w21, w12+w22)와 bias(bias1+bias2)값을 상수로 다시 정의를 하게되면 x1 * W1 + x2 * W2 + B의 형태를 가짐
  • 아무리 Layer를 많이 쌓아도 활성화 함수를 사용하지 않으면 선형 회귀식이 되며 직선으로만 표현됨
  • 활성화 함수를 선형 함수로 이용할 경우에도 비슷한 양상을 보임
    • 활성화 함수가 f(x) = wx일 경우, 은닉층을 두개 추가한다면 출력층을 포함해 출력값은 y(x) = f(f(f(x)))
    • 위의 식을 표현하면 w * w * w * x이며, w의 세제곱 값을 k라고 정의하면 y(x) = k*x로 표현 가능
    • 선형 함수로 은닉층을 여러번 추가하더라도 1회 추가한 것과 차이가 없음
  • 선형 함수를 사용한 층을 선형층(Linear Layer) 또는 투사층(Projection Layer)라고 하며, 활성화 함수를 사용하는 은닉층을 비선형층(Nonlinear Layer)라고 함
  • 종종 선형층을 비선형 층과 함께 인공 신경망에 일부 추가하는 경우도 존재하며, 학습 가능한 가중치가 새로 생기게 됨
  • 하지만 일반적으로 대부분의 경우에는 활성화 함수로 비선형 함수를 사용해야 함

활성화 함수의 종류

1. 계단 함수

  • 활성화 함수 중에서 가장 간단한 예로 임계치를 기준으로 가중합의 활성화 여부가 결정되며, 0 또는 1의 이산적인 값을 출력
  • x=0인 구간에서 기울기가 무한대가 되기 때문에 미분이 불가능하며 가중치를 조정할 때 문제가 발생
  • 따라서 퍼센트론의 활성화 함수로는 사용이 가능하나 다른 알고리즘에서 활성화 함수로 사용하기에는 부적절

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

  • 시그모이드는 S자 형태라는 의미로 시그모이드 함수는 S자형 곡선의 함수를 의미
  • 정의역은 실수 전체이며, 유한한 구간(a, b) 사이의 한정된 값을 반환한다(주로 0과 1 사이의 구간)
  • 즉, 실수 전체가 입력값으로 들어올 수 있고, 0과 1사이의 값을 출력값으로 가짐
  • 시그모이드 함수에서 정의역의 절댓값이 커질수록 미분값은 0으로 수렴
  • 기울기 소실(Vanishing Gradient) 문제
    • 학습과정에서 가중치 조정을 위해 미분값을 사용하는데 그래프에서 주황색 부분은 0에 가까운 미분값이 사용됨
    • 0에 가까운 미분값때문에 입력층과 가까운 층들에는 기울기(미분값)이 전달되지 않게 되어 학습 성능이 떨어짐
    • 즉, 은닉층이 깊은 신경망에서 기울기 소실 문제로 인해 출력층과 가까운 은닉층에서는 기울기가 잘 전파되지만, 앞단으로 갈수록 기울기가 제대로 전파되지 않음
    • 이러한 현상을 기울기 소실(Vanishing Gradient) 문제라고 함
  • 기울기 소실 문제로 인해 은닉층에서 시그모이드 함수의 사용은 지양되며 주로 이진 분류를 위해 출력층에서 사용

3. 하이퍼볼릭탄젠트 함수(Hyperbolic Tangent Function)

  • 실수 전체인 입력값을 -1과 1 사이의 값으로 변환
  • 시그모이드 함수와 마찬가지로 -1과 1에 가까운 출력값을 출력할 때 기울기 소실 문제가 발생
  • 시그모이드 함수와 달리 0을 중심으로 하고있으며 미분값의 최대값이 1로 시그모이드 함수 0.25인 것에 비해 큼
  • 미분했을 때 시그모이드 함수보다는 전반적으로 큰 값이 나와 비교적 기울기 소실 증상이 적어 은닉층에서 시그모이드 함수보다 하이퍼볼릭탄젠트 함수가 선호됨

4. 렐루 함수(Rectified Linear Unit Function, ReLU)

  • 음수를 입력하면 0을 출력하고, 양수를 입력하면 입력값을 그대로 반환하며 출력값이 특정 양수값에 수렴하지 않음
  • 0 이상의 입력값일 경우 미분값이 항상 1이므로 기울기 소실 문제가 해결
  • 시그모이드 함수와 하이퍼볼릭탄젠트 함수와 같이 어떤 연산이 필요한 것이 아니라 단순 임계값이므로 구현이 간단하고 연산 속도가 매우 빠름
  • 입력값이 음수면 기울기(미분값)가 0이 되므로 가중합이 음수인 뉴런은 다시 활성화되지 않는 죽은 렐루(Dying ReLU) 문제가 발생
  • Dying ReLU 문제를 해결하기 위해 ReLU 함수를 변형한 함수들이 고안됨

5. 리키 렐루(Leaky ReLU)

  • Dying ReLU 문제를 해결하기 위한 ReLU의 변형함수 중의 하나이며, 수식은  f(x)=max(ax,x)
  • Leaky ReLU 함수는 입력값이 음수일 경우에 0이 아니라 ax 값을 반환
  • a는 하이퍼 파라미터로 입력값이 음수일 경우의 기울기를 나타내며 일반적으로 0.01의 값을 가짐
  • ReLU 함수와 달리 입력값이 음수라도 기울기가 0이 되지않아 Dying ReLU 문제가 발생하지 않음

6. 소프트맥스 함수(Softmax Function)

  • 출력값이 0 ~ 1 사이의 값으로 정규화 되며 모든 출력값의 총합이 항상 1이 됨
  • 시그모이드 함수처럼 주로 출력층에서 사용되는 함수
  • 여러 개의 클래스에 대해 예측한 결과를 정규화하여 확률값처럼 표현
  • 이진 분류에 사용되는 시그모이드 함수와 달리 세 가지 이상의 선택지 중에 하나를 고르는 다중 분류 문제에 사용
  •  

참고사이트

https://wikidocs.net/24987

 

07-02 인공 신경망(Artificial Neural Network) 훑어보기

인공 신경망에 대한 기본적인 내용들을 정리합니다. ## 1. 피드 포워드 신경망(Feed-Forward Neural Network, FFNN) ![](https://wikid…

wikidocs.net