まんぼう日記

takataka's diary

Superposed Classifier

今日はサーバのメンテナンスをしてました.ここに書くことでもないんですが,12日に仕事場の法定電気設備点検のための停電がありまして,11日夕方から12日夜まで,たかたかの研究室のWebサーバなんかも停止します.ちうわけで&せっかくなのであれこれ….

 

というても,OSのバージョンアップとか再インストールとかそういうおおごとはないので,すぐに終了.で,昨日( Superposed Denoising Autoencoder - まんぼう日記 )のつづきです.Denoising Autoencoder に代えて,MNISTの識別問題の学習をするネットワークに某手法を適用してみました.MNIST の識別の実験なので,大石東バイパスとTheanoでGPGPU - まんぼう日記 とか Theano で MLP & CNN (2) - まんぼう日記 のつづきともいえます.

 

ネットワークの構成は,入力ーReLuーsoftmax の2層と,もうひとつ ReLu の層をはさんだ3層の2通り.2層の場合,隠れ層のニューロンは1000個.3層の場合,入力に近い側の隠れ層は1000個,遠い側は500個.いずれも1000個の方の層に対して,例の手法(といっても現時点ではどこにもその説明してないんですが)を適用しました.でも,2層と3層の場合の違いは特に見えなかったので,以下には3層の場合の結果のみを示します.

 

まずは,普通に学習した場合に得られる入力ー隠れ層間の重み.1000個のニューロンのうち一部のもの(選び方は後述)を可視化してます.

f:id:takatakamanbou:20150810170950p:plain

 

一方,某手法を適用すると,こうなりました.表示の仕方は前回( Superposed Denoising Autoencoder - まんぼう日記 )と同じ.つまり,各行は上から順に,1000個のうち1番から16番までの隠れ層ニューロンの重み,101番から116番,…,901番から916番までの重みを可視化したものです.

f:id:takatakamanbou:20150810171006p:plain

なんか下の方,役立たずっぽいですな.

 

 

ほんまに役立たずかどうか,上位のニューロンだけ用いて出力を計算して調べてみました.

f:id:takatakamanbou:20150810171020p:plain

LとTはそれぞれ,学習データとテストデータに対する誤識別率を表します.某手法の場合,1000個のうち下位800個は遊んでますな.1000個全部使った場合のテスト誤識別率は,従来手法で 1.89%,某手法で 2.18% でした.ちなみに,従来手法で隠れ層ニューロン数を200個にした場合,2.11%.

 

ふむふむ,なるほど.20年前に観察してたんと同じ傾向….