머신러닝/딥러닝
활성화 함수(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이 됨
- 시그모이드 함수처럼 주로 출력층에서 사용되는 함수
- 여러 개의 클래스에 대해 예측한 결과를 정규화하여 확률값처럼 표현
- 이진 분류에 사용되는 시그모이드 함수와 달리 세 가지 이상의 선택지 중에 하나를 고르는 다중 분류 문제에 사용
참고사이트
07-02 인공 신경망(Artificial Neural Network) 훑어보기
인공 신경망에 대한 기본적인 내용들을 정리합니다. ## 1. 피드 포워드 신경망(Feed-Forward Neural Network, FFNN) ![](https://wikid…
wikidocs.net