「tanh関数って、シグモイド関数と何が違うの?」
「どちらもS字カーブの関数ですが、出力される範囲が違います。tanh関数は、入力値を -1から1の範囲 に変換する関数です。」
tanh関数とは何か
tanh関数は「タンジェントエイチ」と読みます。数学では双曲線正接関数とも呼ばれ、機械学習ではニューラルネットワークの活性化関数として使われることがあります。
tanh関数の大きな特徴は、どのような入力値を入れても、出力が必ず -1より大きく、1より小さい範囲 に収まることです。入力が大きな正の値なら出力は1に近づき、入力が大きな負の値なら出力は-1に近づきます。入力が0なら、出力も0です。
つまりtanh関数は、ばらばらの大きさを持つ数値を「-1から1の範囲に整える」役割を持っています。ニューラルネットワークでは、この性質によって信号の大きさを扱いやすくできます。

tanhのグラフと -1 から 1 の意味
tanh関数のグラフは、原点を中心にした滑らかなS字カーブになります。入力値が0に近い範囲では出力が大きく変化し、入力値が大きくなるほど出力は1に近づきます。反対に、入力値が小さくなるほど出力は-1に近づきます。
このように、出力が上限と下限に近づいていく性質を「飽和」と呼びます。たとえば、入力が10や100のように大きくなっても、出力は1を超えません。入力が-10や-100のように小さくなっても、出力は-1を下回りません。
機械学習では、値が極端に大きくなりすぎると学習が不安定になることがあります。tanh関数を使うと、出力を一定の範囲に収められるため、次の層へ渡す信号を扱いやすくできます。

tanh関数の計算式と簡単な計算方法
tanh関数は、指数関数を使って次のように表せます。
tanh(x) = (ex – e-x) / (ex + e-x)
ここで、xは入力値、eはネイピア数と呼ばれる数学定数です。初学者の段階では、式を暗記するよりも「入力を-1から1の範囲に変換する関数」と理解する方が実用的です。
代表的な値は次のようになります。
| 入力 x | tanh(x) のイメージ |
|---|---|
| -2 | -1に近い値 |
| 0 | 0 |
| 2 | 1に近い値 |
Pythonで計算する場合は、次のように書けます。
import math
print(math.tanh(-2))
print(math.tanh(0))
print(math.tanh(2))
NumPyを使う場合は、配列にまとめて適用できます。
import numpy as np
x = np.array([-2, 0, 2])
print(np.tanh(x))
表計算ソフトでも、ExcelやGoogleスプレッドシートで =TANH(A1) のように入力すれば、セルA1の値に対するtanh関数の結果を計算できます。「tanh 関数電卓」のように使いたい場合は、入力値をセルに入れてTANH関数を使うのが手軽です。

活性化関数として使われる理由
ニューラルネットワークでは、各層で受け取った値をそのまま次へ渡すだけでは、複雑な関係を学習しにくくなります。そこで使われるのが活性化関数です。活性化関数は、入力信号に非線形な変換を加え、モデルが複雑なパターンを学べるようにします。
tanh関数が活性化関数として使われる理由は、主に次の3つです。
出力が0を中心に分布しやすい
tanh関数の出力は-1から1の範囲で、0を中心に正と負の値を取ります。そのため、0から1だけを出力するシグモイド関数よりも、次の層に渡す値の偏りを抑えやすい場合があります。
滑らかに変化する
tanh関数は滑らかな曲線なので、微分しやすい性質があります。ニューラルネットワークの学習では、誤差をもとに重みを調整するために微分が使われます。この点で、tanh関数は学習に組み込みやすい関数です。
値の範囲を制限できる
出力が-1から1に収まるため、次の層へ渡す信号が極端に大きくなることを避けやすくなります。ただし、現在の深層学習では、画像認識など多くの分野でReLUやLeaky ReLU、GELUなどの活性化関数も広く使われています。tanh関数は今でも重要ですが、常に最有力というわけではありません。
シグモイド関数との違い
tanh関数とよく比較されるのがシグモイド関数です。どちらもS字カーブを持つ活性化関数ですが、出力範囲に大きな違いがあります。
| 項目 | tanh関数 | シグモイド関数 |
|---|---|---|
| 出力範囲 | -1から1 | 0から1 |
| 0入力時の出力 | 0 | 0.5 |
| 出力の中心 | 0 | 0.5 |
| 主な使いどころ | 隠れ層の活性化関数など | 2値分類の確率出力など |
シグモイド関数は0から1の範囲に収まるため、「確率らしい値」を出したい場面と相性がよい関数です。たとえば、2値分類で「あるクラスに属する確率」を出力するときに使われることがあります。
一方、tanh関数は-1から1の範囲を取り、出力が0を中心に分布します。このため、隠れ層の中で正と負の信号を扱いたい場合に使いやすいことがあります。特に、シグモイド関数よりも0中心である点は、学習のしやすさに関係します。

勾配消失問題と注意点
tanh関数を理解するうえで重要なのが、勾配消失問題です。勾配消失問題とは、ニューラルネットワークを学習するときに、誤差を伝えるための勾配が層をさかのぼるほど小さくなり、重みがほとんど更新されなくなる現象です。
tanh関数は、シグモイド関数と比べると0を中心に出力されるため、学習が進みやすい場合があります。しかし、入力値が大きすぎたり小さすぎたりして出力が1や-1に近づくと、グラフの傾きが小さくなります。その結果、tanh関数でも勾配消失は起こり得ます。
つまり、tanh関数はシグモイド関数より勾配消失を抑えやすい場面があるものの、完全に解決する関数ではありません。深いニューラルネットワークでは、ReLU系の活性化関数、重みの初期化、正規化手法、残差接続など、複数の工夫を組み合わせて学習を安定させるのが一般的です。

tanh関数の主な活用例
tanh関数は、現在でも機械学習やデータ処理の中で使われています。代表的な活用例を見てみましょう。
ニューラルネットワークの隠れ層
tanh関数は、ニューラルネットワークの隠れ層で活性化関数として使われることがあります。出力が0を中心に正負へ分かれるため、内部表現を作る場面で利用しやすい性質があります。
RNNやLSTMなどの系列モデル
文章や時系列データを扱うRNN、LSTMなどでは、内部状態を一定範囲に収めるためにtanh関数が使われることがあります。特にLSTMでは、ゲート機構の中でシグモイド関数とtanh関数が役割を分けて使われます。
データのスケーリング
値の範囲を-1から1に近い形へそろえたいとき、tanh関数の性質が参考になることがあります。ただし、一般的な前処理では標準化や正規化など、目的に応じた別の方法が使われることも多いため、tanh関数だけに限定して考える必要はありません。
まとめ
tanh関数は、入力値を-1から1の範囲に変換するS字カーブの関数です。「タンジェントエイチ」と読み、ニューラルネットワークでは活性化関数として使われることがあります。
シグモイド関数との大きな違いは、出力範囲です。シグモイド関数は0から1を出力するのに対し、tanh関数は-1から1を出力します。tanh関数は0を中心にした値を扱えるため、隠れ層の活性化関数として使いやすい場面があります。
ただし、tanh関数も入力が大きすぎると飽和し、勾配消失が起こる可能性があります。現在の深層学習ではReLU系の活性化関数も広く使われており、tanh関数は「基本として理解しておきたい重要な関数」の一つと考えるとよいでしょう。
更新履歴
| 日付 | 内容 |
|---|---|
| 2026年4月27日 | tanh関数の意味、グラフ、計算方法、シグモイド関数との違い、勾配消失問題の説明を初心者向けに全面リライトしました。 |
