fgg blog

: Backprop

前向传播_反向传播_计算图

  • 前向传播(forward pass)指的是:按顺序(从输入层到输出层)计算和存储神经网络中每层的结果。

  • 反向传播(backward propagation或backpropagation)指的是计算神经网络参数梯度的方法。简 言之,该方法根据微积分中的链式规则,按相反的顺序从输出层到输入层遍历网络。该算法存储了 计算某些参数梯度时所需的任何中间变量(偏导数)。

  • 计算图:具体直接看实例,图1,图2,图3

问题:前向传播具体是计算什么?存储什么?反向传播怎么计算梯度?

forward-pass

图1(即图4.7.1)来自《动手学深度学习》一书。本节主要内容均来自此书对应章节。 简单网络(单隐藏层网络)相对应的计算图,其中正方形表示变量,圆圈表示操作符。左下角表示输 入,右上角表示输出。注意显示数据流的箭头方向主要是向右和向上的。

backward-pass 图2 Computational graph of the BatchNorm-Layer. From left to right, following the black arrows flows the forward pass. The inputs are a matrix X and gamma and beta as vectors. From right to left, following the red arrows flows the backward pass which distributes the gradient from above layer to gamma and beta and all the way back to the input. (来自此博客)

西瓜书_误差逆传播算法(BP)

# 误差逆传播算法(error BackPropagation, BP)

BP 算法是迄今最成功的神经网络学习算法。现实任务中使用神经网络时,大多是在使用 BP 算法进 行训练。BP 算法不仅可用于多层前馈神经网络(multi-layer feedforward neural networks)1 ,还可以用于其他类型的神经网络,例如训练递归神经网络。但通常说 “BP网络” 时,一般指用 BP 算法训练的多重前馈神经网络2

## BP网络及变量符号

给定训练集 $D = {(x_1, y_1), \ldots, (x_m, y_m)}, x_i \in \mathbb{R}^d, y_i \in \mathbb{R}^l$ ,即输入 示例由 $d$ 个属性描述,输出 $l$ 维实值向量。为便于讨论,图5.7 给出了一个拥有 $d$ 个输入 神经元、$l$ 个输出神经元、$q$ 个隐层神经元的多层前馈神经网络结构,其中

  • 输出层第 $j$ 个神经元的阈值用 $\theta_j$ 表示,隐层第 $h$ 个神经元的阈值用 $\gamma_h$ 表示;

  • 输入层第 $i$ 个神经元与隐层第 $h$ 个神经元之间的连接权为 $v_{ih}$ ;

  • 隐层第 $h$ 个神经元与输出层第 $j$ 个神经元之间的连接权为 $w_hj$ ;