私は、ソフトマックス/クロスエントロピー出力層での逆伝播の仕組みを理解しようとしています。
クロスエントロピー誤差関数は
E(t,o)=−∑jtjlogoj
とニューロンにおける目標出力としてそれぞれ。合計は、出力層の各ニューロンに対するものです。自体は、関数の結果です。tojoj
oj=softmax(zj)=ezj∑jezj
この場合も、合計は出力層の各ニューロンあり、はニューロンへの入力です。zjj
zj=∑iwijoi+b
これは、対応する出力とニューロンに対する重みにバイアス加えた、前の層のすべてのニューロンの合計です。oiwijjb
ここで、出力層のニューロンを前の層のニューロンに接続する重みを更新するには、チェーンルールを使用して誤差関数の偏微分を計算する必要があります。wijji
∂E∂wij=∂E∂oj∂oj∂zj∂zj∂wij
ニューロンへの入力として、。zjj
最後の用語は非常に簡単です。と間に重みが1つしかないため、導関数は次のようになります。ij
∂zj∂wij=oi
最初の項は、出力に関するエラー関数の導出です。oj
∂E∂oj=−tjoj
中間項は、その入力に対する関数のが難しいことです。zj
∂oj∂zj=∂∂zjezj∑jezj
クラス対応する3つの出力ニューロンがあり、が次のようになっているとします。a,b,cob=softmax(b)
ob=ezb∑ez=ezbeza+ezb+ezc
および商ルールを使用したその導出:
∂ob∂zb=ezb∗∑ez−(ezb)2(∑jez)2=ezb∑ez−(ezb)2(∑ez)2
=softmax(b)−softmax2(b)=ob−o2b=ob(1−ob)
バックプロパゲーションの中間用語に戻ると、これは次のことを意味します:
∂oj∂zj=oj(1−oj)
すべてをまとめると
∂E∂wij=−tjoj∗oj(1−oj)∗oi=−tj(1−oj)∗oi
つまり、このクラスのターゲットがである場合、この重みを更新しません。それは正しく聞こえません。tj=0
この私に調査することは、人々はソフトマックス導出、1のための2つのバリエーションを持った用およびその他のように、ここやここ。i=ji≠j
しかし、私はこれを理解することはできません。また、これが私のエラーの原因であるかどうかもわかりません。そのため、すべての計算を投稿しています。誰かが私が何かを見逃している、または間違っている場所を明確にしてくれることを願っています。