我的导师是浙大最年轻的博导、副教授,学术大牛。不过工作太忙,平日神龙见首不见尾,我的学习主要靠自驱。
经历了研一到研三的学习,我对自己的深度学习路线做过系统性总结。在校招薪资逐年倒挂的背景下,希望可以帮到更多对AI真正感兴趣的同学。
下面我从大厂面试官考察一个同学的角度,来「倒推」深度学习应该怎么学。
俗话说基础不牢,地动山摇。无论从事NLP,CV,ASR还是广告推荐搜索,理论部分的学习是同学们需要迈过的第一道坎。
由于深度学习是机器学习的重要分支,建议大家上手深度学习前,先了解一下传统的统计机器学习算法。
网上关于ML/DL有很多权威的学习资料,这里分享一些我实际学习过的靠谱资料:
1) 吴恩达机器学习入门课程
强烈推荐的理论结合coding的机器学习入门资料,虽然报名通道已经关闭了,你仍然可以访问上面的链接进入学习。
Kaggle是一个非常棒的ML/DL学习平台,有非常成熟的开源生态,初学者一定要记住这个网站哈!
Kaggle还为用户提供了免费的GPU计算资源,16G的Tesla V100 每周免费用40小时。详细教程可以参考我之前的回答:实验室一块GPU都没有怎么做深度学习?
亚马逊首席科学家沐神在b站开课啦!
在“跟李沐学AI”专栏,沐神用中文解读了斯坦福2021秋季的实用机器学习课程,最近还新出了“读论文”系列,像Transformer、BERT、GAN等经典paper,都能听到细致通俗的解读!
我之前也写过一篇文章专门介绍沐神的专栏:李沐 Is All You Need!
除此之外,我再推荐几本算法书籍:《百面机器学习》、《百面深度学习》、《深度学习500问》、《Leetcode Cookbook》,除了可以巩固理论基础,还能在面试前帮助你查漏补缺。
这几本书我都已经打包好了,在我的公众号【Giant Xu】后台回复“面试”可以直接下载!
除了AI理论,一些计算机相关的基础知识也十分重要。
很多考研CS硕士的同学都经历过计算机408统考,这4门课程中建议首先掌握“数据结构”,因为它和算法工程师的日常工作最紧密关联,也是面试中提升coding的必备内容。
时间充裕的同学,建议你看看浙大陈越姥姥的数据结构专题课,内容很全面。如果时间紧,建议趁早开始刷leetcode和剑指offer,边做题边巩固常用的数据结构。
操作系统、计组、计算机网络这几门课当然也很重要,但是从算法学习角度看,优先级低于数据结构;可以在整个硕士期间穿插着学习。
除了学理论、做项目,算法比赛也是非常适合新同学入门的选择。当然比赛有难易之分,如果你刚接触深度学习,建议从最基础的任务做起。
比如对于机器学习而言,Kaggle平台的Titanic生存率预测就是非常经典的竞赛项目。把这个比赛完整做一遍,你能学到数据准备、数据分析、构建模型、预测输出整个链路的内容。
如果从事NLP研究,建议从文本分类、匹配、NER等底层任务开始练习。参赛过程中,主动学习其他优秀选手的baseline和top方案,也是让自己进步的高效选择。
除了Kaggle,主流的算法比赛平台还有阿里天池、DataFountain、Biendata、DC竞赛、华为云竞赛、讯飞开放平台、FlyAI等。
如果你觉得一个人做比赛很难坚持,还可以加入我们的交流群,和志同道合的同学一起抱团,比单人solo进步更快哦。
在我的公众号【NLP情报局】后台回复“进群”,拉你进入内部交流群
开展科研工作是深入掌握AI算法的一条“捷径”,如果经过思考和实践,提出创新性的idea,通过coding实现并撰写成文,深度学习功力一定会更上一层。
这里参考清华大学黄民烈老师的PPT,以QA的方式和大家分享一下“如何做出好的科研”。
创新是科研工作的核心,发表论文是因为这种创新对别人有启发,值得分享与交流;是为了好奇心而进行科研探索:探索未知,发现不同。
如果单纯为了发paper或者升职、出国而做科研,很容易本末倒置。
1)理论和实践需要密切结合
2)确定自己喜欢什么
3)锻炼和提高自己的能力
4)为将来的读研和读博做好准备
假如导师或学长给了一个题目或方向,在跑模型前,同学应该先深入理解任务、问题、数据,读论文。
导师:结果怎么样?
学生:不好 --- 详细的数据统计、分析、报告;理解问题、数据
导师:为什么不好?
学生:不知道 --- 深入理解模型原理,与问题、数据的匹配性
导师:哪里好?
学生:不知道 --- 理解模型的输出结果、行为表现
导师:哪里不好?
学生:不知道 --- 问题诊断、错误分析、读论文
1)跟着师兄、师姐从baseline开始做起
2)老师给题目、技术路径,自己主要做实现
3)自己想idea,让老师评估
1)同一物理时间,只能做一件事;
2)你做的事情,定义了你是什么样的人;尤其当你做选择时:A还是B?
3)成为一个专家需要10000小时(3年全时PhD学习),365*10*3;
4)做出一个solid的工作:最聪明的学生也需要3个月以上的时间,大部分同学需要6-12个月。
客观地说,科研学术只是一条小众路线,并不适合所有人。因为它和做项目不同,做科研付出的成本和收获很可能不对等。
比如一个一心搞research的同学,跟了一个放养型导师,埋头苦干了3年结果没发出一篇A/B类顶会,那硕士期间的产出几乎等于 nothing。
在正式开始科研前,请先认真思考自己的兴趣爱好、性格特质是什么;coding,英文阅读写作能否cover;是一时热血还是真心喜欢research?
想明白了这些,方向就不容易跑偏,剩下的只需要努力+坚持就可以了!
如果真能在硕博期间在科研上有所建树,毕业时也具备了冲击更高offer的实力(阿里行、腾讯大咖等),甚至可以考虑进入高校继续从事科研工作了。
最后和你正式介绍一下自己哈:
我是 叶琛 ,一个爱旅行,懂养生的算法工程师兼干货答主,也是个喜欢用接地气的文风为年轻朋友分享互联网经验和算法知识的人。
原创不易,如有帮助请给 @Giant 点个赞,谢谢啦!