softmaxの活性化関数の導関数を計算しようとしています。私はこれを見つけました:https://math.stackexchange.com/questions/945871/derivative-of-softmax-loss-function誰も私たちがi = jとi!= jの答えを得る方法の適切な導出をしてくれないようです。誰かがこれを説明してもらえますか?ソフトマックス活性化関数の分母のように総和が関与するとき、私はその派生物と混同しています。softmax関数の微分の説明
答えて
和の誘導体はすなわち、デリバティブの合計です:
d(f1 + f2 + f3 + f4)/dx = df1/dx + df2/dx + df3/dx + df4/dx
我々が開始o_i
に関してp_j
の誘導体を導出する:
d_i(p_j) = d_i(exp(o_j)/Sum_k(exp(o_k)))
私が使用することを決めましたこれをより読みやすくするために、o_i
に関する派生語についてはd_i
となります。 我々が得る製品のルールの使用:
d_i(exp(o_j))/Sum_k(exp(o_k)) + exp(o_j) * d_i(1/Sum_k(exp(o_k)))
は、第一項を見るとし、誘導体は0
i != j
場合、これは私がD_ijを呼び出しますdelta functionで表すことができるだろう。これは、(第一項のために)提供します:
D_ij
= D_ij * p_j
を乗じて
= D_ij * exp(o_j)/Sum_k(exp(o_k))
、これは私たちを与えたときに -zero用語は
= -exp(o_j) * Sum_k(d_i(exp(o_k))/Sum_k(exp(o_k))^2
= -exp(o_j) * exp(o_i)/Sum_k(exp(o_k))^2
= -(exp(o_j)/Sum_k(exp(o_k))) * (exp(o_j)/Sum_k(exp(o_k)))
= -p_j * p_i
2トンを置く(合計が分母にあるため、電源ルールを忘れてはならない)となります
i = j: D_ii * p_i - p_i * p_i = p_i - p_i * p_i = p_i * (1 - p_i)
i != j: D_ij * p_i - p_i * p_j = -p_i * p_j
私たちの答えです:あなたは本当に私たちはi = j
とi != j
例にそれを分割することができますしたい場合は
D_ij * p_j - p_j * p_i
:私たちは、驚くほど簡単な式を得るogether。
ありがとうございました!私は疑問が1つしかありません。なぜ、Σ_k((d e^{o_k})/ do_i)がステップ4から5まで「e^{o_i}」と評価されるのですか?私はあなたがその質問に提供できる洞察に非常に感謝しています。 – duhaime
@duhaime良い質問です。その合計のすべての条件を1つずつ考え、それぞれの用語に何が起こるかを見てください。あなたは2つのケースがあることが分かります:i = kのとき、用語は 'd/do_i e^o_i'です。これは' e^o_i'です。 i!= kのとき、あなたはゼロの束を得る。 –
大変感謝しています! – duhaime
- 1. Tensorflowの微分ラウンド関数?
- 2. 補間関数の部分微分
- 3. ラムダ関数の説明
- 4. 微分不可能な関数のスプライン?
- 5. PythonのSoftmaxとHinge関数
- 6. サンプルスカラー高次関数説明
- 7. Matlabのスパース関数の説明
- 8. DOJO:関数のパラメータの説明
- 9. MySQLでの関数の説明
- 10. 角での.next()関数の説明
- 11. 乗算された微分関数の積分
- 12. numpyの数値微分
- 13. JavaScript関数の構文説明:function object.myFunction(){..}
- 14. url()関数の説明Drupal 8
- 15. Verilog待機関数の説明
- 16. 視点分割の説明?
- 17. PCA説明分散分析
- 18. 任意に定義された関数の数値微分
- 19. ルアコードの説明(RNN関連)
- 20. 関数のn次微分値の求め方は?
- 21. 和の微分
- 22. スケーラブルニューラルネットワークsoftmax分類器
- 23. タプル関係微分または関係代数構文検証?
- 24. Python、関数内で説明する(アマチュアプログラマー)
- 25. Rユーザー定義関数の微分と式
- 26. Mathematicaのリストの数値微積分
- 27. 数学関数を入力してmatlabで微分する
- 28. 分散データベースでのレプリケーションの説明
- 29. 単語分割ヒストグラムの説明
- 30. Pythonコマンドnp.sum(x、axis = 0)とsoftmax関数
ありがとうございました!これはとても明確です。私はより良い説明を求めることができなかった! :)私は派生を完全に理解してうれしいです。私はこれを数学の交換されていないものに言及するつもりです。 – Roshini
@SirGuyは3番目の式を 'd_i(exp(o_j))/ Sum_k(exp(o_k))+ exp(o_j)* d_i(1/Sum_k(exp(o_k))'とすべきではありませんか?最後の 'o_k'の前にexpがありません –
@BenjaminCrouzierありがとう、修正済み – SirGuy