-------------------------------------
応用編第3部、パターン認識編 II
------------------------------------
文字は特殊なパターンです。
自然界を詳細に見るために人間は電子顕微鏡を発明しました。
電子顕微鏡では結晶中の原子配列まで見れますが、
その広大な観望範囲でも、そこに文字形状は存在しません。
文字は複数事象を識別するために脳が創作した、相互に独立性の高い形のように感じます。

今回は文字を、より自然の形状にして、2値形状から拡大して、
255諧調の画像の世界と人間の感情の世界とを結びます。
すなわち、人間の顔のイラスト(下記)をニューラルネット群(NNs)で認識します。

<FontKao3img.gif>
「いらすとや」さんのHPから素材(カラー)をDLし、白黒化し、"!","?"記号を髪の中に持ってきました。
計算行列を縮小するためです。これはPCのメモリ制限からくるものです。

これでも1つの顔認識に112*112*4 Bytesの行列が必要です。
NN内部のweight vectorは、L=112*112, M=28*28, L*M=12544*784=9834496要素です。
文字認識とは比較にならない大規模なsimulationになります。
NN-simulatorはPC用に3分割しました。

NN-1:顔のイラスト→感情matrix*のBP計算&NN-3に渡す中間行列群をファイルに出力する。
NN-2:感情matrix→顔のイラストimagesのBP計算&NN-3に渡す中間行列群をファイルに出力する。
NN-3:NN-1/2の行列群を読み、種々の認識上の高次処理を行い、画像群を出力する。
*)感情matrixの定義


<sensMatx.gif>

Simulation結果
上記のイラスト24顔→NN-1→感情matrix表現→NN-2→再現画像(下記)

<font6it700.gif>

NN simulationは正常に作動しています。

感情matrix表現は下記のようです。教師dataを2桁の精度で再現しました。


 --PTN,err:       1     0.00102
     0.000     0.000     0.000     0.001     0.005     0.000     0.000
     0.001     0.001     0.000     0.000     0.000     0.000     0.000
     0.000     0.003     0.000     0.000     0.000     0.000     0.002
     0.000     0.001     0.000     0.981     0.000     0.000     0.006
     0.001     0.009     0.001     0.003     0.000     0.022     0.001
     0.003     0.000     0.002     0.000     0.000     0.002     0.000
     0.001     0.000     0.000     0.001     0.001     0.000     0.004
 --PTN,err:       2     0.00085
     0.001     0.000     0.001     0.000     0.001     0.000     0.000
     0.001     0.978     0.000     0.015     0.000     0.000     0.000
     0.001     0.002     0.000     0.000     0.003     0.000     0.004
     0.001     0.003     0.001     0.000     0.001     0.000     0.006
     0.002     0.006     0.001     0.002     0.001     0.000     0.002
     0.001     0.003     0.001     0.001     0.001     0.000     0.000
     0.003     0.000     0.001     0.000     0.001     0.001     0.000
 --PTN,err:       3     0.00129

 --PTN,err:      24     0.00030
     0.001     0.000     0.001     0.000     0.000     0.001     0.001
     0.001     0.000     0.004     0.001     0.000     0.002     0.002
     0.002     0.000     0.001     0.000     0.001     0.990     0.001
     0.001     0.004     0.000     0.000     0.000     0.001     0.005
     0.001     0.000     0.000     0.002     0.001     0.000     0.001
     0.001     0.002     0.001     0.001     0.004     0.003     0.000
     0.001     0.001     0.000     0.001     0.002     0.000     0.991

ーーーーーーーーーー

これから、NN-1の入力イラスト像を変化させ、NN-2の出力像、matrix値の変化を見ます。


-----Test#1---------
男女を区別する感情matrix(7,7)要素を0⇔1します。
パターン#1~8,#15~24で変更しました。
結果を示します。

<font567revG.gif>
男女の顔が逆転しています。
BPで同じ感情表現の男女顔を学習しているので、当然の結果です。
では、感情matrix(7,7)要素を0.5とするとどうなるか?

<font567revG05.gif>
男女顔が重なります。これはこれで妥当な結果です。

------Test#2---------
顔の上半分の輝度を1/2に減じると、NN-2の出力はどうなるか?
結果を示します。

<font567oHF.gif>
顔#6,7,10,12で誤った感情となります。
他の20顔では正しいです。男女の識別は全部正しいです。


誤った感情を修正する手段を色々やってみましたが、学習例を増やすのが良いと思います。

上半分の明度を1/2にした画像を追加学習するのです。学習時間は2倍になります。

そうして、同様の処理をした結果です。

<font567cHF.gif>

これで正しい結果が得られましたが、顔#12は「かろうじて」正しいレベルです。

 

全画像の全面明度を1/2にした画像を追加学習すると、

顔#6のハートの目、#7のちょうちん形がかろうじて見える程度です。

顔#10,12では誤っていました。

 

本simulation systemは学習経験で実世界の像を認識している、と感じます。

追加学習はneuron間の結合weightsを少し変化させるだけです。
NNの構造を変えません。

人間の脳内のneuron間結合強度は、外部環境(加齢、大気圧変化、精神状態、、、、)
などにより可変的に変化します。
僅かな変化でも脳が認知する像(=NN-2の出力images)が変わる、と考えれば本simulationの意味が分かるでしょう。