MNISTの環境ができた

環境といってもIDXとかいうバイナリフォーマットを自前のmatrix構造体をシリアライズしたテキスト形式に変換して、プロジェクトを作っただけだけど、とりあえず準備はできたので、今月前半は基本的なよくあるアルゴリズムを教科書実装してライブラリに追加して、後半はShape ContextとConvolutional netというのを試したいなーと今のところ思ってます。
あと、せっかく自称超速いSOMを作ったので、眺めるのに使おうと思って、MNISTのトレーニングセットを学習した。
眺める用のマップはボロノイ図みたいな領域に区切って、学習に使ったデータを貼り付けるみたいだけど、そんな機能無いのでユニットに学習したベクトルをそのまま画像として吐き出しています。きれいにバラけていたとすると、1ユニットあたり14個くらいの似たサンプルを集めて平均を取った感じ。
f:id:ultraist:20081208062219p:image:w224(クリックで拡大)
眺めると、4→9と3→5あたりがキビシイかなあ(これ俺でもわからない)と思うけど、全体的には最初に思っていたよりは簡単そう。ぼやけていたり、無理やりモーフィングしたみたいになっているのは、1ユニットに割り当てられたサンプルの分散が大きくて要素ごとの平均値が小さくなっているからだと思うので、中間が無くてわりとはっきりした境界があるはず。
画像としても偽の進化図っぽいくて面白いなーと思う。そういう観点から見ると境界がはっきりとあるということは、ミッシングリンク


    ,ィィr--  ..__、j
   ル! {       `ヽ,       ∧
  N { l `    ,、   i _|\/ ∨ ∨
  ゝヽ   _,,ィjjハ、   | \
  `ニr‐tミ-rr‐tュ<≧rヘ    つまり1から2への進化は火星で起こり
     {___,リ ヽ二´ノ  }ソ ∠ 再び地球に戻されたということなのか!!
    '、 `,-_-ュ  u /|   ∠
      ヽ`┴ ' //l\  |/\∧  /