
如何更好地generalize一个模型?掌握这几点让效果更稳定! 搞机器学习,最头疼的不是怎么把模型跑起来,而是怎么让它在没见过的数据上也能跑得也就是泛化能力。我这几年...
如何更好地generalize一个模型?掌握这几点让效果更稳定!
搞机器学习,最头疼的不是怎么把模型跑起来,而是怎么让它在没见过的数据上也能跑得也就是泛化能力。我这几年踩的坑,基本都跟这玩意儿脱不开关系。
一开始我总是盯着训练集,恨不得把准确率刷到99.99%。结果一跑测试集,好家伙,直接跌到70%多,那感觉就像坐过山车,刺激是真刺激,但心脏受不了。
我发现,大部分泛化问题都出在数据上。你要是拿一堆质量参差不齐的数据去喂模型,它学到的肯定也是一堆乱七八糟的东西。

很多人有个误区,觉得模型越深越复杂,效果就越我以前就是这么干的,堆各种复杂的网络结构,结果就是过拟合的大本营。
后来我学会了“克制”。
光把数据和模型搭起来还不行,训练过程中的一些小细节,决定了模型是天上还是地下。
我以前都是随便设个学习率,跑完为止。现在我严格控制学习率的衰减策略。

现在我再看一个模型好不好用,第一反应不是看训练精度,而是看训练集和验证集曲线的差距,如果差距不大,那这个模型泛化性才算说得过去。这几点坚持下来,我跑出来的模型稳定性确实高多了,不容易被新数据“吓到”。