在这里回顾一下上学期学的方向传播算法。下面是一些读书笔记。毕竟好记性不如烂笔头!!
Wiki: 反向传播(Back propagation 或者BP),是“误差反向传播”的简称,它是一种用来训练人工神经网络的常见方法,一般与梯度下降结合使用。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。
它通常被认为是一种监督学习方法,因为反向传播需要根据输入值期望得到的已知输出,来计算损失函数的梯度,进而更新权值。但是它也可以应用在无监督网络中。它可以使用链式法则对网络的每层迭代计算梯度,因此,每个节点(神经元)的激励函数必须是可微。
1. 算法概述
BP算法主要是由激励传播、权重更新 循环迭代构成,直到网络的输出满足一定条件才停止。
激励传播
- 前向传播阶段: 将输入数据送入网络以获得激励响应,即计算每层的预估值;
- 反向传播阶段: 将激励响应同对应的目标输出求差,获得隐层与输出层的响应误差。
权重更新
- 将输入激励和响应误差相乘,获得权重的梯度;
- 将这个梯度乘上一个学习率,并取反后加到权重上。
因为梯度是指向误差扩大的方向,而我们是想要往权重减小的方向,所以更新权重的时候需要对其取反。
2. 推导过程
2.1 神经元结构
首先,看下神经元的结构,每个神经元由两个部分组成:
- 权重与输入
- 激活函数,非线性函数
,j 表示第j个神经元,即对应上图的
每个神经元的输出则为
表示神经元i 跟j之间的权值,这里神经元i是j的上一层,
则是上一层神经元的输出
<