从零开始入门深度学习到掌握需要多久?
通信专业的学生,正在选择毕业设计,有一个导师开了用‘深度学习分析大数据’,题主十分想选择这个课题,请问从零开始入门深度学习到掌握需要多久?难不难?谢谢
通过研一一学期的自学,我成功拿到了AI创业独角兽的实习offer。
从0入门深度学习到从事DL项目,拿到offer,6个月足够!
我从入坑到毕业拿到十几家大厂offer的过程中,也走了很多弯路。下面我根据自己的入门和工作经验,用4千字,总结了一份超详细的深度学习从零入门路线,分享给你。理论基础学习深度学习理论确定研究方向阅读经典论文强化一门主流编程语言算法竞赛科研与学术项目与实习总结
一、理论基础学习
研一的主要工作是学理论,打基础。
当然,学校的课程基本属于科普讲座,很多内容仅靠上课是远远不够的。
这里我把第一年的学习任务细分了4个方向。
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。
2.反向检索
在谷歌学术的搜索结果页面,点击某一篇论文的“被引用次数”,跳转进入引用了该论文的所有paper。
底层逻辑是引用了A论文的其他论文,基本都和A论文所属的研究领域一致。
这两种检索方法,可以大幅提高查找文献的效率。
4)强化一门主流编程语言
通过以上3步,我们已经具有了相对系统的理论基础。然而“巧妇难为无米之炊”,有idea却无法通过编程实现,还是白搭。
所以接下来,我们要给军火库增添几样重型武器,包括一门主流编程语言(深度学习一般用Python),深度学习框架(推荐Pytorch),服务器调用(Linux指令),IDE使用(Pycharm或Vscode+jupyter lab)等。
有了这些工具,开发深度学习项目会方便很多。
而且从目前大家都在卷的情况看,coding已是基本功,是技术岗通过面试的底线。
一边学习,一边每天在leetcode上刷1~2道算法题,校招找工作会事半功倍。
看完以上内容,如果你对DL基础学习还有疑问,欢迎私信我。
进入研二,大家可选的路更多了。有的同学继续在实验室从事科研,以做实验发paper为目标,有的同学已经走出校园开始提前实习。
这两种选择没有好坏,关键要适合自己。最怕每天窝在宿舍吃外卖打游戏,毕业只多了张文凭。
如果你看到了这儿,证明你也是个愿意深度思考的学习者,希望你花1s点个赞,把这个回答mark一下,再继续慢慢读,谢谢啦~
二、算法竞赛
经过研一、研二的学习,我总结了一个提升代码能力最高效的方法:
参加一个完整的项目或比赛,系统锻炼解决问题的能力。
例如,对于机器学习,你可以练习Kaggle平台的的Titanic生存率预测任务,目标是通过名字、年龄、性别、船舱等级等特征,预测泰坦尼克号上的乘客最终是否幸存。
把这个比赛完整做一遍,你能学到数据准备、数据分析、模型构建、预测输出整个链路的内容。
对于深度学习,你可以练习阿里天池平台的新冠疫情相似句对判定大赛,根据文本对判断相似性,可以系统练习文本预处理、分词、模型构建和训练等知识点。
文本分类的经典模型有FastText、TextCNN、TextRNN、RCNN、HAN、DPCNN、BERT+MLP等,你可以在实践中对比一下每个模型的优缺点。
要是你觉得刚入门做比赛有点吃力,可以直接看我的代码(6/941):
如果你能花点时间把这套代码吃透,代码能力绝对有很大提升。而且这套任务框架(数据分析与封装 / 训练 / 预测...)可以快速迁移到其他深度学习场景中。
三、科研与学术
有些同学是主动从事科研的,例如我身边就有本科发表顶会,硕士毕业已手握6-7篇CCF-A一作的巨佬。
也有导师不放实习,“被迫”滞留实验室的同学。研二时的我就属于这一类,虽然拿到了大厂实习offer,又被劝退重回学校搞科研。
总的来说,做科研四分靠实力,三分靠努力,还有三分天注定。
实力首先指理论扎实,具有敏锐的学术嗅觉,懂得挖掘idea;英语阅读、写作过关,用词地道,知道怎样写paper容易中稿;同时编程强悍,能快速迭代实验,验证结果。
有同学可能某方面薄弱些,可以通过大三大四以及研一研二的努力来弥补。
即便手握七成概率,paper能否中稿还和评审人的口味等“随机因素”相关,有一定运气成分。
所以做科研挺有风险的,如果忙活了2-3年没有论文投中,硕士生涯几乎等于nothing。
之前听一位985的师兄说,他们实验室有50多个深度学习方向的博士,每当夜深人静之际,经常能听到博士宿舍楼传来哭声(科研压力太大,没有达标数量的paper毕不了业)。
甚至还有博士生在实验室做实验,做着做着就哭了。
人最重要的能力是学会学习,无论处于什么年龄阶段,保持学习的习惯,不断提高自身实力,才能在激烈的竞争中脱颖而出,实现人生目标。「知学堂」作为知乎旗下的职业教育品牌APP,不仅有各种编程、office办公、数据分析、PS等「硬技能」课程,还有心理、写作、职场沟通等「软技能」课程,时不我待,链接在下面了——
四、项目与实习
相比之下,在互联网公司找到一份实习要容易很多。
虽然内卷天天有,但只要研一没摸鱼,研二进一家第一第二梯队的大厂一般问题不大。再不济,也能去偏头部的创业公司。
在公司实习,主要是积累项目经验,把之前学习的理论落到实处。同时提前了解公司的管理流程、开发部署环境等等。
实习经历将会是简历的一大亮点,越来越多大厂开始更加重视实习。一段充沛的实习经历(3个月以上)丝毫不逊色于发表一篇顶会论文。
这是我导师部分硕士的毕业去向,有很多学术大佬,他们也会提前去公司实习。有的顺利转正,有的跳槽拿了更好的offer。
如上,走大厂实习转正是拿到校招offer的很好选择。部分大厂(如阿里)很多hc很早就预定给实习生转正了,走常规秋招难度要大很多。
如果想实习导师却不放人,建议提早和导师沟通协调。如果只能留在实验室,赶紧看看有没有靠谱的项目,能提供指导的师兄师姐。
如果导师放养,又不让实习,还不给机器,那兄弟你只能自求多福了!
五、总结
研究生2-3年的时间非常短,如果热爱学术,想要对整个研究领域产生个人影响,建议先出门右拐读个博。
另外,深度学习也没有想象中的那么高大上。大部分业务导向的算法岗,很多时候在和数据分析打交道、跟各个部门对齐需求,真正让你训模型跑实验的比例其实很低。
在工业界,模型是否新颖不是最重要的,通过A/B测试,验证算法能给公司真正带来经济效益才是关键。
为什么还有那么多同学反馈算法面试好难呢?
因为僧多粥少,除了计算机,还有各个专业的同学一起往里卷,门槛自然水涨船高。因而有了“面试造火箭”的说法,公司也正好通过面试刷掉一批想浑水摸鱼的人。
从这个角度看,提早选择开发岗也是一种不错的折中。开发岗需求大,和算法的薪资差距也越来越小。
不管选择什么,认真了解自己,适合自己的才是最好的。
最后和你正式介绍一下自己哈:
我是叶琛,一个爱旅行,懂养生的算法工程师兼干货答主,也是个喜欢用接地气的文风为年轻朋友分享互联网经验和算法知识的人。
原创不易,如有帮助请给 @Giant点个赞,谢谢啦~