知識の蒸留---学習ノート

知識の蒸留(位置決め蒸留と分類蒸留)

1. 知識の蒸留とは

	知识蒸馏指的是模型压缩的思想,通过使用一个较大的已经训练好的网络去教导一个较小的网络确切地去做什么。
	蒸馏的核心思想在于好模型的目标不是拟合训练数据,而是学习如何泛化到新的数据。所以蒸馏的目标是让学生模型学习到教师模型的泛化能力,理论上得到的结果会比单纯拟合训练数据的学生模型要好。
	在蒸馏的过程中,我们将原始大模型称为教师模型(teacher),新的小模型称为学生模型(student),训练集中的标签称为hard label,教师模型预测的概率输出为soft label,temperature(T)是用来调整soft label的超参数。
	![在这里插入图片描述](https://img-blog.csdnimg.cn/4cd905865a37452dbae3b34466e861b9.png)

2. なぜ知識の蒸留を行うのか

トレーニングと展開に使用されるモデルには一定の不一致があります。
トレーニング プロセスでは、非常に大規模で冗長性の高いデータ セットから情報を抽出するために、複雑なモデルと大量のコンピューティング リソースを使用する必要があります。実験では、最良の結果が得られるモデルは大規模であることが多く、複数のモデルのアンサンブルによって得られることもあります。ただし、大規模なモデルはサービスにデプロイするのが不便であり、一般的なボトルネックは次のとおりです:
• 推論速度が遅い
• デプロイメント リソース (メモリ、ビデオ メモリなど) に対する高い要件
• デプロイメント中に、レイテンシとコンピューティング リソースに厳しい制限がある。
そのため、モデルの圧縮(性能を確保しつつモデルのパラメータ数を減らすこと)が重要な課題となっています。「モデル蒸留」はモデル圧縮の手法です。

3. 知識蒸留の理論的基礎

教師-生徒モデル: 教師は「知識」の輸出者であり、生徒は「知識」の受信者です。
知識蒸留のプロセスは 2 つの段階に分かれています。
• オリジナル モデルのトレーニング:
比較的複雑なモデルを特徴とする「教師モデル」Net-T をトレーニングします。「教師モデル」はモデル アーキテクチャに制限を課しません。唯一の要件は、ROC/mAP/mIoU インジケーターに
明らかな偏りがないことです。
• 簡素化されたモデル トレーニング:
「スチューデント モデル」Net-S をトレーニングします。これは、少数のパラメーターと相対的なパラメータを持つ単一モデルです。シンプルなモデル構造。同様に、
たとえば、分類モデルは、ソフトマックス後の対応するカテゴリの確率値を出力することもできます。

4. 知識の蒸留のポイント

(1) ネットワーク容量を増やすことで強い汎化能力を持ったモデルを得る:
訓練データやテストデータなど、ある問題に属するデータすべてに入力と出力の関係をよく反映させることができる。問題。問題の不明なデータ。
(2) Net-T を使用して Net-S を抽出およびトレーニングすると、Net-S に Net-T の汎化能力を直接学習させることができます。
(3) 一般化能力を伝達する簡単かつ効率的な方法は、
ソフトマックス層によって出力されるカテゴリの確率を「ソフト ターゲット」として使用することです
[KD トレーニング プロセスと従来のトレーニング プロセスの比較]:
従来のトレーニング プロセス(ハード ターゲット): グランド トゥルースの最尤度、クロス エントロピーと最尤の関係を求める
KD トレーニング プロセス (ソフト ターゲット): 大規模モデルのクラス確率をソフト ターゲットとして使用
(4) 最尤関数
ここに画像の説明を挿入

(5) KL ダイバージェンスは、
2 つのサブディビジョン P と Q の間の距離を測定するために使用されます。
ここに画像の説明を挿入

(6) クロスエントロピーとエントロピー
ここに画像の説明を挿入

(7) 相互エントロピー損失関数

ここに画像の説明を挿入

5. KD トレーニングプロセスがより効果的である理由

ソフトマックス層の出力には、正の例に加えて、負のラベルにも多くの情報が含まれます。たとえば、一部の負のラベルの確率が他の負のラベル (BMW、ウサギ、ゴミ収集車) よりもはるかに大きいなどです。
従来のトレーニング プロセス (ハード ターゲット) では、ワンホット エンコード後にすべてのネガティブ ラベルが 0 に変換されるため、ネガティブ ラベルが持つ情報は破棄されます。最終的に、Net-T は陽性サンプルの情報を抽出して陰性サンプルをトレーニングするだけです。
ここに画像の説明を挿入
(従来のトレーニングプロセスでは、ワンホット後に陽性サンプルの情報のみが保持されます)
、KD トレーニング方法ではワンホットエンコーディングを使用しないため、各サンプルの情報が保持されるため、もたらされる情報量が増加します。 Net-Sへの変換能力は従来のものよりも優れています トレーニング方法
ここに画像の説明を挿入
(KDトレーニングプロセス、すべての陰性サンプルの情報を保持)

例:
手書き数字認識タスク MNIST には、10 個の出力カテゴリがあります。入力の「2」が「3」により似ていると仮定すると、softmax の出力値の「3」に対応する確率は 0.1 ですが、他の負のラベルに対応する値は非常に小さく、もう一方の「2」は「7」に似ており、「7」は確率 0.1 に相当します。2つの「2」に対応するハードターゲットの値は同じですが、ソフトターゲットの値が異なることから、ソフトターゲットの方がハードターゲットよりも多くの情報を含んでいることがわかります。そして、ソフトターゲット分布のエントロピーが比較的高い場合、ソフトターゲットに含まれる知識はより豊富になります。
ここに画像の説明を挿入

6.「温度」によるソフトマックス

まず元のソフトマックス関数を確認します。ここに画像の説明を挿入

しかし、ソフトマックス層の出力値をソフトターゲットとして直接使用すると、別の問題が発生します。ソフトマックス出力の確率分布エントロピーが比較的小さい場合、負のラベルの値は 0 に非常に近くなり、損失関数への寄与は非常に小さく、小さいか無視できるほどです。そこで、変数「温度」が役に立ちます。
次の式は、温度変数を追加した後のソフトマックス関数です。
ここに画像の説明を挿入

ここで T は温度です。
元のソフトマックス関数は、T=1 の特殊なケースです。T が高くなるほど、ソフトマックスの出力確率分布は滑らかになり、分布のエントロピーが大きくなり、負のラベルによって運ばれる情報が相対的に増幅され、モデルのトレーニングでは負のラベルにさらに注意が払われます。
ここに画像の説明を挿入

7. 知識蒸留の具体的手法(分類ネットワーク)

1. 一般知識の蒸留方法:
(1) 教師ネットワーク Net-T をよく訓練する; 
(2) 高温 T で、Net-T の知識を Net-S に蒸留する
 Net-T を訓練するプロセスは非常に簡単です、詳細は以下で説明します。第 2 ステップである高温蒸留のプロセスについて話します。高温蒸留プロセスの目的関数は、
蒸留損失 (ソフト ターゲットに対応) とスチューデント損失 (ハード ターゲットに対応) によって重み付けされます。回路図 例:
ここに画像の説明を挿入

2. 高温蒸留プロセス
(1) 損失関数:
ここに画像の説明を挿入

a) 損失関数の最初の部分である
Net-T と Net-S は同時に転送セットに入力され (Net-T のトレーニングに使用されたトレーニング セットはここで直接再利用できます)、ソフトマックス分布
( Net-T によって生成された (高温) が
ソフト ターゲットとして使用され、同じ温度 T での Net-S のソフトマックス出力
とソフト ターゲットのクロス エントロピーが損失関数の最初の部分になります。ここに画像の説明を挿入

b) 損失関数の 2 番目の部分は、
T=1 の条件下での Net-S のソフトマックス出力であり、グラウンド トゥルースのクロス エントロピーは、損失関数の 2 番目の部分です。ここに画像の説明を挿入

c) 損失の 2 番目の部分
Net-T にも一定のエラー率があるのはなぜですか。グランド トゥルースを使用すると、エラーが Net-S に伝播する可能性を効果的に減らすことができます。例えば、教師の知識は生徒の知識をはるかに上回っていますが、間違いを犯す可能性は依然としてあります。このとき、生徒が教師の指導以外で同時に標準解答を参照できれば、効果的にミスを減らすことができます。 「偏りのある」可能性
d) 損失分割分析
ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

(2) 損失関数の導出:

ここに画像の説明を挿入
ここに画像の説明を挿入

8. ロケーション蒸留(LD)

1. ポジショニングの蒸留が存在する理由:
bbox 分布とポジショニングの曖昧さ
LD と言えば、主に GFocalV1 (NeurIPS 2020) [1] と Offset-bin (CVPR 2020) [2] に由来する bbox 分布モデリングについて話さなければなりません。 2枚の紙。
bbox の表現は通常 4 つの値であることがわかっています。1 つは FCOS の点から 4 つの辺までの距離 (tblr)、もう 1 つはアンカー ベースの検出器で使用されるオフセット、つまりアンカー ボックスから 4 つの辺までの距離です。ボックスの GT マッピング (エンコードされた xywh)。
GFocalV1 は tblr 形式の bbox の bbox 分布をモデル化し、Offset-bin はエンコードされた xywh 形式の bbox 分布をモデル化します。これらの共通点は、bbox 回帰を分類問題として扱おうとすることです。この利点は、bbox の位置の曖昧さをモデル化できることです。
ここに画像の説明を挿入

次に、n 個の確率値を使用してエッジを記述します。これにより、モデルによる位置のあいまい推定が示されます。よりシャープな分布は、この位置に曖昧性がほとんどないことを示します (象の上部境界など)。平坦な分布はこの位置を示しますが、強いあいまいさがあります (象の下限)。もちろん、bbox 分布の平坦性だけでなく、形状も単峰性、双峰性、さらには多峰性に分類できます。
2. 位置決めの蒸留:
LD の考え方は自明です。bbox の 1 辺は n ロジットであり、bbox には 4 つのロジットがあります。各関数は温度を伴うソフトマックス関数に作用して、位置決めの知識を和らげます。次に、同じ KL 損失で、生徒の bbox 分布を教師の bbox 分布に適合させます。
LD の有効性を検証するために、まず検出器の正の位置、つまり bbox 回帰が実行される場所で LD を実行します。大型モデルの教師は 24 エポックでトレーニングされた高精度検出器 (ResNet-101 など) であり、小型モデルの生徒は ResNet-50 です。COCO データセットでは、GFocalV1 に基づいて 1.0AP 増加するには温度をわずかに調整するだけでよく、特に AP75 の改善が最も顕著であり、LD が実際に測位精度を大幅に向上させたことを示しています。
ここに画像の説明を挿入

位置決め蒸留 LD と分類蒸留 KD は式の点で完全に一致しており、両方とも知識伝達のためのヘッドの出力ロジットを目的としており、ターゲット検出知識蒸留のための統一ロジット模倣フレームワークを提供します。

9. 特徴マップの蒸留

1. マップ蒸留の理由と特徴:
分類 KD の非効率:
多くの以前の研究で、分類 KD の蒸留効率が低い (上昇点が低い) ことが指摘されています。これには主に 2 つの側面があります。異なるデータセットでは、カテゴリーの数
が変更すると、カテゴリが少なくなると、学生にあまり有益な情報が提供されなくなる可能性があります。
長い間、ロジット模倣は分類ヘッドでのみ実行でき、位置決めヘッドでは実行できませんでした。当然、位置決めの知識伝達の重要性が無視されます。
これら 2 つの理由から、人々はもう 1 つの有望な知識抽出方法である特徴模倣に注目しました。この手法は主に FitNet からインスピレーションを得たもので、一言で言えば、分類頭部でロジット模倣を行うだけでなく、L2 損失を最小限に抑えることで、生徒が中間の隠れ層 (特徴マップ) に教師を当てはめることができます。
したがって、次のターゲット検出知識の抽出フレームワークが形成されます。
ここに画像の説明を挿入

分類ヘッドはロジット模倣 (分類 KD)、特徴マップは特徴模倣 (教師と生徒の特徴マップ間の L2 損失)、位置決めヘッドは擬似 bbox 回帰、つまり教師予測ボックスは追加の予測ボックスとみなされます。回帰ターゲット。
特徴の模倣では、教師と生徒の特徴マップに監視が課されます。最も一般的な方法は、最初に生徒の特徴マップのサイズを教師の特徴マップと合わせてから、FitNet (ICLR など) のいくつかの関心領域を蒸留領域として選択することです。 2015) [3] 画像全体で蒸留; Fine-Grained (CVPR 2019) [4] いくつかのアンカー ボックスの位置で蒸留; DeFeat (CVPR 2021) [5] GT ボックス内に小さな損失ウェイトを使用し、 GT ボックスの外側の損失重量が大きい場合、または GI 模倣の動的蒸留面積 (CVPR 2021) [6] ですが、どの領域が選択されたとしても、最終的に 2 つの L2 損失は蒸留面積で計算されます 2。 . 特徴模倣の利点
:
マルチタスク学習フレームワークでは、特徴マップはツリーのルートに相当し、下流の各ヘッドはツリーの葉に相当します。この場合、特徴マップには明らかにすべてのリーフに必要な知識が含まれています。特徴の模倣を実行すると、当然、分類知識と位置情報が同時に伝達されますが、分類 KD では位置知識は伝達できません。
3. 特徴模倣の欠点:
答えは当然、蒸留エリアの各場所で分類知識と位置決め知識を同時に転送することになります。
前後を比べてみると、一見矛盾していませんか?説明しましょう。
分類知識は、ローカリゼーション知識とは異なる方法で配布されます。この点は、Sibling Head (CVPR 2020) [7] などの以前の著作でも言及されています。
2 種類の知識の分布は異なるため、当然のことながら、分類知識と位置知識を同時に転送することは有益ではありません。一部の地域は分類学的知識の伝達にのみ有益である可能性が高く、また一部の地域は局所的な知識の伝達にのみ有益である可能性もあります。言い換えれば、地域の状況に応じて知識を分割して征服し、伝達する必要があります。これは明らかに、機能の模倣ではできないことです。なぜなら、それは混合知識を伝達するだけだからです。
ここに画像の説明を挿入

そのため、私たちはマルチタスク学習を使用して知識を自然にさまざまなタイプに分離し、これにより特定の領域で知識の蒸留を選択的に実行できるようにします。この目的を達成するために、分割と征服に役立つ VLR (Valuable Localization Region) の概念を導入します。
ここに画像の説明を挿入

以前の特徴模倣法とは異なり、私たちの蒸留は 2 つの領域に分割されます。
主蒸留領域 (主蒸留領域): ラベルの割り当てによって取得された検出器の正の位置。
VLR: 一般的なラベル割り当て方法と似ていますが、メイン領域を含む領域が大きくなりますが、メイン領域が削除されます。VLR は Main 領域の外側への拡張とみなすことができます。

おすすめ

転載: blog.csdn.net/weixin_43391596/article/details/128903746