論文を読む"Distilling the knowledge in a neural network."⑫
背景
「蒸留(Distillation)」に関して、論文"Ravi Teja Mullapudi, Online Model Distillation for Efficient Video Inference."を読んだ。
その中で引用されていたモデル蒸留のために広く使用されている技術の論文として、次の論文を読み進めている。
[18] G. Hinton, O. Vinyals, and J. Dean. Distilling the knowledge in a neural network. arXiv preprint arXiv:1503.02531, 2015.
前回まで
Abstract
- 背景
機械学習アルゴリズムは、複数の異なるモデルの推論を平均化することで性能が向上する(モデルのアンサンブル)。
- 問題
モデルのアンサンブルは計算コストが高すぎる。
- 従来手法
Caruanaらの"Model compression."は、アンサンブル内の知識を単一のモデルに圧縮することを示している。
- 提案手法
従来手法をさらに異なる圧縮技術を用いることで発展させる。また、フルモデルとスペシャリストモデルとで構成するアンサンブルも提案。
- 効果
MNISTでいくつかの驚くべき結果を達成。
商用音響モデルを大幅に改善。
スペシャリストモデルは迅速かつ並行して訓練することが可能。
1 Introduction
- トレーニングと展開、それぞれの最適化
- 機械学習における知識
- 蒸留という有望なアプローチを阻害するのは、「モデルの中の知識と学習されたパラメータを区別してしまう傾向」。
- 知識とは「学習済みマッピング」である。
- だからこそ、不正解に対する確率もごくわずかであれ定義されてしまう。
- モデルを一般化する正しい方法
- 目的関数はユーザーの真の目的を反映すべきであるが、実際は反映できていない。
- モデルを一般化する正しい方法に関する情報が必要であるが、普通は利用不可能。
- ただし、大きなモデルを学習済みで、蒸留によって小さなモデルを作る場合、大きなモデルの学習に用いた方法が小さなモデルにも適用できる。
- 転送の具体的な方法
- 「面倒なモデル」の出力情報の活用
- Caruanaらは確率ではなくロジットを用いた。
- 本論文の「蒸留」では、ソフトマックスの温度(temperature)を使って、より適切なターゲットのソフトセットを生成する。
2 Distillation
- 「温度付きソフトマックス関数」について
- 最も単純な形式の蒸留
- 蒸留モデルは転送セットで訓練される。
- 転送セットは、温度を高くしたソフトマックス関数を用いた面倒なモデルで生成されたもの。
- 蒸留モデルの学習時は同じ温度、学習後は1。
- 転送セットのラベルが既知の場合、より良い改善方法は、異なる2つの目的関数の加重平均の使用
2.1 Matching logits is a special case of distillation
- 第1の目的関数は、蒸留モデルと面倒なモデルのロジット間の差の二乗を最小化すること
- 温度は高すぎず低すぎない中間の値が有効
3 Preliminary experiments on MNIST(MNISTでの予備実験)
- 大モデルに対する小モデルの比較をソフトターゲットマッチング追加タスク有無で行ない、蒸留の効果を確認
- 温度とユニットの数を振った実験の実施
- 転送セットから一部のクラスを削除した場合でも、ロバスト性を確認
4 Experiments on speech recognition(音声認識に関する実験)
- 自動音声認識(ASR)で使用されているディープニューラルネットワーク(DNN)音響モデルを、アンサンブルすることの効果について調査
- 本稿で提案する蒸留戦略が望ましい効果を達成することを証明
- すなわち、同じサイズのモデルを同じトレーニングデータから直接学習するよりも、はるかにうまく機能する単一のモデルを、モデルのアンサンブルから蒸留することが可能
論文読解
Google翻訳した上で、自分の理解しやすいように修正しながら読んでいく。
5.1 The JFT dataset
JFTは、15,000ラベルでラベル付けされた1億のイメージを持つ、Googleの内部データセットです。
この研究を行ったとき、Google用JFTのベースラインモデルは、ディープ畳み込みニューラルネットワークであり[7]、多数のコアによる非同期確率勾配降下法を使用して、約6か月間トレーニングされていました。このトレーニングでは2種類の並列処理を使用しました[2]。
まず、ニューラルネットのレプリカが、コアの異なるセットで実行され、トレーニングセットとは異なるミニバッチを処理していました。各レプリカは、現在のミニバッチの平均勾配を計算し、この勾配を分割されたパラメータサーバに送信します。このサーバは、パラメータの新しい値を返送します。これらの新しい値は、最後にパラメータをレプリカに送信してからパラメータサーバが受信したすべての勾配を反映しています。
第二に、各レプリカは、ニューロンの異なるサブセットを各コアに配置することによって複数のコアに分散されます。
アンサンブルトレーニングは、他の2つのタイプをラップすることができる3番目のタイプの並列処理ですが、使用できるコアがもっと多い場合に限られます。
モデルのアンサンブルをトレーニングするために数年間待つことは選択肢ではなかったので、ベースラインモデルを改善するためのもっと早い方法が必要でした。
ここでは、アンサンブルに対する反論である、「個々のモデルが大規模なニューラルネットワークで、データセットが非常に大きい場合、並列化は簡単だとしても、トレーニング時に必要な計算量があまりに多くなる」データセットの例として「JFT」を紹介している。
JFTとは、
このデータセットを用いた訓練は、研究当時のディープ畳み込みニューラルネットワーク [7]を多数のコアによる非同期確率勾配降下法を使用して、約6か月間という非常に長い期間を要しました。
これを、条件を変えて複数回行ない、アンサンブルを生成しようと思ったら、6カ月×アンサンブルの数、ということで数年の月日がかかります(その間に技術の進歩が進んで、学習完了時には陳腐化しているということが起きそうですね)。
ですので、抜本的な学習速度の改善が必要となります。
まとめ
論文"Distilling the knowledge in a neural network."の5.1節、データセット「JFT」について、です。次の5.2節は、「Specialist Models」についてです。