Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

SiLU (Sigmoid Linear Unit)

SiLUはSwishとも呼ばれ、入力にそのシグモイドを掛け合わせることで、滑らかで自己ゲート型の活性化関数になります。数式、由来、ReLUとの比較について解説します。

シグモイド線形ユニット (SiLU) は、SiLU(x) = x · σ(x) と定義される活性化関数です。σはシグモイド関数です。大きな正の入力はほぼそのまま通し、大きな負の入力はほぼゼロにし、その間を滑らかにつなぎます。また、x ≈ −1.278で約−0.278の最小値まで下がります。SiLUはβ = 1のSwishと同じ関数で、2つの名称は同じ意味で使われます。畳み込み型ビジョンモデルで一般的なデフォルトであり、SwiGLUブロックでは、多くの大規模言語モデル (LLM)のフィードフォワード層にも使用されています。

定義と特性#

SiLUは各入力にゲートσ(x)を乗算します。σ(x)は0から1の範囲にあり、入力自体から計算されるため、自己ゲート型と呼ばれます。その導関数はσ(x) · (1 + x · (1 − σ(x)))です。この関数と導関数によって、SiLUにはReLUとは異なる学習時の特性が4つ備わっています。

  • 全域で滑らか: 曲線とその導関数は連続しており、ゼロで折れ曲がりません。そのため、小さな重みの変化は小さな出力の変化につながり、勾配降下法に適しています。
  • 負の入力でも勾配がある: 入力が負のユニットにも小さな勾配が伝わるため、学習を続けられます。入力が負のままのReLUユニットには勾配がまったく伝わらず、学習が永久に止まることがあります。この問題はdying ReLUと呼ばれます。
  • 非単調: xが大きな負の値から約−1.28まで増加すると出力はわずかに低下し、その後は上昇するため、単調な関数ではありません。
  • 下限はあるが上限はない: 出力は約−0.278を下回らず、ReLUと同様に正の入力は飽和せずに通過します。これにより、深いネットワークにおけるシグモイドやtanhの勾配消失を回避できます。

以下のPyTorchコードは、5つの点におけるSiLUとSiLUおよびReLUの勾配を計算します。

import torch
import torch.nn.functional as F

x = torch.tensor([-4.0, -1.28, 0.0, 1.0, 4.0], requires_grad=True)

# 同じ入力に対するSiLU(x) = x * sigmoid(x)とReLUの比較
silu = F.silu(x)
relu = F.relu(x)

# 各活性化関数の入力に対する勾配
silu_grad = torch.autograd.grad(silu.sum(), x)[0]
relu_grad = torch.autograd.grad(relu.sum(), x)[0]

print("SiLU output:  ", [round(v, 4) for v in silu.tolist()])
print("SiLU gradient:", [round(v, 4) for v in silu_grad.tolist()])
print("ReLU gradient:", relu_grad.tolist())

出力にはSiLUの値[-0.0719, -0.2785, 0.0, 0.7311, 3.9281]、SiLUの勾配[-0.0527, -0.0003, 0.5, 0.9277, 1.0527]、ReLUの勾配[0.0, 0.0, 0.0, 1.0, 1.0]が表示されます。−4ではReLUの出力は0で勾配も伝わりませんが、SiLUは−0.0527の勾配を伝えます。−1.28ではSiLUは−0.2785の最小値にあり、勾配はほぼ正確に0です。4ではSiLUの勾配はわずかに1を超えます。

名称の由来#

HendrycksとGimpelは、GELUを紹介した2016年の論文で、x · σ(x)をシグモイド線形ユニットと名付けました。この論文では、GELUより性能は低いものの、通常はReLUやELUより優れた、シグモイドに基づくGELUの類似関数として登場しました。続いてElfwing、Uchibe、Doyaは2017年に、強化学習におけるニューラルネットワークの関数近似にSiLUを使用しました。同年後半、Googleの研究者は活性化関数の自動探索を通じてx · σ(βx)を再発見し、Swishと名付けました。また、ReLUをSwishに置き換えると、Mobile NASNet-AのImageNetトップ1 精度が0.9%、Inception-ResNet-v2では0.6%向上すると報告しました。PyTorchはバージョン1.7で、以前の名称を使ってnn.SiLUを追加しました。

SiLUと他の活性化関数の比較#

  • ReLU: max(0, x)は計算コストが低く、厳密なゼロを出力し、正の入力に対して勾配は常に1です。SiLUは、滑らかさと負の領域での勾配を得る代わりに、要素ごとにシグモイドを1回追加します。
  • GELU: x · Φ(x)です。Φは標準正規累積分布関数を表します。2つの曲線は同じ形状で、スケーリングしたSiLUであるx · σ(1.702x)は、どの点でもGELUを約0.02以内で近似します。BERTやViTなどのTransformerではGELUが一般的であり、CNNベースの検出器ではSiLUのほうがよく使われます。
  • シグモイド: σ(x)単独では入力を0から1の範囲に圧縮し、両端で飽和するため、確率を出力する層として使われます。SiLUではゲートとしてのみ使われます。
  • Hard-Swish: x · ReLU6(x + 3) / 6です。MobileNetV3とともに導入されたSiLUの近似で、シグモイドゲートを区分線形のゲートに置き換え、モバイルハードウェアで指数関数を使わずに済むようにします。
  • SwiGLU: SiLU(xW)に2つ目の射影xVを要素ごとに乗算するゲート付き線形ユニットです。LLaMAや多くのLLMのフィードフォワードブロックを構成します。

SiLUの使用例#

Swishという名称で使われるSiLUは、EfficientNet全体で採用されており、最新のリアルタイム物体検出器でも一般的です。Ultralytics YOLOモデルは、2021年1月にYOLOv5 v4.0でLeakyReLUとHardswishをSiLUに置き換えて以来、SiLUを使用しています。YOLO26では、すべてのConvブロックが畳み込み、バッチ正規化、SiLUで構成されています。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう