Yolo 深圳
深セン
今すぐ参加
用語集

シグモイド

機械学習におけるシグモイド関数の役割を探る。この活性化関数がUltralyticsUltralytics 6のようなモデルで二値分類を可能にする仕組みを学ぶ。

シグモイド関数は、機械学習(ML) および深層学習(DL)の分野で広く用いられる基本的な数学的構成要素である。しばしば「スクワッシュ関数」とも呼ばれ、実数値を入力として受け取り、0から1の間の値へ写像する。この特徴的な「S」字型の曲線は、モデルの生の出力を解釈可能な確率値へ変換する上で非常に有用である。ニューラルネットワーク(NN)の文脈では、 シグモイド関数は活性化関数として機能し、 単純な線形関係を超えた複雑なパターンを学習可能にする非線形性を導入します。 深層隠れ層では他の関数にほぼ置き換えられたものの、 二値分類タスクにおける出力層の標準的な選択肢として 現在も用いられています。

AIにおけるシグモイドのメカニズム

シグモイド関数の本質は、入力データ(ロジットと呼ばれることが多い)を正規化された範囲に変換することにある。この変換は、事象の発生確率を予測することを目的とするタスクにおいて極めて重要である。出力を0から1の間に制限することで、関数は明確な確率スコアを提供する。

  • ロジスティック回帰 従来の統計モデリングにおいて、シグモイド関数はロジスティック回帰の基盤となるエンジンである。これによりデータサイエンティストは、顧客が離反するか継続するかという二値結果の確率を推定できる。
  • 二値分類 二つのクラス(例:「猫」対「犬」)を区別するように設計されたニューラルネットワークでは、最終層はしばしばシグモイド活性化関数を用いる。出力値が閾値(一般的に0.5)を超える場合、モデルは正のクラスを予測する。
  • マルチラベル分類: クラスが互いに排他的であるマルチクラス問題とは異なり、マルチラベルタスクでは画像やテキストが複数のカテゴリに同時に属することが可能である。ここでは、シグモイド関数が各出力ノードに独立して適用されるため、モデルは同一シーン内の「detect 」と「人」detect 矛盾なくdetect 。

他の活性化関数との主な相違点

シグモイド関数はかつて全ての層のデフォルトであったが、研究者らは深層ネットワークにおいて勾配が小さすぎて重みを効果的に更新できなくなる「勾配消失問題」などの限界を発見した。これにより隠れ層向けの代替手法が採用されるようになった。

  • シグモイド関数 vs. ReLU(整流線形関数) ReLUは計算速度が速く、正の入力には直接出力し、それ以外にはゼロを出力することで勾配消失問題を回避する。 YOLO26などの現代的なアーキテクチャでは隠れ層に好んで採用される一方、 シグモイド関数は特定のタスクにおける最終出力層に限定して用いられる。
  • シグモイド関数とソフトマックス関数どちらも出力を0~1の範囲にマッピングしますが、目的が異なります。シグモイド関数は各出力を独立して扱うため、二値分類やマルチラベル分類に最適です。ソフトマックス関数は全出力の合計を1に強制し、確率分布を生成します。これは、正しいクラスが1つだけである多クラス分類に用いられます。

実際のアプリケーション

シグモイド関数の有用性は、確率推定が必要な様々な産業に及んでいる。

  1. 医療診断: 医療画像解析に用いられるAIモデルは、X線やMRIスキャンにおける疾患の存在確率を予測するため、しばしばシグモイド関数による出力を採用する。例えば、モデルが0.85を出力した場合、それは腫瘍が存在する確率が85%であることを示し、医師の早期発見を支援する。
  2. スパム検出:メールフィルタリングシステムは、 自然言語処理(NLP)モデルとシグモイド分類器を組み合わせて、受信メッセージが「スパム」か「スパムでない」かを判定します。 このモデルはキーワードとメタデータを分析し、メールが受信トレイに届くか迷惑メールフォルダに振り分けられるかを決定するスコアを出力します。

実践的な実施

PyTorch(深層学習モデル構築用の人気ライブラリ)を用いて、シグモイド関数がデータをどのように変換するかを確認できます。この 単純な例では、入力値の範囲に対する「押しつぶし」効果を示しています。

import torch
import torch.nn as nn

# Create a Sigmoid layer
sigmoid = nn.Sigmoid()

# Define input data (logits) ranging from negative to positive
input_data = torch.tensor([-5.0, -1.0, 0.0, 1.0, 5.0])

# Apply Sigmoid to squash values between 0 and 1
output = sigmoid(input_data)

print(f"Input: {input_data}")
print(f"Output: {output}")
# Output values near 0 for negative inputs, 0.5 for 0, and near 1 for positive inputs

これらの概念を活用したモデルを低レベルなコードを書かずに訓練したい方に向けて、 Ultralytics 直感的なインターフェースを提供し、 データセットの管理やYOLO26などの最先端モデルの訓練を可能にします。 アーキテクチャの複雑さを自動的に処理することで、 ユーザーは特定のコンピュータビジョンアプリケーション向けに 高品質な訓練データを収集することに集中できます。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加