反向传播可视化讲解
Backprop Explainer · 俄勒冈州立大学 URSA Engage 本科生科研计划,2021
从手动拧一个神经元的权重偏置起步,讲到链式法则与梯度下降,最后逐帧看完整网络一个训练轮次的前向、反向、更新三段动画。
交互实验(可直接投屏)
原作是一个完整的网页应用,下面直接嵌入;屏幕小或要投影时,点「全屏打开实验」更清楚。
动手三步
- 从「动手先玩一玩」开始:先不碰公式,拖动权重、偏置两个滑块,把损失降到 0
- 往下读「什么是反向传播」,鼠标停在正文里带颜色的词上(损失、梯度、链式法则、偏导数),会弹出带公式的解释
- 到「看它跑起来」点播放:拟合直线一点点贴上数据,约 1500 轮后损失降到 0.000
- 继续到「训练过程」的深网络,训练几十轮后暂停,点「播放这一轮的动画」,跟着「前向 → 反向 → 更新」走一遍
- 用右侧面板换数据集、改学习率、加减层数,重跑对比
课堂怎么用
- 先让学生纯手工拖滑块把损失降到 0,再说「反向传播就是让机器自动做这件事」,比直接上链式法则好接受
- 单轮动画的三段正好对应教材的三步,可以逐段暂停讲解,配合网络上的箭头讲「梯度指的是往哪推」
- 学习率对照:0.0001 与 0.005 各跑 60 轮,看损失曲线的下降速度与抖动
- 接 B-06 神经网络游乐场:那件让学生调参数看结果,这件解释结果是怎么被算出来的
思考题
- 为什么必须先做一次前向传播,才能做反向传播?
- 梯度指的是「最陡上升方向」,那更新参数时为什么要取它的反方向?
- 网络变深以后要算的导数变多了,但文中说「逻辑一点没变」,指的是哪一点没变?
已知限制
- 顶部横幅、网络图例以及正文里十余张插图,是原作导出的图形且文字已转成矢量轮廓,无法翻译,仍是英文
- 单轮动画控制台里四个标签保留英文:它们与实时数字混排,翻译会让数字停在翻译那一刻
- 式子里嵌着当前权重的算式按数学式保留原样
- 打开浏览器控制台时会看到一条原作自带的告警(关掉中文层照样出现),不影响功能
- 站点 22.6 MB,含一段较大的演示动图,首次打开偏慢,建议课前在教师机预热一次
- 正文很长,通读约 40 分钟,课堂上建议按目录挑节讲
原作 Backprop Explainer(Donald Bertucci、Minsuk Kahng(俄勒冈州立大学),俄勒冈州立大学 URSA Engage 本科生科研计划,2021),MIT 许可(原文),界面已中文化。