バックプロパゲーション(BP)ネットワークのノードを考えてみましょう。複数の入力を持ち、出力値を生成します。訓練に誤り訂正を使用したいので、ノードのエラー推定値に基づいて重みを更新します。
各ノードにはバイアス値θがあります。これは内部の一定値1.0の入力に対する重みとして考えることができます。
活性化は、重み付け入力とバイアス値の合計です。関心のあるノードをj、先行レイヤのノードをi、後続レイヤのノードをkと呼びます。我々のノードjの活性化は、次にある:
ネット J =Σ I(O I×W IJ)+θ Jある
、 jの活性化値は、ノードiと対応するウェイトリンクノードiとjの出力とバイアス値との積の和である。
我々のノードjの出力は、活性化の伝達関数である:
O J = F(正味 J)
F一般シグモイド関数です。
:
F(正味 J)は、1 /(1 + E -net J)
シグモイド関数は、一次導関数を指定して簡単に持っています=
f '(ネットj)= f(ネットj)×(1。0 - F(ネット Jは))
我々が使用するどのような伝達関数、我々は、その一次導関数を計算する方法を知っておく必要があります。 BPは連鎖ルールを介して勾配降下を処理するため、重要です。上記の式は、異なる伝達関数によって異なる。
ここまでは、入力値を取得し、アクティブ化を計算し、出力を計算し、アクティブ化の一次導関数を計算する方法を知っています。今我々は、エラーと体重調整に対処する必要があります。
BPのノードエラー推定に使用される値はδと呼ばれます。ノードのδは、ノードの起動の1次導関数と受信する誤差項に比例します。受け取った誤差項の2つの公式があります.1つは出力ノード用、もう1つは隠れノード用です。
一般的に、
δ= F '(ネット)×(受信エラー)
出力ノードに対して、
δ出力 = F'(正味)×(t-o)
ここで、tはその出力ノードにおける期待値であり、oはその出力ノードの実際の出力値である。 Σ K( JKワット× Kδ)×
δ J = F '(ネット J):私たちの隠されたノードjの場合
、それはこのようなものです
Jδ当社ノードjのためのδは、私たちのトランの一次導関数の積であります次のレイヤーのデルタの合計(出力に近い)に接続ウェイトの値を掛けたものです。これを使って、ノードの前の層(入力に近い)に行く重みを調整する方法を計算することができます。
DW IJ = L×O 私×δ JここDW
は "重量変化" を表しは、だから何方程式の言うことになる重量変化からノードiからノードjへの伝達関数は、学習パラメータL(典型的には、ネットワーク内のすべてのノードについて同じ値)、ノードiの出力値、およびノードjに対するδ(誤差項)の積に等しい。
バイアス値を調整することは、重量を調整することと似ています。ここで
Dθ J = L F×(θ J)×δ J
Dθは "θの変化" を表します。バイアス値θ jに伝達関数を適用して、ノードからの出力のような用語を得る必要があります。それ以外の場合は、他の方程式と同じように見えます。
重量の計算はネットワーク全体で行う必要があります。すべての計算が終わったら変更を適用する必要があります。
入力重み/値、出力 重み/値、及びN個の出力のすべてのノードのエラー/コスト与えられた任意のノードNについて
これはかなり広い質問です。あなたはhttp://dsp.stackexchange.comで運が良いかもしれません。 – mtrw
非常に良い説明はhttp://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html –
でご覧になれます。私は差動ビットを理解しているかどうかはわかりません。 df(e)/ deは、重み付けされた合計(e)または更新しようとしている体重の接続の入力に関する微分を意味しますか?ノードが線形活性化関数を持つとすると、df(e)/ deは常に1(f(e)= e→df(e)/ de = 1)になりますか?それとも、常に更新しているウェイトに等しいでしょうか?(f(e)= w1x1 + w2x2 - > df(e)/ dx1 = w1) –