机器学习、深度学习、数据分析、大数据、服务端技术栈等等,这几部分都是很全的。可以先看部分(价值超大!!)
来源:网络
既然如此,在已经达到了某个阈值之后,我们可不可以做点别的事情来提升模型性能呢?ICML2020的论文《Do We Need Zero Training Loss After Achieving Zero Training Error?》回答了这个问题,不过实际上它并没有很好的描述"为什么",而只是提出了"怎么做"
左图:不加Flooding的训练示意图;右图:加了Flooding的训练示意图
简单来说,就是最终的验证集效果可能更好一些,原论文的实验结果如下:
Flooding的实验结果:第一行W表示是否使用weight decay,第二行E表示是否使用early stop,第三行的F表示是否使用Flooding
个人分析
如何解释这个方法呢?可以想像,当损失函数达到b bb之后,训练流程大概就是在交替执行梯度下降和梯度上升。直观想的话,感觉一步上
继续脑洞
想要使用Flooding非常简单,只需要在原有代码基础上增加一行即可
效果检验
我随便在网上找了个竞赛,然后利用别人提供的以BERT为baseline的代码,对Flooding的效果进行了测试,下图分别是没有做Flooding和参数b = 0.7 的Flooding损失值变化图,值得一提的是,没有做Flooding的验证集最低损失值为0.814198,而做了Flooding的验证集最低损失值为0.809810
—版权声明—
来源:网络
仅用于学术分享,版权属于原作者。
最后,再和大家说说我们之前做的《100个超强机器学习算法模型》。 一个人走的很快,但一群人会走的很稳,放假的小伙伴,趁着假期可以按照每一个算法模型,学习一番。 我是Johngo,下期见!