論文を読む"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-1,2,3,4
- トレーニングと展開、それぞれの最適化
- 機械学習における知識
- 蒸留という有望なアプローチを阻害するのは、「モデルの中の知識と学習されたパラメータを区別してしまう傾向」。
- 知識とは「学習済みマッピング」である。
- だからこそ、不正解に対する確率もごくわずかであれ定義されてしまう。
- モデルを一般化する正しい方法
- 目的関数はユーザーの真の目的を反映すべきであるが、実際は反映できていない。
- モデルを一般化する正しい方法に関する情報が必要であるが、普通は利用不可能。
- ただし、大きなモデルを学習済みで、蒸留によって小さなモデルを作る場合、大きなモデルの学習に用いた方法が小さなモデルにも適用できる。
- 転送の具体的な方法
- 「面倒なモデル」の出力情報の活用
- Caruanaらは確率ではなくロジットを用いた。
- 本論文の「蒸留」では、ソフトマックスの温度(temperature)を使って、より適切なターゲットのソフトセットを生成する。
論文読解
Google翻訳した上で、自分の理解しやすいように修正しながら読んでいく。
2 Distillation-1
ニューラルネットワークは通常、「softmax」出力レイヤを使用して、クラス確率を生成します。
「softmax」出力レイヤは、各クラスに対して計算されたロジットを、他のロジットと比較することで、確率に変換します。
:temperature(温度?)。通常1に設定されている。大きくすると、クラス全体の確率分布が柔らかくなります。
2章が「Distillation」ということで、本論文の提案する手法ということになる。まず最初に記述されているのは、「温度付きソフトマックス関数」について。
のものが一般に良く知られているソフトマックス関数だが、付きのものが「温度付きソフトマックス関数」と呼ばれているようである。論文中の言い方では、「を大きくすると柔らかく(softer)なる」とのことだが、小さな確率を大きくするために用いる。
これが、1章「Introduction」でいまいちわからず後回しにした、「ターゲットのソフトセット(soft set of targets)」の作り方になるのだろう。ソフトセットとは小さな確率を大きくしたものと理解すれば良さそう。
最も単純な形式の蒸留では、知識は蒸留モデルに転送される。蒸留モデルを転送セットにて訓練し、その転送セットの中のそれぞれの場合において、そのソフトマックスを高温にした「面倒なモデル」を使用することによって生成されたソフトターゲット分布を用いることによって。
蒸留モデルの学習時にも同じ高温が使用されますが、学習後の温度は1です。
最も単純な形式の蒸留は、
- 蒸留モデルは転送セットで訓練される。
- 転送セットは、温度を高くしたソフトマックス関数を用いた面倒なモデルで生成されたもの。
- 蒸留モデルの学習時は同じ温度、学習後は1。
ここもいまいちよくわからない、なんとなくこんな感じ、というところ。
「転送モデル」というのがイメージできていない。
まとめ
論文"Distilling the knowledge in a neural network."の2章を読み始める。1章で理解できなかった概念は、「温度付きソフトマックス関数」とのことだったが、ググれば普通に出てくる用語の様子。