Python 神经网络在训练时陷入高损耗的原因是什么

Python 神经网络在训练时陷入高损耗的原因是什么,python,machine-learning,deep-learning,neural-network,regression,Python,Machine Learning,Deep Learning,Neural Network,Regression,我正在训练一个神经网络来预测一个连续值。所以我的问题是一个回归问题,应该很简单,我有3到4个特征,我想要预测的目标是一个介于0到360之间的角度值。我正在使用pytorch/skorch,我认为这是一个非常酷的API,我在将其提供给网络之前对功能进行了标准化/规范化,我尝试了不同的架构、不同的超参数等。。但我注意到,网络开始学习良好,因此损失开始以一种良好的方式减少,但当它达到6000或7000时,它不知何故停留在那里,网络很难进一步学习。现在我不知道为什么会这样,我正在寻求建议或指导。我确信我

我正在训练一个神经网络来预测一个连续值。所以我的问题是一个回归问题,应该很简单,我有3到4个特征,我想要预测的目标是一个介于0到360之间的角度值。我正在使用pytorch/skorch,我认为这是一个非常酷的API,我在将其提供给网络之前对功能进行了标准化/规范化,我尝试了不同的架构、不同的超参数等。。但我注意到,网络开始学习良好,因此损失开始以一种良好的方式减少,但当它达到6000或7000时,它不知何故停留在那里,网络很难进一步学习。现在我不知道为什么会这样,我正在寻求建议或指导。我确信我的代码中没有错误,因为我尝试从我的数据集中只拟合10个数据点,这很有效(NN实现了对这10个样本的过度拟合),但当我获取包含10000个数据点的整个数据集时,网络在高损耗值下崩溃,并且很难进一步训练,我不确定是什么导致了这种情况,我的意思是,至少神经网络应该对训练数据进行过度拟合,但我的网络甚至没有达到过度拟合。任何人都知道导致这种行为的原因是什么,或者除了批量规范化、更复杂的体系结构、不同的超参数之外,我还能尝试什么?

您能提供您正在使用的体系结构吗?比如每一层的层数和单元数layer@ManuSPillai我尝试了这么多的组合,但都不起作用。我尝试了从1层到10层,从6层到1024层的神经元。机器学习实践者说,对于90%的任务,我们不需要神经网络。正如您所说,输入特性是3或4。直接跳到像nn这样的非线性模型从来都不是一个好的实践。您是否尝试过数据的线性回归模型?如果不是,那么你应该从一个线性模型开始,如果需要的话,使用一些EDA。但是如果应用神经网络是一种强迫,那么对于这样的数据,我相信一个有2层和5-10个神经元的DNN就足够了(mse损失[显然])。但正如你所说的,输出变量是0-360,这意味着在某种意义上是有界的,我看过一些文献,在0-1之间标准化标签后使用交叉熵损失。他们说,在这些情况下,它比mse更稳定。此外,这些只是建议,如果在你的情况下,我可能会这样做。我坚信损失不会减少,因为你的模型太复杂了,或者陷入了一个令人讨厌的局部mimima。(因为您已经声明代码是正确的)。对模型进行适当的初始化。据我所知,迄今为止最好的工作是格洛特制服。如果情况是后者,可能会有所帮助。让我知道,如果这些有助于你减少损失。