artificial-intelligence - 激活函数和初始权重的选择是否会影响神经网络是否陷入局部最小值?

标签 artificial-intelligence neural-network backpropagation gradient-descent minima

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

还有another paper [PDF]这表示最简单的 XOR 网络没有局部最小值,但它似乎并不是在谈论 2-3-1 网络。

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

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

最佳答案

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

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

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

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

这让我想到了下一点,您确定您的训练示例数量均匀分布吗?如果您提供的神经网络有 900 个正分类结果,但只有 100 个负分类结果,有时网络会认为说一切都在分类组内会更容易,因为如果确实如此,它的错误率只有 10%。许多学习算法都非常擅长寻找这类东西。

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

关于artificial-intelligence - 激活函数和初始权重的选择是否会影响神经网络是否陷入局部最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057296/

相关文章:

ruby - 我需要提高朴素贝叶斯文本分类的准确性

algorithm - 应用 A* 数独的启发式函数

tensorflow - 当某个 Action 不可执行时如何减少神经网络输出

python - 密集合成器的实现

python - 神经网络中的线性函数正在产生巨大的输出值

java - 多类神经网络问题

python - 计算深度神经网络关于输入的偏导数

java - 如何检测音频流中特定单词的出现。

artificial-intelligence - 在部分随机但受偏好影响的情况下,确定 NPC 将采取什么行动?

neural-network - 为什么神经网络不是凸的?