cs224n-naive-softmax-的推导与实现
0、简介
在cs224n(2019)第二次课后作业Assignment 2的手写作业b(推导梯度公式)和编程作业a中对naive softmax的实现。首先手写作业的推导公式,编程作业则是对这些公式的简单实现
1、公式推出
首先看下背景和问题


首先问题a中已经证明了 损失函数 J = C r o s s E n t r o p y ( y , y ^ ) J = CrossEntropy(y, \hat{y}) J=CrossEntropy(y,y^),而且有 y ^ = s o f t m a x ( U T v c ) \hat{y}=softmax(U^Tv_c) y^=softmax(UTvc), 不妨用 θ = U t v c \theta=U^tv_c θ=Utvc,现在有 y ^ = s o f t m a x ( θ ) \hat{y}=softmax(\theta) y^=softmax(θ), 然后用chain rule推导J关于vc的偏导数。
关 于 的 求 导 如 下 : 由 以 上 的 导 数 可 推 : 由 链 式 法 则 : J = − y log y ^ ; ∂ J ∂ y ^ = − y y ^ y ^ = s o f t m a x ( θ ) 关于softmax的求导如下: ∵ y = e x i Σ e x j ∂ y ∂ x i = e x i ( Σ − e x i ) Σ 2 = y ( 1 − y ) 由以上softmax的导数可推: ∂ y ^ ∂ θ = y ^ ( 1 − y ^ ) ∂ θ ∂ v c = U T 由链式法则: ∵ ∂ J ∂ v c = ∂ J ∂ y ^ ∂ y ^ ∂ θ ∂ θ ∂ v c = − y 1 y ^ y ^ ( 1 − y ^ ) U T = − y ( 1 − y ^ ) U T 关于的求导如下:由以上的导数可推:由链式法则: \\J=-y\log{\hat{y}};\ \frac{\partial J}{\partial \hat{y}}=-\frac{y}{\hat{y}} \\ \hat{y}=softmax(\theta) \\ \text{关于softmax的求导如下:} \\ \because y=\frac{e^{x_i}}{\Sigma{e^{xj}}} \\ \frac{\partial{y}}{\partial{x_i}} = \frac{e^{x_i}(\Sigma-e^{x_i})}{\Sigma^2}=y(1-y) \\ \text{由以上softmax的导数可推:} \\ \frac{\partial{\hat{y}}}{\partial{\theta}}=\hat{y}(1-\hat{y}) \\ \frac{\partial{\theta}}{\partial{v_c}}=U^T \\ \text{由链式法则:} \\ \because \begin{aligned} \frac{\partial J}{\partial v_c} &= \frac{\partial J}{\partial \hat{y}} \frac{\partial{\hat{y}}}{\partial{\theta}} \frac{\partial \theta}{\partial v_c} =-y\frac{1}{\hat{y}}\hat{y}(1-\hat{y})U^T=-y(1-\hat{y})U^T \ \end{aligned} 关于的求导如下:由以上的导数

This blog covers the derivation and implementation of naive softmax in the context of CS224n (2019). It starts with an introduction, followed by a detailed explanation of the formula derivation using chain rule and the gradient of the softmax function. The post concludes with a brief mention of the provided code for the implementation."
88195562,5040019,在线编译器推荐:从调试到汇编查看,"['编译器', '工具', '在线开发', '调试工具', '代码编辑']
最低0.47元/天 解锁文章
1016

被折叠的 条评论
为什么被折叠?



