*SJS2016 ex09 [#f69bd8f1] #contents **これまでの分 [#kbc5dcd1] - 以前の分を全て報告してokをもらってから,今回分にすすみましょう. **課題A [#z6651c87] MNISTのデータを最近傍法で識別してみよう. 手書き数字の認識 (3) -- MNISTの最近傍法による識別 -- 前回の識別法では,クラス毎に1つの見本(プロトタイプ)を用意して,テストデータを,最も近いプロトタイプのクラスに分類していた.これを一般化すれば,1つのクラスに複数のプロトタイプを用意して,それらの中からテストデータと最も近いプロトタイプを探して,そのテストデータはそのプロトタイプと同じクラスに分類する,という方法が考えられる.これを最近傍(Nearest Neighbor)法という. 前回の最短距離法は,このNN法で1クラス1プロトタイプとし,かつプロトタイプを学習データの平均とした,という特別な場合に相当する.プロトタイプは,あらかじめ集めておいたクラスラベル既知のデータに何らかの処理を施して作成してもよいが,最も単純でよく使われるのは,「学習データ全部そのまんま使ってまえ」という方法である. というわけで,MNISTのデータをこのようなNN法で識別するプログラムを作って実験しなさい.プログラムと,テストデータの誤識別率が何%になったかを報告すること(学習データの誤識別率は...調べる必要ないことは明らかですよね). ただし,上記の説明から想像つくようにNN法は記憶コストも計算コストも大きい.最初のうちは 学習データの最初の1000件だけを用いてテストデータを識別させるようにしてデバグ&動作確認し,それから全部使って実行,という方針でやることをおすすめします.