バックプロパゲーションについていくつか質問があります。私は、ニューラル ネットワーク理論の背後にある基礎を学ぼうとしており、単純な 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] を同じ値になるようにトレーニングすることはできません。
提案、追加のリソース、記事、ブログなどがあれば、このトピックについてもっと知りたいと思っています。ご支援いただきありがとうございます。