文章目录
- 参考资料
- 神经网络
- 前向传播
- 1. 输入层->隐含层
- 2. 隐含层->输出层
- 反向传播
- 1. 计算总误差
- 2. 隐藏层与输出层之间的权重更新
- 3. 输入层与隐藏层之间的权重更新
- 4. 梯度下降
参考资料
主要基于参考资料的学习整理。
神经网络
神经网络通俗地可以理解成一个函数近似器,它需要近似一个输入x到输出y的映射函数。我们所要训练的网络参数其实就是在拟合这个映射函数的未知量。神经网络的训练可以分为两个步骤:一个是前向传播,另一个是反向传播。
前向传播
神经网络前向传播从输入层到输出层:前向传播就是从输入层开始,经过一层层的Layer,不断计算每一层的神经网络得到的结果及通过激活函数的本层输出结果,最后得到输出的过程。
1. 输入层->隐含层
计算神经元
激活后的输出 :
其余隐层节点同理。
2. 隐含层->输出层
计算输出神经元的值:
其余输出节点同理。
反向传播
- 前向传播计算出了输出值(也即预测值),就可以根据输出值与目标值的差别来计算损失loss。
- 反向传播就是根据损失函数loss来反方向地计算每一层的偏导数,从最后一层逐层向前去改变每一层的权重,也就是更新参数,核心就是损失函数对每一网络层的每一个参数求偏导的链式求导法则。
1. 计算总误差
首先,我们需要通过前向传播的输出和真实样本计算此时神经网络的损失
2. 隐藏层与输出层之间的权重更新
以权重 为例,对参数 求偏导可以看出 对整体误差产生的影响,总体误差对 求偏导的链式规则如下所示:
最后三者相乘,下面的任务就是进行梯度下降从而更新参数:
3. 输入层与隐藏层之间的权重更新
以权重为例
计算方法与上述步骤一致
最后三者相乘,进行梯度下降从而更新参数:
4. 梯度下降
神经网络就是通过不断的前向传播和反向传播不断调整神经网络的权重,最终到达预设的迭代次数或者对样本的学习已经到了比较好的程度后,就停止迭代,那么一个神经网络就训练好了。这就是神经网络的本质:通过计算误差、不断修正权重以拟合输入输出的映射函数曲线。