mei28 / TSUNDOKU

読んだ論文をまとめていく
1 stars 0 forks source link

Knowledge distillation: A good teacher is patient and consistent #42

Open mei28 opened 2 years ago

mei28 commented 2 years ago

一言で言うと

知識蒸留において,効果的な教師となる条件について研究を行う.効果的な教師の条件として,一貫して(consisitent), 忍耐強い(patient)な教師が重要であることを見つけた.また知識蒸留においては,エポック数を増やして時間を長めにとるといいことを見つけた.

論文リンク

https://openaccess.thecvf.com/content/CVPR2022/html/Beyer_Knowledge_Distillation_A_Good_Teacher_Is_Patient_and_Consistent_CVPR_2022_paper.html http://arxiv.org/abs/2106.05237 https://openaccess.thecvf.com/content/CVPR2022/papers/Beyer_Knowledge_Distillation_A_Good_Teacher_Is_Patient_and_Consistent_CVPR_2022_paper.pdf

著者/所属機関

投稿日付(yyyy/MM/dd)

CVPR2022

先行研究と比べてどこがすごい?

知識蒸留において,どの要素が大事であるかを突き止めた

技術・手法のキモはどこ?

積極的なデータ拡張(Mix up),長い学習時間,学習方法の一致が重要

どうやって有効だと検証した?

比較実験

コメント

次はなに読む?

mei28 commented 2 years ago

コンピュータビジョンでは,大規模モデルが猛威を奮っている.

大規模モデルを活用できない問題を解決するために,性能を維持したままモデルの軽量化について考える.

一方で,KDだとこの制約を克服できる.

KDにおいて2つの大事な要素を見つけた

  1. 教師と生徒は同じ入力が必要
  2. データ拡張はすればするほどいい
    • 本研究では入力,データ拡張,訓練時間の長さがKDにおいて大事であることを特定した.

実験では,教師モデル(BiT-ResNet-152x2, 21Kデータセット使用),生徒モデルResNet-50のアーキテクチャを利用. ただし,BNをGNで使う.

mei28 commented 2 years ago

大規模モデルを教師,評価指標を精度に設定.目標は,性能を落とさずに,モデルの軽量化を行う.

データセットは5種類用意

教師モデルはBiTから事前学習モデルを用意, 生徒モデルはResNet-50

蒸留誤差(Distillation Loss)としてKLダイバージェンスを用いる.

最適化手法はAdamを採用,パラメータは初期値.くわしくはTraining setup.

データ拡張としてmix upを使う

mei28 commented 2 years ago

リサーチクエスチョンとして2つ設定

  1. 生徒と教師は一貫して,同一の入力(全く同じクロップ,拡張が行われた)ものを処理
  2. 汎化性能を上げるために,積極的にデータ拡張を行い,訓練時間を伸ばす

ロバスト性を検証するために,データセットが小中規模のものを使う.

一貫性が重要であることを検証する.4つの教師パターンを用意

mei28 commented 2 years ago

image

緑,水色の教師と生徒が同じ入力の条件設定の時に,生徒の分類精度が高いことがわかる.また黒(入力に対して,出力が同じ)赤(教師と生徒で異なる入力)は訓練誤差が,緑,水色より少ないが,検証誤差が高い.つまり,訓練データに対して過学習を起こすことがわかる.

mei28 commented 2 years ago

忍耐(patient)強い教師について検証する

一般的な教師あり学習の場合,データ拡張は,ラベルに対して,画像が大きく歪んてしまう可能性がある.本研究では,知識蒸留=教師・生徒モデルの関数マッチングだと解釈しているため,一貫して同じ入力を与えるならば,入力が歪んでもい,マッチング自体は有効であると考える.

データ拡張を行うことで,過学習を回避しながら,大きなエポック数での最適化を行うことについて検証.

image 横軸が訓練エポック数,縦軸がテストデータの分類精度. 赤い線が教師モデルの分類精度,つまり目標となる上限. 青い線が提案手法によるデータ拡張を行なったときのもの.エポック数を十分増やすと教師モデルと同等の性能を獲得できる.

緑の線が転移学習のテストの分類精度.オレンジがR50のスクラッチ. 小さなエポック数では緑,オレンジに精度では負けるが,最終的には上回ることができる.

mei28 commented 2 years ago

これまでは,小中規模のデータセットで実験していたが,ImageNet(大規模データセット)で実験を行なってみる.

image

consistent teachingでは過学習せずに学習を行えていることがわかる. またデータ拡張をすると,少ないエポック数で高い精度を達成 -> ほんとに??

mei28 commented 2 years ago

これまでの実験は,生徒・教師に入力する画像サイズを224x224にしてたけど,もう少し小さくなってもいける?そうすれば高速に処理できるんじゃない?

image

生徒と教師の解像度が異なる場合でも知識蒸留は有効だった.また教師は高い解像度,生徒は小さな解像度でやる方が,同一の解像度よりは精度が高くなりがち.

mei28 commented 2 years ago

データ拡張によって性能を向上させることができたけど,その分学習時間が伸びてしまった.そこで,より協力はOptimizeをつかった.Adam-> Shampoo

image

mei28 commented 2 years ago

転移学習を使った時,生徒モデルの性能が高かったから,転移学習の知識蒸留をやってみる.転移学習の方がはやめに高い精度が達成できたが,最終的には0からの方がはやい.

image

mei28 commented 2 years ago

解像度が違うときでも知識蒸留が成功したから,異なるモデル族でも知識蒸留が可能かを検証する.

これまで生徒モデルをResNetを使っていたが,これをMobileNetにしてみる.この状況でも知識蒸留での生徒モデルの学習ができた.

また2つのモデルのアンサンブル(224x224のデフォルト+384x384のロジット平均)を教師としても知識蒸留による精度向上が可能だった

mei28 commented 2 years ago

最後に,mixupによるデータ拡張+学習時間の増加が知識蒸留において大事な要素であることを示す.

蒸留損失を消去して普通の教師あり学習と比較を行う.

image

エポック数が増えると,過学習をしてしまう.ここから知識蒸留にはデータ拡張と長い訓練時間が必要と結論づける