Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Tanh (Hyperbolic Tangent)

Tanhは、入力をゼロ中心のS字曲線に沿って−1から1の値に写像します。数式、勾配、RNN、GAN、制御での用途、PyTorchコードについて解説します。

双曲線正接関数 tanh(x) = (eˣ − e^(−x)) / (eˣ + e^(−x)) は、S字型の曲線に沿って任意の実数を−1から1までの値に写像する活性化関数です。シグモイド関数を再スケーリングした関数であり、tanh(x) = 2σ(2x) − 1 となるため、形状はシグモイド関数と共通していますが、負の入力に対して負の値を返し、原点での傾きは1です。tanhは1990年代から2000年代にかけて、ニューラルネットワークの標準的な隠れ層活性化関数でした。現在では、再帰型ニューラルネットワーク (RNNs)の隠れ状態を形成し、画像生成器や制御ポリシーの出力を制限し、より大きなモデル内の値を一定範囲に保つために使われています。

数式と特性#

tanhは奇関数であり、tanh(−x) = −tanh(x)、tanh(0) = 0です。ゼロ付近ではほぼ線形で、tanh(x) ≈ xとなり、±3を超えるあたりから±1に近づいて平坦になります。導関数1 − tanh²(x)は原点で1となり、シグモイド関数の最大値0.25の4倍で、曲線が飽和するにつれてゼロに近づきます。以下のPyTorchのコードでは、tanhとその勾配を計算し、平均がゼロの入力に対するtanhとシグモイド関数の平均出力を比較します。

import torch

x = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0], requires_grad=True)
y = torch.tanh(x)

# The derivative of tanh is 1 - tanh(x)^2, which peaks at 1 when x = 0
y.sum().backward()
print(f"Tanh:     {[round(v, 3) for v in y.tolist()]}")
print(f"Gradient: {[round(v, 3) for v in x.grad.tolist()]}")

# For zero-mean inputs, tanh outputs average near 0 and sigmoid outputs near 0.5
torch.manual_seed(0)
z = torch.randn(100_000)
print(f"Mean output, tanh: {torch.tanh(z).mean():.3f}, sigmoid: {torch.sigmoid(z).mean():.3f}")

出力には [-0.995, -0.762, 0.0, 0.762, 0.995] のtanh値と [0.01, 0.42, 1.0, 0.42, 0.01] の勾配が表示されるため、±3における勾配はゼロでの値の100分の1です。標準正規分布に従う入力100,000個に対して、tanhの出力の平均は約0.0、シグモイド関数の出力の平均は約0.5です。

出力がゼロ中心であることの利点#

ニューロンの重み勾配は入力に比例します。シグモイド関数の出力のように、すべての入力が正の場合、各更新でニューロンの重み勾配はすべて同じ符号になります。そのため、重みは一斉に増加または減少するしかなく、最適値に到達するまでジグザグに動きます。tanhの出力はほぼ均等に正負に分かれるため、各重みが個別に変化でき、次の層への入力も平均ゼロに近く保たれます。この領域では勾配降下法の収束が速くなります。このため、Yann LeCunらは1998年のガイド「Efficient BackProp」で、隠れ層にはロジスティックシグモイドよりも対称関数を推奨し、具体的にはスケーリングした1.7159 · tanh(2x/3)を提案しました。tanhは依然として飽和するため、多数のtanh層を重ねるとバックプロパゲーション中に勾配が小さくなり、勾配消失問題が発生します。

tanhの用途#

  • 再帰型ネットワーク: 単純なRNNでは、状態を hₜ = tanh(Wxₜ + Uhₜ₋₁ + b) として更新し、tanhはPyTorchのnn.RNNのデフォルトの非線形関数です。LSTMおよびGRUセルでは、tanhが候補内容を生成し、LSTMでは出力前にセル状態を圧縮します。一方、シグモイドゲートはその内容をどれだけ使うかを決定します。値の範囲が制限されるため、状態を各ステップでフィードバックしても際限なく増大することはありません。
  • GAN生成器: DCGANは生成器の最後にtanhを適用し、生成ピクセルの値を−1から1の範囲に収めます。これは学習画像をスケーリングする範囲であり、その後の多くの敵対的生成ネットワーク (GANs)でも採用されています。
  • 範囲制限付きアクション: 強化学習における連続制御のポリシーでは、出力にtanhを適用し、すべての指令をアクチュエーターの制限内に収めます。Soft Actor-Criticでは、ガウスポリシーからのサンプルをこの方法で圧縮します。
  • ロジットのソフトキャッピング: GoogleのGemma 2言語モデルは、cap · tanh(logits / cap)を計算し、アテンションロジットには50、最終ロジットには30のcapを使用します。小さなロジットはほぼそのまま通過し、大きなロジットもcapを超えません。
  • GELU近似: 0.5x(1 + tanh(√(2/π)(x + 0.044715x³)))はGELUを高精度に近似します。初期のGPT-2とBERTのコードでは、この方法でGELUを計算しています。
  • 正規化フロー: RealNVP形式のフローでは、各スケールネットワークの末尾にtanhを置くことがよくあります。これにより、各結合層が入力をe⁻¹からeの範囲の係数でスケーリングし、学習の数値安定性を保ちます。YOLO26姿勢推定モデルは、残差対数尤度推定損失を使って学習します。この損失に含まれる6層のRealNVPフローでは、各スケールネットワークの末尾にtanhを配置し、予測キーポイントが正解からどれだけ離れているかをモデル化します。
  • シグモイド関数: tanhはシグモイド関数の値域を−1から1に広げ、水平方向に2分の1に縮めた関数で、最大傾斜は0.25から1に上がります。シグモイド関数の値域は0から1のため、確率やゲートに適しています。
  • Hardtanh: 入力を [−1, 1] にクリップする区分線形関数です。計算コストが低く、この範囲外での勾配は厳密に0です。
  • ReLU: max(0, x)は正の入力に対して飽和せず、比較演算1回で計算できます。そのため、ReLUとSiLUなどの滑らかな後継関数が、深層畳み込みニューラルネットワーク (CNNs)やTransformerの隠れ層でtanhに取って代わりました。AlexNetの論文では、ReLUを使った4層CNNは、同じネットワークでtanhユニットを使った場合に比べて、CIFAR-10の学習誤差25%に6倍速く到達しました。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう