【问题标题】:How to apply gradient descent on the weights of a neural network?如何在神经网络的权重上应用梯度下降?
【发布时间】:2020-10-17 15:18:59
【问题描述】:

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

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

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

【问题讨论】:

  • 这似乎根本不是 C 编程问题。

标签: c neural-network gradient-descent


【解决方案1】:

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

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

您多次重复此步骤,您会将权重从随机权重提高到经过训练的权重。

【讨论】:

  • 所以在第二轮。我已经计算了所有权重的梯度下降,从权重的左侧矩阵开始到右侧,然后一次又一次地计算每个神经元的所有 (w*x + b)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-10
  • 2015-07-11
  • 2011-08-24
  • 1970-01-01
  • 2021-03-12
  • 2022-09-28
  • 2017-02-19
相关资源
最近更新 更多