← 全部章节详细版这一节

P12 · 优化

反向传播

2016 版 · 视频 31:27

1这节解决什么问题

网络里有几十万个参数,怎么知道每一个该往哪边调?一个一个试太慢,训练根本跑不完。

2一句话讲清

反向传播就是一套省力的算法:先做一次预测,看错在哪,再把「错」的责任从后往前分给每一层,算出每个参数对误差的影响有多大,最后交给优化器去改。

3通俗解释

  1. 先做一次预测:数据从第一层走到最后一层,得到一个答案,和正确答案比一比,算出「错了多少」。这一步叫前向。
  2. 再看错在哪:最后一层错得最直接,先算它的责任;然后往回一层层推——这一层的输出让下一层错了多少,就分给它多少责任。
  3. 同一个神经元的输出如果被后面好几个地方用到,那几处传回来的责任要加起来,不能只算一处。
  4. 责任分到每个参数头上,这一步算出它对误差的影响方向和程度;优化器再结合学习率等决定实际如何调整。

4一个例子

帮助理解的类比(不是讲义原图)

想象一个两层的小网络在判断「这张图是不是猫」,它把一张狗的照片判成了猫。反向传播做的是:先看输出层把「猫」抬得太高,这是第一笔账;再往回看,中间层里哪些信号把「猫」推高了、各推了多少,分别记上;最后每个参数拿到自己那笔账,知道自己该往哪边改、影响有多大。这像调一锅汤:尝一口太咸,不能只怪最后撒的那把盐,前面每样配料放了多少都要一起算。重点在「一起算」,不是把错都推给最后一层。

5常见误区

  • 反向传播不等于梯度下降。它只负责算「每个参数对误差的影响」;怎么调、调多大(惯性、自适应步长)是优化器的事。说「用反向传播训练网络」是口语。
  • 责任是从后往前分的,顺序不能反。前向只负责把数据送过去,不做分配。
  • 最后一层的责任怎么算,取决于用哪种「错了多少」的尺子。换一把尺子,最后一步的算法也要跟着换。

6和相邻几节的关系

P1 讲过「弯一下」的函数怎么影响调整方向;P2 里那些一起调的参数,方向就是这里算出来的;P11 只提了一句「反向传播很高效」,这一节把它讲开。

730 秒回顾

一次前向得答案,一次反向分责任;责任从最后一层往前推,几处用到就相加;每个参数算出自己对误差的影响有多大;它只负责算影响,不负责改。

8小自测

先自己答,再点开对答案。

1. 反向传播和梯度下降,各管什么?

反向传播管「算」:算出每个参数对误差的影响方向和程度。梯度下降管「改」:结合学习率等,决定实际怎么挪。

2. 一个神经元的输出被后面三个地方用到,往回分责任时怎么办?

把各条路径的影响合起来;漏算一条,算出的总影响就不对了。

9来源

来源与说明(点开可查)

基于对应官方讲义整理并做复习补充,不是视频逐字稿;本页不标注视频时间点。

对应讲义页码:BP.pdf 第 2–19 页

回到顶部