【活性化関数】tanh関数とは?【超わかりやすく解説】

ニューラルネットワークで重要な活性化関数の1つである「tanh関数」を紹介します。理解のしやすいtanh関数をPythonで実装も行いながら紹介しています。

tanh関数とは?

tanh関数のグラフ

tanh関数は下限の「 -1 」から、上限の「 +1 」までをなめらかな曲線で定義して出力する関数です。
「-1」〜「1」の範囲である特性を生かして、出力層で用いられることが多いです。

tanh関数はシグモイド関数と非常によく似ています。
シグモイド関数が「0」〜「1」の出力に対して、tanh関数は「-1」〜「1」の出力です。
2つを重ねたグラフは下のようになります。


tanh関数は、
この出力の範囲が増えることによって、シグモイド関数よりも勾配消失問題が若干緩和されます。
勾配消失問題については、別の記事でまとめます。

それでも、活性化関数はReLU関数シグモイド関数が一般的に使われることが多いです。

tanh関数の数式

tanh関数の数式は上のようになります。
シグモイド関数が下の数式なので、若干似ていますね。

Pythonで実装

実装

#tanh関数
import numpy as np

def tanh(x):
    return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
if __name__ == '__main__':
    print(tanh(6)) # 任意の数字を入力
【実行結果】
0.9999877116507956

5行目の「np.exp(x)」は、「e の x乗」を表しています。
ソースコードは非常にシンプルです。

【参考】tanh関数をプロットするコード

下記は、matplotlibを使ってtanh関数を描画するソースコードです。

#tanh関数
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-6, 6, 0.1)
y = (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))

plt.grid()
plt.plot(x, y)
plt.show()

このコードを実行すると、下のグラフが実行結果として生成されます。
上手くtanh関数をプロットできていますね。

ということで本記事は、
ニューラルネットワークで非常に重要な活性化関数の1つである、tanh関数を紹介しました。
最後まで読んでいただき、ありがとうございました!

ディープラーニングのおすすめ書籍

専門書としては異例の発行部数を誇る、素晴らしい書籍です(^^)
初心者の方から知識のある方まで、幅広い方に向けて書かれていますよ!\(^o^)/

超オススメのPC用品

PCを操作する上で、トラックボールマウスが非常におすすめです!
僕も感動したこのマウスを、騙されたと思って使ってみてください!(^^)

外部モニターで2倍以上の効率化が見込めます!
安いものだと、たったの1万円前後なのでおすすめですよー!\(^o^)/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です