Itsukaraの日記

最新IT技術を勉強・実践中。最近はDeep Learningに注力。

VAEと蒸留の関係についての考察

以前の記事でVAE(Variational Autoencoder)によるMNISTの文字の分類に関し、教師なし学習でもほぼ90%以上の画像が正しい数字に分類されるのは面白いと書きました。最近、当方が所属する勉強会で、深層学習(人工知能学会監修)の4章を担当し、担当部分に書かれた蒸留(distillation)について少し考えていたところ、VAEと関連する気がしましたので、少しメモを書かせて頂きます。

深層学習 Deep Learning (監修:人工知能学会)

深層学習 Deep Learning (監修:人工知能学会)

蒸留とは、既に学習されたネットワークを利用して他のネットワークを高速に学習させたり、大規模なネットワークの学習結果を小さなネットワークに圧縮して詰め込んだりすることが出来る技術です。既存ネットワークを教師モデル、新たに学習するネットワークを生徒モデルと呼ぶと、トレーニングデータの各データ毎に、生徒モデルの出力ノード集合の確率分布を、教師モデルの出力ノード集合での確率分布に近づけるように学習させます。具体的には、これらの交差エントロピーを計算し、これが最小となるように学習させます。

これにより、非常に高速な学習や、ネットワークの圧縮が可能です。

通常は、与えられた画像が数字1の画像ならば、数字1に対応した出力ノードの値のみが1で、他の出力ノードの値が0となるように学習させますが、蒸留では、教師モデルの出力ノードの確率分布に合わせて学習するわけです。

蒸留の提唱者Hintonさんは、教師モデルの出力ノードの確率分布を「暗黒知識(dark knowledge)」と呼んでいますが、当方としては、蒸留は人間的で無理のない自然な学習方法で、教師モデルの確率分布は自然分類的な知識と感じました。

といいますのは、MNISTの数字画像データは、上で書きましたように、教師なしでも90%は正しく分類されるわけで、残りの10%は、かなり癖のあるデータということになります。そのような癖のあるデータ、例えば人間が見ても2か3か分かり難いデータであり、無理やり2と覚えこませるよりも、2に似ているが3なのだと覚えさせたほうが自然に思えたからです。

数字でなく、人間の顔に関しても、既存の知識を元に、「ある人に似ているが、別の人と」覚えることは良くあることと思います。

つまり、90%のデータで各数字のイメージがある程度決まっていれば、それを元に癖のある数字を分類したほうが自然だろうということです。そのようなわけで、暗黒知識などと呼ばずに、自然分類知識と読んだほうが良い気がしました。

参考までに、下記は、30個の中間ノードを持つVAEでMNISTのデータを分類した際に、各数字の画像群の中間層での中心(から生成される画像)と、中心から遠い(他の中心のほうが近い)画像を求めてみたものです。中心から遠い画像は、少し癖のある感じがします。

f:id:Itsukara:20160919063037p:plain