word2vecのクロスエントロピー損失の導関数


10

私はcs224dオンラインスタンフォードクラスのコース教材の最初の問題セットを処理しようとしていますが、問題3Aでいくつかの問題があります。ソフトマックス予測関数とクロスエントロピー損失関数でスキップグラムword2vecモデルを使用すると、予測された単語ベクトルに関して勾配を計算したい。したがって、softmax関数が与えられます:

wi^=Pr(wordi∣r^,w)=exp⁡(wiTr^)∑j|V|exp(wjTr^)

そしてクロスエントロピー関数:

CE(w,w^)=−∑kwklog(wk^)

\ frac {\ partial {CE}} {\ partial {\ hat {r}}}を計算する必要があり∂CE∂r^

私の手順は次のとおりです。

CE(w,w^)=−∑k|V|wklog(exp⁡(wkTr^)∑j|V|exp(wjTr^))

=−∑k|V|wklog(exp⁡(wkTr^)−wklog(∑j|V|exp(wjTr^))

ここでwkは1つのホットベクトルで、iは正しいクラスです。

CE(w,w^)=−wiTr^+log(∑j|V|exp(wjTr^))

∂CE∂r^=−wi+1∑j|V|exp(wjTr^)∑j|V|exp(wjTr^)wj

これは正しいですか、それともさらに簡略化できますか?問題セットの解決策がオンラインに投稿されていないので、私が正しい軌道に乗っていることを確認したいと思います。さらに、書かれた割り当てを正しく取得することは、プログラミングの割り当てを適切に実行できるようにするために重要です。


質問に自習タグを追加してください
— Dawny33

最初のログIDの2番目のマイナス記号はプラスでなければなりません。あなたのためにそれを修正しようとしましたが、編集は少なくとも6文字である必要があります:\
— FatalMojo

回答:


7

∂CE∂r^=−wi+1∑j|V|exp(wjTr^)∑j|V|exp(wjTr^)wj
はとして書き換えられ 注、合計は両方ともjでインデックス付けされますが、実際には2つの異なる変数である必要があります。これはより適切です これは変換され
∂CE∂r^=−wi+∑j|V|(exp⁡(wj⊤r^)∑j|V|exp(wjTr^)⋅wj)
∂CE∂r^=−wi+∑x|V|(exp⁡(wx⊤r^)∑j|V|exp(wjTr^)⋅wx)
∂CE∂r^=−wi+∑x|V|Pr(wordx∣r^,w)⋅wx

1
関連して、彼は講義2 @
— 38:00でFatalMojo

合計に異なる変数でインデックスを付ける必要があるのはなぜですか?
— 山猫2015

1
混乱を避けるためだけに。数学的には同じことを意味しますが、新しい合計を追加するときにインデックスラベルを変更することをお勧めします。
— FatalMojo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.