神经网络理解:前向传播与反向传播

文章目录

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

参考资料

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

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

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

神经网络

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

神经网络理解:前向传播与反向传播_第1张图片

前向传播

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

1. 输入层->隐含层

计算神经元 h 1 h1 h1 的输入加权和:

n e t h 1 = w 1 ∗ i 1 + w 2 ∗ i 2 + b 1 ∗ 1 net_{h1}=w_1*i_1+w_2*i_2+b_1*1 neth1=w1i1+w2i2+b11

激活后的输出 :

o u t h 1 = 1 1 + e − n e t h 1 out_{h1}=\frac{1}{1+e^{-net_{h1}}} outh1=1+eneth11

其余隐层节点同理。

2. 隐含层->输出层

计算输出神经元 o 1 o1 o1的值:
n e t o 1 = w 5 ∗ o u t h 1 + w 6 ∗ o u t h 2 + b 2 ∗ 1 net_{o1}=w_5*out_{h1}+w_6*out_{h2}+b_2*1 neto1=w5outh1+w6outh2+b21

o u t o 1 = 1 1 + e − n e t o 1 out_{o1}=\frac{1}{1+e^{-net_{o1}}} outo1=1+eneto11
其余输出节点同理。

反向传播

  • 前向传播计算出了输出值(也即预测值),就可以根据输出值与目标值的差别来计算损失loss。

  • 反向传播就是根据损失函数loss来反方向地计算每一层的偏导数,从最后一层逐层向前去改变每一层的权重,也就是更新参数,核心就是损失函数对每一网络层的每一个参数求偏导的链式求导法则。

1. 计算总误差

首先,我们需要通过前向传播的输出 o u t p u t output output和真实样本 t a r g e t target target计算此时神经网络的损失

在这里插入图片描述

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

以权重 w 5 w_5 w5为例,对参数 w 5 w_5 w5求偏导可以看出 w 5 w_5 w5对整体误差产生的影响,总体误差对 w 5 w_5 w5求偏导的链式规则如下所示:
在这里插入图片描述

神经网络理解:前向传播与反向传播_第2张图片
神经网络理解:前向传播与反向传播_第3张图片
神经网络理解:前向传播与反向传播_第4张图片
神经网络理解:前向传播与反向传播_第5张图片

最后三者相乘,下面的任务就是进行梯度下降从而更新参数:
在这里插入图片描述

η \eta η 为 learning rate,其余权重同理。

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

以权重 w 1 w1 w1为例

∂ E total  ∂ w 1 = ∂ E total  ∂ o u t h 1 ∗ ∂ o u t h 1 ∂ n e t h 1 ∗ ∂ net h 1 ∂ w 1 \frac{\partial E_{\text {total }}}{\partial w_{1}}=\frac{\partial E_{\text {total }}}{\partial out_{h_1}} * \frac{\partial out_{h_1}}{\partial net_{h_1}} * \frac{\partial \text {net}_{h_1}}{\partial w_{1}} w1Etotal =outh1Etotal neth1outh1w1neth1

神经网络理解:前向传播与反向传播_第6张图片
计算方法与上述步骤一致
神经网络理解:前向传播与反向传播_第7张图片
神经网络理解:前向传播与反向传播_第8张图片
最后三者相乘,进行梯度下降从而更新参数:
在这里插入图片描述

4. 梯度下降

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

你可能感兴趣的:(学习强化学习,机器学习,机器学习,神经网络,反向传播)