『产业气象站』却什么奖牌都没拿到怎么办?第一名:我也很苦恼,强势入驻Kaggle( 二 )
所以 , 我改用了另一台配备双路2080ti的服务器 。 但由于电源供应不够强大 , 刚开始的时候遇到一个小问题 。 然后工程师增加了一个电源 , 问题也就迎刃而解了 。 此后 , 我在这台服务器上运行了很多模型 , 结果都很不错 。 所以接下来我还会选择租用Hostkey的服务器 。
设计运转良好的工作流程
文章图片
优秀的工作流程至关重要 。 这里的「流程」(pipeline)指的是用来准备训练数据、训练和推断的代码 。 这里你可以使用一些高级的框架 , 但从头开始自己写代码也是不错的选择 。 使用高级框架的主要优势在于可以快速改变 , 并确保基础层面正常运转 , 这样你就可以专心于高级功能了 。
在竞赛中 , 我先使用Catalyst的JupyterAPI , 但由于出现问题便很快停止了 。 过了一段时间后 , 我决定听从队友的建议转向Catalyst中的ConfigAPI 。 这个API更适合我 , 但需要很长时间才能适应 。
对此 , 我得到的经验是:选择一个方法(特定的框架或工作流程)并坚持下去可能是更好的做法 。
无法直视的代码
文章图片
很多人说Kaggle竞赛参与者写的代码惨不忍睹……事实经常如此 , 其主要原因是对快速迭代的需求 , 因此相对于写更好的代码 , 尝试新想法是更加实用的做法 。 不过我并不认同这一说法 。
有时候 , 稍微进行代码优化会产生非常大的影响 。 大家可以看一下上面的截图 , 代码优化可以让推断速度提升30倍 。 训练过程也变得更快 , 因此把事情做好非常重要 。
但是……
不要盲目相信论坛或kernel中的代码和想法
文章图片
Kaggle是个很不错的平台 , 拥有大量可用的优秀notebook , 还有可以找到酷炫想法的论坛 。 然而 , 事实并不尽然 。
这里当然有很多高质量的notebook , 论坛上也有许多不错的想法 , 但同时它也存在很多问题:
一些notebook中的代码和代码实践存在错误 , 还有验证问题、想法的错误实现等问题;
论坛中的一些想法存在误导性 。 这并不代表提出想法的人带有恶意 , 而是因为很多想法本身并不work , 只有和别的想法结合才能取得效果 , 有些需要性能足够好的模型等等 。
因此 , 如果你想使用现成的代码和想法 , 请确保先进行检查和验证 。
不断寻找新的idea , 并进行尝试
文章图片
参加Kaggle竞赛最酷的体验之一是 , 参赛者会不断追求新的SOTA结果 。 而为了获得最佳成绩 , 参赛者必须尝试新事物 。 所以他们需要阅读大量arxiv论文 , 搜寻好的博客文章等等 。
但值得注意的是 , 仅仅阅读查找新方法远远不够 , 还必须进行尝试 。 虽然有时为一些新的idea编写代码非常困难 , 但这是学习新事物的绝佳方式 。 最后 , 即使一些idea不work , 你依然积累了有用的经验 。
避免过度调参
文章图片
过度调参是一种常见的误区(我自己也栽过几次) 。 有些人认为调参能帮助他们取得好成绩 , 这种观点有一定的道理 , 但并非完全正确 。
在tabular竞赛中 , 有必要执行两次调参 , 分别在竞赛的开始和结束阶段 。
调参在竞赛的初始阶段很重要 , 因为梯度提升以及必须针对不同的问题对其他模型进行调参 。 不同的目标和深度、叶节点的数量以及其他参数在不同问题中会导致不同的分数 。 但当你发现一些好的参数之后 , 修复它们并在竞赛临近结束的时候再touch 。 此外 , 当你添加一些新特性或尝试新idea时 , 保持超参数不变 , 这样你就可以对实验结果进行比较 。
推荐阅读
- 【科学家】“太岁”到底是什么生物?科学家给出答案:科学家给出答案
- 『软件』明知有的副业是骗人的,为什么还是有很多人去做呢?
- 阿里巴巴▲三国志战略版什么来路?为何频频刷屏各大软件?
- 阿冰说手机换什么手机(4k左右)?,考虑了好久
- 『Java』java数据结构系列——什么是数据结构
- 中国电子报智能传感器能占多大市场?,30万亿元智慧养老产业
- 长沙晚报打造“中国软件开发者产业中心城市”,长沙携手CSDN
- 火星:明明距离地球最近的行星是金星,为什么全世界却都赶着去探测火星?
- 5g手机@5G手机出来许久,为什么大家都不买?这4个原因足以说明!
- [基因改造]蚊子在地球上到底有什么用?如果全被消灭了会有什么严重后果