QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

NLP 迎来了黄金时代

  • 2019-11-29
  • 本文字数:3363 字

    阅读完需:约 11 分钟

NLP迎来了黄金时代

时钟拨回到 20 年前。


那一年,我以机器翻译方向的博士毕业,到几家单位应聘。当年,毕业的博士还很少。因此,应聘单位对我似乎还是网开一面,这导致我经历的应聘过程都十分轻松短暂。几个单位基本只关心两个问题:第一,“你是博士?“,第二,“你会 C++吗?“ 当得到肯定的答复之后,对方就给了 offer。虽然这么容易拿到了 offer,但其实我并不开心,因为他们并不关心我的博士研究方向,也不关心我今后做什么。我自己很不甘心也觉得不太靠谱,毕竟在专业方向上做了这么多年,丢掉实在可惜,于是我拒绝了这些 offer,选择留在了研究所继续从事 NLP 相关的科研工作。


走到今天来看,我确实是幸运的:NLP 历尽低谷,终于迎来了大爆发的“黄金”时代!


NLP(自然语言处理,Natural Language Processing)是利用计算机对人类的语言文字进行处理。由于语言文字是人类交流沟通的最基本方式,因此 NLP 也是最典型的 AI 领域之一,被誉为“人工智能皇冠上的明珠”。几百年来,多少人为了摘得这颗“明珠”,付出了艰苦的努力。个人认为,和 AI 的发展类似,NLP 的发展也同样经历了如下的三个阶段:


第一个阶段的 NLP 主要基于规则。我读博士的那几年,现在看上去好像正好处于这个时代后期(这一点纯属不成熟的个人看法。不少人仍然在继续探索规则方法。规则方法在很多领域仍然具有很强的生命力)。通过人工或者自动半自动地收集规则,机器可以完成一系列 NLP 任务。以机器翻译为例,只要输入的新句子能够匹配上事先设定或得到的规则,并且假定这些规则是正确的话,系统可能会输出一条看似还不错的结果。但如果上述任一条件不满足的话,系统可能会输出让人不知所云的结果。而自然语言太过复杂,通过有限的规则来刻画,几乎是不可能的事情。因此,基于规则的方法可能在某个特定的小领域能够取得不错的结果,一旦推广到更宽泛的领域,效果往往很不理想。


第二个阶段的 NLP 主要基于统计,更明确地说,基于数据+统计机器学习方法。 进入二十一世纪,计算机硬件能力的快速提升和数据量的增长,使得数据驱动的方法悄然成为主流。很多基于统计机器学习的 NLP 方法其实早就在基于规则的年代被人提出,但一直到这个阶段才为人广为所知、广为人用。最著名的是 IBM 的统计机器翻译模型,该模型最早提出于 1990 年,然而十几年后才真正大放异彩。正是数据+算力驱动了这一变革过程。在这个阶段的 NLP 当中,人工特征工程+统计机器学习成了很多 NLP 任务的标配。 不论是搜索引擎还是统计机器翻译,都基本如此。然而,这些传统统计机器学习的方法的一个最大问题是特征工程,即好的特征需要人类不断的探索和努力,有时归结于灵感或者只是运气,让人无法捉摸。虽然有些特定任务中的人类特征总结得还相当不错,但是一旦换一个任务这些特征可能就完全无法使用。“找特征”成了基于统计的 NLP 任务的最主要工作。


第三个阶段的 NLP 主要是基于深度学习。 本质上说,深度学习也是一种统计机器学习方法,因此这个阶段本质上也是数据+统计机器学习。但是,深度学习已经在很多领域表现优异,其名头已经盖过传统的统计机器学习。因此,说这个阶段基于深度学习毫不为过。上一个阶段最让人头疼的就是特征问题,本质上就是 NLP 的对象(字、词、短语、句子、段落、篇章等)如何表示的问题。而深度学习的最大好处就是能够自动学到对象的表示,从而避免了人工特征工程的大工作量和难以保证的结果。为了学到对象的较好的表示,深度学习方法通常一方面采用深层的神经网络方法来学习,另一方面需要更大量的数据。因此,大量硬件的投入对于这个阶段来说通常也必不可少。


尽管存在可解释性差、运算代价巨大等问题,但深度学习 NLP 带来了大量 NLP 任务效果的提升。就以机器翻译为例,统计机器翻译已经在效果上较大幅度领先于早先的规则机器翻译系统,而基于深度神经网络的机器翻译又将效果再度提高了一个台阶。在很多其他 NLP 任务上,基于深度学习的方法也基本领先于传统方法。机器翻译和机器阅读等任务甚至都号称“超过了人类”。造成这种结果的基本原因就是深度学习这个“黑盒子”似乎找到了以往人类没有发现的好用的特征,这些特征独自或者和人类提出的特征结合能够发挥出更好的效果。


这个阶段带来的一个重要变化是文本生成任务突然间成为可能。大量的自动写诗、自动写稿、自动写标题等算法系统纷涌而出,这是以往的阶段难以见到的。基于深度学习的 NLP 使得很多任务都可以抽象为编码-解码问题。表面的文本可以编码为内部的特征表示,而从特征表示又可以解码为表面的文本。这种极简抽象正好代表了 NLP 的两个任务,前者叫自然语言理解(Natural Language Understanding, NLU),后者叫自然语言生成(Natural Language Generation, NLG)。这种抽象使得很多原来没有太多办法的生成任务至少具有想象的可能。以自动摘要这一任务为例,尽管前人尝试了很多生成式摘要方法,但基本结论还是抽取式摘要方法更佳。有了深度学习之后,可以将原文编码为特征表示,然后再基于该表示生成一个更短的文本,从而得到生成式摘要。另一个任务是图文生成或文图生成,即可以根据图像来生成一篇文本,或者基于文本来生成图像,从而实现跨模态的处理。还有,如果不同语言的特征表示存在对齐的可能性(很多研究工作组都在尝试),多语言生成问题也会迎刃而解。


深度学习 NLP 带来的另一个重要变化是端到端模式的流行。 传统 NLP 任务大都基于流水线模式,即任务会逐层分解,通过多层模块之间的有序调用完成某个任务。比如传统的语音翻译过程一般为:先将输入语音转化为源文本,然后将源文本翻译成目标文本,最后将目标文本转换成语音进行输出。这种流水线方式每一个前面步骤的错误都有可能延续到后续模块,从而造成错误的级联效应。Google 于 2019 年给出了一种端到端的语音翻译方法,引起了学术界和工业界的广泛关注。从原理上来说,这种端到端的方法可以避免逐层错误传播的缺点,能够获得更好的效果。目前,很多学术机构和公司都在跟进这一具有革命性的方法。当然,端到端的模式已经在其他一些 NLP 任务中获得了较好的效果,这种直达任务的模式有可能会成为大多数 NLP 任务的新选择。


近年来深度学习 NLP 本身也出现了新变化,最典型的就是预训练+微调的任务处理方式变得十分流行。 预训练最早起源于图像处理领域,大家可以在 ImageNet 上训练出基本的模型,然后将该模型用于新任务中,而只需要对模型进行微调。这种思路也被引入到 NLP 任务中,出现了 ELMo、GPT2、BERT 等预训练模型。这种做法至少有两个好处。其一,新任务可以减少对数据的依赖,因为预训练模型是基于大量数据得到的,其中编码了大量重要信息。其二,减少了训练代价,新任务不需要从头训练。上述预训练模型取得了非常令人鼓舞的结果,很多模型在很多 NLP 任务中都取得了更好的结果。预训练模型的竞赛还一直在继续。


但基于深度学习的 NLP 方法也有很多不足。可解释性和运算代价大是这类方法的通用性问题,这里就不再展开论述。当然,也是因为可解释性问题的存在,NLP 中学到的特征表示到底表征的是什么东西目前还不太清楚,这使得深度学习 NLP 方法可控性不强。以文本生成为例,用深度学习生成人类可控的文本目前看还是个大难题。


不管如何,NLP 迎来了属于自己的黄金时代。


这个时代不仅仅有搜索、推荐、广告、信息流、社交网络等“老树开新花”的领域,也包括人机对话、机器阅读、自动写作等充满生命力的新兴领域。NLP 在内容相关的各种应用中都扮演着极其重要的角色。


NLP 技术的发展不能离开场景,场景和技术的有效结合才能充分发挥出 NLP 技术的能力。身在工业界,我每一天都为 NLP 技术和场景的各种可能组合激动不已。终于等到你,还好我没放弃!


作者介绍


王斌博士,小米人工智能实验室主任,NLP 首席科学家。中国中文信息学会理事,计算语言学、信息检索、社会媒体处理、语言与知识计算等专委会委员及《中文信息学报》编委,中国计算机学会中文信息处理专业委员会委员。加入小米之前,在中科院计算所、信工所从事自然语言处理和信息检索相关的科研工作,任中科院博导、研究员,中科院大学教授。发表学术论文近 150 篇,科研成果获得国家科技进步二等奖 2 项,省部级科技奖 3 项。是 SIGIR、CIKM、ACL、IJCAI、AAAI、WWW 等会议的程序委员会委员。


延伸阅读:


《小米 NLP 首席科学家王斌:NLP 在落地、商业化方面进展慢是假象》


2019-11-29 08:0020869
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 544.2 次阅读, 收获喜欢 1978 次。

关注

评论 6 条评论

发布
用户头像
不错
2019-12-15 19:51
回复
用户头像
2019-12-09 11:35
回复
用户头像
你只讨论学术我非常赞同对NLP的现状分析,但是商业面抛开成本来谈NLP解决方案的,我只能认为是居心叵测。不要让NLP再来一次五代机灾难,至少别在中国搞成灾难。
2019-12-09 09:14
回复
用户头像
有幸加入王老师团队,又学到很多!
2019-12-06 11:23
回复
用户头像
王老师深入浅出,梳理了NLP技术的历史沿革,赞~
2019-12-06 09:56
回复
用户头像
大佬讲的很好
2019-12-03 12:13
回复
没有更多了
发现更多内容

2021最新Java面试真题解析,mysql汉化教程,全网首发!

Java 程序员 后端

2021最新中高级Java面试题目,一份字节跳动面试官给你的Java技术面试指南

Java 程序员 后端

2021最新网易Java面试题目,华为Java面试题及答案

Java 程序员 后端

Go 语言实现 gRPC 的发布订阅模式,REST 接口和超时控制

AlwaysBeta

golang gRPC Go 语言 publish REST API

2021最新Java开发面试解答,Java编程教程入门

Java 程序员 后端

2021百度Java岗面试真题收录解析,Java开发者必看避坑指南

Java 程序员 后端

2021网易Java高级面试题总结,初级Java程序员面试题

Java 程序员 后端

2021最新Java大厂面试真题大全,附学习笔记+面试整理+进阶书籍

Java 程序员 后端

2021最新网易Java面经,还在等机会

Java 程序员 后端

2021最新Java知识体系总结,上个月成功拿到阿里P7offer

Java 程序员 后端

云栖大会第二天:ACK Anywhere 来了

阿里巴巴云原生

阿里云 容器 云原生 ACK Anywhere

云栖·追踪云原生|Serverless入围阿里云十大核心技术

阿里巴巴云原生

阿里云 Serverless 云栖大会 技术代表

【内含福利】得物、B站技术大佬分享系统稳定性保障干货,邀您共赴上海交流!

TakinTalks稳定性社区

运维 性能测试 系统稳定性 压力测试

2021金九银十面试季,java零基础入门视频教程,成功入职腾讯

Java 程序员 后端

2021年阿里+腾讯+快手offer都已拿到,Java开发环境

Java 程序员 后端

2021我是如何拿到小米、京东、字节的offer,Java篇

Java 程序员 后端

2021最新中高阶Java面试题总结,牛笔了

Java 程序员 后端

2021最新Java开发面试大全,阿里Java面试题库

Java 程序员 后端

2021最新Java知识体系总结,史上最全

Java 程序员 后端

2021最新Java大厂面试真题大全,不明白JVM虚拟机还怎么面试

Java 后端

2021最新大厂Java面试集合,java基础入门视频教程,重磅来袭

Java 程序员 后端

一图看懂云栖大会「云原生」重磅发布

阿里巴巴云原生

容器 云原生 云栖大会 ACK Anywhere

2021新一波程序员跳槽季,零基础如何成为高级Java开发

Java 程序员 后端

2021新鲜出炉阿里巴巴面试真题,王道训练营java百度云盘,阿里高级算法专家

Java 程序员 后端

2021最新Java高频精选面试题讲解,开源新作

Java 程序员 后端

2021最新网易Java面经,裸辞奋战25天三面美团

Java 程序员 后端

2021最新Java算法相关面试大,Java程序员技术路线

Java 程序员 后端

2021最新Java面试笔试,尚硅谷linux笔记文档,Java中级工程师面试题

Java 程序员 后端

027云原生之服务网格应用

穿过生命散发芬芳

云原生 10月月更

云栖第一天:解密两个100%背后的云原生

阿里巴巴云原生

阿里云 云原生 公有云 云栖大会

2021最新Java开发面试大全,马士兵java入门教程,美团Java面试

Java 程序员 后端

NLP迎来了黄金时代_AI&大模型_王斌_InfoQ精选文章