tanh関数とは

タンエイチかんすうhyperbolic tangent function略語 tanh別名 ハイパボリックタンジェント、双曲線正接関数、tanh

1行定義

tanh関数とは、入力を−1から1の範囲の値に変換する、原点を中心に対称なS字形の活性化関数のことです。

くわしく

tanh関数は、ニューラルネットワークの活性化関数の1つで、双曲線正接関数(ハイパボリックタンジェント)とも呼ばれます。式は次のとおりです。

tanh(x) = (e^x − e^(−x)) / (e^x + e^(−x))

形と性質

グラフはシグモイド関数と同じS字形です。ただし出力の範囲が違い、シグモイド関数は0から1、tanh関数は−1から1の値をとります。入力が0のとき出力は0で、原点を中心に対称な形をしています。シグモイド関数σとは tanh(x) = 2σ(2x) − 1 の関係にあり、σを横に縮めて縦に2倍に伸ばし、下に1ずらした形です。

導関数は 1 − tanh(x)^2 で、入力が0のとき最大値1をとります。シグモイド関数の導関数の最大値は0.25なので、tanh関数のほうが逆伝播で勾配が小さくなりにくくなります。

シグモイド関数より好まれた理由

1つ目は、上で述べた勾配の大きさです。2つ目は、出力が0を中心に正と負の両側に分布することです。シグモイド関数の出力は常に正なので、次の層の重みの勾配がそろって同じ符号になりやすく、更新がジグザグに進みがちです。tanh関数ではこの偏りが小さくなり、学習が進みやすくなります。

残る弱点と現在の使われ方

入力の絶対値が大きくなると、出力は−1か1に張り付き、導関数は0に近づきます(飽和)。そのため、層が深いと勾配消失問題は依然として起きます。現在、深いネットワークの隠れ層では、主にReLU関数が使われています。

一方で、tanh関数は今も使われています。RNNやLSTMでは、内部の状態を−1から1の範囲に収める役割でtanh関数を使うのが一般的です。

覚え方

「tanhは中心0、範囲±1、傾きの最大は1」と覚えます。

G検定での出題

出力の範囲と導関数の最大値を、シグモイド関数と比べる形で問われます。勾配消失問題がシグモイド関数より起きにくいものの完全には防げない点や、ReLU関数との違い、RNNでの利用も問われます。

混同しやすい用語

用語意味
シグモイド関数どんな実数の入力も0から1の間の値に変換する、なめらかなS字形の関数

◯×チェック

  1. tanh関数は、入力が0のとき出力が0.5になる。

    答えを見る

    答え × 誤り

    入力0で出力0.5になるのはシグモイド関数です。tanh関数は原点を通り、入力0で出力0になります。

  2. tanh関数のグラフは、シグモイド関数のグラフを縦横に伸び縮みさせ、上下に平行移動した形になっている。

    答えを見る

    答え ◯ 正しい

    tanh(x) = 2σ(2x) − 1 の関係があり、どちらも同じS字形です。違いは出力の範囲と、原点を通るかどうかです。

  3. LSTMでは、セルの状態から出力を作るときなどに、値を−1から1の範囲に収めるためtanh関数が使われる。

    答えを見る

    答え ◯ 正しい

    LSTMでは、ゲートの開き具合にはシグモイド関数、値そのものの変換にはtanh関数を使うのが一般的です。

練習問題

tanh関数の問題(3問)
  1. ReLU系関数とtanh関数の性質
  2. 活性化関数の形と勾配の伝わり方
  3. LSTMの記憶セルの更新計算

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

公開日: 最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術12

改訂履歴

表示設定

テーマ
文字の大きさ
問題演習