带输入的神经网络 - Relu - SoftMax - 交叉熵权重和激活无限增长

时间:2018-04-22 15:18:48

标签: machine-learning neural-network activation-function

我已经实现了一个神经网络,其具有3层输入到隐藏层,具有30个神经元(Relu激活)到Softmax输出层。我正在使用交叉熵成本函数。没有使用外部库。这正在研究NMIST数据集,因此有784个输入神经元和10个输出神经元。 作为我的隐藏层激活,我使用双曲正切获得了大约96%的准确度。 当我尝试切换到relu激活时,我的激活变得非常快,这导致我的体重增长无限,直到它爆炸!

这是使用relu激活时常见的问题吗?

我尝试过L2正规化,但收效甚微。与tanh激活相比,我最终必须将学习率设置为低十倍,并且我已经尝试相应地调整重量衰减率,并且我获得的最佳准确度仍然是大约90%。最终通过更新网络中导致爆炸的某些重量,重量衰减率仍然超过了。 似乎每个人都只是用relu替换他们的激活函数,他们会遇到更好的结果,所以我一直在寻找错误并验证我的实现。 使用relu作为激活函数还有更多吗?也许我的实施有问题,有人可以用相同的神经网络结构来验证准确性吗?

1 个答案:

答案 0 :(得分:0)

正如您所看到的,Relu函数在正值上是无界的,从而创建了增长的权重

enter image description here

实际上,这就是为什么在这些情况下使用双曲正切和相似函数,将输出值限制在某个范围之间(在大多数情况下为-1到1或0到1)

还有另一种处理这种现象的方法,称为权重衰减 最基本的动机是获得一个更通用的模型(避免过度拟合)并确保权重不会爆炸你在更新它们时根据重量本身使用一个调节值 意味着更大的权重得到更大的惩罚

你可以进一步阅读它here