[DL] Hyperbolic Tangent Function (tanh)

2023. 8. 13. 14:23·Computer
728x90
728x90

logistic function과 함께 sigmoid의 대표적인 함수가 바로 $\text{tanh}$임.

  • 값이 $[-1,1]$의 range를 가지며, logistic에 비해 기울기가 보다 급격하기 때문에 좀 더 빠른 수렴속도를 보임.
  • 하지만, sigmoid의 일종이기 때문에 gradient vanishing에 자유롭지 못함.
    • logistic보단 그래도 양호한 편이나
    • sigmoid의 일종이기 때문에, 양 끝단에 갈 경우 기울기가 0에 수렴.
  • RNN의 activation function으로 많이 이용된다.
    • Exploding gradient가 쉽게 발생하는 RNN(Recurrent Neural Network)에서는 ReLU가 적합하지 않음.
      • Weight matrix의 eigenvalue (특히, max eigenvalue)가 1보다 클 경우, time series의 길이만큼 여러번 해당 eigenvalue가 곱해지는 형태로 출력이 결정됨.
      • 이는 기울기를 매우 심하게 커지게 하여 exploding gradient를 일으킴 
      • 물론 eigenvalue가 1보다 작으면 이는 vanishing gradient로 이어짐.
      • RNN이 모든 Time Step에서 동일한 가중치 행렬을 공유하기 때문으로 각 layer의 weight matrix가 한 iteration에서 한 번만 영향을 주는 CNN등과의 차이점임.
    • 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.
더보기

2022.06.06 - [Computer] - [ML] Logit에서 Logistic Function.

 

[ML] Logit에서 Logistic Function.

Logistic FunctionLogistic function은일종의 연속변수에 해당하는 "raw score"(정확히는 logit score)을 probability로 바꾸어주는 함수임: output이 0에서 1사이의 real number.미분가능!더보기Binary classification에서 True

dsaint31.tistory.com



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을 중심으로 양과 음이 균형을 이룬 입력( $[-\infty, +\infty]$)에 대해서
    • 0.5를 중심으로 하는 양수 영역($[0,1]$)으로 분포가 이동함.
  • 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

 

[Math] Sigmoid function

S자형 곡선을 갖는 함수. (대표적인 예가 logistic function이나 sigmoid는 다음과 같이 여러 종류가 있음) Artificial Neural Network의 Artificial Neron의 Activation function으로 초창기에 많이 사용되었음. Logistic dist

dsaint31.tistory.com

https://dsaint31.me/mkdocs_site/ML/ch09/weight_initializations/

 

BME228

Weight Initialization (가중치 초기화) ANN이 1990년대 부활의 싹을 틔우고 있을 때에 가장 큰 문제점은 바로 Gradient Vanishing (and Exploding) Problem이었다. Weight Initialization은 이 문제를 개선하기 위한 방법으

dsaint31.me

https://dsaint31.tistory.com/581

 

[DL] Softsign : tanh의 유사품

hyperbolic tangent (=tanh)와 유사한 함수. tanh 대신 activation function으로 사용되는 경우도 있음. $$\text{softsign}(x)=\frac{x}{1+|x|}$$ softsign의 derivative는 다음과 같음. $$\dfrac{d}{dx}\text{softsign}(x)=\dfrac{1}{\left(1+|x|\

dsaint31.tistory.com

2024.02.26 - [.../Math] - [Math] Function의 분류: 작성중

 

[Math] Function의 분류: 작성중

1. Elementary Functions and Special FunctionsFunction은 크게"Elementary Functions"와"Special Functions"로 나뉜다.기본적인 수학 연산 등에서 활용되는 Elementary Functions에 대해서는 보다 세분화된 분류를 이해하는 게

dsaint31.tistory.com


 

728x90

'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
'Computer' 카테고리의 다른 글
  • [ML] Time Series 란?
  • [Keras] 현재의 Learning Rate를 확인하는 Custom Callback
  • [Util] ZoomIt
  • [CE] 프로그래머를 위한 (Logical) Memory 구조 : Stack, Heap, Code
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (784)
      • Private Life (14)
      • Programming (55)
        • DIP (116)
        • ML (34)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (368)
        • Signals and Systems (115)
        • Math (176)
        • Linear Algebra (33)
        • Physics (43)
        • 인성세미나 (1)
      • 정리필요. (61)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (7)
        • PET Study 2009 (1)
        • 방사선 장해방호 (5)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    opencv
    Python
    function
    signal_and_system
    Term
    Vector
    fourier transform
    linear algebra
    SS
    ML
    numpy
    math
    Optimization
    cv2
    signals_and_systems
    SIGNAL
    Programming
    random
    Probability
    인허가제도
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[DL] Hyperbolic Tangent Function (tanh)
상단으로

티스토리툴바