15

从老宋的角度看,自然语言处理领域如何学习?

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=Mzg3MDA3NTE1NQ%3D%3D&%3Bmid=2247484369&%3Bidx=1&%3Bsn=ac00cdcef01bff14cdf979d12482e23c
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者: 老宋的茶书会

知乎专栏: 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

ARFVNrF.png!web

END

快来参加Flyai竞赛

更多详情可

扫描下方二维码 或添加微信号:

Superren66

群里已经超过一百人

进群,和大神一起打比赛

免费p40 GPU时长等你来领

扫码添加微信,一定要备注研究方向+地点+学校+昵称(如机器学习+上海+上交+汤姆),只有备注正确才可以加群噢。

7NV77za.jpg!web

▲长按加群

UNfQBbr.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK