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:0020872
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 545.3 次阅读, 收获喜欢 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
回复
没有更多了
发现更多内容

分布式系统的架构演进过程(一)

卢卡多多

分布式, 11月日更

【死磕Java并发】-----J.U.C之AQS:同步状态的获取与释放

chenssy

11月日更 死磕 Java 死磕 Java 并发

2018年世界杯德国竟然输给韩国?终于找到原因了!

Jackpop

Golang Gin 框架之分组路由(五)

liuzhen007

11月日更

[Pulsar] 消息生命历程(三)——客户端发送消息

Zike Yang

Apache Pulsar 11月日更

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」让我们一起探索一下DefaultMQPullConsumer的实现原理及源码分析

洛神灬殇

阿里巴巴 RocketMQ 消息队列 11月日更 Apache RocketMQ

Java 项目中使用 Resilience4j 框架实现客户端 API 调用的限速/节流机制

码语者

Java 限速 节流 Resilience4j RateLimit

linux之strings命令

入门小站

Linux

在线文本行固定长度填充工具

入门小站

工具

清华元宇宙深度报告!理论框架产业真相一文看懂

CECBC

被Chrome坑惨了!

Jackpop

Spring中的Controller和Service是线程安全的吗?我有点懵

热爱java的分享家

Java spring 程序人生 编程语言 经验分享

App 端自动化的最佳方案,完全解放双手!

星安果

Python 自动化 爬虫

一次搞懂SpringBoot核心原理:自动配置、事件驱动、Condition

热爱java的分享家

Java 程序人生 Spring Boot 编程语言 经验分享

Spring Bean生命周期你除了会背八股文面试,真的会用了吗?

热爱java的分享家

Java spring 程序人生 编程语言 经验分享

华为,告别大陆军时代

脑极体

23 K8S之Secret资源配置

穿过生命散发芬芳

k8s 11月日更

CWE 4.6 和 OWASP TOP10(2021)

Tom(⊙o⊙)

Windows 11再出杀手锏....

Jackpop

Prometheus Exporter (八)kube-state-metrics

耳东@Erdong

Kubernetes Prometheus exporter 11月日更 kube-state-metrics

华为顶级安全专家分享出来这份‘典藏版’Linux开发实战笔记

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

2021RSAC -- 网络韧性

Tom(⊙o⊙)

EF Core如何处理多对多关系

喵叔

11月日更

【高并发】由InterruptedException异常引发的思考

冰河

Java 并发编程 多线程 高并发 异步编程

贪心:柠檬水找零、跳跃游戏🍋

空城机

JavaScript 贪心算法 11月日更

GitHub霸榜月余的24万字Java面试手册,竟是阿里机密

热爱java的分享家

Java 面试 程序人生 编程语言 经验分享

一个对标VSCode的IDE---Fleet

IT蜗壳-Tango

11月日更

这次不怕撕坏了,区块链电子公告来了

CECBC

什么是元宇宙?为何要关注它?

CECBC

模块四作业:设计千万级学生系统的试卷存储方案

Geek_99eefd

模块四 「架构实战营」

分析23个赛季NBA数据,我发现10条难以置信的信息!

Jackpop

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