什么事反向传播算法 反向传播算法过程

自从机器学习被引入到递归的非线性函数中(例如人工神经网络)以来,对相关内容的应用得到了充足的发展 。在这种情况下,训练正确的神经网络是建立可靠模型最重要的方面 。这种训练通常与”反向传播”一词联系在一起,这个术语对大多数新手来说是非常模糊的 。这也是本文所存在的意义 。

什么事反向传播算法 反向传播算法过程


反向传播是神经网络训练的本质 。它实际上是基于在前一历元(即迭代)中获得的误差率(即损失)对神经网络的权重进行微调的实践 。适当的调整权重可确保较低的错误率,增加模型的适用性使模型更可靠 。
那么这个过程如何运作的呢?让我们通过例子学习!
为了使这个例子尽可能便于大家理解,我们只涉及相关概念(例如损失函数、优化函数等)而不解释它们,因为这些主题值得我们另起一篇文章进行细说 。
首先,让我们设置模型组件
想象一下,我们需要训练一个深层神经网络 。训练的目的是构建一个模型,该模型使用两个输入和三个隐藏单元执行XOR(异或)函数,这样训练集看起来如下所示:

什么事反向传播算法 反向传播算法过程


此外,我们需要一个激活函数来确定神经网络中每个节点的激活值 。为简单起见,让我们选择一个激活函数:

什么事反向传播算法 反向传播算法过程


我们还需要一个假设函数来确定激活函数的输入是什么 。这个函数是:

什么事反向传播算法 反向传播算法过程


让我们选择损失函数作为逻辑回归的一般成本函数,看起来有点复杂,但实际上相当简单:

什么事反向传播算法 反向传播算法过程


此外,我们将使用批处理梯度下降优化函数,用于确定我们应该调整权重的方向,以获得比我们现有的更低的损失 。最后,学习率为0.1,所有权重将初始化为1 。
我们的神经网络
让我们最后画一张我们期待已久的神经网络图 。它应该看起来像这样:

什么事反向传播算法 反向传播算法过程


最左边的层是输入层,它将X0作为值1的偏置项,将X1和X2作为输入特征 。中间的层是第一个隐藏层,它的偏置项Z0也取值为1 。最后,输出层只有一个输出单元D0,其激活值是模型的实际输出(即h(x))。
现在我们向前传播
现在是将信息从一个层前馈到另一个层的时候了 。这需要经过两个步骤,通过网络中的每个节点/单元:
1. 使用我们之前定义的h(x)函数获取特定单位输入的加权和 。
2.将我们从步骤1得到的值插入我们的激活函数(本例中为f(a)= a)并使用我们得到的激活值(即激活函数的输出)作为连接输入特征的下一层中的节点 。
请注意,单位X0,X1,X2和Z0没有任何连接到它们并任提供输入的单位 。因此,上述步骤不会出现在这些节点中 。但是,对于其余的节点/单元,训练集中第一个输入样本的整个神经网络都是这样的:

什么事反向传播算法 反向传播算法过程


其他单位也是如此:

什么事反向传播算法 反向传播算法过程



什么事反向传播算法 反向传播算法过程


如前所述,最终单位(D0)的激活值(z)是整个模型的激活值(z) 。因此,我们的模型预测输入集{0,0}的输出为1 。计算当前迭代的损失/成本如下:

推荐阅读