2

バックプロパゲーションについていくつか質問があります。私は、ニューラル ネットワーク理論の背後にある基礎を学ぼうとしており、単純な XOR 分類器を構築するために、小さく始めたいと考えていました。私は多くの記事を読み、複数の教科書をざっと読みましたが、XOR のパターンを教えることはできないようです。

まず、バックプロパゲーションの学習モデルがよくわかりません。これは、ネットワークをトレーニングしようとしている方法を表す擬似コードです。[ネットワークが適切にセットアップされていると仮定します (つまり、複数の入力が非表示層に接続され、出力層に接続され、すべてが適切に配線されている)]。

SET guess = getNetworkOutput() // Note this is using a sigmoid activation function.
SET error = desiredOutput - guess
SET delta = learningConstant * error * sigmoidDerivative(guess)
For Each Node in inputNodes
   For Each Weight in inputNodes[n]
      inputNodes[n].weight[j] += delta;

// At this point, I am assuming the first layer has been trained.
// Then I recurse a similar function over the hidden layer and output layer.
// The prime difference being that it further divi's up the adjustment delta.

これはおそらく十分ではないことを認識しており、実装のどの部分についても喜んで説明します. 上記のアルゴリズムを使用すると、私のニューラル ネットワークトレーニングされます。しかし、適切ではありません。出力は常に

XOR 1 1 [smallest number]
XOR 0 0 [largest number]
XOR 1 0 [medium number]
XOR 0 1 [medium number]

[1,1] [0,0] を同じ値になるようにトレーニングすることはできません。

提案、追加のリソース、記事、ブログなどがあれば、このトピックについてもっと知りたいと思っています。ご支援いただきありがとうございます。

4

1 に答える 1

2

Ok。初めに。それが述べているように、バックプロパゲーションは後ろから働きます。出力層からすべての非表示層を経由して入力層まで。最後のレイヤーでカウントされたエラーは、前のすべてのレイヤーに「伝播」されます。したがって、入力 - 1 つの非表示レイヤー - 出力のタイプのモデルがあると仮定します。最初のステップでは、目的の値とあなたが持っている値からエラーを数えます。次に、非表示と出力の間の重みでバックプロップを実行します。その後、入力と非表示の間の重みのバックプロップを実行します。各ステップで、次のレイヤーから前のレイヤーへのエラーを単純に逆伝播します。しかし、数学は混乱を招く可能性があります ;) 詳細な説明については、彼の短い章をご覧ください: http://page.mi.fu-berlin.de/rojas/neural/chapter/K7.pdf

于 2012-09-24T14:27:10.823 に答える