反向广播 (Backpropagation)
Based on slides and readings by R. Grosse
此文为私人学习的笔记
总览
- 反向广播几乎可以硕士深度学习的核心模块
- 反向传播是一个用于计算梯度的算法
- 反向传播是一个自动逆向计算微分的实例,它的应用甚至比神经网络本身更加广泛
- 而自动微分实际上是一个对于链式法则求导的聪明的高效的应用
深度学习知识背景
- 任务(目的): 回归, 二元区分, 多元区分
- 模型: 线性的,log线性的, 多层感知的
- 损失方程: 错误值(偏差)的平方, 0-1 的损失(Normalize), 交叉熵, 折页损失(hinge loss)
- 优化算法: 直接方案, 梯度下降, 感知层
- 这之中我们需要用到反向传播来计算梯度
- 而梯度下降就是向着梯度相反的方向移动
- 多层神经网络的权重空间: 针对一层网络的权重和偏差值的一个组合
- 而我们用一下公式来计算消费梯度 d ε d w \frac{d\varepsilon}{dw} dwdε,也就是一个关于部分导数的向量
- 而在训练中我们用 d L d w \frac{d\mathcal{L}}{dw} dwdL的均值来作为训练样本
相关数学知识
- 一元函数的锁链法则
- 如果方程式 f ( x ) f(x) f(x) 与 x ( t ) x(t) x(t)都是关于t的一元函数,则
d d t f ( x ( t ) ) = d f d x d x d t \frac{d}{dt} f(x(t)) = \frac{df}{dx}\frac{dx}{dt} dtdf(x(t))=dxdfdtdx
计算标记
- y ˉ \bar{y} yˉ标记的是微分 d L d y \frac{d\mathcal{L}}{dy} dydL,有时也被叫做错误信号
- 错误信号就是反向传播所需要计算的值
- 而损失值和微分的计算可以用以下公式表示
损失值
z = w x + b y = σ ( z ) L = 1 2 ( y − t ) 2 z = wx +b \\ y = \sigma(z)\\ \mathcal{L} = \frac{1}{2}(y-t)^2 z=wx+by=σ(z)L=21(y−t)2
计算微分
y ˉ = y − t z ˉ = y ˉ σ ′ ( z ) w ˉ = z ˉ x b ˉ = z ˉ \bar{y} = y-t \\ \bar{z} = \bar{y}\sigma'(z)\\ \bar{w} = \bar{z}x\\ \bar{b} = \bar{z} yˉ=y−tzˉ=yˉσ′(z)wˉ=zˉxbˉ=zˉ
扩展
- 但是在神经网络中输出值(fan-out)可能会不止一个而此时会需要多元函数的链式法则
- 此时我们遇到的问题是多元化而并非多层神经网络