gpt4 book ai didi

machine-learning - 更新 2 层神经网络中的权重

转载 作者:行者123 更新时间:2023-11-30 09:36:56 25 4
gpt4 key购买 nike

我正在尝试使用与此类似的神经网络来模拟异或门:

enter image description here

现在我明白每个神经元都有一定数量的权重和偏差。我正在使用 sigmoid function确定神经元在每种状态下是否应该激发(因为这使用了 sigmoid 而不是阶跃函数,所以我在宽松的意义上使用激发,因为它实际上会输出真实值)。

我成功运行了前馈部分的模拟,现在我想使用backpropagation更新权重并训练模型的算法。问题是,对于 x1x2 的每个值,都有一个单独的结果(总共 4 种不同的组合),并且在不同的输入对下,有单独的误差距离(可以计算期望的输出和实际结果,并且随后最终将实现一组不同的权重更新。这意味着我们将通过使用反向传播为每个单独的输入对获得 4 组不同的权重更新。

我们应该如何决定正确的权重更新?

假设我们对单个输入对重复反向传播直到收敛,但是如果我们选择另一对输入,我们会收敛到一组不同的权重怎么办?

最佳答案

Now I understand that each neuron has certain weights. I am using a sigmoid function to determine a neuron should fire or not in each state.

你并没有真正“决定”这一点,典型的 MLP 不会“触发”,它们输出真实值。有些神经网络实际上会触发(如 RBM),但这是一个完全不同的模型。

This means we would get 4 different sets of weight updates for each input pairs by using back propagation.

这实际上是一项功能。让我们从头开始吧。您尝试最小化整个训练集(在您的情况下 - 4 个样本)上的某些损失函数,其形式为:

L(theta) = SUM_i l(f(x_i), y_i)

其中l是一些损失函数,f(x_i)是您当前的预测,y_i真实值。你通过梯度下降来做到这一点,因此你尝试计算 L 的梯度并逆向它

grad L(theta) = grad SUM_i l(f(x_i), y_i) = SUM_i grad l(f(x_i), y_i)

您现在所说的“单个更新”是单个训练对(x_i, y_i)grad l(f(x_i) y_i)。通常您不会使用它,而是对整个数据集的更新进行求和(或取平均值),因为这是您的真实梯度。然而,实际上这在计算上可能是不可行的(训练集通常非常大),此外,经验表明训练中的“噪声”越多通常越好。因此出现了另一种学习技术,称为随机梯度下降,简而言之,它表明在一些简单的假设(如加性损失函数等)下,你实际上可以独立地进行“小更新”,并且你仍然会收敛到局部最小值!换句话说 - 您可以以随机顺序“逐点”进行更新,并且您仍然可以学习。它总是相同的解决方案吗?不。但这对于计算整个梯度来说也是如此 - 非凸函数的优化几乎总是不确定的(你会发现一些局部解决方案,而不是全局解决方案)。

关于machine-learning - 更新 2 层神经网络中的权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37646589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com