論文を読む"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の目的関数は、蒸留モデルと面倒なモデルのロジット間の差の二乗を最小化すること
- 温度は高すぎず低すぎない中間の値が有効
論文読解
Google翻訳した上で、自分の理解しやすいように修正しながら読んでいく。
3 Preliminary experiments on MNIST(MNISTでの予備実験)
トレーニング
蒸留がどのようにうまくいくかを見るために、我々は、全60,000の訓練ケースで、1200の正規化線形隠れユニットからなる2つの隠れ層を持つ、単一の大きなニューラルネットを訓練しました。
[5]で説明されているように、ネットはドロップアウトとウェイト制約を使用して、強く正則化されました。
ドロップアウトは、重みを共有する指数関数的に大きなモデルのアンサンブルをトレーニングする方法と見なすことができます。
さらに、入力画像は任意の方向に最大2ピクセルずつ揺らしています。
実験結果
このネットは67個のテストエラーを生じたが、800個の正規化線形隠れユニットからなる2つの隠れ層を持つ、正則化なしのより小さいネットは、146個のエラーを生じた。
しかし、小さなネットが、温度20で大きなネットによって生成されたソフトターゲットをマッチングさせるという追加のタスクを追加することによってのみ正則化された場合、74個のテストエラーを生じた。
考察
これは、ソフトターゲットが、大量の知識を蒸留モデルに転送できることを示しています。この知識は、たとえ転送セットがいかなる翻訳も含んでいなくても、翻訳されたトレーニングデータから学習した汎化方法に関する知識を含んでいます。
トレーニングと実験結果と考察。
大きなネットと小さなネットで生じたテストエラーの数を調べ、その後、蒸留によって生成した小さなネットでテストエラーの数が減少したことを述べている。
最後の翻訳を含む含まないという考察の部分が良く分からないが、ソフトターゲットは翻訳ではないということ?
(温度とユニットの数についての実験)
蒸留されたネットが、その2つの隠れ層のそれぞれに、300以上のユニットを有するとき、8を超える全ての温度はかなり類似する結果を与えました。
しかし、これを1層あたり30ユニットに徹底的に減らしたとき、2.5から4の範囲の温度は、より高いまたはより低い温度よりもかなり良く機能しました。
事実を淡々と書いてあるが、つまり、どういうことだろう。後の章で考察されるのだろうか。
実験
次に、転送セットから数字3のすべての例を省略してみました。つまり、蒸留モデルの視点では、3はかつて見たことがないという神秘の数字です。
結果
それにもかかわらず、蒸留モデルでは206個のテストエラーしか発生せず、そのうち133個が、テストセット中の1010個の「3」にあたります。
考察
エラーのほとんどは、「3」クラスの学習されたバイアスが非常に低いという事実によって引き起こされます。このバイアスが3.5(これはテストセットの全体的なパフォーマンスを最適化する)増加すると、蒸留モデルは109個のエラーを生じ、そのうちの14個が「3」です。
そのため、正しいバイアスであれば、トレーニング中に「3」を見たことがないにもかかわらず、蒸留モデルは「3」に関するテストの98.6%が正しい値になります。
追加実験と結果
転送セットにトレーニングセットの「7」と「8」だけが含まれている場合、蒸留モデルは47.3%のテストエラーになりますが、テストパフォーマンスを最適化するために「7」と「8」のバイアスが7.6減少すると、13.2%のテストエラーになります。
転送セットに一部のクラスを省いたり、一部のクラスしか入れなかったりしても、学習が進んでいることを確かめる実験。
これが、ソフトターゲットを用いることによる効果ということだろう。
まとめ
論文"Distilling the knowledge in a neural network."の3「MNISTでの予備実験」を読んだ。