C语言 如何在神经网络的权重上应用梯度下降?



考虑一个有两个隐藏层的神经网络。在这种情况下,我们有三个权重矩阵。假设我正在开始培训。在第一轮中,我将为三个矩阵的所有权重设置随机值。如果这是正确的,我有两个问题:

1- 我应该从输入层向右进行训练还是其他方式?

2-在第二轮训练中,我必须在重量上应用梯度下降。我应该在所有矩阵的所有权重上应用,然后计算误差,还是逐个权重地应用它,检查误差是否减少以进入下一个权重,依此类推以最终进入下一轮训练?

您需要熟悉前向传播和向后传播。在神经网络中,首先随机初始化权重。然后,根据训练集值(X_train(预测y值(假设y_pred(。对于您拥有的每个X_train样本y_train这是训练样本的真实输出(我们说基本事实(。然后根据损失函数计算损失值,为简单起见,假设 loss=y_pred-y_train(这不是实际的损失函数,它比这复杂一些(。简而言之,这就是前向传播。

因此,您得到损失,然后计算需要更改多少权重才能在下一次迭代中训练神经网络。为此,我们使用梯度下降算法。您可以使用获得的损失值计算新的权重。简而言之,这就是向后传播。

您可以多次重做此步骤,您将把权重从随机提高到训练权重。

最新更新