当前位置: 首页 > 科技观察

深度学习就像炼金术,你有什么迷信?网友:Randomseed=42结果不错

时间:2023-03-20 17:14:40 科技观察

每一个机器学习领域的研究者都会面临调参过程的考验,但往往说起来容易做起来难。参数调优的背后往往是通宵达旦的论文研究和GitHubreview,需要大量的实验,不仅耗费时间还消耗大量的算力,深深伤了工程师的头发。有人不禁要问:调参是玄学吗?为什么模型调的很好,但效果总是和想象中有些出入。近日,reddit上的一篇帖子引发网友热议,“机器学习调参领域有哪些迷信的观点或做法?”原帖地址:https://www.reddit.com/r/MachineLearning/comments/rkewa3/d_what_are_your_machine_learning_superstitions/?sort=confidence调参的那些“秘密”在机器学习中,超参数调优是一项必不可少的技能。通过观察训练过程中的监控指标,如loss??、accuracy,可以判断当前模型处于什么样的训练状态,及时调整超参数更科学地训练模型,可以提高资源利用率。大家会根据自己的实际经验调整模型参数。最后,大部分研究者可能得出的经验是:Randomseed=0togetbadresultsRandomseed=42togetgoodresultsEven-valuedkink-Means=insightfulsegmentation有些人把这个经验总结当成所谓ML“迷信修行”,其实不然。几乎所有的学者都这样做。然而,一些网友对这段经验总结持怀疑态度:网友@SlashSero很遗憾,这种情况即使在非常著名的科学出版物中也会出现,尤其是在交叉验证不可行或易受其他参数选择影响的情况下。因此,在机器学习应用中,超参数优化(HPO)是不可行的。看看有多少NeurIPS会议论文拥有真正透明的代码库和易于重现的交叉验证研究,以证明他们的工作比去年提高了0.5-1%的性能。此外,很多时候是出于对研究人员的信任,但实际上新的深度学习模型并没有在实践中表现出明显优于传统模型的性能。我们应该看到社区存在这样一个现状:花费大量时间来确保模型真正完成它所展示的性能,并且是可重现和透明的,这是一项吃力不讨好的工作。除了消耗计算资源,你还可能失去在发展极快的领域发表论文和获得认可的机会。为了让模型达到最佳性能,各路网友也纷纷分享了自己的炼金心得:有网友认为Randomseed必须是10的倍数,最好是1000(但这个回答被其他人反驳)。除了Randomseedsetting,一些科研人员分享了自己的一些科研小技巧。模型的训练过程几乎是一个黑盒子。如果在此期间出现程序错误,则很难检测到。有网友建议,随时随地“打印”是个好习惯。当程序第一次运行时,一定要打印出所有可能的东西,“打印”可以让你知道程序跑到哪里去了,是不是死循环了……其实大部分程序员都会这么做。除了“打印”,有人说日志记录也是非常必要的。有时候在实验室做科研,一个程序要运行好几天,但总有事情不顺利,或者长时间没有停电的实验房间突然断电,或者服务器死机。。.所以随时随地保存日志是每个程序员必备的。查看日志记录,可以找出程序运行的地方,大致预估模型的性能,查看错误:还有网友贴出自己的dropout经验,认为dropout超过20%会很难恢复模式。不过这只是网友自己的经验,也有人说用了90%的dropout,模型性能最好。另外还有网友总结batchsize应该是2的幂。以上是网友总结的一些ML炼金技巧。形而上学论文很难复制。虽然调整参数有用,但网友@ostrich-scalp尖锐批评,“大多数论文的结果都是胡说八道。我用我的职业生涯来实现这些任务并期望创造出像样的和可用的,这是一个巨大的错误。”@SlashSero上面的老大继续说,“令人难以置信的是,在ACM、IEEE、IAAA和NeurIPS上发表的论文中有多少纯粹是出于作者的信任。到现在,你可能会期望所有知名期刊和会议都需要论文作者才能打开获取并复制他们的代码,但这是个例外。”显然,机器学习是一门技术,虽然神经网络黑箱的状态限制了可解释性,但我们可以凭经验在高层次上解决我们面临的问题。我们需要加载数据、建立框架、让系统运行、设置指标,调整参数和分析错误,进行特征工程,可视化结果。最后,经过几次迭代,推理的准确性不再提高。那么为什么各种玄学现象不断出现,折磨着我们的心灵呢?看来我们对这个问题还不够了解。但是请记住图灵奖获得者JudeaPearl在NIPS2017大会上演讲最后一页的Keynote:数据科学只有能够促进对数据的合理解释,才能称为科学。不过不用怕,深度学习调参总是有技巧可循的,大致可以归纳如下。这些不是迷信的做法,仅供参考。找到合适的学习率。学习率作为一个非常重要的参数,面对不同的规模、不同的batch-size、不同的优化方法和不同的数据集,其最合适的值是不确定的。我们唯一能做的就是在训练中不断寻找最适合当前状态的学习率;权重初始化。与其他技巧相比,它的使用频率并不高。只有那些没有预训练模型的字段才会自己初始化权重,或者初始化模型中神经网络最后几个全连接层的权重。常用的权重初始化算法是“kaiming_normal”或“xavier_normal”;数据集处理主要包括数据筛选和数据增强;多模型融合,是论文成果的终极核武器。深度学习一般有几种方法,比如相同的Parameter,不同的初始化方法;不同的参数,通过交叉验证选择最好的组;不同模型,进行线性融合,比如RNN和传统模型;余弦退火和带热重启的随机梯度下降。余弦退火意味着学习率像余弦函数一样缓慢下降。热重启是指在学习过程中,学习率缓慢下降,然后突然反弹(重启),然后继续缓慢下降;试图适应一个小数据集。关闭正则化/dropout/数据增强,让神经网络使用一小部分训练集训练几个epoch。确保您可以实现零损失,如果没有,则可能有问题。……调参路上有不同的“数字”,适合自己就好。最后一个问题,你在炼金术方面的独特秘诀是什么?参考链接:https://www.jiqizhixin.com/articles/2020-10-21-3https://picture.iczhiku.com/weixin/message1609136710592.html【本文为专栏组织《心》原文翻译oftheMachine》,微信公众号《机器之心(id:almosthuman2014)》】点此查看作者更多好文