활성화 함수의 이해
퍼셉트론
딥러닝 레이어의 노드 1개
우리가 알고 있는 딥러닝 모델은 사실 퍼셉트론들이 다양한 구조로 쌓인 것
각 퍼셉트론들의 입력값과 가중치가 곱해진 값들의 합이 activation function을 거쳐 출력됨
활성화 함수란?
노드에 입력으로 들어오는 값이 어떤 '임계치(threshold)'를 넘어가면 활성화(activated) 되고, 넘어가지 않으면 비활성화(deactivated) 되도록 하는 함수이다.
딥러닝 모델의 representation capacity 또는 expressivity를 향상시켜주기 위해 사용한다.
활성화 함수는 표현에 따라 분류할 수 있다.
- 선형 활성화 함수(Linear activation function)
- 비선형 활성화 함수(Non-linear activation function)
- 딥러닝에서 일반적으로 사용하는 함수
선형변환(linear transformation)
'선형'이라는 규칙을 지키며 공간상의 벡터를 공간상의 벡터로 바꿔주는 역할
V, W가 어떤 벡터 공간이고, 둘 모두 같은 field (여기서는 실수 집합)안에 있다고 가정했을 대, 함수 T: V → W가 다음 두 조건을 만족하면 함수 T는 선형변환(Linear Transformation)이다.
- 가산성(addictivity): V에 속하는 x,y에 대해 T(x+y) = T(x) + T(y)
- 동차성(homogeneity): V에 속하는 모든 x, 실수인 c에 대해 T(cx) = cT(x)
"함수 T는 선형변환(Linear Transformation)이다"라는 말을 간단히 '는 선형(linear) 이다.' 라고도 함.
T가 선형일때, 다음과 같은 성질을 갖는다.
일반적으로 주어진 함수가 선형인지 확인하려고 할 때는 (2) 활용
(1) T(0) = 0(2) T(cx + y) = cT(x) + T(y)
비선형 함수(Non linear)
- 선형이 아닌 함수
- 딥러닝 모델의 표현력을 향상시키기 위해서 비선형 함수를 사용
- 선형 활성화 함수를 사용한다면, 노드의 개수를 아무리 많이 붙여도 결국 하나의 노드를 사용하는 것과 차이가 없다.
- 즉, 선형 활성화 함수를 사용한다면, 모델의 표현력이 떨어지게 되기에 활성화 함수로는 비선형 함수를 사용한다.
활성화 함수의 종류
크게 이진 계단 함수, 선형 활성화 함수, 비선형 활성화 함수로 분류된다.
이진 계단 함수(Binary step function)
- 함수로 들어온 입력이 특정 임계점을 넘으면 (혹은 True)를 출력하고 그렇지 않을 때는 0을 출력한다.
- 간단한 이진 분류 문제에서 꽤 유용하게 쓰인다.
- 단층 퍼셉트론이라는 초기 신경망에서 자주 사용되었다.
- AND gate 또는 OR gate와 같이 선형적으로 구분 가능한(linearly separable) 문제 해결 가능
이진 계단 함수의 한계점
- 0에서는 미분이 안되고, 나머지 부분에서는 미분값이 전부 0이 나와서 역전파 알고리즘(backpropagation algorithm)을 사용하지 못한다.
- XOR gate를 구현할 수 없다.
- 다중 출력을 할 수 없어서 다중 클래스 분류 문제를 해결할 수 없다.
선형 활성화 함수(linear activation function)
- '선형'인 활성화 함수
- 이진 계단 함수를 사용한 모델과 다르게 다중 출력이 가능
- 미분이 가능해서 역전파 알고리즘 또한 사용 가능
- 선형 활성화 함수의 치역은 실수 전체이다.
- 그러나 여전히 XOR gate와 같이 비선형적 특성을 지닌 데이터를 예측하지 못한다.
- 아무리 층을 쌓아도 선형 활성화 함수를 사용하는 것은 하나의 노드를 사용하는 것과 같기 때문이다.
비선형 활성화 함수(non-linear activation function)
- 앞선 활성화 함수들의 문제점을 해결한 함수.
- 비선형 활성화 함수를 사용한 모델은 역전파 알고리즘을 사용할 수 있으며, 다중 출력도 가능하고 비선형적 특성을 지닌 데이터도 예측할 수 있다.
대표적인 비선형 활성화 함수로는 시그모이드, softmax 함수가 있다.
시그모이드 함수
치역이 (0, 1) 사이로 확률을 예측해야 하는 모델에서 자주 사용
시그모이드 함수의 단점
- 0 또는 1에서 포화(saturate): 입력값이 아무리 커져도 함수의 출력은 1에 더 가까워져 갈 뿐1이상으로 높아지지 않고, 입력값이 아무리 작아져도 함수의 출력은0에 더 가까워져 갈 뿐0이하로 떨어지지 않는다. 이로 인해 vanishing gradient가 발생한다.
- 함수의 출력이 0이 중심(zero-centered)이 아니다. 이로 인해 훈련 시간이 오래 걸린다.
softmax
- 이진 분류에 주로 사용되는 sigmoid와 다르게 class 수에 제한 없이 각 class의 확률을 구할 때 사용
- , 확률의 성질인 모든 경우의 수(=모든 class)의 확률을 더하면 1 이 되는 성질을 갖고 있다.
- 모델의 마지막 layer에서 활용된다.
cf. 수치 미분과 해석 미분
미분을 계산하는 방법에서 차이가 있다.
수치 미분(numerical differentiation)
- 미분을 근사적으로 계산하는 방법
- 미분 정의에 따라 작은 변화량(h)을 이용하여 함수의 기울기를 근사적으로 계산
- ℎ의 값을 최대한 0에 가까운 값으로 잡아서 실제 미분값에 근사하게 만들어주는 것
- h를 무한히 작게 설정하면 수치미분은 근사적으로 실제 미분 값을 구할 수 있지만, 반올림 오차나 수치적 불안정성 등의 문제가 발생할 수 있다.
해석 미분
- 미분을 해석적으로 계산하는 방법으로, 함수의 미분 가능한 형태와 미분 규칙 등을 이용하여 미분 값을 직접 계산
- 수학적인 미분 정의와 미분 공식에 따라 정확한 결과를 얻을 수 있다.
- 딥러닝에서는 주로 해석 미분으로 미분값을 계산한다.
하이퍼볼릭 탄젠트(tanh, Hyperbolic tangent)
쌍곡선 함수 중 하나
(-1, 1)의 범위를 가짐
시그모이드 함수와 다르게 중심이 0이어서 시그모이드보다 빠르게 훈련된다.
하이퍼볼릭 탄젠트 함수는 시그모이드 함수를 이용해서도 표현할 수 있다.
하이퍼볼릭 탄젠트의 미분값은 다음과 같다.
하이퍼볼릭 탄젠트함수는 -1 또는 1에서 포화된다는 단점이 있다. 즉, -1, 1에 가까워질수록 vanishing gradient 문제가 발생할 수 있다.
ReLU
최근에 가장 많이 사용되고 있는 활성화 함수이다.
- ReLU함수의 치역: [0,∞]
- 하이퍼볼릭 탄젠트를 사용한 모델보다 몇 배 더 빠르다.
- 위 그래프의 실선 곡선이 relu, 점선이 tanh를 사용한 training 곡선이다.
- relu를 사용한 모델이 약 7배정도 빠른 것을 확인할 수 있다.
- relu는 sigmoid, tanh처럼 비용이 높은 exp 함수를 사용하지 않기 때문이다.
- relu는 0을 제외한 구간에서 미분이 가능하다.
곡선이 포함되어 있지 않음에도 비선형 데이터의 특징을 잘 잡아낸다.
관련 논문 링크: https://arxiv.org/abs/1807.03973
relu 함수의 단점
- 출력값이 0이 아니다.
- dying relu( 모델에서 ReLU를 사용한 노드가 비활성화되며 출력을 0
- 어떤 노드의 출력값이 max(o, sigma(wx + b)일때, 가중치 업데이트를 위해 구해야 하는 그래디언트는 다음과 같다.
으로만 하게 되는 것)
이때 w에 의해 값이 0 이하로 나올 경우, 그래디언트는 항상 0이 되어 가중치 업데이트가 일어나지 않는 dying relu 현상이 발생한다. 이러한 현상은 특히 learning rate를 크게 잡을 때 자주 발생한다.
이러한 relu 함수의 단점을 해결하고자 leaky relu, PReLU, ELU 등이 등장하였다.
'AI Theory > key concept of AI' 카테고리의 다른 글
선형 회귀와 로지스틱 회귀 (0) | 2023.07.05 |
---|---|
Regularization(정칙화) (0) | 2023.07.05 |
딥네트워크 (0) | 2023.07.03 |
데이터 전처리 기법들 (0) | 2023.06.28 |
사이킷런 머신러닝 (0) | 2023.06.28 |