機械学習におけるシグモイド関数の役割を探る。この活性化関数がUltralyticsUltralytics 6のようなモデルで二値分類を可能にする仕組みを学ぶ。
シグモイド関数は、機械学習(ML) および深層学習(DL)の分野で広く用いられる基本的な数学的構成要素である。しばしば「スクワッシュ関数」とも呼ばれ、実数値を入力として受け取り、0から1の間の値へ写像する。この特徴的な「S」字型の曲線は、モデルの生の出力を解釈可能な確率値へ変換する上で非常に有用である。ニューラルネットワーク(NN)の文脈では、 シグモイド関数は活性化関数として機能し、 単純な線形関係を超えた複雑なパターンを学習可能にする非線形性を導入します。 深層隠れ層では他の関数にほぼ置き換えられたものの、 二値分類タスクにおける出力層の標準的な選択肢として 現在も用いられています。
シグモイド関数の本質は、入力データ(ロジットと呼ばれることが多い)を正規化された範囲に変換することにある。この変換は、事象の発生確率を予測することを目的とするタスクにおいて極めて重要である。出力を0から1の間に制限することで、関数は明確な確率スコアを提供する。
シグモイド関数はかつて全ての層のデフォルトであったが、研究者らは深層ネットワークにおいて勾配が小さすぎて重みを効果的に更新できなくなる「勾配消失問題」などの限界を発見した。これにより隠れ層向けの代替手法が採用されるようになった。
シグモイド関数の有用性は、確率推定が必要な様々な産業に及んでいる。
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などの最先端モデルの訓練を可能にします。 アーキテクチャの複雑さを自動的に処理することで、 ユーザーは特定のコンピュータビジョンアプリケーション向けに 高品質な訓練データを収集することに集中できます。