从老宋的角度看,自然语言处理领域如何学习?
作者: 老宋的茶书会
知乎专栏: NLP与深度学习
研究方向: 自然语言处理
前言
前段时间有朋友询问说NLP领域如何学习,然而一直忙于毕业论文中实在没有时间,两年半真的实在太难受了。昨天刚交了盲审,祈祷顺利毕业呀。
今天刚好有时间讲讲我自己的学习之路,然后谈谈我对自然语言处理领域学习的一些建议。
老宋:从迷茫到入坑
老宋本科在帝都某211,专业自动化,学的东西乱七八糟,因此翘课3年,挂科两门,侥幸毕业,实在不感兴趣。在本科期间,做过一年的嵌入式Linux,然后在大三之后转做Android,并花费半年之久考研(别问为啥考北科,问就是求稳)。说这些表达的意思是,老宋的基础还行,遗憾的是没有大牛带,一个人摸索的确难受,方向的不确定性也让人很迷茫。不过这也养成了我自学,自查,自己搞的习惯,这大学也没白读不是。
我个人觉得我在大学一个重要的收获就是, 学会思考 ,坏处是经常会睡不着觉,乱七八糟一通思考。后来慢慢思考自己的路要怎么走,其实是一个不断探索的过程,中间自己不仅仅编程吧,其他经济学等方面也都有涉及,对吹牛逼大有益处。
到了研究生阶段,第一学期,懵懵懂懂学习机器学习基础知识,然后到第二学期,开始正式进入自然语言处理领域,开始打算做阅读理解方向的内容(事实证明,没有好老师指导,研究生想在阅读理解领域干点事情,基本不可能)。就这样,看论文,写代码,到了研二第二学期,开始找实习。刚开始,觉得刷题对算法岗不咋重要,然而,事实啪啪啪打我的脸,春招的笔试基本都挂,难受的一批。然后就是自己做的方向太窄了,阅读理解有没有商用,懂的面试官贼少,而你又没有顶会之类的硬货,因此,整个春招找实习算是很失败的。
总结下来就是两大原因:
-
忽略了刷题的重要性 ,搞得笔试根本过不去,bat连面试资格都没有,难受啊
-
方向太窄 ,阅读理解没面试官懂,且你没有硬货。
经过反思之后,我依旧没有把刷题放在首要任务上,这是秋招的一大败笔。
其实还有一点就是, 看论文到底有没有用 ,我个人精读论文不下100,泛读的也不下200篇,可是面试官问不出来呀。很多同学都是看看BERT,Transformer,看看博客,刷刷面经就面过了(刷题需足够多),这也让我本身怀疑看论文的必要性,因为真的没有几个面试官能问出什么高水平的问题,基本就面经上常见的问题。
而今年算法岗还有一个有趣的现象:有的大厂面试官的水平不如应聘者,真实千奇百怪啊。
如何学习自然语言处理领域?
其实,我个人依旧认为学习自然语言处理领域的最好方式就是 看论文 ,虽然今年不少人都是刷面经过的算法岗(有的在5月份连BERT都不知道),但从学习角度来说还是以论文为主,毕竟目前自然语言处理领域处于高速发展中。
如果我是面试官,我就从: 你能不能谈谈最近预训练语言模型的发展 这一问题来评估应聘者的水平,要想说清楚这个发展历程,没有个精读10篇预训练语言模型论文是肯定不行的。而这一问题,也只有百度面试官问过,其他很多厂都是最多问问BERT,还有的大厂问各种数学计算公式,在我看来挺无聊的,背个公式这tm能体现出应聘者水平吗。这也从侧面验证百度技术还是厉害的。
因此,我这里并不介绍秋招准备的东西,而是日常学习中,自然语言处理你应该学习哪些东西,当然这是我按照我个人的学习推荐的,如果你要急于准备秋招,建议去牛客刷面经,对面试帮助极大。
如何入门自然语言处理?
首先,你要对自然语言处理领域有大致的了解,自然语言处理领域有哪些子任务,每个子任务都有哪些特点等。我个人认为这是你进入自然语言处理领域要做的第一件事情。
幸运的是,清华2018出了一篇报告讲述自然语言处理领域的现状,名为:《2018自然语言处理研究报告》。可以在文章结尾的百度云自己下载。
在进入自然语言领域之前,依旧需要你对机器学习以及深度学习有一定的基础,因此我个人推荐先学习这两大内容。机器学习对于自然语言处理来说相对并不重要,因此,可以简单过一遍即可。
我这里分别推荐书籍以及视频资料:
-
机器学习书籍: 《PRML》
-
深度学习书籍: 《Deep Learning》,看前几章就行
-
机器学习视频: 白板推导系列
-
深度学习视频: 基础 – 吴恩达课程,深入 – 李宏毅老师视频
在这之后,你就应该学习自然语言处理领域的内容了,学习自然语言处理最好的方式是以点带面,从一个实际的上层应用出发,比如推荐,搜索,对话等。分析该上层应用中涉及到哪些自然语言处理方面的内容,然后针对性的学习。
就我个人来说,我依旧推荐文本分类作为入门的第一选择,因为文本分类在业界中应用的确最为广泛。我个人也有两个相关的仓库和文章:
-
文章模型:几个可作为Baseline的文本分类模型
-
基于词向量的模型: TextClassification-Pytorch
-
基于BERT的模型: Bert-TextClassification
由于NLP还在快速发展中,因此还没有那部书能够把内容以往打尽,因为书的周期太长,等出来后,技术都过时了。因此,对于自然语言处理领域来说,最重要的依旧是看论文,我之前写过一篇关于论文大礼包的,你把其中重要的文章看一遍基本就入门了,大概20多篇吧。
-
听说你急缺论文大礼包?(更新ing)
如何深入自然语言处理领域?
对于自然语言处理领域来说,有很多子任务,大多数人都是专注于有限几个领域。尤其是预训练语言模型诞生后,区别更不大了。在前面已经提到过了,那么你 首先应该选择一个你感兴趣的上游任务 ,上游任务往往都比较复杂,融合了很多子任务。 举例来说 :对于任务型对话来说,就涉及到文本分类,序列标注,文本匹配等任务。因此,你入门之后,还需要对应的学习多个子任务的内容。这里我推荐两个内容:
-
NLP-progress – 讲述nlp相关任务最新进展
-
中文相关进展 — 中文nlp任务的数据集,论文,进展等
推荐几个知乎大佬
很多学生都是面向博客学习的 ,因此,我个人也推荐一波大佬:
-
张俊林
-
深度学习与NLP — 量大,质量也不错
-
夕小瑶 — 百度aig部NLP组大佬
-
刘知远 — 清华副教授
-
呜呜哈 — 对话做的比较深
-
习翔宇 — 清华大佬,博士,起薪百万的那种
其他一些更新不勤快,但文章质量还不错的博主
-
吴海波 — 蘑菇街推荐算法工程师
-
JayLou
-
香侬慧语科技
-
低级炼丹师
-
王喆 — 清华大佬
-
Juliuszh — 清华大佬
-
李如
-
AI talk — 讲落地的一些东西
-
萧瑟 — 阿里妈妈大佬
-
Tobias Lee
当你准备面试时
当你准备面试时,一方面是面经,一方面是基础知识。我个人基础还行,秋招期间维护了一个仓库来复习,后续有时间还会不断更新,可以star一下。
-
面试仓库: NLPer-Interview
最后
时间有限,码字不易, 点赞支持 ,有钱打赏。
资料在这里
链接: pan.baidu.com/s/1dYFki5
提取码:10a5
END
快来参加Flyai竞赛
更多详情可
扫描下方二维码 或添加微信号:
Superren66
群里已经超过一百人
进群,和大神一起打比赛
免费p40 GPU时长等你来领
扫码添加微信,一定要备注研究方向+地点+学校+昵称(如机器学习+上海+上交+汤姆),只有备注正确才可以加群噢。
▲长按加群