2

我昨天发布了这个问题,询问我的神经网络(我正在使用随机梯度下降通过反向传播进行训练)是否陷入局部最小值。以下论文讨论了 XOR 神经网络中的局部最小值问题。第一篇说不存在局部最小值问题,而下一篇论文(一年后写)说在 2-3-1 XOR 神经网络中存在局部最小值问题(作为另外,我使用的是 3-3-1,即输入层和隐藏层的偏差)。这两个都是摘要(我无法访问完整的论文,所以我无法阅读它):

还有另一篇论文 [PDF]说最简单的 XOR 网络没有局部最小值,但它似乎不是在谈论 2-3-1 网络。

现在回到我的实际问题:我找不到任何讨论激活函数的选择、初始权重以及这对神经网络是否会陷入局部最小值的影响。我问这个问题的原因是,在我的代码中,我尝试使用标准的 sigmoid 激活函数和双曲正切激活函数。我注意到在前者中,我只有大约 20% 的时间会被卡住,而在后者中,我往往会更频繁地被卡住。每当我第一次初始化网络时,我也会随机化我的权重,所以我想知道一组随机权重是否更倾向于让我的神经网络“卡住”。

就激活函数而言,由于误差最终与激活函数产生的输出有关,我认为有影响的(即误差表面发生变化)。然而,这只是基于直觉,我更喜欢一个具体的答案(对于这两点:初始权重和激活函数的选择)。

4

1 回答 1

6

赋予神经网络的随机权重通常会立即限制学习期间可用的搜索空间部分。当学习率很小时尤其如此。

但是,在 XOR 情况下(使用 3-3-1 拓扑)不应该有任何局部最小值。

我的建议是,由于网络是如此之小,以至于当它似乎陷入局部最小值时,您应该打印边缘权重。您应该能够快速评估权重是否正确,以及这些值距离为您提供完美网络还有多远。

一个对我产生很大影响的技巧是,不是在每条训练数据之后立即更新权重,而是批量处理错误并在一个时期结束时更新权重。如果我的输入数据的前半部分属于同一个分类桶,这可以防止我的网络在早期受到影响。

这让我想到了下一点,你确定你有均匀分布的训练样本吗?如果你提供一个有 900 个正分类结果但只有 100 个负分类结果的神经网络,有时网络会认为说一切都在分类组内更容易,因为它只有 10% 的错误率。许多学习算法非常擅长发现这类事情。

最后,无论激活函数是否达到局部最小值,激活函数都应该几乎没有区别。激活函数主要用作将实数域投影到更小的已知范围的一种方式。(0,1) 用于 sigmoid,(-1,1) 用于双曲正切激活函数。您可以将其视为在给定神经层(也称为特征缩放)上强制所有学习特征相等的一种方式。由于事先不知道输入域,因此它不像线性回归的常规特征缩放那么简单,因此必须使用激活函数,但在反向传播期间计算错误时会对其进行补偿。

于 2011-11-09T05:21:11.850 回答