Yolo 深圳
深セン
今すぐ参加
用語集

スウィグルー

SwiGLUを探求しよう。Ultralytics で採用されている先進的な活性化関数です。そのゲート機構がニューラルネットワークの学習と効率をいかに向上させるかを学びましょう。

SwiGLU(Swish Gated Linear Unit)は、深層機械学習で用いられる従来のフィードフォワードネットワーク(FFN)を強化する、高度な活性化関数およびニューラルネットワーク構成要素である。Swish活性化関数の滑らかで非単調な特性とゲート付き線形ユニット(GLU)機構を組み合わせることで、SwiGLUは動的でデータ依存的な特徴量ルーティングを実現する。 入力に対して線形投影を適用し、一方の分岐をSwish活性化を通過させ、もう一方の線形分岐と要素単位で乗算することで、ネットワークは優れた表現力を獲得します。これにより、最新のAIアーキテクチャは、従来の深層学習モデルで使用される標準的な静的層よりもはるかに効果的に、複雑な非線形依存関係を捉えることが可能となります。

SwiGLUの仕組み

従来のフィードフォワードネットワークは、入力を高次元へマッピングし、基本的な非線形性を適用し、 再び低次元へ投影するだけであるのに対し、SwiGLUは乗法的ゲート機構を導入する。入力は二つの パラメータ化された投影、「ゲート」と「値」に分割される。ゲート分岐は SiLU / Swish関数を用いて活性化される。この関数は小さな負の値を保持し、ほぼ全域で滑らかで非ゼロの導関数を保証する。活性化されたゲートは、値ブランチと要素ごとに乗算される。この動的フィルタリングにより、ニューラルネットワークは情報フローをインテリジェントに制御し、従来のアーキテクチャで一般的な「デッドニューロン」問題を回避すると同時に、モデル学習プロセス中の勾配信号を安定化させる。この概念は、アテンション機構において広く研究されている。

SwiGLUと他の活性化関数の違い

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

実際のアプリケーション

その計算効率と大幅な性能向上により、SwiGLUは現代のAIシステムにおける基盤的構成要素となっている。

PyTorchでのSwiGLUの実装

カスタムネットワークを構築する開発者や、エッジデバイス向けにビジョンモデルを適応させる開発者向けに、 UltralyticsSwiGLUを実装する 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最適化ドキュメントを頻繁に参照します。

Ultralytics YOLOパワーアップ

あなたのプロジェクトに高度なAIビジョンを。あなたの目標に合ったライセンスを今すぐ見つけましょう。

ライセンスオプションを見る