tanh関数 (G検定)

tanh関数

1. 定義と概要

tanh関数(ハイパボリックタンジェント関数)とは、任意の実数の入力を、-1より大きく1より小さい範囲のなめらかな曲線に変換する活性化関数です。数式は tanh(x)=(e^x-e^-x)/(e^x+e^-x) で表され、入力が0のとき出力も0になる、原点を通る曲線という特徴を持ちます。

シグモイド関数(出力を0〜1のなめらかな値に変換する活性化関数)と同じく、ニューラルネットワークの中間層(入力層と出力層の間にあり、計算を担う層)で使われる非線形関数(出力が入力に比例せず、グラフが直線にならない関数)のひとつです。

初期のニューラルネットワークでは、出力が0〜1の範囲におさまるシグモイド関数が広く使われていました。しかし出力が常に正の値をとるため、次の層への入力が0を中心に分布せず、学習の効率が下がりやすいという課題がありました。

tanh関数は出力が0を中心に分布するため、この偏りをやわらげる改良版として位置づけられます。シグモイド関数よりも微分(導関数。関数の傾き、つまり値がどれだけ変化するかを求める計算)の最大値が大きいことから、勾配消失問題(層を重ねるほど誤差の伝わり方が小さくなり、学習がほとんど進まなくなる現象)を緩和しやすいという流れがあります。

ただし勾配消失を完全に解消するわけではなく、この点は後にReLU関数(入力が0以上ならそのまま出力し、0未満は0を出力する活性化関数)が広く使われる背景にもつながります。

2. 試験対策ポイント

理解するうえで中心になるのは、tanh関数とシグモイド関数の出力範囲とゼロ中心性(出力の値が0を中心にプラス側とマイナス側の両方に広がる性質)の違いです。tanh関数の出力範囲は-1から1で、シグモイド関数の出力範囲0〜1とは異なり、出力が0を中心に分布します。

もうひとつ重要なのが、微分の最大値の比較です。tanh関数の微分の最大値は1(入力が0のとき)で、シグモイド関数の微分の最大値0.25より大きい値です。このため誤差逆伝播法(出力側で生じた誤差を逆方向に伝えながら各層の重みを調整する学習手法)で層をさかのぼる際、勾配の減衰がシグモイド関数よりも緩やかになり、勾配消失問題が起こりにくくなります。

ここで取り違えやすい点として、tanh関数は勾配消失問題を緩和しますが、ゼロにするわけではありません。微分値は1以下にとどまるため、層を深く重ねると勾配は依然として縮小していきます。「緩和」と「完全に解消した」は、混同しやすい理解です。

RNN(再帰型ニューラルネットワーク。過去の情報を記憶しながら時系列データを処理するネットワーク構造)やLSTM(RNNを改良し、長期的な情報も記憶できるようにしたネットワーク構造)の隠れ層(中間層と同じ意味)では、活性化関数としてtanh関数が使われます。出力が0を中心に分布する性質が、時系列データの正負両方の変化を表現するのに適しています。

3. 関連概念との比較・相違点

シグモイド関数との最大の違いは、出力範囲とゼロ中心性です。あわせて微分値の最大にも差があるため、二つの関数を軸ごとに並べると次のように整理できます。

比較の軸 tanh関数 シグモイド関数
出力範囲 -1〜1 0〜1
出力の分布 0を中心に正負の両方へ広がる 常に正の値をとる
微分の最大値 1 0.25

微分の最大値が大きいtanh関数の方が勾配消失問題は起こりにくいという関係にありますが、いずれも完全には解消しません。

ReLU関数との最大の違いは、正の領域での微分値のふるまいです。tanh関数は入力が大きくなるほど出力が1に近づき、微分値が0に近づく飽和特性を持ちます。一方でReLU関数は、正の入力で微分値が常に1で飽和しません。

この飽和特性の有無が、深い層を重ねたときの学習のしやすさに影響します。tanh関数もシグモイド関数も入力の絶対値が大きい領域では出力が上限・下限に張り付き、その付近では勾配がほとんど動かなくなります。ReLU関数が主流になった背景には、正の領域でこの飽和が起こらないという性質があります。

4. ビジネス・実務での活用シナリオ

自然言語処理(人間が使う言葉をコンピュータに処理させる技術分野)・機械翻訳の分野では、RNNやLSTMの隠れ層でtanh関数を使い、文章のような系列データの内部状態を-1〜1の範囲で、正負両方の情報として保持しながら学習します。文脈のニュアンスが正の方向にも負の方向にも変化する表現を扱う場合でも、内部状態を両方向で表現できることが、翻訳精度を支える土台になります。

需要予測や株価予測などの時系列予測では、LSTMベースの時系列モデルの内部で、tanh関数がゲート機構(情報をどれだけ通すかを調整する仕組み)の候補値算出に使われます。増加と減少という双方向の変化パターンを、ひとつの活性化関数で自然に表現できることが、時系列データを扱ううえでの利点です。

画像生成の分野では、GAN(敵対的生成ネットワーク。生成器と識別器が競い合って学習することで、本物そっくりのデータを作り出す仕組み)の代表的な構成であるDCGAN(畳み込み層を使った構成)の生成器で、出力層にtanh関数が使われます。生成画像のピクセル値を-1〜1の範囲に正規化することで、学習データ側のスケールと合わせ、安定した学習を行う設計です。

5. 要点まとめ

  • tanh関数は入力を-1〜1の範囲に変換する活性化関数で、出力が0を中心に分布する点がシグモイド関数(出力0〜1)との違いになります。
  • 微分の最大値はtanh関数が1、シグモイド関数が0.25で、tanh関数の方が勾配消失問題が起こりにくい関係にありますが、完全に解消するわけではありません。
  • RNN・LSTMの隠れ層やGAN(DCGAN)の生成器出力層など、正負両方の値や-1〜1のスケールを扱う場面でtanh関数が使われます。

6. 確認問題

問1tanh関数の出力範囲は-1から1であり、出力は0を中心に分布する。

解答・解説をみる

○ 正しい

tanh関数の定義そのものです。出力範囲0〜1のシグモイド関数と対比される特徴で、ゼロ中心性と呼ばれます。

問2tanh関数はシグモイド関数よりも微分の最大値が大きいため、勾配消失問題を完全に解消する。

解答・解説をみる

× 誤り

tanh関数の微分の最大値1はシグモイド関数の0.25より大きく、勾配消失を緩和しますが、微分値は1以下にとどまるため層を深く重ねると勾配は依然として縮小し、完全には解消しません。正しくは「緩和する」であり、「解消する」と取り違えた記述です。

問3RNNやLSTMの隠れ層では、出力が0を中心に分布する性質を活かしてtanh関数が活性化関数として使われることがある。

解答・解説をみる

○ 正しい

tanh関数のゼロ中心性は時系列データの正負両方の変化を表現するのに適しており、RNN・LSTMの隠れ層で採用される理由になっています。