logistic function과 함께 sigmoid의 대표적인 함수가 바로 $\text{tanh}$임.
- 값이 $[-1,1]$의 range를 가지며, logistic에 비해 기울기가 보다 급격하기 때문에 좀 더 빠른 수렴속도를 보임.
- 하지만, sigmoid의 일종이기 때문에 gradient vanishing에 자유롭지 못함.
- logistic보단 그래도 양호.
- 양 끝단에 갈 경우, 거의 기울기가 0임
- RNN의 activation function으로 많이 이용된다.
- Exploding gradient가 쉽게 발생하는 RNN에서는 ReLU가 적합하지 않음.
- ReLU는 positive영역에서 기울기가 1로 계속해서 고정되면서, 결과값이 항상 0이상의 값으로 나오기 때문에 ,
지나치게 gradient가 커지는 exploding gradient에 자유롭지 못함
(ReLU는 Gradient Vanishing Problem에 강함). - 때문에 아직까지도 RNN에서는 intermediate layers의 activation function으로 사용됨
(단, RNN이 Transformer로 대체되고 있음. Transformer는 ReLU의 변형이 GeLU를 사용).
정의
Hyperbolic tangent의 정의는 다음과 같음.
$$\text{tanh}(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}=2\sigma(2x)-1$$
- $\sigma(x)=\frac{1}{1+e^{-x}}$ : logistic function.
Differentiation
hyperbolic tangent도 결국 $e^x$에 기반한 형태이기 때문에 derivative가 원래 형태를 기반으로 만들어짐.
logistic function $\sigma(x)$를 기반으로 $\text{tanh(x)}$의 derivative를 유도하면 다음과 같음.
$$\begin{aligned}\dfrac{d }{dx}\text{tanh}(x) &= \dfrac{d }{dx}(2\sigma(2x)-1) \\ &= 2 \dfrac{d\sigma(2x)}{dx} \\ &= 2 \sigma(2x) (1-\sigma(2x))\dfrac{d}{dx}(2x) \\ &= 4 \sigma(2x) (1-\sigma(2x)) \\ &= \dfrac{4}{(1+e^{-2x})}\left(1-\dfrac{1}{1+e^{-2x}}\right) \\ &= \dfrac{ 4(1+e^{-2x})-4}{(1+e^{-2x})^2} \\ &= \dfrac{4e^{-2x}}{(1+e^{-2x})^2}\\&=\dfrac{4}{(e^{x}+e^{-x})^2} \\ &= \dfrac{ (e^x+e^{-x})^2 - (e^x-e^{-x})^2}{(e^x+e^{-x})^2} \\ &= 1-\dfrac{(e^x-e^{-x})^2}{(e^x+e^{-x})^2} \\ &= 1-\text{tanh}^2(x)\\&=(1-\text{tanh}(x))(1+\text{tanh}(x))\end{aligned}$$
다음은 $\text{tanh}(x)$와 derivative를 같이 그린 그림임.
DL에서의 Activation Function
- sigmoid보다 훨씬 큰 derivative (최대값이 4배 큼)를 가지기 때문에 logistic에 비해 gradinet vanishing에 저항력이 보다 큼.
- 더욱이 mean이 0.5이며 양수만을 출력하는 logistic function은 bias shift (수의 분포가 0을 중심으로 양과 음이 균형을 이룬 것에서 0.5룰 중심으로 양수 영역으로 분포가 이동)를 가지기 때문에
logistic function을 activation으로 가지는 layer는 output의 variance가 커지는 문제점이 있으나
tanh의 output mean은 0이기 때문에 bais shift가 없음. - RNN등에서는 gradient exploding problem이 발생하는 경우가 많기 때문에 음(negative)의 출력을 가지는 tanh가 보다 효과적임.
이같은 이유들로 인해 RNN, LSTM등에서는 tanh를 activation function으로 사용한다.
더 읽어보면 좋은 자료
2022.12.28 - [.../Math] - [Math] Sigmoid function
https://dsaint31.me/mkdocs_site/ML/ch09/weight_initializations/
https://dsaint31.tistory.com/581
'Computer' 카테고리의 다른 글
[ML] Time Series 란? (0) | 2023.09.01 |
---|---|
[Keras] 현재의 Learning Rate를 확인하는 Custom Callback (0) | 2023.08.30 |
[Util] ZoomIt (0) | 2023.05.20 |
[CE] 프로그래머를 위한 (Logical) Memory 구조 : Stack, Heap, Code (0) | 2022.12.19 |
[CE] Magnetic Tape (자기테이프) (0) | 2022.12.10 |