softmax 损失函数求导过程
前言:softmax中的求导包含矩阵与向量的求导关系,记录的目的是为了回顾。
下图为利用softmax对样本进行k分类的问题,其损失函数的表达式为结构风险,第二项是模型结构的正则化项。
首先,每个queue:x(i)的特征维度是 n , 参数 θ 是一个 n×k 的矩阵,输出的结果 y(i) 为一个 k×1 的向量,其中第 j 个元素对应元素的 e 指数为该 queue 属于第 j 类的概率(未归一化)。所以虽然损失函数 J(θ) 是一个常数,但是它的自变量为一个矩阵 Θ 和 一个特征向量 x(i) ,这就牵涉到本文的重难点:矩阵、向量以及变量之间的求导。
更新 θj 的过程就是标量 J(θ) 对向量 θj 求导的过程,向量对标量求导的具体方式不想写,结论见文末,参考(https://blog.csdn.net/daaikuaichuan/article/details/80620518)。
第一项的求导过程:
将与 j 无关的乘项(-1/m)×∑i ×1{ j } 拉到最前面,对log中内容做变换得到((θj×x(i))) - log(∑L)。前者根据变量对向量求导可以得到为x(i),后者根据链式法则可以求出为{ [exp(θj*x(i)] / ∑L}* x(i), 与前面的项相乘就可以得到下式中的第一项。
第二项为 Θ 中所有列向量二范数之和,可以写成 ∑θjTθj ,其中与 θj 有关的内容为 θjTθj ,求导后为 2θj 。求导的结果为第二项。
J(θ) 对 θj 求导的结果如文中第二式。
标量对向量求导
向量对标量求导
向量对向量求导
softmax 损失函数求导过程的更多相关文章
- Deep Learning基础--Softmax求导过程
一.softmax函数 softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类! 假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个 ...
- softmax交叉熵损失函数求导
来源:https://www.jianshu.com/p/c02a1fbffad6 简单易懂的softmax交叉熵损失函数求导 来写一个softmax求导的推导过程,不仅可以给自己理清思路,还可以造福 ...
- 【转载】softmax的log似然代价函数(求导过程)
全文转载自:softmax的log似然代价函数(公式求导) 在人工神经网络(ANN)中,Softmax通常被用作输出层的激活函数.这不仅是因为它的效果好,而且因为它使得ANN的输出值更易于理解.同时, ...
- 深度学习:Sigmoid函数与损失函数求导
1.sigmoid函数 sigmoid函数,也就是s型曲线函数,如下: 函数: 导数: 上面是我们常见的形式,虽然知道这样的形式,也知道计算流程,不够感觉并不太直观,下面来分析一下. 1.1 ...
- 简单易懂的softmax交叉熵损失函数求导
参考: https://blog.csdn.net/qian99/article/details/78046329
- Logistic回归中损失函数求导证明过程
- softmax分类器+cross entropy损失函数的求导
softmax是logisitic regression在多酚类问题上的推广,\(W=[w_1,w_2,...,w_c]\)为各个类的权重因子,\(b\)为各类的门槛值.不要想象成超平面,否则很难理解 ...
- 【机器学习】BP & softmax求导
目录 一.BP原理及求导 二.softmax及求导 一.BP 1.为什么沿梯度方向是上升最快方向 根据泰勒公式对f(x)在x0处展开,得到f(x) ~ f(x0) + f'(x0)(x-x0) ...
- 【机器学习基础】对 softmax 和 cross-entropy 求导
目录 符号定义 对 softmax 求导 对 cross-entropy 求导 对 softmax 和 cross-entropy 一起求导 References 在论文中看到对 softmax 和 ...
随机推荐
- java 继承、重载、重写与多态
首先是java 继承.重载和重写的概念 继承: 继承的作用在于代码的复用.由于继承意味着父类的所有方法亦可在子类中使用,所以发给父类的消息亦可发给衍生类.如果Person类中有一个eat方法,那么St ...
- java 秒时间格式化
public static String durationFormat(Integer totalSeconds) { if (totalSeconds == null || totalSeconds ...
- Java与C/C++有什么区别?
(1)Java为解释型语言,其运行过程为:程序源代码经过Java编译器编译成字节码,然后由JVM解释执行.而C/C++为编译型语言,源代码经过编译和链接生成可执行的二进制代码,因此,Java的执行速度 ...
- Java - Java入门(2-1am)
第一讲.Java入门 1. 计算机语言是人和计算机进行交互的一种工具,人们通过使用计算机语言编写程序来向计算机施令,计算机则执行程序,并把结果输出给用户. 2. 机器语言:由0.1序列构成的指令码组成 ...
- 十四、使用framebuffer填充纯色
简单描述一下framebuffer的使用,它其实就相当于将屏幕上的像素映射到内存中,改变内存中的内容后屏幕自动就变颜色了. 首先要调用open("/dev/fb0", O_RDWR ...
- 网络协议中HTTP,TCP,UDP,Socket,WebSocket的优缺点/区别
先说一下网络的层级:由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层 1.TCP和UDP TCP:是面向连接的一种传输控制协议.属于传输层协议.TCP连接之后,客户端和服务器可 ...
- IIC时序和24C02读写字节时序
一年前刚学51单片机时,接触到了IIC时序和用IIC通信读写AT24C02的学习历程.那时刚刚大一,对数据线时钟线等概念不是很清楚,也没有分清IIC通信的底层时序和写24c02的时序为什么不同. 借着 ...
- postman的安装和使用
在后端开发的过程中,没有前端代码可以配合测试已完成的代码是否有问题,这个时候就需要postman来帮忙解决.对于后端人员来说,postman是很好的测试工具,下面具体讲下怎么安装postman,本次安 ...
- Tomcat配置SSL后使用HTTP后跳转到HTTPS
Tomcat配置好SSL后将HTTP请求自动转到HTTPS需要在TOMCAT/conf/web.xml的未尾加入以下配置: <login-config> <!-- Authoriza ...
- mysql新增用户并开启远程连接
之前使用mysql一直使用root来连接登录数据库,现在想使用新的用户名来连接数据库,碰到数据连接不上的情况. 把这些记录下来,以备后用 1.首先,创建用户 CREATE USER 'xiazhenx ...