重みに関するSoftmaxの導関数


8

私はディープラーニングが初めてで、行列に関して次の関数の導関数を計算しようとしています:w

p(a)=ewaxΣdewdx

商規則を使用すると、次のようになります:

p(a)w=xewaxΣdewdxewaxΣdxewdx[Σdewdx]2=0

ソフトマックス関数は一般的にディープラーニングのアクティベーション関数として使用されているため、私は何か間違っていると思います(したがって、常に導関数を持つことはできません)。私は同様の質問をしましたが、計算のこの部分については光沢がないようです。0

私は正しい方向へのポインタをいただければ幸いです。


1
「」が何であるか、または次元が何であるかを説明していないので、あなたの表記は実際には機能しません。を数値として扱うように見えるので、それが問題の中心にあるように見えますが、それは意味がありません。xwx
whuber

回答:


13

最後の非表示層は、ベクトル形成する出力値を生成します。出力ニューロンレイヤーは、カテゴリに分類するためのもので、SoftMaxアクティベーション関数が条件付き確率(与えられる)をカテゴリのそれぞれに割り当てます。最終(または出力)レイヤーの各ノードでは、事前にアクティブ化された値(ロジット値)は、スカラー積で構成されます。ここで、。つまり、各カテゴリ、x=xK=1,,kxKwjxwj{w1,w2,,wk}kカプセル化された、前の層の出力(バイアスを含む)の各要素の寄与を決定する、それを指す異なる重みベクトルがあります。ただし、この最終層のアクティブ化は、要素ごとに(たとえば、各ニューロンのシグモイド関数を使用して)行われるのではなく、ベクトルを次のようにマップするSoftMax関数の適用によって行われます[0,1]の要素のベクトル。これは、色を分類するための構成されたNNです。xRkK

ここに画像の説明を入力してください

ソフトマックスを次のように定義する

σ(j)=exp(wjx)k=1Kexp(wkx)=exp(zj)k=1Kexp(zk)

重みのベクトルに関する偏微分を取得したいが、ロジットに関する微分を最初に取得できます。つまり、:(wi)σ(j)zi=wix

(wix)σ(j)=(wix)exp(wjx)k=1Kexp(wkx)=(wix)exp(wjx)k=1Kexp(wkx)exp(wjx)(k=1Kexp(wkx))2(wix)k=1Kexp(wkx)=δijexp(wjx)k=1Kexp(wkx)exp(wjx)k=1Kexp(wkx)exp(wix)k=1Kexp(wkx)=σ(j)(δijσ(i))

- quotient rule


(+1)以前のバージョンの投稿に忘れられていたインデックスがあり、softmaxの分母の変更が次のチェーンルールから除外されていることを指摘してくれたYuntai Kyongに感謝します。

連鎖ルールにより、

wiσ(j)=k=1K(wkx)σ(j)wiwkx=k=1K(wkx)σ(j)δikx=k=1Kσ(j)(δkjσ(k))δikx

この結果を前の方程式と組み合わせると:

wiσ(j)=σ(j)(δijσ(i))x

1.見栄えは良いが説明がわかりにくい。「最後の隠れ層は、ベクトルx⃗= xを形成する出力値を生成します。」しかしx出力ではなく入力ですか?2.「この最後のレイヤーのアクティブ化は要素ごとに行われません」:これは便利ですが、指数関数の使用に関する洞察が役立ちます。
coder.in.me

8

別の結果が得られました。また、は、ソフトマックスの分母内の依存するため、アントニの結果が正しいかどうかは不明です。σ(j)wi

wiσ(j)=k(wkx)σ(j)wiwkx=k(wkx)σ(j)δikx=kσ(j)(δjkσ(k))δikx=σ(j)(δijσ(i))x
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.