びぼーろぐ

備忘録としての勉強のログです。淡々と学んだことをログって行くので、雑な記事が多いです。

Model Compression

https://www.cs.cornell.edu/~caruana/compression.kdd06.pdf
2006/8

正直よくわからなかった(汗) 参考にならないかも...

一言でいうと

モデル圧縮を行って、複雑なアンサンブルモデルを少ない性能劣化で小さく、高速なモデルにする。

この論文のすごいところ

偽のサンプルを生成するMUNGEなる手法を使うと、ensemble selectionよりも数千倍小さくかつ高速になる。 MUNGEは、訓練データのラベルなし疑似データを生成する手法で、あとで教師モデルでラベル付して生徒モデルの学習に利用する。

感想

古い論文だからか、結果を見ると「ほう、疑似データを作って小さいモデルでも過学習とか起こりにくくしつつ、精度高くするのか」と思っただけで、割と普通じゃね?って思ってしまった...
英語の勉強になった。

ざっく理論

モデル圧縮の大本の考え方は、遅くて巨大なものによって学習された関数を高速でコンパクトなモデルで近似すること。ただし、性能は良くなることを目指している。
高速かつコンパクトなモデルは十分な疑似データで学習され、過学習をおこさず、高い性能のまま近似することができる。

  • どうやって疑似データを得る?
    --> 3つの手法(RANDOM, NBE, MUNGE)で作成する。
    疑似データを本物のデータの分布とマッチさせることが重要。最小のサンプル数が適切なターゲット関数をサンプリングするようにする必要がある。

疑似データを作る方法

RANDOM

最も単純な方法。
周辺分布からそれぞれの属性を独立にサンプリングする。

いわゆる特徴が学習データから推測されるパラメータを持つ多項分布から生成される。これは、訓練セットに含まれるすべての属性分布から値を取り出すため、重要ではない領域の属性を取り出してきてしまう可能性がある。

NBE(naive Bayes Estimation)

訓練セットの属性の同時分布を推測し、そこから擬似データを生成する。 うまく同時分布が推測されてれば、条件付き構造は保たれ、重要な属性をカバーすることができる。

同時分布を推測する方法の一つは、混合モデル(混合ガウス分布)を使うこと。 連続値と離散値を両方扱う混合モデルがナイーブベイズ。 ナイーブベイズを使おうと思ったのは、

  • 連続値と離散値両方使えるってこと
  • 使いやすい
  • 同じデータで学習したベイジアンネットワークと同等の性能を持つ
  • 読みやすい

からだそう。

MUNGE

今回考えた手法。 ノンパラメトリックな同時分布の推測値から直接サンプリング。

f:id:taku-buntu:20181229005023p:plain
MUNGEのアルゴリズム
オリジナルの訓練セットから始まって、一旦全部のサンプルを見て、それぞれの近傍データを決定。連続値に対してはユークリッド距離、離散値に対してはハミング距離で近傍かを判断。離散的なe'と最近傍のサンプルeがあったとき、pの確率で、交換される(つまり1-pの確率で変わらない)。
連続値e_aだったら、e_aは平均e _ { a } ^ { \prime }標準偏差sd=|e_a-e _ { a} ^ { \prime }|/s正規分布からランダムに抽出。e _ { a } ^ { \prime }は、平均e_a、分散sd正規分布から抽出。 それぞれの手法で、疑似データを作った結果が下図。
f:id:taku-buntu:20181229013214p:plain
疑似データ

結果

2値分類で有効性をみる f:id:taku-buntu:20181229020414p:plain

MUNGEを使ってデータを増やすと

覚えた単語

synthetic・・・総合的な、偽の
unlike・・・と異なり
attribute・・・属性、特性
adequately・・・的確に
marginal distribution・・・周辺分布
predominately・・・主に
nominal・・・という名目の、名ばかりの(ここでは、"離散的な"的な!意味っぽい) multinominal distribution・・・多項分布
joint distribution・・・同時分布
conditional・・・条件的な、条件付き
preserve・・・保つ
inherent・・・固有の

nomianlがわからなかった...下図のような感じらしい。

https://i.stack.imgur.com/D08t9.jpg

lapis-zero09.hatenablog.com