文章目录

  • 参考资料
  • 神经网络
  • 前向传播
  • 1. 输入层->隐含层
  • 2. 隐含层->输出层
  • 反向传播
  • 1. 计算总误差
  • 2. 隐藏层与输出层之间的权重更新
  • 3. 输入层与隐藏层之间的权重更新
  • 4. 梯度下降


参考资料

神经网络基础: 反向传播推导与卷积公式

神经网络前向传播与反向传播

主要基于参考资料的学习整理。

神经网络

神经网络通俗地可以理解成一个函数近似器,它需要近似一个输入x到输出y的映射函数。我们所要训练的网络参数其实就是在拟合这个映射函数的未知量。神经网络的训练可以分为两个步骤:一个是前向传播,另一个是反向传播。

神经网络导包 神经网络推导过程_神经网络

前向传播

神经网络前向传播从输入层到输出层:前向传播就是从输入层开始,经过一层层的Layer,不断计算每一层的神经网络得到的结果及通过激活函数的本层输出结果,最后得到输出的过程。

1. 输入层->隐含层

计算神经元 神经网络导包 神经网络推导过程_反向传播_02

神经网络导包 神经网络推导过程_反向传播_03

激活后的输出 :

神经网络导包 神经网络推导过程_神经网络_04

其余隐层节点同理。

2. 隐含层->输出层

计算输出神经元神经网络导包 神经网络推导过程_神经网络_05的值:
神经网络导包 神经网络推导过程_反向传播_06

神经网络导包 神经网络推导过程_神经网络导包_07
其余输出节点同理。

反向传播

  • 前向传播计算出了输出值(也即预测值),就可以根据输出值与目标值的差别来计算损失loss。
  • 反向传播就是根据损失函数loss来反方向地计算每一层的偏导数,从最后一层逐层向前去改变每一层的权重,也就是更新参数,核心就是损失函数对每一网络层的每一个参数求偏导的链式求导法则。

1. 计算总误差

首先,我们需要通过前向传播的输出神经网络导包 神经网络推导过程_机器学习_08和真实样本神经网络导包 神经网络推导过程_神经网络_09计算此时神经网络的损失

神经网络导包 神经网络推导过程_反向传播_10

2. 隐藏层与输出层之间的权重更新

以权重 神经网络导包 神经网络推导过程_反向传播_11为例,对参数 神经网络导包 神经网络推导过程_反向传播_11求偏导可以看出 神经网络导包 神经网络推导过程_反向传播_11对整体误差产生的影响,总体误差对 神经网络导包 神经网络推导过程_反向传播_11求偏导的链式规则如下所示:

神经网络导包 神经网络推导过程_反向传播_15

神经网络导包 神经网络推导过程_反向传播_16


神经网络导包 神经网络推导过程_反向传播_17


神经网络导包 神经网络推导过程_权重_18


神经网络导包 神经网络推导过程_反向传播_19

最后三者相乘,下面的任务就是进行梯度下降从而更新参数:

神经网络导包 神经网络推导过程_神经网络导包_20

神经网络导包 神经网络推导过程_神经网络导包_21

3. 输入层与隐藏层之间的权重更新

以权重神经网络导包 神经网络推导过程_机器学习_22为例

神经网络导包 神经网络推导过程_神经网络导包_23

神经网络导包 神经网络推导过程_机器学习_24


计算方法与上述步骤一致

神经网络导包 神经网络推导过程_神经网络_25


神经网络导包 神经网络推导过程_神经网络_26


最后三者相乘,进行梯度下降从而更新参数:

神经网络导包 神经网络推导过程_权重_27

4. 梯度下降

神经网络就是通过不断的前向传播和反向传播不断调整神经网络的权重,最终到达预设的迭代次数或者对样本的学习已经到了比较好的程度后,就停止迭代,那么一个神经网络就训练好了。这就是神经网络的本质:通过计算误差、不断修正权重以拟合输入输出的映射函数曲线。