前向传播和反向传播是神经网络中的重要基础。两者存在一些联系,所以本文将两者一起讲述,有利于大家理解。同时反向传播是理解神经网络模型训练的重点,需要一些微积分基础(导数,偏导数,链式法则)。如果你准备好了,那我们开始吧。
1.前向传播Forward-Propagation
前向传播如图所示:图片下方的单词表示该层所使用的active function。
Input Layer-->h1 Layer矩阵计算细节:
举个例子:
h1 Layer-->h2 Layer矩阵计算细节:
例子:
h2 -->output 矩阵计算细节:
例子:
上面的[0.2698, 0.3223, 0.4078],便是我们将[0.1, 0.2, 0.7]输入模型后得到的结果。好了我们来通俗解释一下什么是前向传播。
Forward-propagation:将固定的数值的一个样本输入模型,模型利用weight ,bias(随机初始),active function对进行一系列的运算最后输出一个结果(actual output)。
2.损失函数 loss function
好奇的小伙伴可能会想不是要说back-propagation么?为什么搞个loss function 出来?慢慢看下去你就明白了。
在监督学习的任务中,我们会有大量的固定的输入和固定的输出(desired output)作为样本。我们将一个样本输入参数随机初始化后的模型得到一个输出,但只是一个估计值,我们想得到的是。于是就想怎么样可以使尽量的接近呢?这个问题好像有点复杂,那我们先衡量一下和的差距吧。
均方误差 MSE(mean square error)常用于回归任务:
交叉熵 (cross-entropy)常用于分类任务:
我们知道在训练阶段,模型的输入和输出是固定的,只能够调节模型中的weight和bias 使 尽量的接近 ,即调节模型中的参数使loss function计算出的loss尽可能的小。更进一步的可以理解为:
当loss 逐步变小时,weight和bias应该如何变化。原来loss function 就像一个教练,它能够指导模型去学习最优的weight和bias去完成预测任务。
具体的weight和bias的更新过程就是back-propagation所要做的啦。
例子:
3.反向传播 Back-Propagation
output Layer-->h2 Layer的反向传播:
a. 与 的变化关系:
例子:
b. 与的变化关系:
例子:
c.与的变化关系:
例子:
d.与的变化关系:由链式法则可得
例子:
以0.01的学习率对 更新:
h2 Layer-->h1 Layer的反向传播:
a.与的变化关系:
例子:
b.与的变化关系:
例子:
c.与的变化关系:由链式法则可得
例子:
d.与的变化关系:由链式法则可得
例子:
以0.01的学习率对进行更新:
h1 Layer-->Input Layer 的反向传播:
a.与的变化关系:
例子:
b.与的变化关系:
例子:
c.与的变化关系:由链式法则可得
例子:
c.与的变化关系:由链式法则可得
例子:
以0.01的学习率对进行更新:
4.总结
模型随机初始化的全部weight:
向模型输入一个样本:[0.1, 0.2, 0.7]和:[1.0, 0.0, 0.0],通过forward propagation 模型输出一个结果:[0.2698, 0.3223, 0.4078]。然后利用loss function 计算与 的loss,以loss 变小为原则指导back propagation,最终实现weight的一次更新。
更新后的全部weight:
小伙伴们如果觉得文章还行的请点个赞呦!!同时觉得文章哪里有问题的可以评论一下 谢谢你!