【发布时间】:2019-02-01 14:12:47
【问题描述】:
我想知道平方误差是否也取决于隐藏层的数量和每个隐藏层上的神经元数量,因为我已经创建了一个带有一个隐藏层的神经元网络,但我无法达到一个小的平方错误,所以也许函数不是凸的?我可以通过添加更多隐藏层来优化权重吗?
【问题讨论】:
标签: python neural-network
我想知道平方误差是否也取决于隐藏层的数量和每个隐藏层上的神经元数量,因为我已经创建了一个带有一个隐藏层的神经元网络,但我无法达到一个小的平方错误,所以也许函数不是凸的?我可以通过添加更多隐藏层来优化权重吗?
【问题讨论】:
标签: python neural-network
您添加到模型中的神经元(例如层)越多,您就越能逼近任意函数。如果您在训练数据上的损失没有进一步减少,那么您就是underfitting。这可以通过使模型更复杂来解决,即添加更多可训练的参数。但是你必须小心,不要过度使用并最终成为overfitting。
【讨论】:
虽然这不是编程问题,但我会尽量在这里回答。
平方误差,即您的神经网络的“损失”,取决于您的神经网络预测和基本事实。从定义上看,它是凸的。
您没有得到低损失的原因可能是:
您没有对输入进行规范化。例如,如果您有一系列房价作为输入,大约 500k 到 1m,并且您没有对它们进行归一化,您的预测将是价格的线性组合,大约是相同数量级,那么通过激活函数。这可能会导致巨大的损失。
您没有正确初始化权重和偏差。与上述类似,您可能拥有较大的权重/偏差,从而导致较大的预测值。
您没有选择正确的激活函数。当您进行分类时,您的标签通常是一种热编码,因此您的激活函数应将预测限制为 [0,1] 或类似的,因此 relu 不是一个合适的选择。此外,您不希望 sigmoid 作为回归问题的激活。
您的标签不可预测或噪音太大。或者,您的网络可能不够复杂,无法捕获重要模式,在这种情况下,您可以尝试添加更多层和每层更多节点。
你的学习率太小,会导致收敛慢。
这就是我的全部想法。您可能需要做更多工作才能找出问题的原因。
【讨论】: