Softmax反向传播

softmax 公式:

假设有一个向量\textbf{x},其长度为nx_{i}表示\textbf{x}中的第i个元素,那么这个元素的softmax值为: 

y_{i}=\frac{e^{x_{i}}}{\sum{}_{j=1}^{k}e^{x_{j}}}

Softmax反向传播

当j!=i时,\frac{\partial l}{\partial x_{i}} =\sum_{j=0,j!=i}^{n}\frac{\partial l}{\partial y_{j}}\frac{\partial y_{j}}{\partial x_{i}}=\sum_{j=0,j!=i}^{n}\frac{\partial l}{\partial y_{j}}\frac{-e^{x_{i}}\cdot e^{x_{j}}}{\sum{}_{k=0}^{n}e^{x_{k}}\cdot\sum{}_{k=0}^{n}e^{x_{k}}}

当j=i时,\frac{\partial l}{\partial x_{i}} =\frac{\partial l}{\partial y_{i}}\frac{\partial y_{i}}{\partial x_{i}}=\frac{\partial l}{\partial y_{i}}\frac{e^{x_{i}}\sum{}_{k=0}^{n}e^{x_{k}}-e^{x_{i}}\cdot e^{x_{i}}}{\sum{}_{k=0}^{n}e^{x_{k}}\cdot\sum{}_{k=0}^{n}e^{x_{k}}}

 

所以 将上面两个式子加起来得到

 \frac{\partial l}{\partial x_{i}} =\sum_{j=0,j!=i}^{n}\frac{\partial l}{\partial y_{j}}\frac{\partial y_{j}}{\partial x_{i}}+\frac{\partial l}{\partial y_{i}}\frac{\partial y_{i}}{\partial x_{i}}=\sum_{j=0,j!=i}^{n}\frac{\partial l}{\partial y_{j}}\frac{-e^{x_{i}}\cdot e^{x_{j}}}{\sum{}_{k=0}^{n}e^{x_{k}}\cdot\sum{}_{k=0}^{n}e^{x_{k}}}+\frac{\partial l}{\partial y_{i}}\frac{e^{x_{i}}\sum{}_{k=0}^{n}e^{x_{k}}-e^{x_{i}}\cdot e^{x_{i}}}{\sum{}_{k=0}^{n}e^{x_{k}}\cdot\sum{}_{k=0}^{n}e^{x_{k}}}=\sum_{j=0}^{n}\frac{\partial l}{\partial y_{j}}\frac{-e^{x_{i}}\cdot e^{x_{j}}}{\sum{}_{k=0}^{n}e^{x_{k}}\cdot\sum{}_{k=0}^{n}e^{x_{k}}}+\frac{\partial l}{\partial y_{i}}\frac{e^{x_{i}}\sum{}_{k=0}^{n}e^{x_{k}}}{\sum{}_{k=0}^{n}e^{x_{k}}\cdot\sum{}_{k=0}^{n}e^{x_{k}}}

=-\sum_{j=0}^{n}\frac{\partial l}{\partial y_{j}}\cdot y_{j}\cdot y_{i}+\frac{\partial l}{\partial y_{i}}\cdot y_{i}

=-(\sum_{j=0}^{n}\frac{\partial l}{\partial y_{j}}\cdot y_{j})\cdot y_{i}+\frac{\partial l}{\partial y_{i}}\cdot y_{i}

注意上式括号里面的量与x_{i}无关,并且其值为\frac{\partial l}{\partial y_{j}}y_{j}的逐元素乘积之和,设为\delta的乘积之和,设其为\sigma

{\frac{\partial l}{\partial \mathbf{x}}} = -\sigma \cdot \mathbf{y}+{\frac{\partial l}{\partial \mathbf{y}}} \cdot \mathbf{y}= \mathbf{y}\cdot({\frac{\partial l}{\partial \mathbf{y}}}-\sigma )

 

有人问这有什么意义?

其实这样就说明softmax的反向传播在编程的时候并不需要 分i=j和i!=j的情况来计算。

以caffe为例子 bottom_diff = top_data * (top_diff - sum(top_diff * top_data))  其中*表示点乘。

可以看出这样来计算backward不需要 gemm矩阵乘,只需要点乘即可完成。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值