Neural network 使用ReLU(整流单元)的简单反向传播失败

Neural network 使用ReLU(整流单元)的简单反向传播失败,neural-network,backpropagation,Neural Network,Backpropagation,我有简单的代码用于传统的反向传播(使用传统的sigmoid激活函数),它工作得很好 然后我把sigmoid换成整流器,即使是简单的XOR测试,它也无法收敛 我在整流器的导数中添加了“泄漏”,但它仍然失败 网络配置: [输入层,1或2个隐藏层,输出层] 输入层没有权重,它只是用来接受输入 所有隐藏层和输出层都具有相同的激活功能(以前是sigmoid,现在改为整流器) 整流器为: f(x)=最大值(0,x) f'(x)=符号(x) 这无法使网络聚合,因此我添加了泄漏,但仍然失败 XOR学习目标是:

我有简单的代码用于传统的反向传播(使用传统的sigmoid激活函数),它工作得很好

然后我把sigmoid换成整流器,即使是简单的XOR测试,它也无法收敛

我在整流器的导数中添加了“泄漏”,但它仍然失败

网络配置:

[输入层,1或2个隐藏层,输出层]

输入层没有权重,它只是用来接受输入

所有隐藏层和输出层都具有相同的激活功能(以前是sigmoid,现在改为整流器)

整流器为:

f(x)=最大值(0,x)

f'(x)=符号(x)

这无法使网络聚合,因此我添加了泄漏,但仍然失败

XOR学习目标是:

传统乙状结肠后支撑的效果 (网络配置为[2,8,1]):

我的背部支撑与矫正单位的最佳效果 (网络配置为[2,8,8,1]):

但经过几十次试验,我只获得了两次正确的结果

通常,它会像这样失败(网络配置为[2,8,8,1]):

或者这个(网络配置是[2,8,8,1]):

如果我使用两层([2,8,1]),它会像这样卡住:

网络似乎无法摆脱这些局部极小值

代码如下:

请注意,有两个版本:一个是传统的sigmoid,另一个是_ReLU后缀

我的问题与此类似:
但即使在这个问题上,答案也不令人满意,也没有定论。

我个人发现,对于简单的任务,TanH单位,甚至可能是乙状结肠单位都比Relu好。据我所知,Relu因解决了使用复杂训练数据训练深层网络所涉及的一些问题而广受欢迎。有可能你做得很好,而且sigmoids更适合这份工作。我的目标是训练非常深入的人际网络,所以ReLU是必要的。无论如何,经过一些调整,我能够得到收敛。当我有时间时,将发布一个答案:)