私はあなたの例を正確に理解していませんが、逆伝播の問題はかなり一般的です。厳密に階層化されたフィードフォワードと1つの出力ノードを持つ最も単純な場合:
まず、情報を前方に伝播する必要があります。ただし、これは既にあるかもしれませんが、各ノードの値がsquashing関数の後にあった値を追跡し、このノードを呼び出すことができ、ノードごとに値を保持できるようにしてください。
フォワード伝播が完了したら、バックプロパゲーションのためにエラーを計算する必要があります。これは、予想されたものと与えられたものとの間の違いです。さらに、後で更新の指示を与えるために、これを微分で乗算する(微分の導出は複雑であるが、使用は非常に簡単である)。
Error[output] = (Expected - Actual) * o(1 - o)
、ネットワークを介して後方に各ノードでエラーが伝播します。これは、エラーのための各ノードの「責任」に関する見積もりを与える。したがって、各ノードの誤差は、各リンクの重みによって重み付けされた次の層のすべてのノードにおける誤差である。ここでもまた、我々は導関数を乗ずるので方向性を持つ。
Error[hidden] = Sum (Error[output]*weight[hiddenToOutput]) * o(1 - o)
必要に応じて(出力に隠さ隠さに隠された隠しへの入力、)リンクのすべての層を繰り返し、これを。
最後に、訓練はリンク上の重みを更新することによって行われます。このために、最終更新を得るために必要なすべての情報を組み合わせます。入力(つまり、前の層から、「O」であり、エラーが次の層からなる)リンクに入った値であり、そしてlearningRateは、いくつかの小さな数である
Weight[hiddenToOutput] = weight[hiddenToOutput] + learningRate * error[output] * input
(例えば0.01 )私たちの更新のサイズを制限する。ウェイト[inputToHidden]などのレイヤーについても同様の計算が行われます。
((NB:これは)機能を退治シグモイドを想定)、このことができます
希望。追加情報は多くの場所にあります。私はTom M. MitchellのMachine Learningから学びました。それは良い擬似コードセクションを持っています。
あなたの質問をリファクタリングしてください。私は "3つのすべてのインスタンス"が何を意味するのか分かりません0.562とは何ですか?また、私は最後の質問を理解していません。 –
あなたの質問を明確にしてください。 「3色の訓練が必要です」と言えば、RGB値をとり、それが3色のどれであるかを決定するニューラルネットワークを訓練したいと思っていますか?赤が最小の値であるときに、あなたの例がどのように赤を表しているか分かりません。 – Andrew