这是一个比较奇怪的问题。
A 有一个完美运行的反向传播代码,如下所示:
现在,当我进行批量学习时,即使它只涉及一个简单的标量函数逼近,我也会得到错误的结果。
训练后,网络为所有输入模式产生几乎相同的输出。
到目前为止,我已经尝试过:
- 引入偏差权重
- 尝试更新和不更新输入权重
- 改组批量学习中的模式
- 尝试在每个模式后更新并累积
- 以不同的可能方式初始化权重
- 仔细检查代码 10 次
- 按模式数量归一化累积更新
- 尝试了不同的层,神经元数量
- 尝试了不同的激活函数
- 尝试了不同的学习率
- 尝试了从 50 到 10000 的不同时期数
- 试图规范化数据
我注意到,在对一个模式进行大量反向传播之后,网络会为大量输入产生几乎相同的输出。
当我尝试逼近一个函数时,我总是得到一条线(几乎是一条线)。像这样:
相关问题:神经网络总是为任何输入产生相同/相似的输出 而添加偏置神经元的建议并没有解决我的问题。
我发现了一个类似的帖子:
When ANNs have trouble learning they often just learn to output the
average output values, regardless of the inputs. I don't know if this
is the case or why it would be happening with such a simple NN.
这足够详细地描述了我的情况。但是如何处理呢?
我得出的结论是,我遇到的情况是有权利的。真的,对于每个网络配置,一个人可能只是“切断”到输出层的所有连接。这确实是可能的,例如,通过将所有隐藏权重设置为接近零或将偏差设置为一些疯狂的值,以使隐藏层过饱和并使输出独立于输入。之后,我们可以自由地调整输出层,使其能够独立于输入再现输出。在批量学习中,发生的情况是梯度被平均化,网络只再现了目标的平均值。输入不扮演任何角色。