激活函数和初始权值的选择是否对神经网络陷入局部最小值有任何影响?



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

  • 异或不存在局部极小值——以神经网络误差面分析为例。作者:Hamey LG。澳大利亚悉尼麦考瑞大学计算机系
  • 2-3-1异或网络的本地最小值。/Sprinkhuizen-Kuyper IG, Boers EW.

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

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

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

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

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

我的建议是,由于网络是如此之小,你应该打印边权值时,它似乎卡在一个局部的最小值。你应该能够快速评估权重是否正确,以及这些值离给出一个完美的网络有多远。

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

这就引出了我的下一个问题,你确定你有一个均匀分布的训练样本吗?如果你给一个神经网络提供900个正面的分类结果但只有100个负面的分类结果有时网络会认为说所有的东西都在分类组内更容易因为如果它这样做的话,它只有10%的错误率。许多学习算法都非常擅长发现这类东西。

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

最新更新