最近在训练一个神经网络模型,遇到了loss值始终不变的问题。
简要说一下,我训练的是一个分类器,是一个最后分类数为6的多元分类问题,但模型在训练多个轮次后准确度仍然在16.67%左右,loss值基本没有怎么变化,也就是说,我的模型参数并没有怎么变化,相当于没有在学习。
在网上查了各种资料后,我尝试了以下几种方法:
1.加大训练轮次
起初,我以为是我的模型训练轮次太少,但发现加大训练轮次后并没有效果,该方法对我的模型不适用
2.增大学习率
最开始我的模型优化器为Adam,学习率设置为1e-3,我认为可能时学习率太小,导致学习太慢(这个方法的思路和加大训练轮次差不多),但发现将学习率改为0.01或者0.1后会出现loss值过大为nan的问题,该方法也不行
3.调整batch_size
我尝试着增大或减小batch_size,发现模型的loss并没有什么改善
最后,在像无头苍蝇一样地尝试了各种方法之后,我看到了
如何解决神经网络训练时loss不下降的问题 | AI柠檬 (ailemon.net)https://blog.ailemon.net/2019/02/26/solution-to-loss-doesnt-drop-in-nn-train/这篇文章,受到了启发,尝试改变了模型权重参数初始化的方法,于是,模型训练时loss值开始较大幅度的下降,分类准确度也逐渐上升,模型训练终于正常了。