2017年3月8日水曜日

多クラスロジスティック回帰の可視化

 Deep Learningの最も基本的なところをやります。その一つは、多クラスロジスティック回帰と呼ばれるものです。ニューラルネットワークとしては、最も単純な、中間層のない、入力層と出力層からなりますが、学習用の何種類かの画像の組を与えて、学習させます。それらとは別のテスト用の画像を与えて、学習時の画像のどれに最も近いかを推定できるものです。

 下記参考文献に基づきやってみました。ただし、ここでは、新たに可視化を重点に置きました。すなわち、学習がどのように進むのかを、入力層と出力層のノード間の重みをビジュアルに見られるようにしてみました。

 入力パタンデータは、以下の4種類です。10x10のビット列で表現します。

学習用パタンデータ4種(10x10のサイズ

 つまり、入力層のノード数は100個(10x10)です。"1"か"2"か"3"か"4"かを以下で推定するのですから、出力層のノード数は4個にします。初期状態では、全結合辺に対して、小さな重みを乱数で与えます。また、左下方にあるバイアスの辺の重みは0.0として出発します。

入力層100ノード、出力層4ノードのパーセプトロンの初期状態

 学習を進めます。すなわち、ここでは、「標準デルタ則」によって、重みを少しづつ更新し、出力ノードの出力の正解(教師信号)との差をできるだけ小さくして行きます。以下の図は、まだ学習回数2回目ですが、早くも、辺の重みが良い方向に向かって更新されているようです。(辺の青、赤は、それぞれ、重みの値の正負を表します。また、重みの値の絶対値の大きさを辺の太さで表現しています。)

学習2回目の状態

 さらに、学習回数= 1,000まで進めた結果は以下のとおりです。重みがかなりはっきりしてきました。これ以上学習回数を増やすと、徐々にさらに良い方向に行くようですが、ここで止めます。

学習回数1,000回目の状態

 学習が一応済んだ段階で、今度は、学習時に与えたパタンデータとは少し異なる以下のパタンを与えて、その認識の度合いを調べます。

認識テスト用のパタンデータ
下図は、その結果です。学習回数1,000回での結構良い認識結果ですが、10,000回に増やすとさらに認識の程度は上がることがわかります。

テストパタンの認識結果

 以上は、Deep Learningの入り口に過ぎませんが、その可能性を具体的に知る、見ることになると思います。

【参考文献】
深井裕二「Java人工知能プログラミング」、三恵社、2016

0 件のコメント:

コメントを投稿