DeLighT: 深く軽量な Transformer

DELIGHT: 深く軽量な変圧器

論文: https://arxiv.org/abs/2008.00623

コード: https://github.com/sacmehta/delight

1 はじめに

この論文では、より深く軽量な Transformer-DeLighT を提案します。DeLighT は、各 Transformer ブロックにパラメーターをより効率的に割り当てます。

(1) DeLighT 変換を使用して、ディープで軽量な変換を行います。

(2) Block-wise Scaling を使用してブロックを交差させ、入力の近くでより浅く狭い DeLighT ブロックを許可し、出力の近くでより広くて深い DeLighT ブロックを許可します。

全体として、DeLighT ネットワークは標準の Transformer よりも 2.5 ~ 4 倍深くなりますが、パラメーターと操作は少なくなります。機械翻訳および言語モデリング タスクに関する実験では、DeLighT がパラメーターの数を平均 2 ~ 3 倍削減し、ベースライン Transformer のパフォーマンスを向上させることが示されています。

2. 何をしても

2.1 モデルのスケーリング

モデルのスケーリングは、シーケンシャル モデルのパフォーマンスを向上させる標​​準的な方法です。モデルのサイズは、幅スケールで増加し、奥行きスケールでより多くのブロックを積み重ねます。どちらの場合 (およびその組み合わせ) でも、ネットワークの各ブロックのパラメーターは同じであり、最適ではないソリューションにつながる可能性があります。シーケンス モデルのパフォーマンスをさらに向上させるために、[1] ではブロック スケーリングを導入しています。これにより、可変サイズのブロックを設計し、ネットワーク内でパラメーターを効率的に分散できます。

この論文の調査結果は、次のことを示しています。

入力に近い浅くて狭い DeLighT ブロックと、出力に近い深くて幅の広い DeLighT ブロックが最高のパフォーマンスを発揮します。
モデル スケーリングのみを使用する場合と比較して、ブロック スケーリング ベースのモデルはより優れたパフォーマンスを実現できます。
畳み込みニューラル ネットワーク (CNN) は、入力に近い浅くて狭い表現と、出力に近い深くて広い表現を学習することもできます。各畳み込み層で固定数の演算を実行する CNN とは異なり、提案されたブロック スケーリングでは、各層とブロックで可変数の演算を使用します。

2.2 改善されたシーケンスモデル

重要な仕事:

(1) 精度を向上させるために、より適切なマーカー レベルの表現 (BPE を使用するなど)、適応型の入力と出力、および定義を使用します。

(2) 圧縮、枝刈り、蒸留で効率化

私たちの仕事が最も近いのは、変換の定義です。これは、「拡大縮小」戦略を使用して表現を学習します。DeFINE 変換 (図 1c) と DeLighT 変換 (図 1d) の主な違いは、DeLighT 変換が拡張レイヤーと縮小レイヤーのパラメーターをより効率的に分散することです。

3.ディライトトランスフォーマー

標準の Transformer ブロックを図 (a) に示します。

これらには、クエリ、キー、値のペアを使用したシーケンス トークン間の関係のモデル化、フィードフォワード ネットワーク (FFN) を使用したより広範な表現の学習が含まれます。

入力に ​​3 つのプロジェクションを適用してクエリ、キー、および値を取得することにより、マルチヘッドの注意が得られます。各プロジェクションは h 個の線形レイヤー (またはヘッド) で構成され、次元入力は 1 次元空間、つまりヘッド次元にマッピングされます。

FFN は、次の 2 つの線形レイヤー操作によって行われます。

ステップ 1: 次元拡張

ステップ 2: サイズの縮小

Transformer Block の深さは 4 です。一般に、Transformer ベースのネットワーク設計では、ネットワークの容量と深さを増やすために Transformer Block をスタックします。

3.1デライト

図 1b に示すように、DeLighT 変換は、最初に次元入力ベクトルを高次元空間にマッピングし、次に N 層グループ変換を使用して次元出力ベクトル (次数削減) に縮小します。

拡大縮小段階では、DeLighT 変換はグループ線形変換 (GLT) を使用します。これは、線形変換よりも効率的な、入力の特定の部分から出力を導出することによってローカル表現を学習するためです。グローバルな表現を学習するために、DeLighT 変換は特徴変換を使用して、畳み込みネットワークのチャネル変換と同様に、グループ線形変換の異なるグループ間で情報を共有します。

Transformer の表現力と容量を増やす標準的な方法は、入力次元 dm を増やすことです。ただし、直線的な増加は、標準の Transformer ブロック (シーケンスの長さがある場所) のマルチヘッド アテンションの複雑さも増加させます。対照的に、DeLighT ブロックの表現力と容量を増やすために、拡張ステージと収縮ステージを使用して、中間の DeLighT トランジションの深さと幅を増やします。これにより、DeLighT はより小さなサイズとより少ない操作で注意を計算できます。

DeLighT 変換は、5 つの構成パラメーターによって制御されます。

(1) GLT レイヤー数 N (2) 幅乗数 wm (3) 入力次元 dm (4) 出力次元 d0 (5) GLT の最大グループ数

拡張段階: DeLighT 変換は dm 次元の入力を高次元空間d{最大} = wm*dm に射影し、線形層は N/2 層です。

リダクション フェーズでは、DeLighT 変換は残りの NN/2 GLT レイヤーを使用して、d{最大}次元ベクトルを d0 次元空間に射影します。

 3.2 デライトブロック

図 (b) は、効率を改善するために DeLighT 変換を Transformer ブロックに統合する方法を示しています. dm 次元の入力は、最初に DeLighT 変換にフィードバックされ、do <dm の場合、do 次元の出力が生成されます。これらの d0 次元の出力は、単一のヘッドアテンションに供給され、その後に軽量の FFN が続き、それらの間の関係をモデル化します。

DeLighT レイヤーとシングル ヘッド 注: n 個の入力トークンのシーケンスがあり、各トークンの次元が dm であるとします。これらの n dm 次元の入力は、最初に DeLighT 変換にフィードバックされ、do < dm の場合、n の do 次元の出力が生成されます。これらの n do 次元の出力は、3 つの線形レイヤーを使用して同時に射影され、do 次元のクエリ Q、キー K、および値 v が生成されます。次に、スケーリングされた内積の注意を使用して、これらの n 個のトークン間のコンテキスト関係をモデル化します。残差結合を使用できるようにするために、このアテンション操作の do 次元出力は、dm 次元空間に線形に射影されます。

仮説的には、より広範な表現を学習する DeLighT の能力により、複数頭の注意を単一頭の注意に置き換えることができます。標準変換器と DeLighT ブロックで注意を計算する計算コストは​​、それぞれ O(dmn2) と O(don2) です。ここで、do<dm です。したがって、DeLighT ブロックは注意を計算するコストを dm/do の 1 分の 1 に減らします。実験では、do=dm/2 が使用されるため、必要な乗加算演算は Transformer アーキテクチャと比較して 2 分の 1 に削減されます。

軽量 FFN: Transformer の FFN と同様に、このブロックも 2 つの線形レイヤーで構成されます。DeLighT ブロックには DeLighT 変換を使用したより広い表現が既に組み込まれているため、Transformer の FFN レイヤーの機能を反転させることができます。最初のレイヤーは入力の次元を dm から dm/r に縮小し、2 番目のレイヤーは次元を dm/r から dm に拡張します。ここで、r は縮小係数です。軽量 FFN は、FFN のパラメーターと演算の数を rdf/dm の 1 分の 1 に減らします。標準トランスでは、FFNの次元を4倍に拡大。r=4 を使用します。したがって、軽量 FFN は FFN のパラメーターの数を 16 分の 1 に減らします。

DeLighT ブロック スタックには以下が含まれます。

1)、N 個の GLT を使用した 1 つの DeLighT 変換、

2)、キー、クエリ、および値の 3 つの並列線形レイヤー、

3)投影層、

4)、軽量 FFN の 2 つの線形層。

したがって、DeLighT ブロックの深さは N+4 です。DeLighT ブロックは、標準の変圧器 (深さ 4) に比べて深くなっています。

3.3 ブロック単位のスケーリング

シーケンス モデルのパフォーマンスを改善するための標準的なアプローチには、モデル サイズの増加 (幅スケーリング)、より多くのブロックのスタック (深度スケーリング)、またはその両方が含まれます。ただし、このスケーリング変換は、小さなデータセットではあまり効果的ではありません。深さと幅のネットワークを作成するために、モデルはブロック レベルにスケーリングされます。

DeLighT ブロックのスケーリング: DeLighT ブロックは、DeLighT 変換を使用して深度と幅の表現を学習します。その深度と幅は、それぞれ 2 つの構成パラメーターによって制御されます: GLT レイヤーの数 N と幅乗数 wm (図 a)。これらの構成パラメーターを使用すると、入力 dm および出力 do 次元とは関係なく、DeLighT ブロック内の学習可能なパラメーターの数を増やすことができます。このキャリブレーションは、標準の Transformer ブロックでは不可能です。これは、その表現力と容量が入力の関数であるためです (入力の次元 = ヘッドの数 x ヘッドの次元)。ここでは、ブロック単位のスケーリングが導入され、異なるサイズの DeLighT ブロックでネットワークが作成され、入力の近くに浅くて狭い DeLighT ブロックが割り当てられ、出力の近くに深くて広い DeLighT ブロックが割り当てられます。

この目的のために、2 つのネットワーク全体の構成パラメータが導入されています: DeLighT 変換の GLT の最小数 Nmin と最大 Nmax 数。b番目のDeLighTブロックについて、線形スケーリングを使用するDeLighT変換におけるGLTの数Nbおよび幅乗数wmbが計算される。このスケーリングでは、各 DeLighT ブロックの深さと幅が異なります。

Network Depth: Transformer ブロックの深さは 4 に固定されています。したがって、以前の研究では、変圧器ベースのネットワークの深さと変圧器ブロックの数を相関させていました。この論文では、各ブロックのサイズが可変である、より深い表現を学習するための別の視点を提案します。ネットワークの深さを計算するには、コンピューター ビジョンや理論上の機械学習など、さまざまな分野の標準的な定義が使用されます。これらの作業は、ネットワークの深さを連続する学習可能な層 (畳み込み層、線形層、または線形層のグループなど) の数として測定します。同様に、B ブロックを含む DeLighT ネットワークと変換ネットワークの深さは、それぞれ ∑b=0B−1(Nb+4) と 4B です。

4.実験

より良い、より良い、より強力なハハハ

おすすめ

転載: blog.csdn.net/Zosse/article/details/125798438