零基础非科班硕士如何转行算法岗?
一、流水账:
先说下我的情况:本科双非院校,末流985硕士,集成电路专业。研究生进误打误撞进了实验室,主要搞硬件,导师属于纯放羊式培养。
研一刚进实验室,编程能力基本为零,属于python都使不利索那种。我当时还浑浑噩噩地混日子,完全没有自己的职业规划,自己的科研课题是非常冷门小众,我对自己的科研课题也完全不感兴趣,一会搞下硬件电路,一会又搞下matlab建模,一会又帮导师写PPT和项目申报书,参加研究生电子设计大赛。整个研一的生活过得优哉游哉,在百无聊赖的科研生活,迷茫中走失。
研二上学期的时候,从刚从互联网大厂实习回来的学长学姐口中了解,互联网的算法岗越来越卷,竞争也变得越来越激烈。之前浑浑噩噩的我开始觉醒,开始自学机器学习的知识,认真看了一遍吴恩达的机器学习视频,也把周志华的西瓜书和李航的《统计学习》认真学习了一遍,把里面晦涩难懂的公式自己推导一遍,认真做好学习笔记。我又看了王喆老师的《深度学习推荐系统》,把常见的推荐系统常用的算法复现一遍。我这个时间段也开始努力刷leetcode,分不同tag刷题,后期把重点放在leetcode hot 100.
误打误撞的打比赛之路:在一次偶尔的机会以及实验室同学的怂恿下,我参加了天池举办的一个比赛,刚开始的时候,没抱多大的希望,在网上找了一个开源的baseline模型,跑出来的结果是前100名左右,后来研读相关的论文,堆叠两个模型,取得不错的效果,然后就稀里糊涂地进了比赛的复赛环节。复赛的时候,基本每天都和队友,讨论如何提高比赛的成绩,复赛里面的大神众多,竞争异常激烈,比赛成绩也一直上不去。后来大神队友通过不断尝试各种策略,复现论文的方法,把比赛成绩提升到前排的位置,最终取得天池比赛季军的成绩。 后来又和大神队友一起打了几个结构化比赛,取得不错的名次。通过漫长的两三个月的打比赛经历,好好地打扎实自己的技术基础,每天都过得异常充实。
研二下学期的时候,实验室同学开始春招找实习,我凭借天池比赛top名次的成绩拿到某大厂的实习offer,最终顺利转正。秋招的时候,凭借比赛经历以及大厂的实习经历的背书,最终拿了好几家大厂的算法offer,结束我的秋招之路。
二、经验与教训:
1. 推荐算法岗至少满足下面两个条件以上,才比较有把握上岸:
- 211或者985院校硕士(双非院校除非你非常优秀,不然大概率被刷掉)
- 影响因子高的论文(b区以上)
- 比赛top名次
- 比较硬核的项目经历/相关实习经历
- 扎实的AI基础/leetcode刷题
2. 关于比赛:
发a会一作的论文属于可遇不可求,如果研究生实验室不是特别厉害,或者导师科研能力不是特别强,学术资源丰富,一般人很难发影响因子高的论文。相当于遥不可及的论文以及技术含量高的项目,比赛经历对于一些实验资源不好,但又想转行算法的人,尤为重要。推荐几个含金量高的平台&比赛:天池、Kaggle 、DataFountain、腾讯广告算法大赛、KDD 比赛。
3. 关于如何打好扎实AI基础
- 机器学习入门的话,可以先看吴恩达的机器学习视频,再看西瓜书和李航的《统计学习》,如果有时间,想提高面试技巧,可以认真研读《百面机器学习》,里面总结了很多常见的机器学习的面试题目。
- 进阶的话,可以看王喆老师的《深度学习推荐系统》,基本是搜广推从事人员必看书目,里面详细地介绍了推荐系统常用的算法以及模型的演变
- 最后,要熟悉推荐领域常见的模型,例如Wide & Deep、DeepFM 、DIN等,仔细研读原文,自己亲自复现论文,做到每个细节都了解透彻。
4. 关于leetcode刷题