点击上方,选择星标,每天给你送干货!


作者丨Criss

来源丨机器学习与生成对抗网络

编辑丨极市平台

derivative of softmax

1.1 derivative of softmax

一般来说,分类模型的最后一层都是softmax层,假设我们有一个  分类问题,那对应的softmax层结构如下图所示(一般认为输出的结果  即为输入  属于第i类的概率):

假设给定训练集  ,分类模型的目标是最大化对数似然函数  ,即

通常来说,我们采取的优化方法都是gradient based的(e.g., SGD),也就是说,需要求解  。而我们只要求得  ,之后根据链式法则,就可以求得  ,因此我们的核心在于求解  ,即

由上式可知,我们只需要知道各个样本  的  ,即可通过求和求得  ,进而通过链式法则求得  。因此下面省略样本下标j,仅讨论某个样本  。

实际上对于如何表示  属于第几个类,有两种比较直观的方法:

  • 一种是直接法(i.e., 用  来表示x属于第3类),则  ,其中  为指示函数;

  • 另一种是one-hot法(i.e., 用  来表示x属于第三类),则  ,其中  为向量  的第  个元素。

  • p.s., 也可以将one-hot法理解为直接法的实现形式,因为one-hot向量实际上就是  。

为了方便,本文采用one-hot法。于是,我们有:

1.2 softmax & sigmoid

再补充一下softmax与sigmoid的联系。当分类问题是二分类的时候,我们一般使用sigmoid function作为输出层,表示输入  属于第1类的概率,即

然后利用概率和为1来求解  属于第2类的概率,即

乍一看会觉得用sigmoid做二分类跟用softmax做二分类不一样:

  • 在用softmax时,output的维数跟类的数量一致,而用sigmoid时,output的维数比类的数量少;

  • 在用softmax时,各类的概率表达式跟sigmoid中的表达式不相同。

但实际上,用sigmoid做二分类跟用softmax做二分类是等价的。我们可以让sigmoid的output维数跟类的数量一致,并且在形式上逼近softmax。

通过上述变化,sigmoid跟softmax已经很相似了,只不过sigmoid的input的第二个元素恒等于0(i.e., intput为  ),而softmax的input为  ,下面就来说明这两者存在一个mapping的关系(i.e., 每一个  都可以找到一个对应的  来表示相同的softmax结果。不过值得注意的是,反过来并不成立,也就是说并不是每个  仅仅对应一个  )。

因此,用sigmoid做二分类跟用softmax做二分类是等价的。

02 backpropagation

一般来说,在train一个神经网络时(i.e., 更新网络的参数),我们都需要loss function对各参数的gradient,backpropagation就是求解gradient的一种方法。

假设我们有一个如上图所示的神经网络,我们想求损失函数  对  的gradient,那么根据链式法则,我们有

而我们可以很容易得到上述式子右边的第二项,因为  ,所以有

其中,  是上层的输出。

而对于式子右边的的第一项,可以进一步拆分得到

我们很容易得到上式右边第二项,因为  ,而激活函数  (e.g., sigmoid function)是我们自己定义的,所以有

其中,  是本层的线性输出(未经激活函数)。

观察上图,我们根据链式法则可以得到

其中,根据  可知

和  的值是已知的,因此,我们离目标  仅差  和  了。接下来我们采用动态规划(或者说递归)的思路,假设下一层的  和  是已知的,那么我们只需要最后一层的graident,就可以求得各层的gradient了。而通过softmax的例子,我们知道最后一层的gradient确实可求,因此只要从最后一层开始,逐层向前,即可求得各层gradient。

因此我们求  的过程实际上对应下图所示的神经网络(原神经网络的反向神经网络):

综上,我们先通过神经网络的正向计算,得到  以及  ,进而求得  和  ;然后通过神经网络的反向计算,得到  和  ,进而求得  ;然后根据链式法则求得  。这整个过程就叫做backpropagation,其中正向计算的过程叫做forward pass,反向计算的过程叫做backward pass。

03 derivative of CNN

卷积层实际上是特殊的全连接层,只不过:

神经元中的某些  为  ;

神经元之间共享  。

具体来说,如下图所示,没有连线的表示对应的w为0:

如下图所示,相同颜色的代表相同的  :

因此,我们可以把loss function理解为  ,然后求导的时候,根据链式法则,将相同w的gradient加起来就好了,即

在求各个  时,可以把他们看成是相互独立的  ,那这样就跟普通的全连接层一样了,因此也就可以用backpropagation来求。

04 derivative of RNN

RNN按照时序展开之后如下图所示(红线表示了求gradient的路线):

跟处理卷积层的思路一样,首先将loss function理解为  ,然后把各个w看成相互独立,最后根据链式法则求得对应的gradient,即

由于这里是将RNN按照时序展开成为一个神经网络,所以这种求gradient的方法叫Backpropagation Through Time(BPTT)。

05 derivative of max pooling

一般来说,函数  是不可导的,但假如我们已经知道哪个自变量会是最大值,那么该函数就是可导的(e.g., 假如知道y是最大的,那对y的偏导为1,对其他自变量的偏导为0)。

而在train一个神经网络的时候,我们会先进行forward pass,之后再进行backward pass,因此我们在对max pooling求导的时候,已经知道哪个自变量是最大的,于是也就能够给出对应的gradient了。

references:

http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html

http://www.wildml.com/2015/10/recurrent-neural-networks-tutorial-part-3-backpropagation-through-time-and-vanishing-gradients/

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

整理不易,还望给个在看!

【一些细节问题】5种神经网络常见的求导!相关推荐

  1. 神经网络中矩阵求导术的应用

    神经网络中矩阵求导术的应用 序 记法约定 常用公式和定理 举例 多层神经网络(MLP)的梯度推导 Batch Normalization Layer的推导 序 本文假设读者熟悉一元微积分,线性代数,并 ...

  2. 常见的神经网络详细公式求导总结!

    Datawhale干货 作者:Criss,来源:机器学习与生成对抗网络 derivative of softmax 1.1 derivative of softmax 一般来说,分类模型的最后一层都是 ...

  3. 机器学习:神经网络矩阵形式,向量形式,矩阵求导

    文章目录 神经网络向量形式: 神经网络矩阵形式: 神经网络损失函数: 求导: 求导前准备: 求解析解: 感知机求∂L/∂w: 感知机求∂L/∂w1,∂L/∂w2: 附录:方便查寻找使用 想要完成新的任 ...

  4. 收藏 | 神经网络的 5 种常见求导,附详细的公式过程

    来源:机器学习与生成对抗网络 本文约1800字,建议阅读5分钟 本文为你介绍5种常见求导的详细过程! 01 derivative of softmax 1.1 derivative of softma ...

  5. 神经网络的5种常见求导,附详细的公式过程

    来源:机器学习与生成对抗网络 本文约2000字,建议阅读5分钟 本文为你介绍神经网络的5种常见求导方式. 01 derivative of softmax 1.1 derivative of soft ...

  6. 常见的五种神经网络(4)-深度信念网络(下)篇之深度信念网络的原理解读、参数学习

    该系列的其他文章: 常见的五种神经网络(1)-前馈神经网络 常见的五种神经网络(2)-卷积神经网络 常见的五种神经网络(3)-循环神经网络(上篇) 常见的五种神经网络(3)-循环神经网络(中篇) 常见 ...

  7. 常见的五种神经网络(3)-循环神经网络(上)篇

    转载请注明出处:https://thinkgamer.blog.csdn.net/article/details/100600661 博主微博:http://weibo.com/234654758 G ...

  8. 常见的五种神经网络(1)-前馈神经网络

    转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thi ...

  9. 机器学习研究人员需要学习8种神经网络架构

    翻译 | AI科技大本营(rgznai100) 参与 | 林椿眄 编辑 | Donna 为什么我们需要机器学习? 机器学习可以解决人类不能直接用编程来应对的复杂难题,因此,我们喂给机器学习算法大量的数 ...

  10. 收藏 | 常见的神经网络求导总结!

    来源:机器学习与生成对抗网络本文约1700字,建议阅读5分钟本文为你总结常见的神经网络求导. derivative of softmax 1.1 derivative of softmax 一般来说, ...

最新文章

  1. node.js实现国标GB28181流媒体点播(即实时预览)服务解决方案
  2. svn报错:“Previous operation has not finished; run 'cleanup' if it was interrupted“ 的解决方法...
  3. Spring-使用外部属性文件01
  4. PetShop4,错误提示:System.Web.Security.SqlMembershipProvider”要求一个与架构版本“1”兼容的数据...
  5. C++ STL 学习笔记 3. 文本文件操作
  6. mips汇编计算开方_读美国伊利诺伊理工大学计算机科学硕士能学到什么?
  7. 使用对象操作流程,读写文件
  8. 水抗攻击(APT攻击手段)
  9. kafka中生产者和消费者的分区问题
  10. 简短—揭开数学学科对于计算机应用的神秘面纱
  11. struts1 mysql config_详解Struts1中的struts-config.xml配置文件【一】
  12. jQuery 学习笔记之十 (jQuery ajax )
  13. 惊!我竟然破解了Ta的交换机/路由器的登录密码
  14. RemapKey等:小巧实用的键盘映射工具
  15. ahci驱动,详细教您win10系统下怎么加载ahci驱动
  16. 做网站搭建服务器,个人服务器搭建做网站
  17. 基于python爬虫下载网站在线视频
  18. 鲸探发布点评:7月12日发售小王子系列数字藏品
  19. 智能电视聚好看连接服务器失败,智能电视为什么登录失败? 试试这样做
  20. SQLiteSpy介绍和使用

热门文章

  1. ASP.NET MVC 使用dataTable(3)--更多选项参考
  2. ubuntu查看本地ip
  3. 数据库MySQL/mariadb知识点——操作篇(4)数据操作语句
  4. CentOS_5.5_安装GCC编译LiME
  5. Linux实时查看日志,访问前10IP 和相关命令
  6. Java经典编程题50道之四十二
  7. 关于scrollTop
  8. 类似与fiddler的抓包工具 burp suite free edition
  9. 【转载】GitHub详细教程
  10. rel=nofollow属性--seo