嘈杂环境中的梯度下降

数据挖掘 优化 梯度下降
2022-02-28 18:08:24

如何在嘈杂的环境中知道正确的方向?

在神经网络学习的典型例子中,我们可以看到几个局部最小值。梯度下降是选择一个局部最小值并朝那个方向移动,并且它以某种方式起作用。

我想如果有很多神经元,那么就有很大的可能性空间。

我是电气工程师,所以我习惯于遇到噪音。我对神经网络这个话题也很陌生,所以如果这是一个初学者的问题,请原谅我。

我担心如果我看得太近,可能性的空间会显得非常嘈杂。梯度下降知道近距离观察:你得到这个微点的梯度。

添加噪声,您的派生向量可能指向它想要的任何地方。

我怎样才能实现不那么精细的方法,在嘈杂的平面中找到全局最小值,然后降低到更好的分辨率以便在全局最小值内找到局部最小值?

是的,一种可能的解决方案是在附近的一些点上训练网络,并估计那里的噪声加上平均......但这需要大量的训练,而且这些训练很昂贵。

我在这里想得太复杂了吗?

3个回答

如果我理解正确,您的问题是,如果您不能准确计算函数的梯度,但只能在一些误差范围内计算,那么梯度下降法仍然有效,因为它可以让您收敛到一个最小值?

答案是肯定的,如果你使用回溯梯度下降。(而不是梯度下降的标准版本,该版本仅在您对成本函数有一些强假设时才有效,例如凸函数或具有 Lipschitz 连续梯度,以及其他一些假设,例如函数具有紧凑的子水平集。关键是,如果您考虑一种正则化技术,如 Victor 的回答中所述,那么即使您的原始函数也具有 Lipschitz 连续梯度并且具有紧凑的子水平集,在您进行正则化之后,新函数将不会满足这些假设更多。)您可以在我在以下链接中的回答中提到的论文中找到更多详细信息:

梯度下降总是收敛到最优吗?

您是否考虑过使用一些正则化/优化技术?你可以看看 Adam Optimizer 的梯度下降:https ://machinelearningmastery.com/adam-optimization-algorithm-for-deep-learning/

对于一些正则化技术,如 Dropout:https ://machinelearningmastery.com/dropout-for-regularizing-deep-neural-networks/

您特别感兴趣的是,一种常用的技术是使用批量示例而不是一个一个示例来训练神经网络。这称为小批量梯度下降,有助于避免局部最小值https ://machinelearningmastery.com/gentle-introduction-mini-batch-gradient-descent-configure-batch-size/

和批量标准化:https ://towardsdatascience.com/batch-normalization-in-neural-networks-1ac91516821c

我希望这些信息可以帮助到你。如果您在 python 中使用 PyTorch 或 TensorFlow 等框架,则只需声明几件事即可使用这些技术。

维克多·赫利曼

在使用随机梯度下降 (SGD) 训练噪声数据时,有多种策略可以增加达到全局最优值的机会:

  • 增加批量。通过获取更大的样本,每个更新的估计值会更准确,因为它使用了更多的数据。

  • 增加动力。Momentum 在一致的方向上加速更新。效果是梯度更新将“跳过”嘈杂的部分。