Activation Function
ReLU、Sigmoid、SiLUなどの活性化関数がディープラーニングを可能にする仕組みを解説します。Ultralytics YOLO26がこれらを使用して複雑な視覚パターンを学習する方法を学びます。
活性化関数は、入力の集合に基づいてニューロンの出力を決定するニューラルネットワーク(NN)の基本的な構成要素です。「ゲートキーパー」と表現されることが多く、ニューロンをアクティブにするかどうか、つまりネットワークの予測に寄与させるか、非アクティブにするかを決定します。これらの数学的演算がなければ、ニューラルネットワークは単純な線形回帰モデルのように振る舞い、深さに関係なく複雑なパターンを把握できません。非線形性を導入することで、活性化関数はディープラーニング(DL)モデルが、手書き数字の曲線や医用画像解析における微妙な異常など、複雑な構造を学習できるようにします。
主な機能と一般的な種類#
活性化関数の主な役割は、入力信号を目的の出力範囲にマッピングし、ネットワークが生成する特徴マップに複雑性を導入することです。開発者は、レイヤーの位置とモデル学習プロセスの目的に基づいて、特定の関数を選択します。
- ReLU(整流線形ユニット): 現在、隠れ層で最も広く使用されている関数です。入力が正の場合はそのまま出力し、それ以外の場合は0を出力します。この単純さによって計算が高速化され、深いアーキテクチャの学習で頻繁に発生する勾配消失問題の緩和に役立ちます。
- Sigmoid: この関数は入力値を0から1の範囲に「押しつぶします」。メールがスパムかどうかの判定など、二値分類タスクの最終層で頻繁に使用され、出力を確率スコアとして解釈できます。
- Softmax: マルチクラス問題に不可欠なSoftmaxは、数値のベクトルを、すべての値の合計が1になる確率分布に変換します。これは、ImageNetデータセットで行われるような画像分類の課題で標準的に使用されます。
- SiLU(シグモイド線形ユニット): YOLO26のような最先端のアーキテクチャでよく使用される、滑らかで非単調な関数です。SiLUは非常に深いモデルにおいてReLUよりも良好な勾配フローを実現し、精度の向上に貢献します。
AIにおける実世界の応用#
活性化関数の選択は、日常業務に導入されるAIシステムの性能と推論レイテンシに直接影響します。
-
小売商品の物体検出: 自動レジシステムでは、物体検出モデルがコンベヤーベルト上の商品を識別します。隠れ層では、ReLUやSiLUのような効率的な関数を使用して、視覚的特徴を迅速に処理します。出力層はクラス(例: 「りんご」「シリアル」)とバウンディングボックスの座標を決定し、システムが自動的に会計を集計できるようにします。これは、速度と顧客満足度を確保するための小売業におけるAIにとって重要です。
-
感情分析: 自然言語処理(NLP)では、モデルが顧客レビューを分析して満足度を評価します。ネットワークはテキストデータを処理し、最終層でSigmoid関数を使用して、0(否定的)から1(肯定的)までの感情スコアを出力する場合があります。これにより、企業は機械学習(ML)を使用して、大規模に顧客からのフィードバックを把握できます。
実装例#
PyTorchライブラリを使用して、さまざまな活性化関数がデータをどのように変換するかを可視化できます。次のコードスニペットでは、ReLU(負の値を0にする)とSigmoid(値を押しつぶす)の違いを示します。
import torch
import torch.nn as nn
# Input data: negative, zero, and positive values
data = torch.tensor([-2.0, 0.0, 2.0])
# Apply ReLU: Negatives become 0, positives stay unchanged
relu_output = nn.ReLU()(data)
print(f"ReLU: {relu_output}")
# Output: tensor([0., 0., 2.])
# Apply Sigmoid: Squashes values between 0 and 1
sigmoid_output = nn.Sigmoid()(data)
print(f"Sigmoid: {sigmoid_output}")
# Output: tensor([0.1192, 0.5000, 0.8808])関連する概念との違い#
学習パイプライン内の他の数学的構成要素と活性化関数を区別することが重要です。
- 活性化関数と損失関数の違い: 活性化関数はフォワードパス中に動作し、ニューロンの出力を調整します。平均二乗誤差などの損失関数は、フォワードパスの終了時に予測と実際の目標値の誤差を計算します。
- 活性化関数と最適化アルゴリズムの違い: 活性化関数が出力の構造を定義する一方で、オプティマイザー(Adamや確率的勾配降下法など)は、損失関数によって計算された誤差を最小化するためにモデルの重みをどのように更新するかを決定します。
- 活性化関数と転移学習の違い: 活性化関数は、ネットワークのレイヤー内にある固定された数学的演算です。転移学習は、事前学習済みモデルを新しいタスクに適応させる手法であり、多くの場合、元のアーキテクチャの活性化関数を維持したまま、Ultralytics Platformを介してカスタムデータセット上で重みをファインチューニングします。
これらの関数がより大規模なシステムにどのように組み込まれるかをさらに詳しく知るには、非線形活性化に関するPyTorchドキュメントを確認するか、コンピュータービジョンタスクが特徴抽出でこれらの関数にどのように依存しているかをご覧ください。









