年轻人的第一块金牌:我是如何成为 Kaggle 全网第一的
共 3592字,需浏览 8分钟
·
2021-11-20 00:08
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
能在 Kaggle 竞赛中取得金牌已经是一项挑战了,而成为 Kernel Grandmaster 甚至是可遇不可求。而近日,毕业于莫斯科国立大学的数据科学家Andrey Lukyanenko在一次竞赛中达成Kaggle金牌,并在Kernel Grandmaster排名全网第一。本文是他的心路历程。
参加Kaggle竞赛对于任何人来说都是一项严峻的挑战。你需要花费大量时间和精力来学习新知识、尝试新技巧,努力获得高分。但这些往往还是不够,因为你的竞争对手可能拥有更多经验、更多空闲时间、更多硬件甚至其他莫名其妙的优势。
虽然刚刚在竞赛中拿下第一块金牌,但Lukyanenko已经在Kernel上排名第一了。
以前,我能在一些竞赛中获得银牌,有时归功于运气,有时得益于自己做了大量工作。但尽管我花费了大量时间,还是只能在很多竞赛中获得铜牌(甚至一无所获)。
在此次竞赛中,选手们试图预测一个分子中两个原子之间的磁相互作用(标量耦合常数)。当前量子力学最先进的方法可以计算这些耦合常数,并且只需要一个3D分子结构作为输入即可。但这些计算会耗费大量资源,所以不常使用。
因此,如果机器学习方法可以预测这些值,则能够真正地帮助药物化学家洞见分子结构,并且速度更快、成本也更低。
在最初的尝试中,我也使用了LGB,但知道还有更好的方法来处理图。这种挑战令我着迷,所以决定认真参与到竞争之中。
这次,该方法在leaderboard上取得了相当好的得分,我也得以保持白银段位。
此外,追踪当前一些最新的Kaggle Kernels和论坛观点也非常重要。
其中真正帮到我的是论坛和Kaggle Kernels。从竞赛开始直至结束,我浏览了所有的Kernels和论坛帖子,这其中包含很多不容错过的有用信息。即使是一些不太流行的Kernels也会包含有趣的新功能。论坛帖子里会有其他人的一些观点,这也有助于提高竞赛分数。
有一天,我收到了Boris的一封邮件,他是这一领域的专家,认为我们的技能可以实现互补。通常来说,我喜欢在比赛中单打独斗,但这一次,团队合作似乎是更好的选择。事实证明的确如此。
幸运的是,Psilogram加入了我们的团队。没过多久,他的模型就表现出了优于我们模型的性能。另一名成员Bojan帮助我们进一步改进了结果。他们都是很棒的机器学习专家。
我们让Christof加入我们的团队,他能很快构建出一个新的神经网络。因此,我们停止训练LGB,因为LGB远远比不上Christof构建的神经网络。
我看了很多关于神经网络架构的论文,包括EAGCN、3DGNN等;
我尝试了不同的损失函数,如Huber。我甚至找到了一篇用于回归的焦点损失函数论文,但实现起来并不可行;
当然,我还尝试了RAdam、Ranger等新的热门优化器,但简单的Adam在此次竞赛中更加好用。
但最后,还是Christof实现了架构,这给我留下了非常深刻的印象,也令我颇受启发。
好的硬件对于训练这些神经网络来说非常重要。我们用到了很多硬件,但我们也经常用kaggle kernels:你可以用P100以相同的时间在4个kaggle kernels中训练模型,所以即使没有额外的硬件,我们也可以拿到金牌。
值得一提的是,我们的团队可以获得比-3 Imae更好的分数(平均所有类型的绝对值误差对数)。在这个帖子中,楼主表示达到-3是一个惊人的成就:https://www.kaggle.com/c/champs-scalar-coupling/discussion/98375#569312
事实上,我们做到了!
浏览Kernel和论坛,其中会提供大量有用的信息;
准备好屡败屡战。当你试图找到一种可以提高分数的方法时,大多数是行不通的,但不要气馁;
不断寻找新的想法、新的论文和核心的文章。你永远不会知道下一个神奇工具会从哪里出现;
在团队内构建一个验证效果的机制,从而令工作结果更加直观;
一个强大的团队是由很多不同特长的人组成的,我们应该涵盖不同领域;
Kaggle比赛非常具有挑战性,当然在这个过程中我们也可以收获诸多乐趣:)
我很幸运可以和这些了不起的人一同工作,感谢他们!
原文链接:https://towardsdatascience.com/a-story-of-my-first-gold-medal-in-one-kaggle-competition-things-done-and-lessons-learned-c269d9c233d1
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~