シグモイド
AIにおけるシグモイド関数のパワーをご覧ください。非線形性を実現し、二値分類を支援し、機械学習の進歩を促進する方法を学びます。
シグモイド関数は
機械学習(ML)や
機械学習(ML)や
ディープラーニング(DL)の分野で広く使われている基本的な活性化関数です。数学的には
ロジスティック関数として表現され、シグモイド関数の特徴は
シグモイド曲線として知られるS字型の曲線が特徴です。シグモイド関数の主な機能は、任意の実数値の入力数値を
シグモイドの主な機能は、実数値の入力数値を0から1の範囲内の値に変換することである。
を予測する必要があるモデルには非常に有用である。
出力は直接
と解釈できるからである。非線形性を
ニューラルネットワーク(NN)に非直線性を導入することで、シグモイド関数は次のことを可能にする。
モデルは単純な線形回帰を超える複雑なデータパターンを学習することができます。
線形回帰を超えます。
人工知能のコア・アプリケーション
シグモイド関数は、特に出力を独立した確率として解釈する必要がある特定のネットワーク・アーキテクチャやタスクにおいて重要な役割を果たす。
は、特に出力を独立した確率として解釈する必要がある場合に重要な役割を果たす。ディープネットワークの隠れ層では新しい関数がこれに取って代わったが
ネットワークの隠れ層では新しい関数に取って代わられているが、いくつかの重要なアプリケーションの出力層では依然として標準的な関数である。
-
バイナリ分類:入力を2つの排他的なクラスのいずれかに分類することを目的とするタスクでは、例えば次のようになります。
シグモイド関数は最終層に最適です。
最後のレイヤーに最適です。シグモイド関数は0と1の間の1つのスカラー値を出力し、正のクラスの確率を表す。
例えば、医療画像分析では
モデルは0.95を出力し、検出された異常が悪性であることを95%の確率で示します。
-
マルチラベル分類:入力が1つのカテゴリーにしか属さないマルチクラスタスクとは異なり、マルチラベルタスクでは入力が同時に複数のタグを持つことができる。
複数のタグを同時に持つことができる。例えば
のような物体検出モデル
Ultralytics YOLO11のような物体検出モデルは
「人」「自転車」「ヘルメット」を検出する必要があるかもしれない。ここで、Sigmoidは各出力ノード
を各出力ノードに独立に適用し、確率の和が1になるように強制することなく、モデルが各クラスの有無を予測できるようにする。
確率の和が1になるように強制することなく、モデルが各クラスの有無を予測できるようにします。
-
リカレント・ニューラル・ネットワーク(RNN)
ゲーティングシグモイドは、以下のような高度なシーケンスモデルのゲーティングメカニズムにおいて重要なコンポーネントです。
ロング・ショート・ターム・メモリー(LSTM)
ネットワークにおいて重要な要素である。これらのアーキテクチャーでは、「忘却ゲート」と「入力ゲート」がシグモイドを使用し、0(完全に忘却/ブロック)の間の値を出力する。
0(完全に忘れる/ブロックする)と1(完全に記憶する/パスする)の間の値を出力する。
情報の流れを効果的に調整する。このメカニズムについては、LSTMに関する古典的な
で詳しく説明されている。
関連する活性化関数との比較
ニューラルアーキテクチャを効果的に設計するには、シグモイドを他の活性化関数と区別することが重要である。
というのも、シグモイドはそれぞれ異なる目的を果たすからです。
-
ソフトマックス:どちらの関数も確率に関係するが、ソフトマックスはクラスが相互に排他的な多クラス分類に使われる。
に使われる。ソフトマックスは、すべてのクラスの出力の合計がちょうど1になるようにし、確率分布を作成します。
分布を作成する。対照的に、シグモイドは各出力を独立に扱うので、バイナリまたはマルチラベル
タスクに適している。
-
ReLU(整流リニアユニット):ReLUは、最新のディープネットワークの隠れ層の活性化関数として推奨されている。シグモイドとは異なり
0と1で飽和し
バックプロパゲーション中に勾配が消失する問題
と異なり、ReLUは正の入力に対してより自由に勾配を流すことができる。
正入力に対してより自由に勾配を流すことができる。これによって学習と収束が加速される。
Stanford CS231nのコースノート。
-
タン(双曲線タンジェント):Tanh関数はSigmoidに似ているが、入力を-1から1の範囲にマッピングする。
出力はゼロ中心であるため、古いアーキテクチャや特定のRNNの隠れ層では、SigmoidよりもTanhが好まれることが多い。
後続層のデータセンタリングに役立つからだ。
実施例
次のPython スニペットは、シグモイド関数の適用方法を示しています。
PyTorch.これは
これは、生のモデル出力(logits)を解釈可能な確率に変換するために使用される一般的な操作です。
import torch
import torch.nn as nn
# Raw outputs (logits) from a model for a binary or multi-label task
logits = torch.tensor([0.1, -2.5, 4.0])
# Apply the Sigmoid activation function
sigmoid = nn.Sigmoid()
probabilities = sigmoid(logits)
# Output values are squashed between 0 and 1
print(probabilities)
# Output: tensor([0.5250, 0.0759, 0.9820])
シグモイドをいつ使うべきかを理解することは、効果的なAIシステムを構築するための鍵である。シグモイドは、勾配の飽和による深い隠れ層
勾配飽和のため深い隠れ層では限界があるが、独立した確率をモデル化できるため、損失関数の計算や最終出力層では重要な役割を果たす。
損失関数の計算や最終出力層
様々なタスクに使用できる。