1

ピクセルの単純な 5x5 グリッドで文字を認識するニューラル ネットワークを作成しようとしているとします。可能な文字 (記号) は 6 つしかありません -X,+,/,\,|

現時点では、25 個の入力ノード、6 個の非表示ノード、および 1 個の出力ノード (0 と 1 の間 - シグモイド) を備えたフィードフォワード ニューラル ネットワークがあります。

出力はシンボルに対応します。など'X' = 0.125_ '+' = 0.275_ '/' = 0.425_

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

入力では、0.1 はピクセルがまったくシェーディングされていないことを意味し、0.9 は完全にシェーディングされていることを意味します。

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

残念ながら、'/' に少しノイズを加えると、ネットワークはそれを '\' と認識します。

6つの記号の順序(つまり、それらが対応する数値表現)が違いを生むかもしれないと思いました。

隠しノードの数がこの問題を引き起こしている可能性があります。

文字を数字にマッピングするという私の一般的な概念が問題を引き起こしているのかもしれません。

ネットワークをより正確にするために、どんな助けでも大歓迎です。

4

1 に答える 1

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」と予測します。

于 2016-09-21T18:01:12.130 に答える