【軽量深層学習】知識蒸留とNLP言語モデルの組み合わせ

知識の蒸留

受講生:曽文玄

学校名:中国電子科技大学

日時 2022.3.25~2022.4.3



参考文献: ニューラル ネットワークで知識を抽出する

この論文は、NIPS'14 で発表された知識蒸留の先駆的な研究であり、私たちの研究と研究に非常に値するものです。そこで、私はこの論文から始めて知識の蒸留を学び、次に知識の蒸留を使用して BERT モデルを圧縮する方法を学びました。
ここに画像の説明を挿入

1 知識の定義

知識がモデルのパラメーターである場合、2 つの異なるモデルには 1 対 1 で対応するパラメーターがないため、伝達が困難になります。教師ネットワークの予測結果における各カテゴリの確率の相対的なサイズには、暗黙的に知識が含まれています。これは、この論文では入力ベクトルから出力ベクトルへのマッピングとも呼ばれます。直感的な例を挙げると、車の写真の場合、モデルはすべてのオブジェクトの予測確率を示します.たとえば、確率の一部はバスであり、確率の減少した部分はニンジンです.次に、教師はネットワークは学生にネットワークなどの知識を教えることができます - この写真はバスやニンジンよりも車である可能性が高く、この写真はニンジンよりもバスに似ています. 実際には、知識には相互に関連する正しい情報と誤った情報の両方が含まれていることを示すことです。

2 ソフトターゲット

ここに画像の説明を挿入

ヘビー モデルの汎化能力をスモール モデルに移す 1 つの方法は、ヘビー モデルによって生成されたクラス確率をソフト ターゲットとして使用して、スモール モデルをトレーニングすることです。ソフト ターゲットはより高いエントロピーを含むため、より詳細な情報が提供されますが、ハード ターゲット (ワンホット エンコーディング) はエントロピーが低く、提供される情報が少なくなります。

ソフト/ハードターゲットとは? たとえば、3 カテゴリの問題では、車のハード ターゲットは (0, 0, 1) のように表現され、ソフト ターゲットは (0.1, 0.3, 0.6) のように表されます。明らかに、ソフト ターゲットには、前述の「この写真はニンジンというよりバスに似ている」と同様の相対的な情報など、より多くの情報が含まれています。

ハードロス:
L hard = − 1 N ∑ i = 1 N log ( P ( xi ) ) L_{hard}=-\frac{1}{N}\sum^N_{i=1} log(P(x_i) )Lハード_ _ _=N1私は= 1Nlog ( P ( x _ _) )
ソフトロス:
L soft = − 1 N ∑ i = 1 N ∑ j = 1 N yijlog ( P ( xij ) ) L_{soft}=-\frac{1}{N}\sum^N_{i=1 }\sum^N_{j=1} y_{ij} log(P(x_{ij}))Ls of t _=N1私は= 1Nj = 1Nylog ( P ( x _ _) )

3 T-ソフトマックス

ソフトマックスの役割を確認してください.分類タスクを実行する場合、すべてのカテゴリの確率はソフトマックスによって [0,1] の範囲に圧縮され、確率値の合計は 1 になります. Softmax 式は次のとおりです。

qi = exp ( zi ) ∑ jexp ( zj ) q_i=\frac{exp(z_i)}{\sum_j exp(z_j)}q=e x p ( z)e x p ( z)
T-Softmax は softmax に基づいており、次のように各入力 z を T で削除します。

qi = exp ( zi / T ) ∑ jexp ( zj / T ) q_i=\frac{exp(z_i/T)}{\sum_j exp(z_j/T)}q=e x p ( z/ T )e x p ( z/ T )
ここで、T は蒸留温度です。T=1 の場合はソフトマックスです。T>1 の場合はソフト ターゲットが得られます。

結論:Tが大きいほど予測結果が柔らかくなり、各カテゴリの確率値が近いため、より多くの知識を含んでいます。

ここに画像の説明を挿入

4 知識の蒸留

4.1 蒸留工程

下の図は, 知識の蒸留のプロセスを示しています. 教師ネットワークは t の温度でトレーニングされてソフトラベルが取得されます. 生徒ネットワークは t の温度でトレーニングされてソフト予測が取得されます. ソフトラベルとソフト予測を適合させることにより,生徒は、教師のネットワークから学ぶように導かれます インターネットから学んだ知識** (ソフトラベルのアナロジーは、教師の教訓と行為です) . さらに、温度が 1 のときにスチューデント ネットワークをトレーニングしてハード予測、つまりワンホット エンコーディングを取得し、クロス エントロピー損失関数とハード ラベルを使用してスチューデント ロスを計算します (同様に、ハード ラベルは教科書の知識です)。 )** .

ここに画像の説明を挿入

ここに画像の説明を挿入

4.2 損失関数

L = γ L ハード + ( 1 − γ ) T 2 L ソフト L = \gamma L_{hard} + (1-\gamma)T^2 L_{soft}L=γL _ハード_ _ _+( 1c ) T2L _s of t _

ソフト損失でT 2 T^2を掛ける必要があることに注意してくださいT2.蒸留に使用する温度を変更しても、ハード ターゲットとソフト ターゲットの相対的な寄与はほぼ同じままでした。

ここに画像の説明を挿入

4.3 予測値マッチングは知識蒸留の特別な形態

論文Model Compression (SIGKDD'06)では、著者は知識伝達を通じてモデルの圧縮を実現しました. 詳細には、教師ネットワークと生徒ネットワークのロジットを使用して MSE を取得しました。この記事では、著者は、この圧縮方法は蒸留の特殊なケースであると述べています。

∂ C ∂ zi = 1 T ( qi − pi ) = 1 T ( ezi / T ∑ jezj / T − evi / T ∑ jevj / T ) \frac{\partial C}{\partial z_i}=\frac{1} {T}(q_i-p_i)=\frac{1}{T} (\frac{e^{z_i/T}}{\sum_j e^{z_j/T}} - \frac{e^{v_i}/ T}{\sum_j e^{v_j}/T})∂z _∂C _=T1( qp)=T1(ez/ Tez/ Tev/ Tev/ T)
其中, q i q_i qスチューデント ネットワークによって予測される事後確率pi p_ip教師ネットワークによって予測される事後確率です。

蒸留温度 T が十分に高いと仮定すると、テイラー展開によると、ex = 1 + xe^x=1+xeバツ=1+バツ

∂ C ∂ zi = 1 T ( qi − pi ) = 1 T ( 1 + zi / TN + ∑ jzj / T − 1 + vi / TN + ∑ jvj / T ) \frac{\partial C}{\partial z_i} =\frac{1}{T}(q_i-p_i)=\frac{1}{T}(\frac{1+{z_i}/T}{N+\sum_j {z_j}/T}-\frac{1 +{v_i}/T}{N+\sum_j {v_j}/T})∂z _∂C _=T1( qp)=T1(N+z/ T1+z/ TN+v/ T1+v/ T)
異なるサンプルのロジット期待値が 0 であると仮定すると、

∂ C ∂ zi ≈ 1 NT 2 ( zi − vi ) \frac{\partial C}{\partial z_i} \approx \frac{1}{NT^2}(z_i-v_i)∂z _∂C _NTT_21( zv)要約すると、蒸留温度が十分に高く、ロジットの期待値が 0 の場合、知識蒸留は MSE = 1 / 2 ( zi − vi ) 2 MSE=1/2(z_i-v_i)^2 を
最小化することと同等です。MSE _ _=1 / 2 ( zv)2

しかし実際には、温度が無限大になることはありません。下の図からわかるように、温度が低すぎると小さいロジットに対応するソフトマックス値が0に抑えられ、発言権がなくなり、蒸留の効果が発揮できなくなります。高すぎると、すべてのカテゴリの確率が収束し、カム ノイズが発生する可能性があります。
ここに画像の説明を挿入

これは経験的に判断する必要がありますが、一般的には中間温度が最も効果的です。

ここに画像の説明を挿入

4.4 知識蒸留の簡易計算

ここに画像の説明を挿入

5 実験計画

学生ネットワークがゼロサンプル学習を達成できることは驚くべきことです.たとえば、学生ネットワークはCNNで翻訳不変性の知識を見たことはありませんが、教師ネットワークの知識移転を通じて学習することができます. 学生ネットワークのトレーニングから数字の 3 を削除しても、学生ネットワークは教師ネットワークの知識から 3 の特性を学習することができます (著者が手動でバイアスを調整しました)。

6 知識蒸留の発展方向

  • ティーチングアシスタントの配置、複数の教師の配置、複数の学生の配置
  • 知識表現の表現(中間層)
  • マルチモーダル、ナレッジ グラフ、事前トレーニング済みの大規模モデルの抽出

7 NLP分野における知識の蒸留に関する研究

このパートでは、いくつかの非常に古典的な BERT 蒸留論文を選択し、BERT 蒸留のアイデアを研究しました. 以下は、私の学習記録の一部です.

7.1 蒸留 BiLSTM

链接: BERT から単純なニューラル ネットワークへのタスク固有の知識の抽出

方法:教師モデルは微調整 BERT-LARGE モデルを使用し、生徒モデルは BiLSTM+ReLU を使用し、抽出対象は生徒モデルとハード ラベルのクロス エントロピー + BERT-LARGE のロジット間の MSE です。
ここに画像の説明を挿入

7.2 BERT-PKD

链接: bertモデル圧迫のための患者知識蒸留(ACL'19)

方法:モデルの最終層から直接蒸留する代わりに、教師モデルの中間層から知識を抽出して蒸留しますこの論文では、Skip-k 層の蒸留方法と最後の k 層の蒸留方法の 2 つの異なる蒸留方法が提案されています。

ここに画像の説明を挿入

学生モデルと教師モデルの予測値間のギャップは、交差エントロピー損失関数によって定義されます。

ここに画像の説明を挿入

学生に教師を模倣させることに加えて、タスク依存のクロスエントロピー損失関数が定義されています。

ここに画像の説明を挿入

さらに、標準化された隠れ状態の MSE 損失も損失関数として定義されます。

ここに画像の説明を挿入

7.2 蒸留BERT

链接: バートの蒸留バージョンである Ditilbert: 小さく、速く、安く、軽く (NIPS'19)

方法:事前トレーニング段階では、知識蒸留技術を使用して BERT を圧縮します. 事前トレーニング中に大規模モデルから学習した帰納的バイアスを利用するために、言語モデリング、蒸留、およびコサイン距離損失を組み合わせた 3 値損失を導入します. .

ここに画像の説明を挿入

7.3 タイニーバート

链接:Tinybert: Distilling bert for Natural Language Understanding (ACL'20)

方法: 2 段階の学習フレームワークを提案し、教師モデルを事前トレーニング段階と微調整段階でそれぞれ蒸留し、パラメーター削減 7.5 倍、速度向上 9.4 倍の 4 層 BERT を作成します。得られ、効果は教師モデルの 96.8% に達することができます.この方法でトレーニングされた 6 層モデルは、BERT ベースにさえ近く、BERT-PKD と DistillBERT を上回っています。この論文では、MSEを損失関数として使用して、教師と生徒の注意行列に適合させる、注意行列の蒸留を提案しています。

ここに画像の説明を挿入

同時に、埋め込み層と隠れ層の両方で知識の蒸留が実行され、MSE も損失関数として使用されます。

ここに画像の説明を挿入

最後に、交差エントロピー損失関数を使用して、教師モデルと生徒モデルの間のロジット ギャップを測定します。
ここに画像の説明を挿入

上記の蒸留目標に基づいて、蒸留層に従って、使用する蒸留損失を決定します。

ここに画像の説明を挿入

7.4 モバイルBERT

链接: MobileBERT:リソースが限られているデバイス向けのタスクに依存しないコンパクトなBERT (ACL'20)

方法:自己注意とフィードフォワード ニューラル ネットワークのボトルネック構造とバランス メカニズムを採用して、教師モデルから生徒モデルに知識を抽出し、モデルの幅を狭くします。(具体的な注意事項は、前のドキュメントの論文の理解セクションに記載されています)

ここに画像の説明を挿入

7.5 ミニLM

链接: MiniLM: Deep Self-Attention Distillation for Task-Agnostic Compression of Pre-Trained Transformers (NIPS'20)

方法:前回の記事では、埋め込み層から隠れ層、注目層、最後に予測層まで、モデル全体を抽出しましたが、この記事でも新しい抽出点を見つけて、非常に良い結果を達成しました。この記事では、自己注意モジュールを抽出し、新しい深い自己注意知識として、値間のスケーリングされた内積 (値関係) を提案します。さらに、この記事ではティーチャー アシスタントを使用して、大きなモデルの抽出を支援します。

ここに画像の説明を挿入

自己注意マトリックス間の関係は、KL ダイバージェンスによって測定されます。

ここに画像の説明を挿入

以下は、この記事で定義されている値と関係です。これは、実際には値のスケーリングされた内積であり、KL ダイバージェンスを使用して 2 つの VR 行列を測定します。

ここに画像の説明を挿入

結論:この記事では、「レイヤー ツー レイヤーよりも蒸留の最終層のみが優れており、2 つのモデルの各層に厳密に対応する必要はありません。蒸留の最終層だけでも、パフォーマンスを向上させることができます」と述べています。生徒がより強力な一般化能力を持つことができるようにします。」

8 知識の蒸留についての私の考え⭐

  • これまでの論文から、中間層を辛抱強く蒸留すれば良い結果が得られると信じている論文もあれば、最後の層だけが良い結果をもたらすと主張する論文もあることが分かります。いずれも論文で正当化されているので、特定の層を適応的に選択して蒸留する方法は、考える価値のある方向性だと思います。
  • 最近は AutoML の AutoLoss 関連の論文も研究しています. いくつかのアイデアは、学生ネットワーク (実際のタスクを完了するモデル) を教師ネットワーク (補助タスクの完了) を介して最適な損失関数を学習するように誘導することです. このアイデアを実現する方法はたくさんありますが、この「教師が生徒を導き、目標とする課題をよりよく達成できるように導く」というアイデアは有望、つまり、さらに検討する価値があると思います。
  • 私が読んだ論文では、ほとんどが「教師から生徒への知識の伝達」であり、「教える、教える」という観点から改善できないかと考えている. 教師に何かを与える、教師に真実を教える. このアプローチは、「教師モデルを取り除き、2 つ以上のモデルを使用して互いに学び、促進する」と説明されているようです。

前回のまとめは以前に書いたもので、2 週間後の補足です。
後になって、多くの論文が、カリキュラム学習 (コース学習) の導入、疑似ラベルの生成 (疑似ラベルの生成)、一部の論文では、自己蒸留、ツイン ネットワーク相互学習、多段蒸留などの技術が使用されています。
2 つのモデルの相互学習と相互蒸留のプロセスについては、Mutual-Distillationおよび関連する方法を具体的に提案した論文もあり、蒸留する層を適応的に選択する問題については、 Attention ベースの蒸留層選択スキームを具体的に作成した論文もあります。タスク内の特定のレイヤーのセマンティクスが考慮されます。

おすすめ

転載: blog.csdn.net/qq_16763983/article/details/124430975
おすすめ