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

时间:2015-11-14 14:03:29

标签: neural-network backpropagation

我有传统反向传播的简单代码(使用传统的sigmoid激活函数),工作正常。

然后我将sigmoid改为整流器,即使是简单的XOR测试也无法收敛。

我添加了"泄漏"对整流器的衍生物而言,它仍然失败。

网络配置:

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

输入图层没有权重,只是用于接受输入。

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

整流器是:

f(x)= max(0,x)

f'(x)= sign(x)

无法使网络收敛,所以我添加了泄漏,但它仍然失败。

XOR学习目标是: enter image description here

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

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

enter image description here

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

通常,它会像这样失败(网络配置是[2,8,8,1]): enter image description here

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

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

网络似乎无法摆脱这些本地最低标准。

代码在这里:

https://github.com/Cybernetic1/genifer5-c/blob/master/back-prop.c

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

我的问题与此类似: Neural network backpropagation with RELU 但即使在那个问题上,答案也不能令人满意和不确定。

0 个答案:

没有答案