Kaggle大神亲述:我是如何半年拿5次金牌晋升Grandmaster的?

2019 年 3 月 18 日 机器学习算法与Python学习

新智元推荐  

作者:SeuTao

原文地址:

https://zhuanlan.zhihu.com/p/51876446


又一位Kaggle大神!


Kaggle是全球首屈一指的数据科学、机器学习竞赛和分享平台,企业和研究者可以在Kaggle平台发布数据、举行/参加竞赛,通过“众包”的形式产生最好的模型,现在注册用户数量超过100万。


在Kaggle Competitions排行榜中,有一个头衔是众多用户都十分向往的,那就是“Kaggle Grandmaster”,他们是排名0.1‰的顶级高手。目前,Kaggle只有136位Grandmaster。

Grandmaster除了代表你参加过很多竞赛并且多次获得冠军,这个头衔在投简历找工作时也很具吸引力。同时,参加大企业举办的大型竞赛,还能获得奖金。


知乎上有一位大神“Seu Tao”,他从2018年9月份到2019年3月,仅历时半年,共参加了 5 次 Kaggle比赛,就拿到了5 个金牌(包括一个 solo gold),顺利成为了 Competitions Grandmaster!

Seu Tao告诉新智元,他17年本硕士毕业于东南大学,目前在某创业公司任职视觉算法工程师,这5次Kaggle比赛,也都是计算机视觉类的任务最近,Seu Tao把他参赛经历和经验分享出来,我们一起膜拜下。


Kaggle 五次比赛成绩 (按名次排序)


  • 2nd in Humpback Whale Identification (2/2131, top 1%, Solo Gold Medal)

  • 4th in TGS Salt Identification Challenge (4/3234, top 1%, Gold Medal)

  • 8th in Airbus Ship Detection Challenge (8/884, top 1%, Gold Medal)

  • 9th in Human Protein Atlas Image Classification (9/2236, top 1%, Gold Medal)

  • 12th in Google Doodle Recognition Challenge (12/1316, top 1%, Gold Medal)

 

SeuTao Kaggle主页:

https://www.kaggle.com/shentao


五次比赛介绍(按时间排序,记录下 5 次比赛的过程)


1. TGS Salt Identification Challenge(4/3234)金牌 2018.10

TGS 盐体识别挑战赛,挑战者需要开发出能准确分割地表以下沉积盐分布的算法。地震数据是通过地震反射(reflection seismology)收集的,这种方法要求能量的受控震源(如压缩气体或地震振动器),以及记录来自地下岩石界面反射的传感器。之后处理记录的数据,创建地球内部的 3D 视图。地震反射类似于 X 光、声波定位仪和回波定位。


比赛任务:地震图像语义分割


这是我第一次完整的 Kaggle 比赛经历,坚持刷 discussion,follow 蛙神的实验。比赛中后期一直保持着 top5 左右的名次,ddl 前一度上了 top1,最终 public 第 2,private 第 4。金牌 + 奖金,一次 Kaggle 全体验。


solution 介绍:

https://www.kaggle.com/c/tgs-salt-identification-challenge/discussion/69178

代码:

https://github.com/SeuTao/Kaggle_TGS2018_4th_place_solution


关于本次比赛的一些详细解读可以参考 @AlexL 的文章,他们是这次比赛的第 5 名团队: 

https://zhuanlan.zhihu.com/p/47412338


2. Airbus Ship Detection Challenge(8/884) 金牌 2018.11

Airbus 的遥感图像分割检测比赛 Airbus Ship Detection Challenge,airbus 也就是空中客车公司,悬赏金额 6 万美金。航运流量增长迅速。更多的船只增加了海上违规行为的机会,这迫使许多组织对公海进行更密切的监视。在过去的 10 年里,人们做了大量的工作,从卫星图像中自动提取目标,取得了显著的效果,但在实际操作中存在许多不足。现在空中客车公司与 kaggle 共同举办比赛,寻求更好更快的船舶自动检测方案。


比赛任务:从卫星图片中找到所有的船只


刚结束 TGS 比赛,此时距离 Airbus deadline 仅剩下不到一个月了,好在之前训练了一个基础的 unet 模型,同时把 TGS 的经验迁移过来,敲定方案是 unet 语义分割模型 + mask rcnn 检测模型,几位队友合力之下顺利上升到了 PB 第 2 的位置。这题 AB 榜 shakeup 很大。最终我们 team PB 第 5,private 第 8。Do not trust LB, trust ur CV!


solution 介绍:

Do not trust the LB, trust your CV. (5th/8th in public/private LB)

https://www.kaggle.com/c/airbus-ship-detection/discussion/71601

代码:

https://github.com/SeuTao/Kaggle_Airbus2018_8th_place_solution

附:来自 @Pascal 的方案:

https://zhuanlan.zhihu.com/p/48381892 


3. Google Doodle Recognition Challenge(12/1316)金牌 2018.12

这次比赛识别的是 Quick, Draw! 游戏的 5000 万张涂鸦,它们由来自全球各国的超过 1500 万玩家贡献,画得大多是一些苹果啊,浴缸啊,计算器啊之类的日常用品。


比赛任务:灵魂画手涂鸦分类


跟 airbus 比赛一样,花了一个月左右的时间去完成。跟之前比赛认识到的伙伴们组成了 8 人小队。赛题的数据量和需要的计算资源都很大,模型迭代的效率相对比较低。比赛结束之前也没有太多有效的探索。有幸的是最终还是能够 private 榜逆袭,拿下金牌的最后一名。


拿下这块金牌之后,顺利拿到了 kaggle master 头衔 :)


代码占坑:

https://github.com/SeuTao/Kaggle_Doodle2018_code


4. Human Protein Atlas Image Classification (9/2236)金牌 2019.01

多标签蛋白质图像分类比赛。数据极不均衡,且原始图像尺寸较大。


比赛任务:蛋白质图像多标签分类


连续几个月每天都用大量业余时间来做比赛确实比较辛苦,拿到 kaggle master tier 之后本来想着休息一段时间。本人本硕 BME 毕业,看到医学图像相关的主题异常亲切,决定还是试一试蛋白分类比赛。跟队友二人集成 baseline 结果之后,进入了金牌区(集成提升巨大)。之后就是加入了杨老师的队伍:


杨佶 Kulbear:Kaggle Human Protein Atlas 蛋白质分类比赛第九名总结和复盘

https://zhuanlan.zhihu.com/p/54734559


结果是 public 第 19,private 第 9,金牌 :)


5. Humpback Whale Identification (2/2131)金牌 2019.03

为了帮助鲸鱼保护,科学家们使用照片监视系统 (Photo Surveillance Systems) 来监视海洋活动。他们使用鲸鱼尾巴这一独一无二的标记来在连续的图像中识别鲸鱼,并对它们的活动进行细致地分析。在过去的四十年里,大部分工作基于科学家们的手工作业,这也使得大量的数据未被充分利用。5004 个 id 鲸鱼数据,其中许多 id 仅有 one shot 的数据。这是一个 few shot learning 和细粒度分类的问题。


比赛任务:座头鲸识别


Kaggle Grandmaster tier 要求 5 块金牌,其中包括一块 solo gold,遂决定一鼓作气尝试 solo,争取拿下 GM title。比赛时间比较充裕,面对的问题也是我相对熟悉的,很快成绩就进入了前 10。然而 PB 达到 0.910 之后,实验一度没有进展,名次在逐步下滑。急于打破僵局,尝试了相关的各种方案,sota 人脸 loss,Person reid 的模型结构,metric learning,pytorch 下也重新搭建了 siamese net 的 pipeline。然而尝试得越多,导致每条路线实验不够充分,更难以得到提升。(后续比赛结果也证明,任何一条路线,工作足够细致,都是能够在比赛中取胜的)冷静下来还是回归最初的方案,稳扎稳打,最终 rank 2nd。


solution:

https://www.kaggle.com/c/humpback-whale-identification/discussion/83885

代码: 

https://github.com/SeuTao/Kaggle_Whale2019_2nd_palce_solution


Kaggle 参赛感受总结


关于成绩:6 个月连续五次比赛全部金牌,这是我开始做第一个比赛时没有想到的,其中运气也占了很大成分。每个比赛的初期,我的预期都不会是一块金牌(因为完全不知道会做成什么样),而是随着比赛的进行,不断提升对自己成绩的要求(5%->1%->top10->top5)。


投入精力 在做竞赛之前,我的业余时间主要是用来做一些自己的 project 和学习充电。参加 kaggle 竞赛半年来,我把所有的业余时间都献给了这个平台。周末,国庆,元旦甚至春节假期,几乎都是在 kaggle 中度过,kaggle 可以说成为了我的第二职业。


收获回报:从学习角度来说,kaggle 上我收获了对不同问题,不同数据的认识,相关技能上也有不少提升;从荣誉角度来说,得到了多块金牌,成为了 Grandmaster,在平台 10w 用户中能够排名 top38(虽然对于很多大佬来说不算什么);还能够认识很多竞赛爱好者,并且相互交流提升;最后,奖金也是一个很好的回报 :)


比赛与工作:比赛与工作的关系,像是训练场与实战。作为一个从业者,比赛给我提供了非常好的训练环境,有非常多的新鲜问题和数据,在限制的条件下供我探索。在这里我想说明的是,比赛成绩好,决不能代表实际工作中能够表现出色。但是反过来,一个算法工程师如果不具备在竞赛中得到好名次的能力,又怎么能胜任实际工作呢?


推荐阅读

阿里云的这群疯子

18 个 Python 高效编程技巧,Mark!

突发!百度总裁张亚勤宣布退休

比DGL快14倍:PyTorch图神经网络库PyG上线了

京东回应 995 工作制:不强求但鼓励全情投入

4个Linux小技巧,帮你提高机器学习生产效率

登录查看更多
14

相关内容

专知会员服务
59+阅读 · 2020年3月19日
【资源】100+本免费数据科学书
专知会员服务
105+阅读 · 2020年3月17日
【机器学习课程】Google机器学习速成课程
专知会员服务
161+阅读 · 2019年12月2日
跟Kaggle大神17枚金牌得主学NLP实战
新智元
7+阅读 · 2019年9月20日
21秒看尽ImageNet屠榜模型,60+模型架构同台献艺
机器之心
5+阅读 · 2019年8月8日
Kaggle 新赛:第二届 YouTube-8M 视频理解挑战赛
AI研习社
10+阅读 · 2018年5月26日
Kaggle入门手册
Datartisan数据工匠
14+阅读 · 2017年11月9日
SlowFast Networks for Video Recognition
Arxiv
4+阅读 · 2019年4月18日
Arxiv
5+阅读 · 2018年3月28日
Arxiv
11+阅读 · 2018年1月11日
Arxiv
9+阅读 · 2016年10月27日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关论文
SlowFast Networks for Video Recognition
Arxiv
4+阅读 · 2019年4月18日
Arxiv
5+阅读 · 2018年3月28日
Arxiv
11+阅读 · 2018年1月11日
Arxiv
9+阅读 · 2016年10月27日
Arxiv
3+阅读 · 2012年11月20日
Top
微信扫码咨询专知VIP会员