ニューラルネットワークの蒸留

大規模で複雑な教師ネットワークの出力をもとに,より小さなネットワークを学習する蒸留について.

機械学習モデルの性能評価で重要なのは,学習データに対する正解率ではなく,学習データに含まれていないようなデータに対する汎化性能の方. パラメータの多いモデルは学習データにはよくフィットする一方で,未知のデータに対しては汎化性能が落ちてしまうというケースが多々ある.

よって,学習時は豊富なデータセットから複雑でパラメータ数の多いネットワークを学習し,推論用途により軽量なネットワークを学習し直すというアプローチが考えられる.また,軽量なネットワークは複雑なネットワークと比べてより高速に推論できるため,時間的計算量の観点からも良いと言える.

ニューラルネットワークの蒸留は以下の論文で提案.

Transfer LearningとKnowledge Distillationの違い

Transfer learningとknowledge distillationは,学習の形式はよく似ているが目的が異なる.

Transfer learningは,転移元のネットワークと転移先のネットワークは同程度に複雑で,転移元のネットワークの重みを活用して学習を効果的に進めようという狙いがある.

一方でknowledge distillationは,教師データよりも軽量な生徒モデルを学習することが目的.

Teacher-Student model

f:id:noconocolib:20190227224420j:plain

Temperature in Softmax Activation

ソフトマックス関数は,出力を確率の範囲に収めることができる.つまり,出力は全て0と1の間を取り,その合計は1になる.

 \frac{\exp z_i}{\sum_{j} \exp z_j}

それに対して,温度付きソフトマックス関数は以下で与えられる.

 \frac{\exp z_i / T}{\sum_{j} \exp z_j / T}

上式は,入力 zを温度 Tで割っている形になる.

温度付きソフトマックスの出力例を以下に示す.

f:id:noconocolib:20190227225121p:plain

クラス7の確立が最も高いと仮定し,異なる温度 Tを設定した時の温度付きソフトマックス関数の出力をプロットしている.

図から,温度を高くすれば高くするほど,ソフトマックス関数の出力は滑らかになっていく(ニューラルネットが断定的な判断をしにくくなっている).数字の例を使うと,0〜9の中だったら7に見えるけど1にも見えるといった反応に近くなる.

つまり,高い温度を用いた温度付きソフトマックス関数は,クラスAとクラスBがどれだけ似ているかといった情報を定量的に扱っているとみなせる.論文では,このような反応をdark knowledgeと呼んでいる.

Knowledge distillationの主なアイディアは,教師ネットワークの持つdark knowledgeを抽出して少ないパラメータの生徒ネットワークを効率的に学習させるという点にある.

Teacher-Student training

生徒ネットワークの学習では,一般的なsoftmax関数によるhard targetに加えて,教師ネットワークの出力を温度付きsoftmax関数に通したsoft targetを用いて学習を行う.

この過程を踏むことで,教師ネットワークのdark knowledgeの抽出を狙う.

最後に,knowledge distillationは,

  • より軽量なモデルを使える
  • 元々の大規模なネットワークよりも良い汎化性能が見込める
  • 大規模なデータで学習された教師モデルがあれば,生徒モデルの学習時には少ないデータしかなくても学習可能

といった利点を持つとされている.

References

  • Hinton, Geoffrey, Oriol Vinyals, and Jeff Dean. "Distilling the knowledge in a neural network." arXiv preprint arXiv:1503.02531 (2015).