参数学习

损失函数

损失函数用交叉熵损失

其中 为真实标签的 one-hot 向量, 为模型输出。

假设训练集为 ,对于样本 ,网络的输出为 。则在整个数据集上的代价函数为:

其中:

  • :网络中的权重矩阵和偏置向量

  • 正则化项,用来防止过拟合, 是一个 范数

  • :正则化系数(超参数),用于控制控制正则化强弱, 越大, 就会越接近于 0

梯度下降

参数可以通过梯度下降法来进行学习。在梯度下降法的每次迭代中,第 层的参数 的更新方式为:

其中 学习率(learning rate)。

反向传播

梯度下降法需要计算损失函数对各参数的偏导(即梯度)。如果直接用链式法则逐一对每个参数求偏导会比较低效,因为有的子表达式会被重复计算很多次。因此神经网络中会用反向传播(back propagation)算法来更高效的计算梯度。

反向传播流程

定义第 层神经元的误差项 为:

表示了第 层神经元对最终代价的影响,也间接反映了不同神经元对网络能力的贡献程度。

那么反向传播有四条核心公式:

  1. 计算输出层的误差项

是一个向量,它的第 个元素为 可以理解为代价函数随输出的激活值的变化而变化的速度, 可以理解为在 处激活函数 变化的速度。

  1. 使用下一层的误差项 来计算当前层的误差项

这就是误差的反向传播。反向传播的含义就是:第 层的某个神经元的误差项 = 所有与该神经元相连的第 层的神经元的误差项的权重和 * 该神经元激活函数的梯度。

  1. 计算偏置 的梯度:

  1. 计算权重 的梯度:

然后就是按梯度下降法,用算出来的梯度去更新参数。

公式证明

证明一下反向传播的四条核心公式:

BP1

BP1 链式法则一步推出来

BP2

表示一个对角线元素全为 ,其他元素全为 0 的矩阵。

因此根据链式法则,第 层的误差项为:

BP3

表示 的单位矩阵。

由链式法则:

BP4

其中 为权重矩阵 的第 行。

由链式法则:

其中 相当于向量 和向量 外积的第 个元素。因此上式可以写为: