像堆乐高一样:从零开始解释神经网络的数学过程
请注意,这个损失函数包括一个正则项,它以岭回归的形式惩罚较大的权重。换言之,平方值比较大的权重会增大损失函数,而这正是我们希望最小化的指标。 反向步骤: 这一步的目标就是沿着最小化损失函数的方向更新神经网络的权重。正如我们将要看到的,这是一个递归算法,它可以重用之前计算出来的梯度,而且严重依赖微分函数。因为这些更新减小了损失函数,所以一个神经网络便「学会了」去逼近具有已知类别的观察值的标签。这就是被称作泛化的一种属性。 与前向步骤不同的是,这个步骤沿着反向的顺序进行。它首先计算出输出层中损失函数对每个权重的偏导数 (dLoss/dW_2),然后计算隐藏层的偏导数 (dLoss/dW1)。让我们详细地解释每个导数吧。 (1) dLoss/dW_2: 链式法则表明,我们可以将一个神经网络的梯度计算分解成好多个微分部分: 为了帮助记忆,下表列出了上面用到的一些函数定义以及它们的一阶导数: 更直观地,我们在下图中要更新权重 W_2(蓝色部分)。为了做到这件事,我们需要沿着导数链计算三个偏导数。 将数值代入到这些偏导数中,我们就能够计算出 W_2 的偏导数,如下所示: 结果是一个 3x2 的矩阵 dLoss/dW_2,它将会沿着最小化损失函数的方向更新 W_2 的数值。 (2) dLoss/dW_1: (编辑:PHP编程网 - 襄阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |