李宏毅深度学习--《Backpropagation》

article/2025/10/11 0:59:11

李宏毅深度学习

Gradient Descent of neural network

  • n e u r a l n e t w o r k neural\ \ network neural  network的参数: θ = { w 1 , w 2 , ⋯ , b 1 , b 2 , ⋯ } θ=\{w_1,w_2,\cdots,b_1,b_2,\cdots \} θ={w1,w2,,b1,b2,}
  • 计算参数 θ θ θ对于损失函数L的导数 Δ L ( θ ) \Delta L(θ) ΔL(θ)
    Δ L ( θ ) = [ ∂ L ( θ ) / ∂ w 1 ∂ L ( θ ) / ∂ w 2 ⋯ ∂ L ( θ ) / ∂ b 1 ∂ L ( θ ) / ∂ b 2 ⋯ ] \Delta L(θ)=\begin{bmatrix} \partial L(θ)/\partial w_1 \\ \\ \partial L(θ)/\partial w_2 \\ \\\cdots \\ \\ \partial L(θ)/\partial b_1 \\ \\ \partial L(θ)/\partial b_2 \\ \cdots \end{bmatrix} ΔL(θ)= L(θ)/w1L(θ)/w2L(θ)/b1L(θ)/b2
  • 更新参数: θ = θ − η Δ L ( θ ) θ = θ -\eta\Delta L(θ) θ=θηΔL(θ)

Δ L ( θ ) \Delta L(θ) ΔL(θ)可以是一个上百万维的向量,计算十分的麻烦;所以 B a c k p r o p a g a t i o n Backpropagation Backpropagation要做的是去高效的计算反向传播的梯度 Δ L ( θ ) \Delta L(θ) ΔL(θ)


定义预测结果 y n y^n yn(理想模型)与实际结果 y ^ n \hat{y}^n y^n(现实模型)之间的距离为 l n l^n ln,即第 n n n单个样本的损失函数值是 l n l^n ln
在这里插入图片描述
总体样本损失函数值表达式为:
L ( θ ) = ∑ n = 1 N l n ( θ ) L(θ)=\sum\limits_{n=1}^{N} {l^n(θ)} L(θ)=n=1Nln(θ)

对损失函数 L ( θ ) L(θ) L(θ)左右两边同时对 w w w求偏微分:

∂ L ( θ ) ∂ w = ∑ n = 1 N ∂ l n ( θ ) ∂ w \frac{\partial L(θ)}{\partial w}=\sum\limits_{n=1}^{N} \frac{\partial l^n(θ)}{\partial w} wL(θ)=n=1Nwln(θ)

可以看出,我们仅需要对一个样本数据进行讨论,再将一个样本讨论的结论覆盖到整体样本上进行求和即可。所以下面的讨论都是基于一个样本的。

B a c k p r o p a g a t i o n Backpropagation Backpropagation可以分为 F o r w a r d p a s s Forward\ pass Forward pass B a c k w a r d p a s s Backward\ pass Backward pass两个部分,首先讨论 F o r w a r d p a s s Forward\ pass Forward pass


Forward pass

我们的目标是求出 ∂ l ∂ w \frac{\partial l}{\partial w} wl;

将下图三角形部分的神经元拿出来单独讨论;
在这里插入图片描述

观察下面的图片,通过链式求导法则可以将 ∂ l ∂ w \frac{\partial l}{\partial w} wl展开为:
∂ l ∂ w = ∂ z ∂ w ∂ l ∂ z \frac{\partial l}{\partial w}=\frac{\partial z}{\partial w}\frac{\partial l}{\partial z} wl=wzzl

在这里插入图片描述

z z z的表达式在前向传播中给出来了, ∂ z ∂ w \frac{\partial z}{\partial w} wz的计算会很容易:

∂ z ∂ w 1 = x 1 \frac{\partial z}{\partial w_1}=x_1 w1z=x1

∂ z ∂ w 2 = x 2 \frac{\partial z}{\partial w_2}=x_2 w2z=x2

可以看出 z z z w w w的偏导等于与 w w w相联系的 i n p u t input input

将这个结论扩展到网络的其他部分,如下图:
在这里插入图片描述

所以通过前向传播,计算每个神经节点的输入就能计算所有的 ∂ z ∕ ∂ w ∂z∕∂w zw了。


Backward pass
在这里插入图片描述

∂ l ∂ w = ∂ z ∂ w ∂ l ∂ z \frac{\partial l}{\partial w}=\frac{\partial z}{\partial w}\frac{\partial l}{\partial z} wl=wzzl中的 ∂ z ∂ w \frac{\partial z}{\partial w} wz通过 F o r w a r d p a s s Forward\ pass Forward pass就能够计算出来。接下来计算 ∂ l ∂ z \frac{\partial l}{\partial z} zl部分,根据链式法则:
∂ l ∂ z = ∂ a ∂ z ∂ l ∂ a (1) \frac{∂l}{∂z}=\frac{∂a}{∂z}\frac{∂l}{∂a} \tag 1 zl=zaal(1)

∂ a ∂ z \frac{∂a}{∂z} za就是对激活函数求导,假设使用的激活函数是 s i g m o i d sigmoid sigmoid,那么 ∂ a ∂ z = σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \frac{∂a}{∂z}=σ'(z)=σ(z)(1-σ(z)) za=σ(z)=σ(z)(1σ(z))

在这里插入图片描述

所以主要问题在于 ∂ l ∂ a \frac{∂l}{∂a} al的计算,观察上图, ∂ l ∂ a \frac{∂l}{∂a} al可以按照链式法则继续展开为:

∂ l ∂ a = ∂ z ′ ∂ a ∂ l ∂ z ′ + ∂ z ′ ′ ∂ a ∂ l ∂ z ′ ′ \frac{∂l}{∂a}=\frac{∂z'}{∂a}\frac{∂l}{∂z'}+\frac{∂z''}{∂a}\frac{∂l}{∂z''} al=azzl+az′′z′′l

根据 z ′ z' z z ′ ′ z'' z′′的表达式可以计算 ∂ z ′ ∂ a = w 1 \frac{∂z'}{∂a}=w_1 az=w1 ∂ z ′ ′ ∂ a = w 2 \frac{∂z''}{∂a}=w_2 az′′=w2

带入到(1)中:
∂ l ∂ z = σ ′ ( z ) [ w 3 ∂ l ∂ z ′ + w 4 ∂ l ∂ z ′ ′ ] (2) \frac{∂l}{∂z}=σ'(z)[w_3\frac{∂l}{∂z'}+w_4\frac{∂l}{∂z''}] \tag2 zl=σ(z)[w3zl+w4z′′l](2)

如下图,表达式 ( 2 ) (2) (2)的含义就像从后面向前面传播:

在这里插入图片描述

接下来求出 ∂ l ∂ z ′ \frac{∂l}{∂z'} zl ∂ l ∂ z ′ ′ \frac{∂l}{∂z''} z′′l,就可以计算出 ∂ l ∂ z \frac{∂l}{∂z} zl

分两种情况讨论:

  • − C a s e 1 − -Case\ 1- Case 1
    z ′ z' z z ′ ′ z'' z′′是连接的是输出层,如下图:
    在这里插入图片描述
    链式法则展开:
    ∂ l ∂ z ′ = ∂ y 1 ∂ z ′ ∂ l ∂ y 1 \frac{∂l}{∂z'}=\frac{∂y_1}{∂z'}\frac{∂l}{∂y_1} zl=zy1y1l ∂ l ∂ z ′ ′ = ∂ y 2 ∂ z ′ ′ ∂ l ∂ y 2 \frac{∂l}{∂z''}=\frac{∂y_2}{∂z''}\frac{∂l}{∂y_2} z′′l=z′′y2y2l
    l l l y y y求导可以通过损失函数表达式计算, y y y z z z求偏导其实就是激活函数的求导,这时候工作 ∂ l ∂ z \frac{∂l}{∂z} zl就计算完成了。

  • − C a s e 2 − -Case\ 2- Case 2
    z ′ z' z z ′ ′ z'' z′′是连接的不是输出层,如下图:
    在这里插入图片描述
    其实这就是个套娃的过程,计算当前层的 ∂ l ∂ z \frac{∂l}{∂z} zl需要计算下一层的 ∂ l ∂ z \frac{∂l}{∂z} zl,计算下一层的 ∂ l ∂ z \frac{∂l}{∂z} zl需要计算下下层的 ∂ l ∂ z \frac{∂l}{∂z} zl。如下图:
    在这里插入图片描述
    所以要做的是递归计算 ∂ l ∂ z \frac{∂l}{∂z} zl,直到最后一层

为了方便计算,从输出层开始计算 ∂ l ∂ z \frac{∂l}{∂z} zl,再通过反向传播向前传递,如下图:
在这里插入图片描述

以上就是 B a c k w a r d p a s s Backward pass Backwardpass的过程。


总结

计算梯度 ∂ l ∂ w = ∂ z ∂ w ∂ l ∂ z \frac{\partial l}{\partial w}=\frac{\partial z}{\partial w}\frac{\partial l}{\partial z} wl=wzzl

  • F o r w a r d P a s s Forward\ Pass Forward Pass(正向传递)计算 ∂ z ∂ w \frac{\partial z}{\partial w} wz
  • B a c k w a r d P a s s Backward\ Pass Backward Pass(反向传递)计算 ∂ l ∂ z \frac{∂l}{∂z} zl

在这里插入图片描述


http://chatgpt.dhexx.cn/article/KQqDHHxj.shtml

相关文章

郑宇:多源数据融合与时空数据挖掘(转载)

来自: https://mp.weixin.qq.com/s?__bizMzAwMTA3MzM4Nw&mid2649440531&idx1&snd9c92b1f157ee37c7c6e185919a3ffbb&chksm82c0a897b5b721810f4d795cc144d309086274a9071515e727f9f420d7ffb7f06c9b376557ee&scene21#wechat_redirect 和https:/…

近10年数据智能团队建设,联想总结了由内而外的发展经验 | 专访联想集团副总裁田日辉...

来源:大数据文摘 本文约3300字,建议阅读5分钟。 本文为清华大学大数据研究中心联合大数据文摘发起的年度白皮书《顶级数据团队建设全景报告》系列专访的第四篇内容。《报告》囊括专家访谈、问卷、网络数据分析,力求为行业内数据团队的组建和高…

谷俊丽:基于大数据的深度学习

嘉宾介绍:谷俊丽,博士学历,毕业于清华大学-美国University of Illinois Urbana-champaign大学,在清华期间作为核心人员研发过超长指令字数字信号处理器,在美期间曾参与UIUC超级计算机上的研究工作,并工作实…

MyBatis从入门到精通(1):MyBatis入门

作为一个自学Java的自动化专业211大学本科生,在学习和实践过程中”趟了不少雷“,所以有志于建立一个适合同样有热情学习Java技术的参考“排雷手册”。 最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学…

给力!低代码开发平台广州流辰信息科技助您增辉创价值!

低代码平台开发公司流辰信息深耕行业多年,一直以市场为导向,凭借敏锐的市场洞察力砥砺前行、拼搏进取,提升研发创新能力,广州流辰信息科技与各新老客户朋友风雨同舟,携手共创宏伟新蓝图! 一、熔铸前沿科技 …

汇聚数据库创新力量,加速企业数字化转型

2022年12月29日,以“汇聚数据库创新力量,加速企业数字化转型”为主题的openGauss Summit 2022在线上举行。会上,openGauss社区理事会理事长江大勇对外公布了最近社区及生态进展,并宣布推出资源池化架构,实现软硬融合&a…

【金猿人物展】龙盈智达首席数据科学家王彦博:量子科技为AI大数据创新发展注入新动能...

‍ 王彦博 本文由龙盈智达首席数据科学家王彦博撰写并投递参与“数据猿年度金猿策划活动——2022大数据产业趋势人物榜单及奖项”评选。 ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 回顾2022年大数据行业发展,令人感触最深的是数字经济时代对“数据安全”和…

MyBatis从入门到精通(一):MyBatis入门

最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. MyBatis简介 ​ 2001年,Clinton …

沈定刚,雷柏英,李超 | Cell Press Live:人工智能在医学影像中的应用

交叉学科 Interdisciplinary 医学影像是临床医疗诊断的重要依据之一。近些年来,随着信息技术的飞速发展,人工智能即AI也更加广泛地应用于医学影像的处理分析中,包括对图像的分割分类及预测等。AI提高了诊断的精准程度和效率,同时也…

汇纳科技张宏俊:加强布局AI大数据,为实体商业服务

数字经济是继农业经济、工业经济之后的主要经济形态,更是稳定经济,推动经济转型的最强劲动力之一。在今年两会政府工作报告中,数字经济的关注程度远比以往更高,首次以“单独成段”的方式进行表述,并重点明确了“深入实施创新驱动发展战略,巩固壮大实体经济根基”。 从中不…

【Java架构:基础技术】一篇文章搞掂:MyBatis

本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新)。 本文主要总结于刘增辉的《MyBatisc从入门到精通》一书,有兴趣的朋友可以自行研读 建议仔细研读官方文档: http://www.mybatis.org/mybatis-3/zh/ …

Oracle的minus使用

Oracle的minus使用 minus 连接两个结果集,最终生成一个结果集。 功能是:第二个结果集,不会出现在最终结果集中; 如果第一个结果集的内容,在第二个结果集之内有包含,则包含的部分在最终结果集被舍弃。 其实…

MySQL MINUS-差集 [猿教程]

https://yuanjiaoc.com/tutorial/article/10143 在本教程中,您将了解 SQL MINUS 运算符以及如何在 MySQL 中使用 join 模拟 MINUS。 请注意,MySQL 不支持 MINUS 运算符。本教程向您展示如何使用连接子句在 MySQL 中模拟 MINUS 运算符。 SQL MINUS 运算符…

oracle函数之 minus

“minus”直接翻译为中文是“减”的意思,在Oracle中也是用来做减法操作的 Oracle的minus是按列进行比较的,所以A能够minus B的前提条件是结果集A和结果集B需要有相同的列数,且相同列索引的列具有相同的数据类型。此外,Oracle会对m…

Sql server中intersect, minus的用法

Sql server中intersect, minus的用法 一,Intersect Intersect常用来选择两个表格中相关联的事物,它是对两个SQL语句所产生的结果作处理的.它的作用有点像and的用法,就是说所选择的这个值要存在于第一句和第二句才会被选择出,上面…

编译原理 C-Minus 语法分析(Flex / Bison)

C-Minus 源代码 语法分析 文章目录 C-Minus 源代码 语法分析一、实现目标二、实现过程1. 综述2. 实现功能介绍(1)检测词法错误(2)检测文法错误(3)生成语法分析树 3. 代码详解(1)synt…

编译原理 C-Minus 代码生成(Flex / Bison)

C-Minus 源代码 代码生成 文章目录 C-Minus 源代码 代码生成一、实现目标二、实现过程(一)内容综述(二)代码分析1. 中间代码的表示2. 中间代码生成与优化3. 目标代码生成 三、结果分析1. 测试内容一2. 测试内容二 四、源代码放送s…

minus

minus指令是运用在两个SQL语句上,它先找出第一个SQL语句所产生的结果,然后看这些有没有在第二个SQL语句的结果中。如果有的话,那这笔资料就被去除,而不会在最后的结果中出现。如果第二个SQL语句所产生的结果并没有存在于第一个SQL…

MySql中的minus用法

MySql中的minus用法 在DB2和Oracle中,我们经常会用到minus这个函数,但是MySql中是没有minus的,那么要怎么办呢? 下面以一个小栗子来说下: 用例基础 表信息 mysql> show tables; ---------------- | Tables_in_tes…

MINUS 使用

1. sql minus运算符简介 除了union,union all和intersect运算符之外,sql还为我们提供了minus运算符,用于从另一个结果集中减去一个结果集。 以下是minus运算符的语法。 selectid froma minus selectid fromb;要使用minus运算符&#xff…