Datawhale干货
作者: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/

公众号:AI蜗牛车保持谦逊、保持自律、保持进步个人微信
备注:昵称+学校/公司+方向
如果没有备注不拉群!
拉你进AI蜗牛车交流群

常见的神经网络详细公式求导总结!相关推荐

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

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

  2. softmax的log似然代价函数(公式求导)

    在人工神经网络(ANN)中,Softmax通常被用作输出层的激活函数.这不仅是因为它的效果好,而且因为它使得ANN的输出值更易于理解.同时,softmax配合log似然代价函数,其训练效果也要比采用二 ...

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

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

  4. 必知必会!常用矩阵求导和重要的矩阵

    对网上的矩阵求导公式进行备份总结,列出常见部分 常用的矩阵求导公式 矩阵迹的一些公式 其他的可以参考wiki:维基百科矩阵求导公式 几种重要的矩阵 1.梯度(Gradient)   2.雅克比矩阵(J ...

  5. 高数【求导】--猴博士爱讲课

    第三课<求导> 1/5 照公式求导 常见的求导 2/5 隐函数求导 例 1. 若 y = y ( x ) 由 y 3 − x 2 + y = 0 确定,则 y ′ = , y ′ ′ = ...

  6. 利用MATLAB进行求导

    导数是微积分中的一个重要的概念,又称为导函数值.在数学中,我们经常会利用导数来求切线.极值.拐点.渐近线等.在解决数学问题中,经常需要用到导数.MATLAB中提供了diff函数进行求导.本文对于MAT ...

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

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

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

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

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

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

最新文章

  1. 利用css对input[type=file] 样式进行美化,input上传按钮美化
  2. Python的DataFrame多个条件过滤错误
  3. [译]ASP.NET Core 2.0 带初始参数的中间件
  4. Golang之不可重入函数实现
  5. 梦断代码读后感(二)
  6. visual studio怎么编译python_我的计算机上的Python使用哪个版本的Visual Studio进行编译?...
  7. Git安装遇到的问题fatal: Could not read from remote repository.的解决办法
  8. 计算机显示无法格式化,电脑提示windows无法完成格式化怎么办
  9. 单片机编程入门基础知识(新手必看)
  10. 江苏科技大学MATLAB考试,江苏科技大学精品课程申报表.DOC
  11. PX30 android8.1 时区更改
  12. 笔记本双显卡Ubantu16.04 Nvidia驱动安装指导
  13. 崩坏3服务器维护2月8号,崩坏38月2日版本更新维护通知_游戏堡
  14. 阿里巴巴提示:手动创建线程效果更好
  15. 【TA-霜狼_may-《百人计划》】美术2.1 DCC工具链与引擎工具链
  16. 窗口切换_Sinno_Song_新浪博客
  17. jQuery——遍历
  18. connection closed gracefully 解决方法
  19. TEC温控器 半导体制冷片驱动模块 高精度温度控制器
  20. 杭电和南邮计算机考研哪个好考,南京邮电大学研究生,二本考南邮研究生!

热门文章

  1. Qt 热键设置控件(批量版)
  2. CharGPT解封申诉模板
  3. Mac重置mysql密码
  4. uses an image, skipping
  5. MySQL的10种常用数据类型
  6. 计算机毕业设计java婚纱摄影租赁网站
  7. OpenFlow1.3交换机
  8. 编译原理基本定义(短语、直接短语、句柄、素短语、最左素短语)
  9. MySQL数据库 - 连接查询
  10. 新手站长如何选择服务器?