Softmax Regression损失函数的求导
softmax regression 代价函数:
J(θ)=−1m[∑i=1m∑j=1k1{y(i)=j}logeθjTX(i)∑l=1keθlTX(i)]J(\theta) = -\frac{1}{m}\left[\sum_{i=1}^{m}\sum_{j=1}^{k}1\{y^{(i)}=j\}log \frac{e^{{\theta_j^T}{X^{(i)}}}}{\sum_{l=1}^ke^{{\theta_l^T}{X^{(i)}}}}\right] J(θ)=−m1[i=1∑mj=1∑k1{y(i)=j}log∑l=1keθlTX(i)eθjTX(i)]
其中,1{y(i)=j}表示的是当y(i)属于类别j时,1{y(i)=j}=1, 否则,1{y(i)=j}=0.
对损失函数求导:
∇θjJ(θ)=−1m∑i=1m[∇θj∑j=1k1{y(i)=j}logeθjTX(i)∑l=1keθlTX(i)]=−1m∑i=1m[1{y(i)=j}⋅∑l=1keθlTX(i)eθjTX(i)⋅(−eθjTX(i)⋅X(i)⋅eθjTX(i)(∑l=1keθlTX(i))2+eθjTX(i)⋅X(i)∑l=1keθlTX(i))]=−1m∑i=1m[1{y(i)=j}⋅∑l=1keθlTX(i)−eθjTX(i)∑l=1keθlTX(i)⋅X(i)]\nabla_{\theta_j}J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}\left[\nabla_{\theta_j}\sum_{j=1}^{k}1\{y^{(i)}=j\}log \frac{e^{{\theta_j^T}{X^{(i)}}}}{\sum_{l=1}^ke^{{\theta_l^T}{X^{(i)}}}}\right] \\=-\frac{1}{m}\sum_{i=1}^{m}\left[1\{y^{(i)}=j\}⋅\frac{\sum_{l=1}^ke^{{\theta_l^T}X^{(i)}}}{e^{\theta_j^TX^{(i)}}} ⋅\left(-\frac{e^{{\theta_j^T}X^{(i)}}⋅X^{(i)}⋅{e^{{\theta_j^T}{X^{(i)}}}}}{\left({\sum_{l=1}^ke^{{\theta_l^T}{X^{(i)}}}}\right)^2} + \frac{e^{{\theta_j^T}X^{(i)}}⋅X^{(i)}}{{\sum_{l=1}^ke^{{\theta_l^T}{X^{(i)}}}}}\right)\right]\\=-\frac{1}{m}\sum_{i=1}^{m}\left[1\{y^{(i)}=j\}⋅\frac{\sum_{l=1}^ke^{{\theta_l^T}{X^{(i)}}}-e^{{\theta_j^T}{X^{(i)}}}}{\sum_{l=1}^ke^{{\theta_l^T}{X^{(i)}}}}⋅X^{(i)}\right] ∇θjJ(θ)=−m1i=1∑m[∇θjj=1∑k1{y(i)=j}log∑l=1keθlTX(i)eθjTX(i)]=−m1i=1∑m⎣⎢⎡1{y(i)=j}⋅eθjTX(i)∑l=1keθlTX(i)⋅⎝⎜⎛−(∑l=1keθlTX(i))2eθjTX(i)⋅X(i)⋅eθjTX(i)+∑l=1keθlTX(i)eθjTX(i)⋅X(i)⎠⎟⎞⎦⎥⎤=−m1i=1∑m[1{y(i)=j}⋅∑l=1keθlTX(i)∑l=1keθlTX(i)−eθjTX(i)⋅X(i)]
第一步求导中,首先是对数函数的求导,此处将log看成ln:
(lnx)′=1x(lnx)' = \frac{1}{x} (lnx)′=x1
其次是对指数函数的求导:
(ex)′=ex(e^x)'=e^x (ex)′=ex
另外对?_j_的求导是针对?中的某一项j,所以其他非j的?项求导后为0.
这一步还有看不懂的可以参考一下求导例题:
而对于每一个样本,估计其所属的类别的概率为:
P(y(i)=j∣X(i);θ)=eθjTX(i)∑l=1keθlTX(i)P(y^{(i)}=j|X^{(i)};\theta)=\frac{e^{{\theta_j^T}{X^{(i)}}}}{\sum_{l=1}^ke^{{\theta_l^T}{X^{(i)}}}} P(y(i)=j∣X(i);θ)=∑l=1keθlTX(i)eθjTX(i)
所以最终的结果是:
∇θjJ(θ)=−1m∑i=1m[1{y(i)=j}⋅∑l=1keθlTX(i)−eθjTX(i)∑l=1keθlTX(i)⋅X(i)]=−1m∑i=1m[X(i)⋅(1{y(i)=j}−P(y(i)=j∣X(i);θ))]\nabla_{\theta_j}J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}\left[1\{y^{(i)}=j\}⋅\frac{\sum_{l=1}^ke^{{\theta_l^T}{X^{(i)}}}-e^{{\theta_j^T}{X^{(i)}}}}{\sum_{l=1}^ke^{{\theta_l^T}{X^{(i)}}}}⋅X^{(i)}\right]\\=-\frac{1}{m}\sum_{i=1}^{m}\left[X^{(i)}⋅\left(1\{y^{(i)}=j\}-P(y^{(i)}=j|X^{(i)};\theta)\right)\right] ∇θjJ(θ)=−m1i=1∑m[1{y(i)=j}⋅∑l=1keθlTX(i)∑l=1keθlTX(i)−eθjTX(i)⋅X(i)]=−m1i=1∑m[X(i)⋅(1{y(i)=j}−P(y(i)=j∣X(i);θ))]
此处?_j_表示的是一个向量。
通过梯度下降法的公式可心更新如下:
θj=θj+α∇θjJ(θ)\theta_j = \theta_j+\alpha\nabla_{\theta_j}J(\theta) θj=θj+α∇θjJ(θ)
更详细了解Softmax回归可参考Ufldl教程。
Softmax Regression损失函数的求导相关推荐
- 交叉熵代价函数(损失函数)及其求导推导 (Logistic Regression)
目录 1. 前言 2. 交叉熵损失函数 3. 交叉熵损失函数的求导 前言 说明:本文只讨论Logistic回归的交叉熵,对Softmax回归的交叉熵类似(Logistic回归和Softmax回归两者本 ...
- sigmoid函数求导_交叉熵损失函数的求导(Logistic回归)
目录 前言 交叉熵损失函数 交叉熵损失函数的求导 前言 最近有遇到些同学找我讨论sigmoid训练多标签或者用在目标检测中的问题,我想写一些他们的东西,想到以前的博客里躺着这篇文章(2015年读研时机 ...
- 交叉熵代价函数(损失函数)及其求导推导
转自:http://blog.csdn.net/jasonzzj/article/details/52017438 前言 交叉熵损失函数 交叉熵损失函数的求导 前言 说明:本文只讨论Logistic回 ...
- softmax with cross-entropy loss求导(转载+细节整理)
softmax 函数 softmax(柔性最大值)函数,一般在神经网络中, softmax可以作为分类任务的输出层. 其实可以认为softmax输出的是几个类别选择的概率,比如我有一个分类任务,要分为 ...
- 对逻辑回归损失函数进行求导
如果我们基于逻辑回归的损失函数做GD梯度下降,那么就要求梯度,而我们知道求梯度是loss损失函数对theta求偏导. 1.首先先对逻辑回归函数求导(后面对loss求偏导会用到) 2.逻辑回归损失函数 ...
- [损失函数]Softmax求导
原文链接: https://blog.csdn.net/u014380165/article/details/79632950 我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个C ...
- 卷积神经网络系列之softmax loss对输入的求导推导
我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等.虽然现在已经开源了很多深度学习框架(比如MxNet,Caf ...
- softmax loss对输入的求导推导
转载自: https://blog.csdn.net/u014380165/article/details/79632950 我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CN ...
- 【数据挖掘】神经网络 后向传播算法 ( 梯度下降过程 | 梯度方向说明 | 梯度下降原理 | 损失函数 | 损失函数求导 | 批量梯度下降法 | 随机梯度下降法 | 小批量梯度下降法 )
文章目录 I . 梯度下降 Gradient Descent 简介 ( 梯度下降过程 | 梯度下降方向 ) II . 梯度下降 示例说明 ( 单个参数 ) III . 梯度下降 示例说明 ( 多个参数 ...
最新文章
- 简评亚洲人工智能发展现状:机遇与挑战并存
- PHP获取二维数组中某一列的值集合
- Oracle表无法expdp,{Oracle数据库}EXPDP报错ORA-39171、ORA-01691解决方法
- 详解 Cookie 纪要(vue.cookie,jquery.cookie简化)
- 动态规划经典题之石子合并
- 用jdbc操作mysql 实现注册功能_JDBC链接Mysql数据库---实现登陆注册功能
- 8187l网卡驱动 linux版,在Ubuntu中安装使用realtek 8187b无线网卡
- Garbled Circuits介绍 - 2 基础知识
- C语言客房管理系统课程设计
- windows2012运行linux,在 Windows Server 2012 R2 Hyper-V 上提供 Linux 支持
- python中安装decimal模块_python decimal和fractions模块
- python语言玫瑰花_python 实现漂亮的烟花,樱花,玫瑰花
- HTML 写代码流星雨
- 【Qualcomm高通音频】如何使用QXDM、QCAT、CoolEditor音频日志抓取、解析和分析?
- Java面试-001
- 百度360搜索关键字
- oracle表数据如何导出成dbf,怎么将EXCEL导成DBF?《dbf导出excel数据》
- python 躺着刷视频(自动刷视频)
- 行列式计算(编程实现)
- java计算机毕业设计医疗健康管理平台会员管理子系统源码+数据库+系统+lw文档+部署
热门文章
- 点赋科技:淘宝关键词搜索不到是什么原因?
- Linux搭建samba文件共享服务器,实现基于Linux和Windows的共享文件服务
- 15. 生死执行力—电商经营之道
- word 2007 不能输入(搜狗)中文的解决办法
- 【全国数据】全国五级河流水系shp下载
- 谷歌浏览器Google Chrome 88.0.4324.104 Stable 官方正式版
- 【开发教程1】人形街舞机器人-套件检测教程
- [转] Xcode 高级调试技巧
- To install it, you can run: npm install --save module
- ERROR: Error fetching remote repo ‘origin‘解决办法