SiLU(シグモイド線形関数)活性化関数が深層学習を強化する仕組みを探求しましょう。Ultralytics 精度向上のためにSiLUを標準採用している理由を学びます。
シグモイド線形ユニット(SiLU)は、現代の深層学習アーキテクチャにおいてニューラルネットワークに非線形性を導入するために用いられる極めて効果的な活性化関数である。モデルの各層を通じた情報の処理・伝達方法を決定することで、SiLUはシステムがデータ内の複雑なパターンを学習することを可能にし、従来のステップ関数に代わるより滑らかで洗練された代替手段として機能する。自動活性化関数探索の初期研究における「スウィッシュ」という用語と関連付けられることが多いSiLUは、最先端のYOLO26アーキテクチャを含む高性能コンピュータビジョンモデルの標準となっている。
SiLU関数の本質は、入力値を自身のシグモイド変換で乗算することで動作します。 ニューロンを「オン」と「オフ」の間で急激に切り替える単純な閾値関数とは異なり、 SiLUは滑らかな曲線を提供し、より微妙な信号処理を可能にします。 この数学的構造は、モデル学習プロセスに有益な特徴を生み出します:
SiLUは、精度と効率が最優先される多くの最先端AIソリューションに不可欠です。
SiLUを十分に理解するには、Ultralytics にある他の活性化関数との違いを区別することが有用です。
PyTorch 、異なる活性化関数がデータをどのように変換するかを可視化できます。以下のコードスニペットは、負の値をゼロにするReLUと、負の値のスムーズな流れを可能にするSiLUの違いを示しています。
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_out = nn.ReLU()(data)
print(f"ReLU: {relu_out}")
# Output: tensor([0., 0., 2.])
# Apply SiLU: Smooth curve, small negative value retained
silu_out = nn.SiLU()(data)
print(f"SiLU: {silu_out}")
# Output: tensor([-0.2384, 0.0000, 1.7616])
SiLUは負の値で情報を保持し滑らかな勾配を提供することで、現代のニューラルネットワークの成功に極めて重要な役割を果たしている。YOLO26などのアーキテクチャへの採用は、多様なコンピュータビジョンタスクにおいて最先端の性能を達成する上での重要性を裏付けている。