1

単純な5x5ピクセルグリッドの文字を認識するためにニューラルネットワークを作成しようとしているとします。 X,+,/,\,|ニューラルネットワーク文字認識

現時点では、入力ノードが25個、隠れノードが6個、出力ノードが1個(0と1の間のシグモイド)のフィードフォワードニューラルネットワークがあります。

出力はシンボルに対応します。例えば、'X' = 0.125,'+' = 0.275,'/' = 0.425

ネットワークの出力(テスト中)が何であれ、数値的に最も近いものに対応する。すなわち、0.13 = 'X'

入力では、0.1はピクセルが陰影付けされていないことを意味し、0.9は完全に陰影付けされていることを意味します。

ネットワークを6つのシンボルでトレーニングした後、いくつかのノイズを追加してテストします。

残念ながら、「/」に小さなノイズを追加すると、ネットワークは「\」と考えます。

私は多分6つのシンボルの順序(すなわち、それらが対応する数値表現)が違いを生むかもしれないと考えました。

おそらく隠れノードの数がこの問題を引き起こしています。

多分、文字を数字にマッピングするという私の一般的な考え方が原因です。

ネットワークをより正確にするために助力をいただければ幸いです。

+1

このタスクでは、MLPではなく畳み込みニューラルネットワークを使用します。より多くのデータを取得することも、パフォーマンスを改善するための良い方法です。 –

答えて

3

出力エンコードが最も大きな問題です。 6つの出力ノードを持つように、出力にワンホットエンコードを使用することをお勧めします。例えば

- 1 0 0 0 0 0 
X 0 1 0 0 0 0 
+ 0 0 1 0 0 0 
/ 0 0 0 1 0 0 
\ 0 0 0 0 1 0 
| 0 0 0 0 0 1 

これは学ぶためのニューラルネットワークのためにはるかに簡単です。予測時に、最も高い値を持つノードを予測として選択します。たとえば、出力ノードごとに以下の出力値がある場合:

- 0.01 
X 0.5 
+ 0.2 
/ 0.1 
\ 0.2 
| 0.1 

文字を「X」と予測します。

+0

これは大きな改善でした、ありがとう! –

関連する問題