ご注意くださいこれは、論文「MLPに注意して」をPyTorchで実装したものです。この論文では、ゲーティングを備えた多層パーセプトロン(MLP)ベースのアーキテクチャ(GMLPと名付けられています)を紹介します。ブロックのスタックで構成されています。gMLPモデルベースの自己回帰モデルのトレーニングコードは次のとおりです。ブロック各ブロックは、入力埋め込みに対して次の変換を行います。X∈Rn×dここで、はシーケンスの長さ、ndは埋め込みの次元です。ZZ~Y​=σ(XU)=s(Z)=Z~V​VU学習可能な投影重みの位置と位置s(⋅)は以下に定義するスペーシャル・ゲーティング・ユニットです。s(⋅)の出力次元はの半分になります。ZσはGelUのようなアクティベーション関数です。(エンコーダで必要)トランスアーキテクチャのエンコーダモジュールを使用し、トランスレイヤの代わりにgMLPブロックをプラグします。トークン同士の可視性を制御するブーリアンシェイプマスクです。shortcut#空間ゲートユニットs(Z)=Z1​⊙fW,b​(Z2​)ここでfW,b​(Z)=WZ+b、はシーケンス次元に沿った線形変換で、⊙は要素単位の乗算です。Zチャネル寸法(埋め込み寸法)Z1​Z2​に沿って同じサイズの2つの部分に分割されます。(インfW,b​(⋅))この論文では、重みを小さい値に初期化し、バイアスをに初期化することが重要であると述べています。すれば1、最初のトレーニング中に(s(⋅)分割は別として)同一に近いものになります。fW,b​(⋅)この論文では、バイアスをに初期化することが重要だと指摘しています。トークン同士の可視性を制御するブーリアンマスクです。サイズの最後のディメンションはバッチです。これは他のトランスフォーマー実装にもありますが、互換性のために残されています。batch_size]。この実装ではバッチ内のすべてのサンプルに対して同じマスクしかサポートしないため、バッチディメンションはサイズにする必要があります。self.norm(z2)#ウェイトマトリックスを取得。:seq_len]#ウェイトにマスクをかけます。Wi,j​0もしそうならfW,b​(Z2​)i​、トークンから情報を取得することはないj。