激活函数和初始权重的选择是否与神经网络是否陷入局部最小值有关?

Viv*_*ath 2 artificial-intelligence backpropagation neural-network gradient-descent minima

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

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

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

至于激活功能而言,由于错误最终与由激活函数产生的输出,我在想,有一个效果(即误差表面的变化).然而,这仅仅是基于直觉,我更喜欢一个具体的答案(对于这两点:初始权重和激活函数的选择).

Nat*_*ate 6

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

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

我的建议是,由于网络非常小,所以当它看起来像是局部最小值时,你应该打印边缘权重.您应该能够快速评估权重是否正确以及这些值与您提供完美网络的距离.

对我来说有很大不同的一个诀窍是在每个训练数据之后立即更新权重,而不是更新错误并在时期结束时更新权重.如果我的输入数据的前半部分属于同一个分类存储桶,那么这就阻止了我的网络早期受到影响.

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

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