tanh関数(双曲線正接関数)とは?機械学習の視点で分かりやすく解説!!

スポンサーリンク
ディープラーニング
この記事を読んで分かること
  • tanh関数とは何か
  • tanh関数の実装方法
  • tanh関数の微分

tanh関数とは

tanh関数(双曲線正接関数)とは、

$$tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}$$

で表される関数です。

 

グラフで表すとこのような形になります。

tanh関数

 

tanh関数はディープラーニングの活性化関数の一つです。

 

tanh関数の特徴

グラフを見ると、tanh関数の出力は-1から1の範囲に納まり、滑らかな曲線を描いています。

\(x=0\)を境に対象的なグラフとなっています。

 

tanh関数の特徴
  • -1~1の範囲で滑らかな関数

 

tanh関数の用途

tanh関数は、時系列データの分析の活性化関数としてよく使われています。

 

tanh関数の主な用途
  • LSTMユニット
  • GRUユニット
  • Attention
  • WaveNet
  • DCGAN

 

tanh関数の微分

tanh関数の微分は高校数学の知識で行うことができます。

$$h=tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}$$

として微分を求めてみましょう。

\(
\frac{dh}{dx}=\frac{d}{dx}\left(\frac{e^{x}}{e^{x}+e^{-x}}-\frac{e^{-x}}{e^{x}+e^{-x}}\right)\\
\quad=\left(\frac{e^{x}}{e^{x}+e^{-x}}-\frac{e^{x}(e^{x}-e^{-x})}{(e^{x}+e^{-x})^2}\right) + \left(\frac{e^{-x}}{e^{x}+e^{-x}}+\frac{e^{-x}(e^{x}-e^{-x})}{(e^{x}+e^{-x})^2}\right)\\
\quad=\frac{e^{x}+e^{-x}}{e^{x}+e^{-x}}-\frac{(e^{x}+e^{-x})^2}{(e^{x}-e^{-x})^2}
\quad=1-\left(\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}\right)\\
\quad=1-h^2
\)

 

tanh関数の微分

$$\frac{dh}{dx}=1-h^2$$

 

微分後の関数をグラフで表すとこのような形になります。

tanh_dx

 

1未満の値が多く出力されるので勾配が小さくなっていき、勾配消失してしまいます。

 

tanh関数をpythonで実装

tanh関数をpythonで実装していきます。

import numpy as np

#tanh関数
def tanh(x):
    return np.tanh(x)

#tanh関数の微分
def tanh_dx(x):
    return 4 / ((np.exp(x) + np.exp(-x))**2)

単純な関数なので、シンプルに表すことができました。

 

まとめ

tanh関数とは、\(tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}\)で表される関数です

-1~1の範囲を滑らかにつなぐ曲線でした。

tanh関数は、ディープラーニングで系列データ解析を行うモデルの活性化関数としてよく使われます。

tanh関数の微分はシンプルに表すことができ、1未満の値が多く出力されるため勾配消失が起こってしまう活性化関数です。

 

参考文献

コメント

タイトルとURLをコピーしました