YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

SwiGLU

LLMやUltralytics YOLO26で使用されている高度な活性化関数、SwiGLUを探求しましょう。そのゲートメカニズムがニューラルネットワークのトレーニングと効率をどのように向上させるかを学びます。

SwiGLU (Swish Gated Linear Unit) は、ディープ機械学習で使用される従来のフィードフォワードネットワーク (FFN) を強化する、高度な活性化関数およびニューラルネットワークのアーキテクチャブロックです。Swish活性化関数の滑らかで非単調な特性とGated Linear Unit (GLU) メカニズムを組み合わせることで、SwiGLUは動的でデータ依存の機能ルーティングを提供します。入力に線形射影を適用し、一方のブランチをSwish活性化を介して渡し、もう一方の線形ブランチと要素ごとに乗算することで、ネットワークは優れた表現力を獲得します。これにより、現代のAIアーキテクチャは、古いディープラーニングモデルで使用されていた標準的な静的層よりもはるかに効果的に、複雑な非線形依存関係を捉えることができます。

SwiGLUはどのように機能するか

入力をより高次元にマッピングし、基本的な非線形性を適用し、それを元に戻すだけの従来の順伝播型ネットワークとは異なり、SwiGLUは乗算型ゲーティングメカニズムを導入しています。入力は「ゲート」と「値」の2つのパラメータ化された射影に分割されます。ゲートブランチは、小さな負の値を保持し、ほぼすべての場所で滑らかでゼロ以外の導関数を保証するSiLU / Swish関数を使用して活性化されます。この活性化されたゲートは、値ブランチと要素ごとに乗算されます。この動的なフィルタリングにより、ニューラルネットワークは情報フローをインテリジェントに制御でき、古いアーキテクチャで一般的な「デッドニューロン」の問題を回避しつつ、モデルトレーニングプロセス中に勾配信号を安定させます。これはアテンションメカニズムで広く研究されている概念です。

SwiGLUと他の活性化関数の比較

標準的な活性化関数であるReLUが固定閾値を使用して負の値をゼロにクリップするのに対し、SwiGLUは入力データ自体に基づいて活性化を動的に調整します。GELUがガウス分布下の確率によって入力に重み付けするのに対し、SwiGLUはパラメータ化された線形層を特に活用して、情報のゲーティング方法を学習します。本質的に、SwiGLUは単なる要素ごとの数学的計算ではなく、Transformerブロック内の隠れ層メカニズム全体を置き換える包括的な構造コンポーネントとして機能します。数学的特性の広範な比較については、研究者はしばしば包括的な活性化関数ガイドを参照します。

実際のアプリケーション

その計算効率と著しい性能向上により、SwiGLUは現代のAIシステムにおける基盤コンポーネントとなっています。

PyTorch での SwiGLU の実装

カスタムネットワークを構築したり、エッジデバイス向けにビジョンモデルを適応させたりする開発者向けに、 Ultralyticsプラットフォームは、を介してSwiGLUを実装します。 PyTorch ドキュメント これは簡単です。(あるいは、他のエコシステムの開発者は使用するかもしれません TensorFlowの実装)。以下の簡潔なpythonスニペットは、PyTorchの組み込み機能を使用した基本的なSwiGLUモジュールを示しています。 F.silu 関数:

import torch
import torch.nn as nn
import torch.nn.functional as F


class SwiGLU(nn.Module):
    def __init__(self, in_features, hidden_features):
        super().__init__()
        # SwiGLU requires two projections: one for the gate, one for the value
        self.gate_proj = nn.Linear(in_features, hidden_features)
        self.value_proj = nn.Linear(in_features, hidden_features)
        self.out_proj = nn.Linear(hidden_features, in_features)

    def forward(self, x):
        # Element-wise multiplication of the SiLU-activated gate and the linear value
        hidden = F.silu(self.gate_proj(x)) * self.value_proj(x)
        return self.out_proj(hidden)


# Example usage with a dummy input tensor
module = SwiGLU(in_features=512, hidden_features=1365)
output = module(torch.randn(1, 512))

アクティベーションブロックに対するこの構造的アプローチにより、最先端のニューラルアーキテクチャは、複雑なトレーニングデータからより豊かな表現を抽出し、それが自然言語処理(NLP)またはリアルタイム空間分析に適用されます。効率的なモデルの構築と高速化についてより深く理解するために、開発者はハードウェアのスループットを最大化するために、arXiv上のオリジナルGLUバリアントに関する基礎研究Metaのオープンソースリポジトリ、およびPyTorchの最適化ドキュメントをしばしば参照します。

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

未来の機械学習で、新たな一歩を踏み出しましょう。