이번에는 딥러닝의 기초 중 하나인 활성화 함수에 대해서 알아보도록 하겠습니다.
1. 활성화 함수(Activation Function)란?
- 활성화 함수(Activation Function)란, 인공 신경망에서 입력 값의 가중치 합을 출력 신호로 변환하는 함수를 말합니다.
- 즉, 입력값들(X)이 신경망에 들어오게되면 먼저 가중치(W)가 곱해지고 편향(b)이 더해져 선형 결합(W*X + b)이 이루어지고 이 선형 결합 된 값이 특정 함수를 거쳐 출력값으로 나오게 되는데, 이때 사용되는 특정 함수를 활성화 함수(Activation Function)라고 합니다.
- 이 함수가 활성화 함수로 불리는 이유는, 입력 신호에 대한 가중치 합은 결국 선형 결합인데 이 결과물을 비선형으로 변환하여 뉴런을 화성화 시키기 때문입니다.
- 활성화 함수를 사용하지 않게 된다면, 즉 선형 결합만을 한다면 결국 선의 기울기와 절편만을 수정하는 다른 직선을 만들어내기 때문에 함수의 예측 및 분류 능력은 떨어질 수 밖에 없습니다.
* 선형 모델은 직선으로 표현할 수 있는 함수만 학습할 수 있습니다. 따라서, 활성화 함수를 사용하지 않으면 신경망은 직선으로 표현할 수 있는 함수만 학습할 수 있게 됩니다.
2. 활성화 함수의 조건, 종류 및 장/단점
- 활성화 함수가 되기 위한 조건에는 다음과 같은 조건들이 필요합니다.
1) 비선형성 : 다양한 비선형 문제들을 예측하기 위함
2) 미분 가능 : 역전파 알고리즘을 사용하기 위해서는 미분이 가능해야 경사하강법을 적용할 수 있음
- 활성화 함수에는 다양한 종류가 존재하지만 그 중에서도 가장 많이 사용되는 대표적인 함수는 다음과 같습니다.
1) 시그모이드(Sigmoid) 함수 : 입력 신호의 값을 0과 1사이의 값으로 변환하는 함수로, 이진 분류 문제에서 최종 출력값을 도출할때 많이 사용됩니다.
- 장점
* 입력 신호의 값을 0과 1 사이의 값으로 변환하기 때문에, 분류문제에 적합
* 미분하기 쉽기 때문에, 역전파 알고리즘을 사용하여 신경망을 학습한다.
- 단점
* 입력 신호가 클 경우, 출력 신호의 변화가 작아짐
* 미분값이 0과 1사이이기 때문에 epochs가 커질수록 0보다 작은 값이 기울기에 곱해져 소실되는 Gradient Vanishing 문제가 발생
2) Leaky ReLU : 0보다 큰 입력값은 그대로 출력하고, 0보다 작은 입력값에는 0.1을 곱해서 출력하는 함수
- 장점
* ReLU 함수의 단점인 dead neuron 문제를 해결할 수 있음(ReLU의 경우 0보다 작은 값이 들어오는 경우 0으로 출력해버려 해당 뉴런이 결과에 영향을 미치지 못하는 dead neuron이 되버림)
* ReLU 함수와 유사한 성능을 가지면서도 표현력이 향상됨
3) tanh : 입력 신호의 값을 -1과 1사이의 값으로 변환하는 함수
- 장점
* 입력 신호의 값을 -1과 1사이의 값으로 변환하기에 분류 문제에 적합
* sigmoid 함수와 유사한 성능을 가지면서도 표현력을 향상 시킬 수 있음
- 단점
* sigmoid와 유사한 단점
4) maxout : 입력 시호의 두 개의 값 중 더 큰 값을 출력하는 함수
- 장점
* 입력 신호의 표현력을 향상
* 학습이 쉬움
- 단점
* 출력 신호의 분산이 작아짐
5) ReLU : 입력 신호가 0보다 크면 입력 신호의 값을 그대로 출력하고, 0보다 작으면 0을 출력하는 함수
- 장점
* 입력 신호의 변화에 민감하기 때문에 표현력 향상가능
* 학습이 쉬움
- 단점
* Dead Neuron 문제 발생
6) ELU : ReLU와 유사하나 입력 신호가 0보다 작을 경우에도 작은 양의 값을 출력
- 장점
* ReLU의 Dead Neuron 문제 해결가능
* ReLU보다 높은 비선형성으로 다양한 표현 가능
- 단점
* ReLU보다 학습이 어려움 (ELU가 가지고 있는 Alpha는 Back propagation 간 업데이트)
'딥러닝 with Python' 카테고리의 다른 글
[딥러닝 with 파이썬] Knowledge Distillation이란? 딥러닝 모델의 지식 증류기법이란? (2/2) (MNIST 데이터 사용) (1) | 2023.10.12 |
---|---|
[딥러닝 with 파이썬] Knowledge Distillation이란? 딥러닝 모델의 지식 증류기법이란? (1/2) (0) | 2023.10.11 |
[딥러닝 with Python] SRGAN이란? / Super Resolution GAN (2/2) / 파이썬으로 코딩 (1) | 2023.10.06 |
[딥러닝 with Python] SRGAN이란? / Super Resolution GAN (1/2) / SRGAN의 개념 (1) | 2023.10.05 |
[딥러닝 with 파이썬] 픽셀셔플 / Pixel Shuffle (0) | 2023.10.04 |
댓글