三年前,我差点成了爬虫大师

最近很多刚入学的学弟学妹给我们留言,听说算法岗现在竞争很激烈,还能转机器学习吗?实习对于找工作重要吗?

2ab046ea3d9c648150a4420b1eedf9cb.png

看完他们的疑问,三年前的经历在我眼前历历在目。

研一修完毕业学分后,我去创业公司实习了一年。期间,我从爬虫入手,一路摸爬滚打,实现了千万级微博评论自动抓取,在即将成为“爬虫专家”前,受师兄指点转向DL算法。

下面我以「就业」为导向,分享一条亲身经历的学习路线。参考这个方法,在深度学习方向拿到offer进大厂,不是啥难事儿。

一、研一:基础理论学习

研一的主要工作是学理论,打基础。

然鹅学校的课程基本属于科普讲座,很多内容仅靠上课是远远不够的。

这里我把第一年的学习任务细分了4个方向。

1)深度学习理论

基础不牢,地动山摇。没有扎实的基本功,无论是做科研还是做项目,都很容易捉襟见肘。

那怎样学习效率最高呢?

如果你觉得看大头书很枯燥(比如《深度学习》花书),我推荐你直接看吴恩达和李宏毅老师的深度学习视频课。

内容既权威又有趣,看完会让你觉得学习简直是一天中最快乐的事!

c79b777d3a95ee1b1b6829e12c2e2d4a.png

b257cb7bccfaa03265900551bc26a735.png

这些网课都有配套的编程练习,学一课做一课,养成好习惯,及时查漏不缺。

看完视频,如果想检测一下自己的学习效果,推荐你参考我在知乎的一篇回答,看看第一部分“理论基础”问题,自己能轻松解答多少。

如果你是面试官,你怎么去判断一个面试者的深度学习水平?[1]

例如了解前向传播反向传播,以及链式求导;给一个两层的MLP和简单的二维向量,能推导出 forward propagation,再用 chain rule 推导出 back propagation。

2)确定研究方向

经过前面的理论学习,你应该发现深度学习领域有很多细分方向,例如语音、自然语言处理、视觉、强化学习、纯深度学习理论。

所以第二步我们要明确自己的研究方向,并在之后两年的学习中有所突破。

如果你喜欢语音交互,熟悉C++,可以选择语音识别、语音合成等研究课题;

如果你喜欢研究文本和对话,熟悉Python和爬虫,可以选择自然语言处理方向;

如果你喜欢图片与视频,熟悉Python,对算法落地也很感兴趣,可以选择计算机视觉方向;

至于强化学习、深度学习理论研究等方向,如果不是自身基础非常扎实或有优秀的师兄师姐指导,建议谨慎入坑。

这一步大家不要着急,既要了解不同方向,更要认真了解自己,包括能力、性格、特质。如果对自己研究领域没有热爱和兴趣,到了中后期会非常痛苦,即便再换方向,沉没成本也会很高。

好比让你挑一道菜吃十年,什么才会是你的首选呢?

3)阅读经典论文

选好方向之后,下一步的重点是阅读该领域的经典论文,包括传统方法,以及近期热点。

如果你和我一样主攻自然语言处理方向,那应该对最早期的神经网络语言模型(2003)、静态词向量word2vec(2013)、动态词向量ELMO(2018)、预训练语言模型BERT、RoBerta、GPT(2018-2020),以及近期流行的prompt训练(2021)都有清晰的认识,明白哪些场景适用哪种方法。

然后再往下细分,选择子领域内的论文阅读。

如果研究对话系统,对于常规的分类、匹配算法应该非常熟悉,同时了解基于神经网络的DST算法,不同召回策略等等。

还不知道怎么搜论文的同学,这里教你两种万能搜索方法。

1. 正向检索

在谷歌学术、arxiv、ACL Anthology输入英文关键词,检索相应主题的paper,注意查看发表年份和引用数量。

或者直接查找近年的survey文章,在综述中查看主要的研究分支和related work。

59ac24807ecfb9dc9fc64887f923cbc6.png

2.反向检索

在谷歌学术的搜索结果页面,点击某一篇论文的“被引用次数”,跳转进入引用了该论文的所有paper。

55ef9b90160d134236251104ab449a2e.png

底层逻辑是引用了A论文的其他论文,基本都和A论文所属的研究领域一致。

这两种检索方法,可以大幅提高查找文献的效率。

4)强化一门主流编程语言

通过以上3步,我们已经具有了相对系统的理论基础。然而“巧妇难为无米之炊”,有idea却无法通过编程实现,还是白搭。

所以接下来,我们要给军火库增添几样重型武器,包括一门主流编程语言(深度学习一般用Python),深度学习框架(推荐Pytorch),服务器调用(Linux指令),IDE使用(Pycharm或Vscode+jupyter lab)等。

有了这些工具,开发深度学习项目会方便很多。

而且从目前大家都在卷的情况看,coding已是基本功,是技术岗通过面试的底线。

一边学习,一边每天在leetcode上刷1~2道算法题,校招找工作会事半功倍。

进入研二,大家可选的路更多了。有的同学继续在实验室从事科研,以做实验发paper为目标,有的同学已经走出校园开始提前实习。

这两种选择没有好坏,关键要适合自己。最怕每天窝在宿舍吃外卖打游戏,毕业只多了张文凭。

二、科研与学术

有些同学是主动从事科研的,例如我身边就有本科发表顶会,硕士毕业已手握6-7篇CCF-A一作的巨佬。

也有导师不放实习,“被迫”滞留实验室的同学。研二时的我就属于这一类,虽然拿到了大厂实习offer,又被劝退重回学校搞科研。

总的来说,做科研四分靠实力,三分靠努力,还有三分天注定。

实力首先指理论扎实,具有敏锐的学术嗅觉,懂得挖掘idea;英语阅读、写作过关,用词地道,知道怎样写paper容易中稿;同时编程强悍,能快速迭代实验,验证结果。

有同学可能某方面薄弱些,可以通过大三大四以及研一研二的努力来弥补。

即便手握七成概率,paper能否中稿还和评审人的口味等“随机因素”相关,有一定运气成分。

所以做科研挺有风险的,如果忙活了2-3年没中论文,硕士生涯几乎等于nothing。

之前听一位985师兄说,他们实验室有50多个深度学习方向的博士,每当夜深人静之际,经常能听到博士宿舍楼传来哭声(科研压力太大,没有达标数量的paper毕不了业)。

甚至还有博士生在实验室做实验,做着做着就哭了。

eea90e7cc0b3587f1ffd0dfcf1501cc8.png

三、项目与实习

相比之下,在互联网公司找到一份实习要容易很多。

虽然内卷天天有,但只要研一没摸鱼,研二进一家第一第二梯队的大厂一般问题不大。再不济,也能去偏头部的创业公司。

在公司实习,主要是积累项目经验,把之前学习的理论落到实处。同时提前了解公司的管理流程、开发部署环境等等。

实习经历将会是简历的一大亮点,越来越多大厂开始更加重视实习。一段充沛的实习经历(3个月以上)丝毫不逊色于发表一篇顶会论文。

879a624127e286661cbd35c8eb0d993a.png

这是我导师部分硕士的毕业去向,有很多学术大佬,他们也会提前去公司实习。有的顺利转正,有的跳槽拿了更好的offer。

如上,走大厂实习转正是拿到校招offer的很好选择。部分大厂(如阿里)很多hc很早就预定给实习生转正了,走常规秋招难度要大很多。

如果想实习导师却不放人,建议提早和导师沟通协调。如果只能留在实验室,赶紧看看有没有靠谱的项目,能提供指导的师兄师姐。

如果导师放养,又不让实习,还不给机器,那兄弟你只能自求多福了!

四、总结

研究生2-3年的时间非常短,如果热爱学术,想要对整个研究领域产生个人影响,建议先出门右拐读个博。

另外,深度学习也没有想象中的那么高大上。大部分业务导向的算法岗,很多时候在和数据分析打交道、跟各个部门对齐需求,真正让你训模型跑实验的比例其实很低。

在工业界,模型是否新颖不是最重要的,通过A/B测试,验证算法能给公司真正带来经济效益才是关键。

为什么还有那么多同学反馈算法面试好难呢?

因为僧多粥少,除了计算机,还有各个专业的同学一起往里卷,门槛自然水涨船高。因而有了“面试造火箭”的说法,公司也正好通过面试刷掉一批想浑水摸鱼的人。

从这个角度看,提早选择开发岗也是一种不错的折中。开发岗需求大,和算法的薪资差距也越来越小。

不管选择什么,认真了解自己,适合自己的才是最好的。

千淘万漉虽辛苦,吹尽狂沙始到金。

无论什么岗位,成长、薪水、福利都是和付出成正比的。只有自己努力,才能在研究生阶段学有所成,收获满意的offer!

- END -

觉得还不错就给我一个小小的鼓励吧!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值