前向传播和反向传播
前向传播和反向传播是神经网络中的重要基础。两者存在一些联系,所以本文将两者一起讲述,有利于大家理解。同时反向传播是理解神经网络模型训练的重点,需要一些微积分基础(导数,偏导数,链式法则)。如果你准备好了,那我们开始吧。
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:


小伙伴们如果觉得文章还行的请点个赞呦!!同时觉得文章哪里有问题的可以评论一下 谢谢你!