keimoriyama / archive-paper_management

0 stars 0 forks source link

Rocket Launching: A Universal and Efficient Framework for Training Well-Performing Light Net. #10

Open keimoriyama opened 2 years ago

keimoriyama commented 2 years ago

Rocket Launching: A Universal and Efficient Framework for Training Well-Performing Light Net.

Zhou, Guorui, Ying Fan, Runpeng Cui, Weijie Bian, Xiaoqiang Zhu, and Kun Gai. 2017. “Rocket Launching: A Universal and Efficient Framework for Training Well-Performing Light Net.” arXiv [stat.ML]. arXiv. http://arxiv.org/abs/1708.04106.

背景:なぜその問題を解決したいのか

実地で活用されるアプリケーションは予測をする上で実行時間と計算資源に制約がある.

現在のSOTAのモデルは,制度の向上はしているが予測にかかる時間が大量に必要になっている.

目的:どういう問題を解決したのか

生徒モデルと教師モデルの重みを共有したモデルの蒸留手法を提案した.

ここでは,生徒と教師は同時に学習が進むようになっている.

提案:解決に向けたキーアイデアは何か

モデルの概要は図1のようなかんじになっている.

Light Netが生徒モデルでBooster Netが教師モデルの役割をしている

Screen Shot 2022-05-03 at 10 49 25

損失関数は以下のとおり(Light Netの更新式)

Booster Netの損失はこの更新式の第2項の計算式を使うようになっている

Screen Shot 2022-05-03 at 10 51 19

第1項がLight Netの予測と正解ラベルの損失で第2項がBooster Netのものになっている.

第3項でLight NetとBooster Netの出力を近づけるように学習をおこなっている.

Gradient Block

知識蒸留を行う上で,教師モデルのパフォーマンスは生徒モデルのパフォーマンスに影響を与えるので重要になってくる.

この手法では同時に教師と生徒の学習を進めるため,式1の更新式を使うと教師モデルのパフォーマンスに影響が出てきてしまうという課題がある

Screen Shot 2022-05-03 at 10 54 02

そこで,Booster Netのパラメータを更新するときにBooster NetとLight Netのパラメータの更新を別々に行うようにした

結果:結局問題は解決されたのか.新しくわかったことは?

CIFAR-10による実験の結果

提案手法のパフォーマンスはbooster onlyの列で,boosterはBooster net単体でのパフォーマンスになっている.

Screen Shot 2022-05-03 at 10 59 27

ここでは,式2のLight netの蒸留部分の損失関数を温度つきsoftmax関数にした場合のパフォーマンスを比較しているが,提案した手法の方がパフォーマンスが良くなっていると言える.

重み共有をなくしてみたり,Gradient Blockをなくした時のパフォーマンスを比較した.

提案された手法のスコアが一番いいことがわかる

Screen Shot 2022-05-03 at 11 03 17

式2のLight Netの損失関数を色々変えてみてパフォーマンスを比較したところ,logitを近づける方がパフォーマンスがよかった.

Screen Shot 2022-05-03 at 11 04 08