0

次の入力に対して、Python または C++ で逆伝播アルゴリズムを実装したいと考えています。

[[11, 15], [22, 17]]
[[8, 11], [23, 19]]
[[9, 14], [25, 22]]
[[6, 9], [17, 13]]
[[2, 6], [29, 25]]
[[4, 8], [24, 20]]
[[11, 15], [27, 24]]
[[8, 11], [31, 26]]
[[3, 8], [25, 21]]
[[11, 15], [26, 22]]
[[15, 19], [22, 17]]
[[7, 11], [17, 13]]
[[19, 24], [14, 10]]

ここで、最初のタプルは入力で、2 番目のタプルは出力です。私がインターネットで検索した逆伝播アルゴリズムの実装はすべて、分類手順 (1 または 0) を使用しています。

与えられた入力/出力のセットは、チェッカー ゲーム用のニューラル ネットワークを開発するためのものです。チェスの実装に使用されるのと同じ手法を使用していると思います。

このためのアルゴリズムを開発することは可能ですか? これを実行するためのガイドラインまたは実装方法を教えてください。OpenCV関数も使用できます。

4

2 に答える 2

0

これが私がどのように進めるかです。

{-1,1}分類問題の古典的な問題から始めましょう。f は (ニューラル) ネットワークを表します。x は RxR に属する入力です。y_obs は {-1,1} に属する出力です。

u_j は x と z の間の重みで、z は中間出力、j は 1 から h の範囲、u_j は R^2 配列です。w は z と y の間の重みで、y は最終出力、w は R^h 配列です。

ネットワークにフィードすると、R に属する f(x)=y が得られます。ニューラル ネットワークのトレーニングは、ネットワークの上に基準 E(x,y_obs) を追加することで構成され、この基準を最小化しようとします (バイナリ分類の場合)問題は、ネットワークの重みを更新することで (f(x)-y_obs)^2) を最小化することです。予測 g(x) は、トレーニングの最後に sign(f(x)) によって与えられます。

したがって、インターネットで見つけた実装を問題に適合させるには、ニューラル ネットワーク 2 xhx 2 を作成します。h は隠れユニットの数です。次に、コード内の関数基準を見つけて、適切な基準、たとえば 2 次元ユークリッド ノルムに置き換える必要があります。その場合、予測関数 g を実装する必要はありません。問題は分類問題ではありません

新しい重みを更新するには、逆伝播実装の定義を変更する必要がある場合があります。1-dim 出力の場合、w_j を更新する次の勾配があります。j は 1 から h (隠れユニットの数) の範囲です。

dE / dw_j = dE / dy * dy / dw_j
dE / du_jk = dE / dz_j * dz_j / du_jk 
           = dE / dy * dy / dz_j * dz_j / du_jk

(u_jk は u_j の k 番目のコンポーネント、k=1,2)

あなたが得る新しい状況で:

y_1 と y_2 は y のコンポーネントです。z と y の間の w_1 と w_2 の重み、w_1 と w_2 は R^h 配列です。

dE / dw_1j = dE / dy_1 * dy_1 / dw_1j
dE / dw_2j = dE / dy_2 * dy_2 / dw_2j
dE / du_jk = dE / dz_j * dz_j / du_jk
           = dE / dy_1 * dy_1 / dz_j * dz_j / du_jk + dE / dy_2 * dy_2 / dz_j * dz_j / du_jk

右側のすべての導関数は、ネットワークによって定義されます。

アルゴリズムの精度は基準に非常に敏感です。標準よりも洗練されたソリューションが存在する可能性があります。テストが教えてくれます!

于 2013-03-29T16:06:20.133 に答える
0

一般的な逆伝播アルゴリズムを使用できます。それについての詳細を説明した多くの情報源があります (たとえば、ウィキペディアのページ)。しかし、より良い結果を得るために、私はあなたにアドバイスがあります。

入力と出力を調整することをお勧めします。入力データの各コンポーネントに定数を追加し、トレーニング データの平均を 0 に近づけると、ネットワークがパターンをより速く、より適切に学習するのに役立ちます。

于 2013-03-30T01:32:34.347 に答える