さて、ここでの質問は、「ニューラル ネットワークを作成するにはどうすればよいか」という方針に沿っているように思われます。基本的な手順をここで概説して、アイデアを頭の中で固めることができますが、実際に実装する限りは、自分次第です。個人的には、プロプライエタリ言語 (MATLAB) は忌まわしいものだと思いますが、知的熱意にはいつも感謝しています。
ニューラル ネットワークの基本的な概念は、一連のノードがレイヤーにあり、それらを接続する重みがあることです (何をしたいかによって、各ノードを上下のレイヤーに接続するか、すべてのノードを接続するか、またはその間のどこでも。) 各ノードには、特定のノードまたはニューロンが「オン」または 1 と評価される可能性を表す「仕事関数」または確率関数があります。
一般的なワークフローは、取得した最上位層のニューロン/ノードから始まり、それらをデータの値に初期化します (あなたの場合、バイナリに正規化された画像のピクセル値としてこれらのそれぞれを開始することになるでしょう)最も単純であること)。次に、これらのノードのそれぞれに重みが乗算され、2 番目のレイヤーにフィード ダウンされます。このレイヤーは、合計 (実装に応じて、幾何学的または算術的な合計) に応じて「隠しレイヤー」と見なされます。仕事関数を使用して、隠れ層の状態を決定します。
最後のポイントは少し理論的で理解しにくいので、ここに例を示します。最初の行に 3 つのノード([1,0,1])
があり、それらの 3 つのノードを 2 番目のレイヤーの最初のノードに接続する重みが のようなものであるとします([0.5, 2.0, 0.6])
。算術合計を行っている場合、それは「隠しレイヤー」の最初のノードの重み付けが次のようになることを意味します
1*0.5 + 0*2.0 + 1*0.6 = 1.1
仕事関数としてロジスティック関数を使用している場合 (非常に一般的な選択ですが、tanh も一般的です)、そのノードが 1 に評価される可能性は約 75% になります。
おそらく、最終レイヤーには 26 個のノード (文字ごとに 1 つずつ) が必要になるでしょうが、モデルを改善するために非表示レイヤーをさらに追加することもできます。モデルが予測した文字は、最大の重み付け見出しを持つ最終ノードであると想定します。
それを起動して実行した後、それをトレーニングしたいと思うでしょう。なぜなら、おそらくウェイトをランダムにシードしただけだからです。これは理にかなっています。これにはさまざまな方法がありますが、ここでは一般的に、ニューラル ネットワークをトレーニングするための非常に一般的な方法である逆伝播について概説します。基本的には、画像が認識されるべき文字がわかっているので、その結果をモデルが実際に予測したものと比較します。モデルが問題のないキャラクターを正確に予測した場合は、モデルが機能したため、モデルをそのままにしておくことができます。誤った文字を予測した場合は、ニューラル ネットワークに戻って、入力したピクセル ノードから、予測されるべき文字である終了ノードまでの重みを増やします。
ご不明な点がございましたら、お気軽にお問い合わせください。