【收藏】李纪为:初入NLP领域的一些小建议

2019 年 12 月 19 日 深度学习自然语言处理

点击上方,选择星标置顶,每天给你送干货

阅读大概需要14分钟

跟随小博主,每天进步一丢丢




作者:李纪为老师

知乎链接:https://zhuanlan.zhihu.com/p/59184256


前言

本文基于作者多年来曾经走过的弯路,踩过的坑,这篇文章做一点点小的总结。希望会对刚刚进入NLP领域的同学有所帮助。


文章作者

李纪为香侬科技创始人斯坦福大学计算机专业用时最短的博士学位获得者在剑桥大学学者Marek Rei发布的自然语言处理 2012-2016 年顶级会议作者统计中李纪为以14 篇顶级会议论文第一作者的数据排名第一。



初入NLP领域的一些小建议





ACL 2019投稿刚刚落幕投稿数超过了2800篇可以说是历史以来最盛大的一届ACL。在深度学习的推动下自然语言处理这个子领域也逐渐被推上人工智能大舞台的最前列。


近在跟同学的邮件、或者知乎留言中的交流中不少同学尤其是刚入(jin)门(keng)的同学提到了深度学习背景下做NLP科研的很多迷茫。基本可以归纳为如下几点:如今一个模型几十行TensorFlow或者PyTorch就可以解决掉大家不厌其烦地刷数据集的benchmark但是因为如今实现模型的门槛低一些SOTA很难再刷的上去;就算好不容易刷上去了因为模型千篇一律无非修修补补文章投出去了因为novelty受限文章中不中看天;即便是文章中了似乎并无太大新意灌水中已然迷茫。


深度算法的风靡会让研究者过度关心这些算法本身而层出不穷模型结构的调整和改进又让我们眼花撩花。当侃侃而谈深度学习网络结构变成一个很cool的事情时虚荣心会让大家不约而同地忽略了几个重要点。基于我自己多年来曾经走过的弯路踩过的坑这篇文章做了一点点小的总结。希望会对刚刚进入NLP领域的同学有所帮助。


1、了解NLP的最基本知识

Jurafsky和Martin的Speech and Language Processing是领域内的经典教材里面包含了NLP的基础知识、语言学扫盲知识、基本任务以及解决思路。阅读此书会接触到很多NLP的最基本任务和知识比如tagging各种parsingcoreferencesemantic role labeling等等。这对于全局地了解NLP领域有着极其重要的意义。


书里面的知识并不需要烂熟于心但是刷上一两遍起码对于NLP任务有基本认识下次遇到了知道去哪里找还是非常有意义的。另外Chris Manning的「introduction to information retrieval」也是一本可以扫一下盲的书,当然我认为依然不需要记住所有细节但轮廓需要了解。IR里面的很多基本算法跟NLP有不少的重合。


说说我自己曾经走过的弯路。Stanford NLP的qualification考试的一部分就是选一些jurafsky和manning书里面的一些章节来读然后老师来问相关问题。开始我一直懒得看所以qualification考试一拖再拖。但博士最后一年没办法拖的时候才发现如果早知道这些东西,博士早年可以少走很多弯路。


为什么了解NLP基础知识的重要我给大家举几个例子。


最近跟同学一起做语言模型language modeling相关的事情很多同学用LSTM或者transformers做language model随手就能实现但是实现一个 bigram或者trigram的language model(LM)却因为里面的OOV的平滑问题卡了大半天(熟悉的同学可能知道需要拉普拉斯平滑或者更sophisticated的Kneser-Ney平滑)。


为什么bigram或者trigram的LM很重要呢?去做一个语言模型的问题实现深度模型之前第一步其实就要写一个bigram或者trigram的LM。为什么呢? 因为这些N-gram模型实现简单并且robust。通过这样简单的实现可以告诉你这个数据集的LM模型的下限。这样我们心里会有数神经网络模型至少不应该比这个模型差的。神经网络模型因为其超参数、梯度爆炸等问题有时候我们不太容易决定是真的模型不行、参数没调好还是代码bug。那么通过N-gram LM的给出的下限我们就可以直观地知道神经网络是有bug还是没调好参数。


第二个例子就是涉及发文章了不知道有没有同学想过BERT里面训练LM的随机替换为什么就使结果变好随机替换是什么鬼怎么结果就好了。其实在BERT之前斯坦福的吴恩达组的Ziang Xie的Data Noising as Smoothing in Neural Network Language Models(ICLR 2017)就首次提出了此方法而且给出了理论解释。这种random替换其实本质上属于language modeling里面基于interpolation的平滑方式 而基于interpolation的LM平滑就躺在jurafsky那本书的第3.4.3节。


2. 了解早年经典的NLP模型以及论文

相比简单粗暴的神经网络模型早年的NLP算法确实比较繁琐复杂但里面确实有很多早年学者在硬件条件艰苦情况下的智慧结晶。熟悉了这些模型可以在现在神经网络里面融会贯通。去年在人民大学做seminar大概30-40位同学参加。我问了一个问题有谁知道机器翻译中的IBM模型大概是干嘛的举手的同学大概有五分之一。我再问谁能来手写(或者大概手写)IBM model1一个人都没有。仅仅是基于IBM模型的Hierarchical Phrase-based MT近几年就有很多篇引用量很高的文章是基于该模型的思想。例子数不胜数: 


1) chris dyer组的
Incorporating structural alignment biases into an attentional neural translation model (NAACL16)提出用双向attention做神经机器翻译的约束项意思是如果在英语翻译法语生成的target中的一个法语词attend到了一个source中的英语词那么反过来法语翻译英文 target中相同这个英语词应该也attend到source中的这个英语词。


其实这个思想就是完完全全相似Percy Liang曾经的成名作之一。早在NAACL06年 Alignment by Agreement大家通过题目的意思就可以猜到文章的内容正向翻译与反向翻译中的对齐(alignment) 要一致(agree)。如今做神经机器翻译的同学有多少同学读过Percy的这篇大作呢 (大家知道Percy最多的应该是Squad吧)。

2) 处理对话系统的无聊回复用p(target|source)做reranking现在应该已经是标配。再比如Rico Sennrich的成名作之一将Monolingual data 跟seq2seq 模型结合。其实这个思想在phrase-base MT里面早就被广发的使用。Neural之前的MT需要对一个大的N-best list用MERT做 reranking, 反向概率p(target|source)以及语言模型概率p(target)是reranking中feature的标配。


3) Harvard NLP组, Sam Wiseman和Alex发表的runner-upSequence-to-Sequence Learning as Beam-Search Optimization(EMNLP 2016 best paper  基本上传承了Daume´ III and Daniel Marcu 2005年的 LaSO模型将其思想adapt到neural里面。


诞生于神经机器翻译的attention不就是IBM模型的神经网络版本嘛。


3. 了解机器学习的基本模型

神经网络的简单暴力并且有效。但是从科研的角度讲熟悉基本的机器学习算法是必修课。比如吴恩达的machine learning就是必要之选。记得前段时间我面试一个小伙子一看就是很聪明的同学而且很短的时间就有一篇NAACL在投。我就问小伙子EM算法是什么小伙子说没有听说过EM而且自己的科研也用不到EM。我认为这其实是一个挺大的误区。当我想起我自己曾经就吃过很多类似的亏。因为早期数学基础偏弱也没有决心恶补一下数学所以早年每次看到跟variational inference相关的算法就头大这种偏科持续了很久限制了科研的广度。相比粗暴的神经网络CRF等模型的inference确实相对复杂(当年我自己也看了很多次才彻底搞明白)。


但搞懂这些是一个NLP researcher的基本素养。Pattern Recognition and Machine Learning那本书尤其是某些小节确实比较难(又暴露了数学基础差的事实)即便是只是为了过一遍也需要很强的耐力才能看完更不用说完全看懂了。我自己也曾经很多次半途而废如今依然有很多章节是不太懂的。但是其中的很多基础章节我认为还是很值得一读的。其实可以组成那种两三个人的学习小组不需要有太雄伟的目标用个一年哪怕两年的时间,把几个重要的章节过一遍。


NLP相对是应用科学并不是特别的数学。但是我们天天用的算法的基本数学逻辑我认为还是需要搞懂比如dropout比如天天用到的优化(SGD, momentumadaboostadagrad)比如各种batchlayer normalization。这样其实可以省去很多浪费的时间磨刀不误砍柴工。


这些年来在帮同学调bug的过程中我至少遇见过3-5个同学training的时候开dropouttest的时候没有对每个cell用 (1-dropout)去scale (大家不要笑,这是真的)。然后画出dropout曲线就是dropout值越大结果越差。在讨论的时候同学一脸茫然并且不清楚test时候需要scale。其实本质就是并不了解dropout背后的数学原理。


4. 多看NLP其他子领域的论文

NLP有很多子领域包括机器翻译信息抽取parsingtagging情感分析MRC等等。多熟悉其他子领域的进展是必要的。其实不同子领域所运用的模型不会相差太大但是最开始看不熟悉领域的问题可能会有一点难原因是对问题的formalization不是很了解。这可能就需要多花一些时间多找懂的同学去问。其实了解不同问题的formalization也是对领域知识最好的扩充。


5. 了解 CV和data mining领域的基本重大进展

当熟悉了上面所说的点之后(当然可能至少也需要一年的时间)熟悉CV领域的基本任务、基本算法对于打开科研视野也很重要。但是不可否认因为领域不同写作风格、术语表达相差很大,又因为缺乏背景知识(文章中会省略一些基础知识默认大家都懂但是跨领域的人可能不懂)第一次想读懂跨领域的文章其实并不容易。


我就出现过竟然在讨论班上直接把faster-RCNN讲错了的情况以为自己看懂了然后就讲错了(至今昱先天天还在因为这个事情调侃我)。不过重要的是NLP领域里面一些重要的文章其实或多或少借鉴了CV里面的思想当然也同样出现CV借鉴NLP的情况。NLP神经网络可视化、可解释性的研究时间上还是落后于CV里面对CNN的可视化。所以很多工作大量借鉴了CV里面的类似工作。NLP运用GAN其实也是借鉴CV的


其实两个领域很多是很相通的。比如如果不考虑question queryvision里面detection中的region proposal(在一个大的图片背景下找一个特定区域)大家想是不是跟MRC里面的span extraction (在一大堆文字里面找一个span)有异曲同工之妙。更不用说image caption generation与sequence-to-sequence模型了本质上几乎没什么太大的区别。


强化学习在生成领域generation发完了MT(Ranzato et al. ICLR2016)再发image caption generation再回到summarization. Actor-critic 模型也是类似的还是很多做generation diversity的文章。


因为跨领域不好懂所以第一次推荐看tutorial如果有 sudo code 的tutorial那就更好了。另外看看扫盲课的视频比如Stanford CS231n也是个好办法。另外一个NLP组里面有一个很懂CV的人也很重要(拜谢昱先) and vise versa。 


graph embedding近两年崛起于data mining领域。目测会在(或者已经在)NLP的不少任务得到广泛应用。想到几年前deep walk借鉴了word2vec开始在data mining领域发迹然后似乎又要轮转回NLP了。

当然啦如何写论文也是极其重要的一环但不是这篇文章的主题强烈推荐清华大学刘知远老师的相关文(https://zhuanlan.zhihu.com/p/58752815)
先写到这儿欢迎大家补充拍砖。



方便交流学习,备注: 昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多: 机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等
记得备注呦


推荐阅读:
【ACL 2019】腾讯AI Lab解读三大前沿方向及20篇入选论文
【一分钟论文】IJCAI2019 | Self-attentive Biaffine Dependency  Parsing
【一分钟论文】 NAACL2019-使用感知句法词表示的句法增强神经机器翻译
【一分钟论文】Semi-supervised Sequence Learning半监督序列学习
【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing
详解Transition-based Dependency parser基于转移的依存句法解析器
经验 | 初入NLP领域的一些小建议
学术 | 如何写一篇合格的NLP论文
干货 | 那些高产的学者都是怎样工作的?
一个简单有效的联合模型
近年来NLP在法律领域的相关研究工作




让更多的人知道你“在看”
登录查看更多
0

相关内容

NLP:自然语言处理
斯坦福大学经典《自然语言处理cs224n》2020课件合集
专知会员服务
95+阅读 · 2020年5月25日
【综述】金融领域中的深度学习,附52页论文下载
专知会员服务
163+阅读 · 2020年2月27日
NLP基础任务:文本分类近年发展汇总,68页超详细解析
专知会员服务
73+阅读 · 2019年10月19日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
NLP 领域还有 5 大开放问题
AI科技评论
4+阅读 · 2019年9月19日
初入NLP领域的一些小建议
AINLP
21+阅读 · 2019年3月15日
自然语言处理(NLP)知识结构总结
AI100
51+阅读 · 2018年8月17日
NLP 学习秘笈,从入门到进阶 | 书单
人工智能头条
7+阅读 · 2017年12月25日
干货 | NLP 书单推荐!
翻译技术沙龙
11+阅读 · 2017年12月21日
书单 | NLP秘笈,从入门到进阶
机器学习研究会
3+阅读 · 2017年12月20日
Meta-Transfer Learning for Zero-Shot Super-Resolution
Arxiv
43+阅读 · 2020年2月27日
Arxiv
4+阅读 · 2019年9月5日
Transfer Adaptation Learning: A Decade Survey
Arxiv
37+阅读 · 2019年3月12日
Arxiv
53+阅读 · 2018年12月11日
Arxiv
22+阅读 · 2018年8月30日
A Survey on Deep Transfer Learning
Arxiv
11+阅读 · 2018年8月6日
VIP会员
相关资讯
NLP 领域还有 5 大开放问题
AI科技评论
4+阅读 · 2019年9月19日
初入NLP领域的一些小建议
AINLP
21+阅读 · 2019年3月15日
自然语言处理(NLP)知识结构总结
AI100
51+阅读 · 2018年8月17日
NLP 学习秘笈,从入门到进阶 | 书单
人工智能头条
7+阅读 · 2017年12月25日
干货 | NLP 书单推荐!
翻译技术沙龙
11+阅读 · 2017年12月21日
书单 | NLP秘笈,从入门到进阶
机器学习研究会
3+阅读 · 2017年12月20日
相关论文
Meta-Transfer Learning for Zero-Shot Super-Resolution
Arxiv
43+阅读 · 2020年2月27日
Arxiv
4+阅读 · 2019年9月5日
Transfer Adaptation Learning: A Decade Survey
Arxiv
37+阅读 · 2019年3月12日
Arxiv
53+阅读 · 2018年12月11日
Arxiv
22+阅读 · 2018年8月30日
A Survey on Deep Transfer Learning
Arxiv
11+阅读 · 2018年8月6日
Top
微信扫码咨询专知VIP会员