BP反向传播矩阵推导图示详解

2021 年 1 月 6 日 PaperWeekly


©PaperWeekly 原创 · 作者|孙裕道

学校|北京邮电大学博士生

研究方向|GAN图像生成、情绪对抗样本生成


背景介绍

BP(反向传播)是有 Geffrey Hinton 在 1988 年发表的论文《Learning representations by back-propagating errors》 中首次被提出来。

该论文从题目到内容到参考文献一共 2 页半,Hinton 也借此工作荣获 2018 年的图领奖。在深度学习领域,BP 的重要程度在怎么强调也不为过,本文会从矩阵的视角对 BP 进行详细推导,为了更好地理解 BP 的工作原理,本文也画了大量的示意图帮助理解。

本文的公式经过自己很多次的推导打磨,尽力做到准确无误,每一张图也是反复的捉摸力求精准表达。本文的阅读难度确实很大,但是因为其重要,我觉得反复抄写下面的推导,也会有很多收获。


引言

在吴恩达的斯坦福机器学习的讲义中关于 BP 原理的介绍只给出了最后的 BP 矩阵的推导结果,略去了中间的推导过程。本文会对略去的推导过程进行补全。为了减少阅读阻碍,BP 矩阵证明过程会从预备知识开始慢慢铺展开来,其中最难啃的部分就是矩阵形式的链式法则。本文文章结构和的各个章节的内容如下:

  • section 3 是一些预备知识介绍了矩阵求导的细节,如果想要看懂之后的 BP 矩阵推导这部分的两个小节一定要看明白

  • section 4 是关于 4 层无激活函数的 BP 推导细节
  • section 5 是关于 L 层无激活函数的 BP 推导细节
  • section 6 是关于 4 层含激活函数的 BP 推导细节
  • section 7 是关于 L 层含激活函数的 BP 推导细节
  • section 8 是对吴恩达机器学习讲义中关于 BP 章节结果的验证

预备知识

3.1 推导形式1

已知, 是标量即 表示向量的 2 范数,将矩阵中各个维度带入到公式(1)有如下形式:

。则对矩阵 的链式法则的求导公式如下所示:



其中 ,直观可以发现等式(3)左右两边的雅可比矩阵维度一致。对矩阵 的链式法则的求导公式如下所示:



其中 ,等式(4)左右两边的雅可比矩阵维度一致。

3.2 推导形式2

  是激活函数, 是标量即 表示向量的2范数,将矩阵的各个维度带入到公式(5)中有如下形式:

,则有:

其中,,即 是一个对角矩阵,对角线的元素为激活函数的导数。 矩阵的维度一致。



其中, 矩阵的维度一致。

4 层无激活函数的神经网络


▲ 图1:4层无激活函数的前向传播过程


图 1 表示的是 4 层无激活函数神经网络的前向传播过程,其中损失函数如下所示:

,根据 section 3 预备知识的推导形式 1 的公式(3),(4)可求得:

。又因为 ,将公式(10),(11),(12)整理为如下所示:

根据公式(13),(14),(15)将 4 层无激活函数的 BP 原理可以形象地表示为图 2,其中图中虚线框表示为各个层权重参数的梯度,可以发现各层的权重参数梯度由前一层网络的前馈计算值与后一层网络传播的误差信息整合而来。

▲ 图2:4层无激活函数的BP原理图


L层无激活函数的神经网络


▲ 图3:L层无激活函数的前向传播过程
图 3 表示的是 L 层无激活函数神经网络的前向传播过程,其中损失函数如下所示:

,根据 section 3 预备知识的推导形式 1 的公式(3),(4)可求得:

又因为 ,则梯度的通项公式为:

根据公式(20)将 L 层无激活函数的 BP 原理可以形象地表示为图 4 所示:
▲ 图4:L层无激活函数的BP原理图

4层含激活函数的神经网络

▲ 图5:4层含激活函数的前向传播过程
图 5 表示的是 4 层含激活函数神经网络的前向传播过程,其中损失函数如下所示:

,根据 section 3 预备知识的推导形式 2 的公式(7),(8)可求得:

其中 为对角矩阵,令 ,则有 ;令 。综上所述有:

根据公式(25),(26),(27)将 4 层含激活函数的 BP 原理可以形象地表示为图 6,跟 section 4 中的 4 层无激活函数 BP 原理示意图的差异在于后向传播的误差信息需要多乘一个对角矩阵
▲ 图6:4层含激活函数的BP原理图

L 层含激活函数的神经网络

▲ 图7:L层含激活函数的前向传播过程
图 7 表示的是 L 层含激活函数神经网络的前向传播过程,其中损失函数如下所示:

,根据 section 3 预备知识的推导形式 2 的公式(7),(8)可求得:

其中, 为对称矩阵。 ,则 。综上所述可知梯度的通项公式为:

根据公式(32)将 L 层含激活函数的 BP 原理可以形象地表示为图8所示:
▲ 图8:L层含激活函数的BP原理图

验证BP矩阵推导

本节主要是对吴恩达机器学习讲义中(ML-AndrewNg-Notes: Coursera)关于 BP 原理结论部分的验证,所以本文的主要目的是验证吴中的关于 BP 结论与本文的 section 4 之间的结论是否一致。由于符号和表示形式的差异,将吴中关于 BP 原理部分的描述用蓝色字体表示(该部分在),将验证过程用红色字体表示。

一个 4 层的神经网络,具体示意图如下所示:

▲ 图9:吴恩达机器学习讲义中的网络结构

从最后一层的误差开始计算,误差是激活单元的预测 与实际值 之间的误差。用 来表示误差,则:

利用误差值 来计算前一层的误差:

其中 导数, 是经权重 而导致的误差。第二层的误差为:

因为第一层是输入变量,不存在误差,有了所有的误差表达式之后,便可以计算各个层权重的偏导数为:

代表目前所计算的第几层, 代表目前计算层中的激活单元的下标,也是下一层的第 个输入变量的下标。 代表下一层中误差单元的下标,是受到权重矩阵中的第 行影响的下一层中的误差单元的下标。
验证:
吴恩达的这个讲义中关于 BP 推导中只展示出矩阵推导出的结果,略出了中间证明的部分,其中的证明过程可以类比本文中的 section 6 中证明过程,为了能够让验证 BP 推导过程更清楚,我将吴恩达机器学习讲义中的推导符号与本文 section 6 中 4 层含激活函数的神经网络的符号进行类比如下表所示:

 10:符号类比图
对比可以发现,验证的重点在于证明
1)证明:
因为 都为最后一层的误差,所以 ,证毕。
2)证明:
由上表几的转换可知:

其中, ,对比公式(34)和公式(37)可以很容易的发现这两个公式是等价的,具体的证明如下:
的列向量,即:

可以容易推知 也是一个 的列向量,令:

则公式(37)可以重新整理为如下形式:

因为, ,则公式(37)中的矩阵 可以写成:

则公式(34)可以重新整为如下形式:

根据公式(40)和(42)可知, ,证毕。
3)证明:
证明 过程跟证明 方法一致,在此不过多赘述,证毕。
综上所述,我们可以发现讲义中的结论与本文中有如下等价关系:

其中, 。对于权重矩阵 的第 i 行和第 j 列元素的偏导数即为:

此公式就是讲义中最后给出的结果,这也就完美的验证了我之前的推导是正确的。

更多阅读




#投 稿 通 道#

 让你的论文被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。


📝 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志


📬 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通



🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧



关于PaperWeekly


PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。



登录查看更多
2

相关内容

在人工神经网络中,给定一个输入或一组输入,节点的激活函数定义该节点的输出。一个标准集成电路可以看作是一个由激活函数组成的数字网络,根据输入的不同,激活函数可以是开(1)或关(0)。这类似于神经网络中的线性感知器的行为。然而,只有非线性激活函数允许这样的网络只使用少量的节点来计算重要问题,并且这样的激活函数被称为非线性。
【经典书】线性代数元素,197页pdf
专知会员服务
55+阅读 · 2021年3月4日
专知会员服务
179+阅读 · 2021年1月8日
《常微分方程》笔记,419页pdf
专知会员服务
70+阅读 · 2020年8月2日
专知会员服务
41+阅读 · 2020年7月29日
元学习与图神经网络逻辑推导,55页ppt
专知会员服务
127+阅读 · 2020年4月25日
《深度学习》圣经花书的数学推导、原理与Python代码实现
一文搞懂反向传播
机器学习与推荐算法
16+阅读 · 2020年3月12日
终于梳理清楚矩阵求导了!
计算机视觉life
6+阅读 · 2019年12月9日
博客 | Tensorflow系列专题(五):BP算法原理
AI研习社
4+阅读 · 2018年11月22日
详解常见的损失函数
七月在线实验室
20+阅读 · 2018年7月12日
干货|深度神经网络(DNN)反向传播算法(BP)
全球人工智能
7+阅读 · 2018年1月12日
CNN 反向传播算法推导
统计学习与视觉计算组
28+阅读 · 2017年12月29日
干货 | 深度学习之CNN反向传播算法详解
机器学习算法与Python学习
17+阅读 · 2017年11月21日
干货 | 深度学习之卷积神经网络(CNN)的前向传播算法详解
机器学习算法与Python学习
9+阅读 · 2017年11月17日
神经网络bp算法推导
统计学习与视觉计算组
11+阅读 · 2017年11月17日
深度学习之DNN与反向传播算法
机器学习算法与Python学习
4+阅读 · 2017年9月11日
Arxiv
0+阅读 · 2021年4月21日
Does Data Augmentation Benefit from Split BatchNorms
Arxiv
3+阅读 · 2020年10月15日
Arxiv
4+阅读 · 2019年1月14日
Arxiv
3+阅读 · 2018年2月20日
VIP会员
相关VIP内容
【经典书】线性代数元素,197页pdf
专知会员服务
55+阅读 · 2021年3月4日
专知会员服务
179+阅读 · 2021年1月8日
《常微分方程》笔记,419页pdf
专知会员服务
70+阅读 · 2020年8月2日
专知会员服务
41+阅读 · 2020年7月29日
元学习与图神经网络逻辑推导,55页ppt
专知会员服务
127+阅读 · 2020年4月25日
《深度学习》圣经花书的数学推导、原理与Python代码实现
相关资讯
一文搞懂反向传播
机器学习与推荐算法
16+阅读 · 2020年3月12日
终于梳理清楚矩阵求导了!
计算机视觉life
6+阅读 · 2019年12月9日
博客 | Tensorflow系列专题(五):BP算法原理
AI研习社
4+阅读 · 2018年11月22日
详解常见的损失函数
七月在线实验室
20+阅读 · 2018年7月12日
干货|深度神经网络(DNN)反向传播算法(BP)
全球人工智能
7+阅读 · 2018年1月12日
CNN 反向传播算法推导
统计学习与视觉计算组
28+阅读 · 2017年12月29日
干货 | 深度学习之CNN反向传播算法详解
机器学习算法与Python学习
17+阅读 · 2017年11月21日
干货 | 深度学习之卷积神经网络(CNN)的前向传播算法详解
机器学习算法与Python学习
9+阅读 · 2017年11月17日
神经网络bp算法推导
统计学习与视觉计算组
11+阅读 · 2017年11月17日
深度学习之DNN与反向传播算法
机器学习算法与Python学习
4+阅读 · 2017年9月11日
Top
微信扫码咨询专知VIP会员