カシミアのニット

カシミヤのニット

日々のメモです

Model Compression

Model Compression

Bucilua, C., Caruana, R. and Niculescu-Mizil, A.: Model Compression, Proc. ACM SIGKDD, pp. 535–541 (2006).

https://dl.acm.org/citation.cfm?id=1150464

モデル圧縮

この論文はHintonらによるDistilling the Knowledge in a Neural Network*1の先駆けとなった論文です.

Once the cumbersome model has been trained, we can then use a different kind of training, which we call “distillation” to transfer the knowledge from the cumbersome model to a small model that is more suitable for deployment. A version of this strategy has already been pioneered by Rich Caruana and his collaborators.

[1503.02531] Distilling the Knowledge in a Neural Network

Hintonらの"distillation"では,soft targetと呼ばれる教師モデルが各正解クラスに対して出力した確率分布を入力として与えます.

これにより,教師モデルが相対的に間違った答えを導き出した場合でも,生徒モデルは教師モデルの確率という情報を新たに得ることで正解できるように訓練できる場合があります.

この時,教師モデルに含まれる基本モデルの予測分布の算術または幾何平均をsoft targetとしています.

一方,Caruanaらの提案では,教師モデルによって予測したone-hotなクラスラベルを正解ラベルとして生徒モデルを学習します.

これだけでは,生徒モデルは元の訓練データで訓練できるモデルよりもいいパフォーマンスを発揮できません.

教師モデルの性能を維持したまま元の訓練データで訓練できる軽量なモデルよりも優れたモデルを得るために擬似データを使用しました.

Model Compression*2

Caruanaらは,同論文でMUNGEと呼ばれる擬似データ生成手法を提案し,訓練データから大量のラベルなし擬似データを生成し訓練に用いました.

ラベルなし擬似データは,教師モデルによってラベル付けし,生徒モデルの訓練に利用します.

MUNGEのアルゴリズムは以下の通りです.

f:id:lapis_zero09:20180322174833p:plain
Pseudo code of MUNGE

MUNGEは見ての通り非常にシンプルな擬似データ生成手法です.

まず,訓練データ内のインスタンス {e}について,最近傍を発見します.

次に,確率パラメータに基づいて最近傍とインスタンス {e}から得られる正規分布からランダムに値を得ます.

これを各インスタンスに対し,複数回行うことで任意数の擬似データを得ることができます.

MUNGEの実装はこちらです.

github.com

Caruanaらは,MUNGEを用いたモデル圧縮によって教師モデルと同等の精度を持ち,教師モデルよりも高速かつ軽量な生徒モデルを得ています.

f:id:lapis_zero09:20180322175855p:plain

簡単な実験

irisデータを使って擬似データ生成アルゴリズムMUNGEの簡単な実験を行います.

詳細はこちらです.

github.com

正規化したirisデータは以下のようにプロットできます.

f:id:lapis_zero09:20180322215209p:plain
iris with normalization

このデータに対してMUNGEで擬似データを生成した結果が以下です.

f:id:lapis_zero09:20180322215304p:plain
p = 0.5, s = 10.0

良さそうですね.

しかし,確率パラメータを低くすると擬似データ数が多くなった場合,過学習する可能性が高くなります.

f:id:lapis_zero09:20180322220200p:plain
p = 0.8, s = .01

導出アルゴリズムからわかるように分散パラメータが小さすぎると明らかにおかしいデータが出来上がります.

f:id:lapis_zero09:20180322215543p:plain
p = 0.8, s = 1.0

一見良さそうですが,データが密集しすぎていて経験的にこのような場合は過学習することがあります.

f:id:lapis_zero09:20180322215624p:plain
p = 0.8, s = 10.0

いい感じです.

f:id:lapis_zero09:20180322215709p:plain
p = 0.8, s = 100.0

少し規則的に並び過ぎて人工データ感が否めません.

感想など

MUNGEはとてもシンプルなアルゴリズムであるが,データの特徴をよく捉えた擬似データを生成できます.

しかし,クラスの決定境界を意識して擬似データを生成しているわけではありません.

よって,上述のirisデータのプロットにおける青と緑のように境界面で接地したデータを分離しづらくなってしまいます.

あくまでも,モデル圧縮の文脈における擬似データ生成アルゴリズムなので教師モデルの特徴を活かしてこの辺りを改善したいですね.

*1:Geoffrey Hinton, Oriol Vinyals, and Jeff Dean. Distilling the knowledge in a neural network. In In Deep Learning and Representation Learning Workshop, NIPS, 2014.

*2:Bucilua, C., Caruana, R. and Niculescu-Mizil, A.: Model Compression, Proc. ACM SIGKDD, pp. 535–541 (2006).