大数跨境
0
0

5种神经网络常见的求导!

5种神经网络常见的求导! 极市平台
2021-03-13
0
导读:本文总结了神经网络当中常见的5中求导,并附有详细的公式过程。
↑ 点击蓝字 关注极市平台

作者丨Criss
来源丨机器学习与生成对抗网络
编辑丨极市平台

极市导读

 

本文总结了神经网络当中常见的5中求导,并附有详细的公式过程。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

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/


推荐阅读


图解:卷积神经网络数学原理解析

2020-12-30

万字长文:深度卷积神经网络特征可视化技术(CAM)最新综述

2020-11-11

深入解读深度学习优化背后的数学基础

2020-05-13



# CV技术社群邀请函 #

△长按添加极市小助手
添加极市小助手微信(ID : cvmart2)

备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)


即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群


每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~


△点击卡片关注极市平台,获取最新CV干货

觉得有用麻烦给个在看啦~  
【声明】内容源于网络
0
0
极市平台
为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
内容 8155
粉丝 0
极市平台 为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
总阅读8.7k
粉丝0
内容8.2k