我是靠谱客的博主 冷静乌龟,这篇文章主要介绍softmax代价函数的导数计算,现在分享给大家,希望可以做个参考。

对于softmax的理解请参考Ufldl教程,本文仅对代价函数求导部分进行推导


softmax regression 代价函数:

J(θ)=−1m⎡⎣∑i=1m∑j=1k1{y(i)=j}logeθTjx(i)∑kl=1eθTjx(i)⎤⎦

导数计算:
首先利用 logab=log(a)−log(b) 将log函数内部展开:
1{yi=j}logeθTjxi∑kl=1eθTlxi=1{yi=j}[log(eθTjxi)−log(∑l=1keθTlxi)]

接着对 θj 求导得:
1{yi=j}[xi−eθTjxi∑kl=1eθTlxixi]=xi(1{yi=j}−eθTjxi∑kl=1eθTlxi)=xi(1{yi=j}−p(yi=j|xi,θ)

上式中,将 log 看成 ln ,另外,每一次的求导其实只是针对 θ 中的某一项 j ,所以其他的θ的非 j 项都为常数,所以求导以后都为0。
这样就得到了梯度函数:
∂J∂θj=−1n∑i=1n[xi(1{yi=j}−p(yi=j|xi,θ)]

原文出处:http://zjjconan.github.io/articles/2015/04/Softmax-Regression-Matlab/

最后

以上就是冷静乌龟最近收集整理的关于softmax代价函数的导数计算的全部内容,更多相关softmax代价函数内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(220)

评论列表共有 0 条评论

立即
投稿
返回
顶部