TensorFlow与自然语言处理应用(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-29 21:56:48

点击下载

作者:李孟全

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

TensorFlow与自然语言处理应用

TensorFlow与自然语言处理应用试读:

前言

2018年,其实是自然语言处理领域收获颇丰的一年,尤其是以Google公司在2018年11月份发布的BERT模型最为世人所瞩目,可以说是最近AI研究领域最为火爆的历史性突破。最近几年,无论从媒体报道还是切身感受,我们都看到人工智能目前的发展势头非常迅猛。如果我们简单回顾一下人工智能发展历程,不难发现其轨迹有三个发展阶段:第一个阶段是计算智能阶段,其典型表现在于计算机和人类相比是能存会算,其超大存储量、超高计算速度方面均可完胜我们人类;第二个阶段是感知智能阶段,具体表现在以语音识别和图像识别技术为代表的迅猛发展,如综艺电视节目中的“机智过人”“最强大脑”就是其很好的呈现形式;第三个阶段是认知智能阶段,这个阶段需要机器能够思考并具有情感。正因为人工智能与我们日常生活的联系越来越紧密,且自然语言处理技术是推动机器实现认知的关键性研究领域,所以我们有必要对自然语言处理应用进行深入探索。本书将利用目前流行的Google技术框架(TensorFlow)来实现自然语言处理方面的应用。

由于我们生活的方方面面被赋予了越来越多的数字化内容,因此相应的数据量也在呈指数级增长,并且大多数数据是与语言相关的数据,如电子邮件、社交媒体帖子、电话和网络文章,自然语言处理(NaturalLanguageProcessing,NLP)能够有效地利用这些数据帮助人们完成日常业务工作。NLP已经彻底改变了我们使用数据改善业务和生活的方式,并将在我们未来的日常生活中发挥更大的作用。

NLP最普遍的使用案例之一是虚拟助手(Virtual Assistants,VA),如百度小度助手、Apple的Siri、谷歌助手(Google Assistant)和亚马逊Alexa。当我向VA询问“附近最便宜的火锅”时(笔者利用手机上百度地图小度时,它会把附近最便宜的火锅店排在第一位),就会触发一系列复杂的NLP任务。首先VA需要了解(解析)我的请求(了解它需要检索火锅的价格,而不是停车位计时的价格),VA做出的决定是“什么是便宜的?”;然后VA需要对附近火锅的价格进行排名(也有可能基于我过去吃过的火锅店);最后VA抓取相关数据获取附近火锅的价格,并通过分析每家火锅店的价格和评论对它们进行排名。其实,我们在几秒钟内看到的结果是执行一系列非常复杂NLP任务的结果。

正是NLP在我们日常生活中呈现出越来越多的便利性,笔者才更想对NLP背后的模型原理和具体应用进行深入的探讨,以便我们对NLP有更多的认知。另外,笔者查看了近些年来的相关文献,发现单独讲解NLP方面的理论文献国内外都有,单独撰写NLP任务实现的技术工具(如TensorFlow)的图书也很多,而将二者结合起来的图书,目前在国内还没有发现(也许有,只是笔者没有发现而已)。于是,2018年4月,笔者就想对关于利用TensorFlow技术框架来实现NLP任务应用方面进行成体系地探索,以便对今后的工作有所积累。本书在创作过程中参考了《Natural Language Processing with TensorFlow》(Thushan Ganegedara著)中的一些内容,在此向Thushan Ganegedara表达个人的敬意!

通过阅读本书,你将学会如何利用深度学习来实现许多有意义的NLP任务。对于本书中涉及的NLP任务,我们都有具体的代码实现(含实现过程),使用的技术框架为TensorFlow(1.8版本),编程语言为Python(3.6版本)。本书主要内容

第1章 自然语言处理基础。首先介绍自然语言处理的含义及NLP中的一些常见子任务;然后讲述NLP的发展历程:偏理论的理性主义、偏实践应用的经验主义和深度学习阶段;接着对NLP任务中深度学习的局限性进行了大致分析;最后,我们对于NLP的应用场景和发展前景做了简要阐述。

第2章 深度学习基础。首先介绍深度学习的概念和演变过程,同时介绍了深度学习的基础模型——神经元模型,并对单层神经网络和多层神经网络模型(深度学习)的结构和原理进行了深度解读;然后介绍Encoder-Decoder网络和深度学习中最常见的优化算法——随机梯度下降;最后介绍反向传播算法(BP算法)。

第3章 TensorFlow。首先介绍TensorFlow的产生、主要特征和相关安装等基础准备内容,同时介绍了在执行TensorFlow程序时需要构建计算图及其构成元素,并详细解读了TensorFlow的架构和工作原理,还给出了一个示例来加深理解;然后从TensorFlow客户端的角度通过代码逐层剖析TensorFlow的内部运行情况,以便让我们对TensorFlow的内部运行机制、各个基础组件之间的关联等有深入的了解;最后介绍变量作用域机制并实现一个完整的神经网络示例。

第4章 词嵌入。首先介绍分布式表示,对其含义、类型及简要特征有一个直观的认识;其次,我们重点对CBOW模型、Skip-gram模型及GloVe模型的工作原理和内部架构进行深度解析;最后利用前面的模型,通过TensorFlow实现一个文档分类任务。

第5章 卷积神经网络(CNN)与句子分类。首先介绍CNN的历史演变过程,并对其5个层级结构(输入层、卷积运算层、激励层、池化层、全连接层)和4个基本运算单元(卷积运算、池化运算、全连接运算和识别运算)进行了介绍;然后介绍几种常见的经典卷积神经网络:AlexNet、VGGNet、Google Inception Net和ResNet,并逐一从模型思想、结构、特性亮点等方面进行详细解读;最后为了将上述解析的模型思想真正落实到代码层面上,我们给出两个应用案例:利用CNN对MNIST数据集进行图片分类和利用CNN对句子进行分类。

第6章 循环神经网络(RNN)。首先通过计算图及其展开解读了循环的任何函数本质上可以认为是一种循环神经网络的说法;然后介绍时间的反向传播算法(BPTT),我们将学习反向传播的工作原理、为什么不能对RNN使用标准反向传播、如何使用BPTT对数据进行RNN训练、截断BPTT和BPPTT的局限性等,并解读其局限性中的常见问题及对应的解决方法;最后我们将看到一个RNN的应用——文本生成,并研究了一种能够捕获更长记忆的RNN变体(被称为RNN-CF),还给出了其在实例中的应用。

第7章 长短期记忆网络(LSTM)。首先介绍LSTM及其高级架构,并深入研究LSTM中发生的详细计算,结合一个例子讨论了该计算的过程;然后介绍了几个可以提高LSTM性能的扩展,即贪心采样(一种非常简单的技术)、集束搜索(一种更复杂的搜索技术)及BiLSTM模型等;最后介绍了标准LSTM的两种变体:窥视孔连接和GRU。

第8章 利用LSTM自动生成文本。首先广泛地评估了LSTM在文本生成任务中的表现;然后定性和定量地测量LSTMS生成的文本有多好,并对LSTM、带窥视孔连接的LSTM和GRU进行比较;最后如何将词嵌入引入模型中,以改进LSTM生成的文本。

第9章 利用LSTM实现图像字幕自动生成。首先回顾了图像字幕的主要发展及其对研究和行业部署的影响;其次详细介绍了基于深度学习的图像字幕自动生成的两大框架;最后对图像字幕的自动生成任务进行了详解。

第10章 情感分析。首先介绍情感分析的应用、情感问题的界定及情感文档的分类,同时对句子观点的主观性、基于Aspect的情感分析、情感词典的生成、比较观点分析及观点的检索做了介绍;然后重点阐述了垃圾评论的各种情况;最后利用TensorFlow对于酒店评论样本数据进行了情感分析建模比较,并得出相关结论。

第11章 机器翻译。首先对基于规则的机器翻译、统计机器翻译等传统的机器翻译情况进行了详细解释,并对基于神经网络的神经网络机器翻译模型的架构和工作机制进行了深度剖析,同时对2018年11月份发布的具有重大突破性的BERT模型进行了分析;然后介绍如何实现一个NMT系统;最后讲解如何改进标准NMT系统。

第12章 智能问答系统。本章简要介绍了基于深度学习的问答方法,特别是对知识库和机器理解的问答。深度学习的优点是可以将所有文本跨度(包括文档、问题和潜在答案)转换为向量嵌入,然而基于深度学习的QA模型存在许多挑战。例如,现有的神经网络(RNN和CNN)仍然不能精确地捕获给定问题的语义含义,特别是对于文档,主题或逻辑结构不能通过神经网络容易地建模,并且在知识库中嵌入项目仍然没有有效的方法,以及QA中的推理过程很难通过向量之间的简单数值运算来建模。这些问题是质量保证任务面临的主要挑战,未来应引起更多的关注。代码下载与技术支持

本书示例代码下载地址请扫描下面的二维码获得。如果发现书中存在问题或对本书有什么建议,请联系电子邮箱280751474@qq.com。致谢

笔者在撰写这样一本技术性很强的书时确实有不少感慨,但正如一位技术界的前辈说的“没有等出来的美丽,只有走出来的辉煌”,所以在人生的路上,能够让自己用行动对冲遗憾,足矣。

在此,我要感谢本书的每一位读者,希望本书能够为大家带来一些启发。感谢清华大学出版社夏毓彦及其他老师的支持。感谢周一铁先生、张述睿先生的支持。感谢我的朋友和同学们,得益于你们一直以来的理解和支持,我才能有信心完成这本书的创作。

笔者自认才疏学浅,对深度学习和自然语言处理也仅是略知皮毛,且因时间有限,书中难免有错谬之处,还请各位读者予以告知,将不胜感激!李孟全2019年5月第1章 自然语言处理基础

自然语言处理(Natural Language Processing,NLP)是一个跨学科领域,它结合了计算科学、语言学、认知科学和人工智能,主要研究能够让计算机实现与人类语言有关的各类任务的各种理论和方法,特别是如何对计算机进行编程以处理和分析大量自然语言数据(非结构化的数据)。从科学的角度来看,NLP旨在对人类语言理解和产生的认知机制进行建模。从工程角度来看,NLP关注如何开发新颖的实际应用程序以促进计算机与人类语言之间的交互。在自然语言处理中,经常遇到的挑战包括语音识别、口语理解、对话系统、词汇分析、句法解析、机器翻译、知识图谱、信息检索、问题问答、情感分析、社交计算、自然语言生成和自然语言摘要等。当然,自然语言处理工作也是计算机科学中极其困难的工作任务。语言本身存在着各种各样的问题,亦因语言而异。

幸运的是,最近几年深度学习领域获得快速发展,使得深度学习算法在诸如图像分类、语音识别、文本生成、机器翻译等诸多带有很强挑战性的工作任务中表现优异,加速了深度学习与NLP各工作任务的深度融合,从而使得自然语言处理领域焕发出新的活力。而在深度学习被广泛应用的过程中,出现了多种技术框架,其中TensorFlow是目前最直观、最有效的深度学习框架之一。本书重点探讨如何利用TensorFlow深度学习框架去实现NLP的各种任务,例如句子分类、文档分类、文本生成、图像字幕自动生成、机器翻译、智能问答等。

在本章中,我们将要对于自然语言处理基础有一个初步了解,并对NLP的主要工作任务做一个划分;然后我们将对NLP领域的三个发展浪潮做详细解读,并对当前NLP领域中深度学习的局限性进行剖析;最后,我们还会对于NLP的应用场景和应用前景做个简要阐述。1.1 认识自然语言处理

根据《2017微信数据报告》显示,每天会有380亿条信息从微信上发出,如果按照每条信息都是文字“你吃饭了么”计算,通过微信发送的信息每天的数据量在350GB以上(一个汉字占2字节,1024字节=1KB)。而实际的数据量会更多,因为这些信息会有不少语音、动画表情、图片、小视频等。其实,在实际工作中,我们每天都在处理的电子邮件、各类报告文档等同样也在以惊人的速度充斥着整个网络环境。2018年6月,据科技公司Domo预测,到2020年,世界上每人每天将产生超过140GB的数据,并且随着物联网的迅猛发展,这个数字将会继续扩大。

正是由于这些统计数据的存在,才使得我们为界定NLP提供了良好的基础。简而言之,NLP的目标就是让机器拥有真正理解人类语言并以与人类相同的方式处理它的能力。如今,NLP的应用已经广泛存在,就像我们日常生活中常用到的虚拟助手(VA),常见的有百度语音助手、讯飞语音助手、Google智能助理、微软的个人智能助理小娜(Cortana)、苹果系统的Siri等,这些虚拟助手主要是NLP系统在运行。比如,你告诉语音助手“请告诉我附近好吃的麻辣烫在哪儿?”首先,VA需要将你的声音转换为文本(语音到文本)。接下来,VA必须理解你请求的语义(例如,你正在寻找带有麻辣烫美食且好吃的餐厅)并制定结构化请求(例如,美食=麻辣烫,评级= 3-5,距离<3公里)。然后,VA必须按位置和菜肴两个条件搜索并筛选出餐厅,再按收到的评级对餐厅进行排序。为了计算餐厅的整体评级,良好的NLP系统可以查看每个用户提供的评级和文本描述。最后,用户到达餐厅,VA还可以将各种菜品组合的受欢迎程度进行综合推荐,以此来帮助你做出更好的选择。这个例子表明NLP已成为人类生活中不可或缺的一部分。1.2 自然语言处理方面的任务

NLP其实有许多实际的应用,而一个好的NLP系统会执行多个任务系统。比如,上面提到的你要在当前位置选择麻辣烫小吃店的例子,其实就是在执行多个NLP任务系统。关于NLP的任务,主要有以下几类:● 标记化:标记化是将文本语料库分离为原子单元(例如,单词)的任务。虽然看似微不足道,但是标记化却是一项非常重要的工作任务。例如,在日语中,单词不以空格或标点符号分隔。● 词义消歧(Word-sense Disambiguation,WSD):词义消歧是识别单词正确含义的任务。例如,有两个句子,“你提供的图真好看”和“你图啥?”,其中“图”就有两种不同的含义。词义消歧对于诸如问答之类的任务至关重要。● 命名实体识别(Named Entity Recognition,NER):NER尝试从给定的文本主体或文本语料库中提取实体(例如,人、位置和组织)。例如,有一个句子,“林阿姨昨天在小区门口给了小明两瓶牛奶”,将被转换为林阿姨昨天在小区门口给人时间位置了小明两瓶牛奶。NER是信息检索和知识表示等领域的一人数量个重要课题。● 词性(Part-of-Speech,PoS)标注:是词汇基本的语法属性,通常也称为词类,既可以是名词、动词、形容词、副词、介词等基本标签,也可以是诸如专有名词、普通名词、短语动词等。词性标注就是在给定句子中判定每个词的语法范畴,确定其词性并加以标注的过程,是中文信息处理面临的重要基础性问题,主要可以分为基于规则和基于统计的方法。● 句子/概要分类:句子或概要(例如,电影评论)分类有许多用例,例如垃圾邮件检测、新闻文章分类(诸如政治、科技和体育等)和产品评论评级(正面或负面)。这是通过训练带标签的数据(由人类注释的评论,带有积极或消极的标签)来训练分类模型实现的。● 文本生成:在文本生成中,学习模型(例如,神经网络)使用文本语料库(大量文本文档集合)进行训练,预测随后的新文本。例如,文本生成可以通过使用现有的小说故事文本进行训练来输出一个全新的小说故事文本。当然,具体的实现过程会涉及具体模型的实施,具有一定的复杂性。本书第8章将专门针对文本生成做详细解读。● 问答(QA)系统:QA技术具有很高的商业价值,因为这些技术是聊天机器人和VA(例如谷歌Assistant和苹果Siri)实现的基础所在。聊天机器人已经被许多公司用于客户支持工作。聊天机器人可以用来回答和解决客户直接关心的问题,而不需要人工干预。QA涉及NLP的许多方面,比如信息检索和知识图谱中的知识表示。因此开发QA系统变得更加具有挑战性。● 机器翻译:是将一个句子/短语从源语言(如汉语)转换为目标语言(如英语)的任务。这是一个非常具有挑战性的任务,因为不同的语言具有高度不同的形态结构,这意味着它不是一对一的转换。此外,语言之间的字对字关系可以是一对多、一对一、多对一或多对多。这在MT文献中被称为单词对齐问题。

为了开发一个可以帮助人们完成日常任务的系统(例如,VA或聊天机器人),这些任务中的许多工作需要放在一起执行。正如我们在前面的例子中看到的那样,“请告诉我附近好吃的麻辣烫在哪儿?”需要完成几个不同的NLP任务,例如语音到文本转换、语义和情感分析、问题回答和机器翻译。在图1.1中,我们提供了不同NLP任务的层次分类。我们首先有两大类任务:分析(分析现有文本)和生成(生成新文本)任务。然后将分析分为三类:句法(基于语言结构的任务)、语义(基于意义的任务)和语用(难以解决的开放问题),如图1-1所示。

目前,我们对于自然语言处理及其各种任务分类有了一定的了解,下面我们将探讨一下NLP的起源、发展及现状。图1-1 广义范畴下的NLP主要任务分类1.3 第一阶段:偏理论的理性主义

NLP研究的第一次浪潮持续了很长一段时间,可以追溯到20世纪50年代。1950年,阿兰·图灵提出了图灵测试来评估计算机展示与人类无法区分的智能行为的能力(图灵,1950)(注意:本书这种“人名,年份”的说明方式用于读者必要时查阅下载资源文件,以确认参考文献的出处)。该测试基于人和计算机之间的自然语言对话,旨在产生类似人的响应。1954年,Georgetown-IBM实验展示了第一个能够将60多个俄语句子翻译成英语的机器翻译系统。

这些方法基于这样一种信念,即人类大脑中的语言知识是通过一般遗传而提前固定下来的,这在20世纪60年代到20世纪80年代后期的NLP研究中占主导地位。这些方法被称为理性主义方法(Church,2007)。理性主义方法在NLP中占有主导地位,主要是由于诺姆·乔姆斯基关于先天语言结构的论点得到广泛接受,以及他对N-gram的批评(Chomsky,1957)。假设语言的关键部分在出生时就已经扎根于大脑,作为人类遗传的一部分,理性主义方法会努力设计人工制作的规则,将相关知识和推理机制融入智能NLP系统。直到20世纪80年代,最著名的NLP系统是基于复杂的手写规则集的,例如模拟罗格氏(Rogerian)心理治疗师的ELIZA和将现实世界的信息构造成概念本体的MARGIE,是基于复杂的手写规则集。

这一时期大致与人工智能的早期发展相吻合,人工智能以专家知识工程为特征,行业专家根据他们所拥有的(非常狭窄的)应用领域的知识设计了计算机程序(Nilsson,1982;Winston,1993)。专家们使用基于细致的表示和工程学知识的符号逻辑规则来设计这些程序。这些基于知识的人工智能系统往往通过检查“大脑”或最重要的参数,并针对每个具体情况采取适当行动,从而有效地解决特定领域的问题。这些“大脑”参数由人类专家提前确定,使“尾部”参数和案例保持不变。由于缺乏学习能力,很难将其解决方案推广到新的场景和领域。在此期间的典型方法是专家系统,例如模拟人类专家决策能力的计算机系统。这种系统旨在通过推理知识来解决复杂问题(Nilsson,1982)。第一个专家系统创建于20世纪70年代,而后在20世纪80年代兴起。使用的主要“算法”是“if-then-else”形式的推理规则(Jackson,1998)。这些第一代人工智能系统的主要优势在于其执行逻辑推理(有限的)能力的透明性和可解释性。就像ELIZA和MARGIE这样的NLP系统一样,早期的专家系统使用人工制作的专家知识库,这些知识在某些特定的问题中往往是有效的,尽管推理机制不能处理实际应用中普遍存在的不确定性。

对于语音识别的研究和系统设计,NLP和人工智能面临的一个长期挑战是在很大程度上需要依赖于专家知识工程的范式,正如Church和Mercer(Church和Mercer,1993)所分析的那样。在20世纪70年代和80年代初期,语音识别的专家系统方法非常受欢迎(Reddy,1976;Zue,1985)。然而,研究人员敏锐地认识到该阶段缺乏从数据中学习和处理推理中不确定性的能力,继而出现接下来描述的第二阶段语音识别、NLP和人工智能。1.4 第二阶段:偏实践应用的经验主义

该阶段NLP的特点是通过数据语料库和(浅)机器学习、统计或其他方法来使用数据样本(Manning和Schtze,1999)。由于自然语言的大部分结构和理论被数据驱动的方法所忽视或抛弃,所以这期间发展起来的主要方法被称为经验的(或实用的)方法(Church and Mercer,1993;Church,2014)。随着机器可读数据可用性的增加和计算能力的不断提高,从1990年开始,经验方法一直主导着NLP。其中一个主要的NLP会议甚至被命名为“自然语言处理中的经验方法(EMNLP)”,以最直接地反映出NLP研究人员在该阶段对经验方法的强烈(积极)倾向性。

与理性主义方法相反,经验方法假设人类思维只从联想、模式识别和概括的一般操作着手。为了使得大脑更好地学习自然语言的详细结构,需要存在丰富的感官输入才可以。自1920年以来,经验主义在人口学中普遍存在,自1990年以来经验主义也一直在复苏。早期的NLP经验方法侧重于开发生成模型,如隐马尔可夫模型(HMM)(Baum和Petrie,1966)、IBM翻译模型(Brown等,1993)和脑部驱动的解析模型(Collins,1997)从大型语料库中发现语言的规律性。自20世纪90年代末以来,判别模型已成为各种NLP任务中实用的方法。NLP中的代表性判别模型和方法包括最大熵模型(Ratnaparkhi,1997)、支持向量机(Vapnik,1998)、条件随机场(Lafferty等,2001)、最大互信息和最小分类误差(He等,2008)和感知器(Collins,2002)。

同样,NLP中的经验主义时代与人工智能以及语音识别和计算机视觉中的方法相对应。这是因为有明确的证据表明,学习和感知能力对于复杂的人工智能系统至关重要,但在前一波流行的专家系统中却缺失了。例如,当DARPA开启其首次自动驾驶大挑战时,大多数车辆依赖于基于知识的人工智能范式。与语音识别和NLP非常相似,自动驾驶和计算机视觉研究人员立即意识到基于知识范式的局限性,因为机器学习必须具有不确定性处理和泛化能力。

NLP中的经验主义和第二阶段中的语音识别是基于数据密集型的机器学习,我们现在称之为“浅层”机器学习,因为这里通常会缺少由多层或“深层”数据表示构成的抽象,第三阶段深度学习方面将在后面继续开展。在机器学习中,研究人员无须关注构建第一阶段期间基于知识的NLP和语音系统所需的精确度和正确规则。他们关注统计模型(Bishop,2006;Murphy,2012)或简单的神经网络(Bishop,1995)作为潜在引擎。然后,他们使用充足的训练数据自动学习或“调整”引擎的参数,以使它们处理不确定性,并尝试从一个场景推广到另一个场景,从一个域到另一个域。用于机器学习的关键算法和方法包括EM、贝叶斯网络、支持向量机、决策树及用于神经网络的反向传播算法。

现在回过头来看,基于机器学习的NLP、语音识别和其他人工智能系统,比早期的基于知识的对应部分表现更佳。诸如一些成功的例子,包括机器知觉中的几乎所有人工智能任务——语音识别(Jelinek,1998)、人脸识别(Viola和Jones,2004)、视觉对象识别(Fei-Fei和Perona,2005)、手写识别(Plamondon和Srihari,2000)和机器翻译(Och,2003)。

具体来看,针对机器翻译应用方面,传统方法还是以统计方法主,我们也会在本书的第11章对机器翻译部分做详细解读

双语训练数据中句子级对齐的可用性使得不通过规则而是直接从数据中获得表层翻译成为可能,代价是丢弃或忽略自然语言中的结构化信息。当然,在本阶段的后续发展中,机器翻译的质量也得到了显著提升(Och和Ney,2002;Och,2003;Chiang,2007;He和Deng,2012),但还是没有达到现实世界中大规模部署的水平(后续深度学习阶段将会继续探讨)。

在NLP的对话和口语理解领域,这个经验主义时代也以数据驱动的机器学习方法为显著标志,这些方法非常适合于定量评价和具体可交付成果的要求。他们关注的是文本和域的更广泛但肤浅的表层覆盖,而不是对高度受限的文本和域的详细分析。我们训练数据的目的,不是从对话系统中设计出有关语言理解和动作反映方面的规则,而是从数据样本中自动学习(浅层)统计或神经模型方面的参数。这种学习有助于降低人工制作复杂对话管理器的设计成本,并有助于提高整体口语理解和对话系统中语音识别错误的鲁棒性水平(He和Deng,2013)。具体来看,对话系统中对话策略部分,在本阶段引入了基于马尔科夫决策过程的强化学习,有关评论,可以参阅Young等人的文章(Young等,2013)。在口语理解方面,主要方法从第一阶段基于规则或模板的方法转移到生成模型,如隐马尔科夫模型(HMMs)(Wang等,2011),再到判别模型,如条件随机场(Tur和Deng,2011)。

同样,在语音识别领域,从20世纪80年代早期到2010年左右,该领域主要由机器学习(浅)范式主导,使用基于与高斯混合模型集成的HMM的统计生成模型,以及不同版本的泛化方面(Baker等,2009;Deng和O’Shaughnessy,2003;Rabiner和Juang,1993)。广义HMMs的许多版本是基于统计和神经网络的隐藏动态模型(Deng,1998;Bridle等,1998;Deng和Yu,2007)。前者采用EM和扩展卡尔曼滤波算法来学习模型参数(Ma和Deng,2004;Lee等,2004);后者使用了反向传播(Picone等,1999)。它们都广泛地利用了多个潜在的表示层来生成语音波形,遵循人类语音感知中长期存在的通过合成进行分析的框架。更重要的是,将这种“深层”生成过程转化为端到端判别过程的对应,引起了深度学习第一次在工业上的成功(Deng等,2010,2013;Hinton等,2012),形成了第三阶段的语音识别和NLP的驱动力,接下来我们将对此进行阐述。1.5 第三阶段:深度学习阶段

虽然在第二阶段开发的NLP系统,包括语音识别、语言理解和机器翻译,比第一阶段开发系统的表现更好,具有更高的鲁棒性,但它们远未达到人类级别的水平,还有很多地方需要改进。除了少数例外,NLP的(浅)机器学习模型通常没有足够大的容量来吸收大量的训练数据。此外,涉及的这些学习算法、方法和基础结构不够强大。所有这一切都在几年前发生了很大变化,由于深层结构化机器学习或深层学习的新范式推动(Bengio,2009;Deng和Yu,2014;LeCun等,2015;Goodfellow等,2016),引发了NLP的第三波浪潮。

在传统的机器学习中,由于特征是由人设计的,需要大量的人类专业知识,显然特征工程也存在一些瓶颈。同时,相关的浅层模型缺乏表示能力,因此缺乏形成可分解抽象级别的能力,这些抽象级别在形成观察到的语言数据时将自动分离复杂的因素。深度学习的进步是当前NLP和人工智能拐点背后的主要推动力,并且直接推动了神经网络的复兴,包括商业领域的广泛应用(Parloff,2016)。

进一步讲,尽管在第二次浪潮期间开发的许多重要的NLP任务中,判别模型(浅层)取得了成功,但它们仍然难以通过行业专家人工设计特征来涵盖语言中的所有规则。除了不完整性问题之外,这种浅层模型还面临稀疏性问题,因为特征通常仅在训练数据中出现一次,特别是对于高度稀疏的高阶特征。因此,在深度学习出现之前,特征设计已经成为统计NLP的主要障碍之一。深度学习为解决我们的特征工程问题带来了希望,其观点被称为“从头开始NLP”(Collobert等,2011),这在深度学习早期被认为是非同寻常的。这种深度学习方法利用了包含多个隐藏层的强大神经网络来解决一般的机器学习任务,而无须特征工程。与浅层神经网络和相关的机器学习模型不同,深层神经网络能够利用多层非线性处理单元的级联来从数据中学习表示以进行特征提取。由于较高级别的特征源自于较低级别的特征,因此这些级别构成了概念上的层次结构。

深度学习起源于人工神经网络,可以将其视为受生物神经系统启发的细胞类型的级联模型。随着反向传播算法的出现(Rumelhart等,1986),从零开始训练深度神经网络在20世纪90年代受到了广泛的关注。其实在早期,由于没有大量的训练数据,也没有适当的设计模式和学习方法,在神经网络训练期间,学习信号在层与层之间传播时会随着层数呈指数级消失,难以调整深度神经网络的连接权重值,尤其是循环模式。Hinton等人最初克服了这个问题(Hinton等,2006),使用无监督的预训练,首先学习通常有用的特征检测器,然后通过监督学习进一步训练网络,进而对标记数据进行分类。因此,可以使用低级表示来学习高级表示的分布。这项开创性的工作标志着神经网络的复兴。此后各种网络架构被提出并开发出来,包括深度信念网络(deep belief networks)(Hinton等,2006)、栈式自动编码器(stacked auto-encoders)(Vincent等,2010)、深度玻尔兹曼机(deep Boltzmann machines)(Hinton和Salakhutdinov,2012)、深度卷积神经网络(Krizhevsky等,2012)、深度堆叠网络(deep stacking networks)(Deng等,2012)以及深度Q网络(Mnih等,2015)。2010年以来,深度学习能够发现高维数据中复杂的结构,已成功应用于人工智能的各种实际任务中,尤其是语音识别(Yu等,2010;Hinton等,2012)、图像分类(Krizhevsky等,2012;He等,2016)和NLP。

语音识别是NLP的核心任务之一,且它在工业NLP实际应用中受到深度学习很大的影响,所以我们这里对此进行一些解读。深度学习在大规模语音识别中的工业应用在2010年左右开始起飞。相关工作是由学术界和产业界合作发起的,最初的成果是在2009年NIPS语音识别和相关应用的深度学习研讨会上发布的。这次研讨会的目的是语音深层生成模型的局限性,以及大计算、大数据时代需要对深层神经网络进行认真研究的可能性。当时认为,使用基于对比散度学习算法(Contrastive Divergence Learning Algorithm)的深度信念网络生成模型进行DNNs预处理,可以克服20世纪90年代神经网络遇到的主要困难(Dahl等,2011;Mohamed等,2009)。然而,在微软早期关于这项的研究中,人们发现,没有对比散度预训练,而是使用大量的训练数据,连同深层神经网络,这些深层神经网络设计成具有相应的大型、上下文相关的输出层,并且经过精心的工程设计,可以获得比当时最先进的(浅)机器学习系统显著更低的识别误差(Yu等,2010,2011;Dahl等,2012)。北美的其他几个主要语音识别研究小组(Hinton等,2012年;Deng等,2013年)以及随后一些海外研究小组很快就证实了这一发现。此外,还发现这两种类型系统产生的识别错误的本质是不同的,这为如何将深度学习集成到现有的由主要参与者在语音识别中部署的高效运行的语音解码系统提供了技术支持(Yu和Deng,2015;Abdel-Hamid等,2014;Xiong等,2016;Saon等,2017)。如今,应用于各种形式的深层神经网络的反向传播算法被统一应用于所有当前最先进的语音识别系统(Yu和Deng,2015;Amodei等,2016;Saon等,2017),以及所有主要的商业语音识别系统——微软Cortana、Xbox、Skype翻译、亚马逊Alexa、谷歌助理、苹果Siri、百度小度和iFlyTek语音搜索等——都基于深度学习方法。

2010年、2011年语音识别的惊人成功预示着第三波NLP和人工智能的到来。随着深度学习在语音识别领域的成功,计算机视觉(Krizhevsky等,2012)和机器翻译(Bahdanau等,2015)也很快被类似的深度学习范式所取代。特别是,虽然早在2001年就开发了强大的词汇神经词嵌入技术(Bengio等,2001,Bengio等人在2001年发表在NIPS上的文章《A Neural Probabilistic Language Model》,现在多数看到的是他们在2003年投到JMLR上的同名论文),但直到十多年后,由于大数据的可用性和计算机更快的计算能力,它才被证明在实际大规模场景下具有真正的价值(Mikolov等,2013)。此外,还有大量的其他NLP应用,如图像字幕(Karpathy和Fei-Fei,2015;Fang等,2015;Gan等人,2017)、视觉问答(Fei-Fei和Perona,2016)、语音理解(Mesnil等,2013)、网络搜索(Huang等,2013)和推荐系统;由于深度学习的广泛应用,也有许多非NLP任务,像药物发现和毒理学、客户关系管理、手势识别、医学信息学、广告、医学图像分析、机器人、无人驾驶车辆和电子竞技游戏(例如,雅达利Atari、Go、扑克和最新的DOTA2)等。

在基于文本的NLP应用领域,机器翻译可能受到深度学习的影响最大。当前,在实际应用中表现最佳的机器翻译系统是基于深度神经网络的模式,例如,谷歌于2016年9月宣布开发第一阶段的神经网络机器翻译,而微软在2个月后发表了类似的声明。Facebook已经致力于神经网络机器翻译一年左右,到2017年8月,它正在全面部署。最近,谷歌发布了机器翻译领域最强的BERT的多语言模型。BERT的全称是Bidirectional Encoder Representations from Transformers,是一种预训练语言表示的最新方法。

BERT在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩:两个衡量指标上全面超越人类,而且在11种不同NLP测试中同样给出了最好的成绩,其中包括将GLUE基准推至80.4%(绝对改进率7.6%),MultiNLI准确度达到86.7%(绝对改进率5.6%)等。对于机器翻译的解读,本书也会在第11章进行深入探讨。

在将深度学习应用于NLP问题的过程中,近年来出现的两个重要技术突破是序列到序列学习(Sutskevar等,2014)和注意力建模(Bahdanau等,2015)。序列到序列学习引入了一个强大的思想,即利用循环网络以端到端的方式进行编码和解码。虽然注意力建模最初是为了解决对长序列进行编码的困难,但随后的发展显然扩展了它的功能,能够对任意两个序列进行高度灵活的排列,且可以与神经网络参数一起进行学习。与基于统计学习和单词\短语的局部表示的最佳系统相比,序列到序列学习和注意力机制的关键思想提高了基于分布式嵌入的神经网络机器翻译的性能。在这一成功之后不久,这些概念也被成功地应用到其他一些与NLP相关的任务中,例如图像字幕生成(Karpathy和Fei-Fei,2015;Devlin等,2015)、语音识别(Chorowski等,2015)、句法解析、文本理解、问答系统等。

其实,基于神经网络的深度学习模型通常比早期开发的传统机器学习模型更易于设计。在许多应用中,以端到端的方式同时对模型的所有部分执行深度学习,从特征提取一直到预测。促成神经网络模型简化的另一个因素是相同模型构建的模块(例如不同类型的层)通常也可以适用于许多不同的任务。另外,还开发了软件工具包,以便更快更有效地实现这些模型。基于这些原因,深度神经网络现在是大型数据集(包括NLP任务)上的各种机器学习和人工智能任务的主要选择方法。

尽管深度学习已经被证明能够以革命性的方式对语音、图像和视频进行重塑处理,并且在许多实际的NLP任务中取得了经验上的成功,在将深度学习与基于文本的NLP进行交叉时,但其效果却不那么明显。在语音、图像和视频处理中,深度学习通过直接从原始感知数据中学习高级别概念,有效地解决了语义鸿沟问题。然而,在NLP中,研究人员在形态学、句法和语义学上提出了更强大的理论和结构化模型,提炼出了理解和生成自然语言的基本机制,但这些机制与神经网络并不容易兼容。与语音、图像和视频信号相比,从文本数据中学习到的神经表征似乎不能同样直接洞察自然语言。因此,将神经网络特别是具有复杂层次结构的神经网络应用于NLP,近年来得到了越来越多的关注,也已经成为NLP和深度学习社区中最活跃的领域,并取得了显著的进步(Deng,2016;Manning和Socher,2017)。1.6 NLP中深度学习的局限性

目前,尽管深度学习在NLP任务中取得了巨大的成功,尤其是在语音识别/理解、语言建模和机器翻译方面,但目前仍然存在着一些巨大的挑战。目前基于神经网络作为黑盒的深度学习方法普遍缺乏可解释性,甚至是远离可解释性,而在NLP的理论阶段建立的“理性主义”范式中,专家设计的规则自然是可解释的。在现实工作任务中,其实是迫切需要从“黑盒”模型中得到关于预测的解释,这不仅仅是为了改进模型,也是为了给系统使用者提供有针对性的合理建议(Koh和Liang,2017)。

在许多应用中,深度学习方法已经证明其识别准确率接近或超过人类,但与人类相比,它需要更多的训练数据、功耗和计算资源。从整体统计的角度来看,其精确度的结果令人印象深刻,但从个体角度来看往往不可靠。而且,当前大多数深度学习模型没有推理和解释能力,使得它们容易遭受灾难性失败或攻击,而没有能力预见并因此防止这类失败或攻击。另外,目前的NLP模型没有考虑到通过最终的NLP系统制定和执行决策目标及计划的必要性。当前NLP中基于深度学习方法的一个局限性是理解和推理句子间关系的能力较差,尽管在句子中的词间和短语方面已经取得了巨大进步。

目前,在NLP任务中使用深度学习时,虽然我们可以使用基于(双向)LSTM的标准序列模型,且遇到任务中涉及的信息来自于另外一个数据源时可以使用端到端的方式训练整个模型,但是实际上人类对于自然语言的理解(以文本形式)需要比序列模型更复杂的结构。换句话说,当前NLP中基于序列的深度学习系统在利用模块化、结构化记忆和用于句子及更大文本进行递归、树状表示方面还存在优化的空间(Manning,2016)。

为了克服上述挑战并实现NLP作为人工智能核心领域的更大突破,有关NLP和深度学习研究人员需要在基础研究和应用研究方面做出一些里程碑式的工作。1.7 NLP的应用场景

目前,随着自然语言处理领域研究越来越深入,其应用的行业越来越广。比如在文本和语音方面的应用。其中,我们可以看到NLP在文本方面的应用有基于自然语言理解的智能搜索引擎和智能检索、智能机器翻译、自动摘要与文本综合、文本分类与文件整理、智能自动作文系统、智能判卷系统、信息过滤与垃圾邮件处理、文学研究与古文研究、语法校对、文本数据挖掘与智能决策以及基于自然语言的计算机程序设计等。在语音方面的应用有机器同声传译、智能远程教学与答疑、语音控制、智能客户服务、机器聊天与智能参谋、智能交通信息服务(ATIS)、智能解说与体育新闻实时解说、语音挖掘与多媒体挖掘、多媒体信息提取与文本转化以及对残疾人智能帮助系统等。下面我们给出一些常见的应用场景。1. 搜索引擎

在搜索引擎中,我们常常使用词义消歧、指代消解、句法分析等自然语言处理技术,以便更好地为用户提供更加优质的服务。因为我们的搜索引擎不仅仅是为用户提供所寻找的答案,还要做好用户与实体世界连接的贴心服务。搜索引擎最基本的模式就是自动化地聚合足够多的信息,对之进行解析、处理和组织,响应用户的搜索请求并找到对应结果再返回给用户。这里涉及的每一个环节,都需要用到自然语言处理技术。例如,我们日常生活中使用百度搜索“天气”“XX公交线路”“火车票”等这样略显模糊的需求信息,一般情况下都会得到满意的搜索结果。自然语言处理技术在搜索引擎领域中有了更多的应用,才使得搜索引擎能够快速精准地返回给用户所要的搜索结果。当然,另一方面,正是谷歌和百度这样IT巨头商业上的成功,推进了自然语言处理技术的不断进步。2. 推荐系统

早在1992年Goldberg就首次给出了一个推荐系统:Tapestry。它其实只是一个个性化的邮件推荐系统,首次提出了协同过滤的思想,利用用户的标注和行为信息对邮件进行重排序。推荐系统依赖的是数据、算法、人机交互等环节的相互配合,其中使用了数据挖掘、信息检索和计算统计学等技术。我们使用推荐系统的目的是关联用户和一些信息,协助用户找到对其有价值的信息,且让这些信息能够尽快呈现在对其感兴趣的用户面前,从而实现精准推荐。

推荐系统在音乐电影的推荐、电子商务产品推荐、个性化阅读、社交网络好友推荐等场景发挥着重要的作用,美国Netflix中2/3的电影是因为被推荐而观看的,Google News利用推荐系统提升了38%的点击率,Amazon的销售中推荐占比高达35%。3. 机器翻译

机器翻译是自然语言处理中最为人知的应用场景,一般是将机器翻译作为某个应用的组成部分,例如跨语言的搜索引流等。目前以IBM、谷歌、微软为代表的国外科研机构和企业均相继成立机器翻译团队,专门从事智能翻译研究。例如,IBM于2009年9月推出ViaVoiceTranslator机器翻译软件,为自动化翻译奠定了基础;2011年开始,伴随着语音识别、机器翻译技术、DNN(深度神经网络)技术的快速发展和经济全球化的需求,口语自动翻译研究已成为当今信息处理领域新的研究热点,Google于2011年1月正式在其Android系统上推出了升级版的机器翻译服务;微软的Skype于2014年12月宣布推出实时机器翻译的预览版、支持英语和西班牙语的实时翻译,并宣布支持40多种语言的文本实时翻译功能。

尤其值得注意的是,在“一带一路”这一发展背景下,合作沟通会涉及60多个国家、53种语言,此时机器翻译的技术应用显得尤为重要,语言的畅通是“一带一路”倡议得以实施的重要基础。机器翻译涉及语义分析、上下文环境等诸多挑战,其发展道路还有很长一段路要走。4. 聊天机器人

聊天机器人是指能通过聊天App、聊天窗口或语音唤醒App进行交流的计算机程序,是被用来解决客户问题的智能数字化助手,其特点是成本低、高效且持续工作。例如,Siri、小娜等对话机器人就是一个应用场景。除此之外,聊天机器人在一些电商网站有着很实用的价值,可以充当客服角色,例如京东客服JIMI。有很多基本的问题,其实并不需要联系人工客服来解决。通过应用智能问答系统,可以排除掉大量的用户问题,比如商品的质量投诉、商品的基本信息查询等程式化问题,在这些特定的场景中,特别是会被问到高度可预测的问题中,利用聊天机器人可以节省大量的人工成本。图1-2给出了一些聊天机器人产品。5. 知识图谱

知识图谱能够描述复杂的关联关系,它的应用极为广泛,最为人所知的就是被用在搜索引擎中丰富搜索结果,并为搜索结果提供结构化结果来体现关联性,这也是谷歌提出知识图谱的初衷。同时微软小冰、苹果Siri等聊天机器人中也加入了知识图谱的应用。IBM Watson是问答系统中应用知识图谱较为典型的例子。按照应用方式,可以将知识图谱的应用分为语义搜索、知识问答以及基于知识的大数据分析和决策等。图1-2 部分聊天机器人示意图

语义搜索利用建立大规模知识库对搜索关键词和文档内容进行语义标注,改善搜索结果,如谷歌、百度等在搜索结果中嵌入知识图谱。知识问答是基于知识库的问答,通过对提问句子的语义分析,将其解析为结构化的询问,在已有的知识库中获取答案。在大数据的分析和决策方面,知识图谱起到了辅助作用,典型应用是美国Netflix公司利用其订阅用户的注册信息以及观看行为构建的知识图谱反映出英剧版《纸牌屋》很受欢迎,于是拍摄了美剧《纸牌屋》,大受追捧。知识图谱展示如图1-3所示。图1-3 知识图谱展示图1.8 NLP的发展前景

随着深度学习时代的来临,神经网络成为一种强大的机器学习工具,并使得自然语言处理取得了许多突破性发展,如情感分析、智能问答、机器翻译等领域都在飞速发展。下面我们梳理一些自然语言处理近期热点和全球热点的情况。1. 文本理解与推理:浅层分析向深度理解迈进

谷歌等公司已经推出了以阅读理解作为深入探索自然语言理解的平台。

文本理解和推理是自然语言处理的重要部分,现在的机器软件已经可以根据文本的上下文来分辨代词等指示词,这是文本理解与推理从浅层分析向深度理解迈进的重要一步。2. 对话机器人:实用化、场景化

从最初2012年到2014年的语音助手,到2014年起逐渐出现的聊天机器人微软小冰、百度小度,再到2016年哈尔滨工业大学SCIR的笨笨,对话机器人越来越智能。最初的语音助手可以听得到但是听不懂,之后的对话机器人可以听得懂但是实用性却不强,现在对话机器人更多的是和场景结合,即在特定场景做有用的人机对话。3. NLP+行业:与专业领域深度结合

银行、电器、医药、司法、教育等领域对自然语言处理的需求都非常多。自然语言处理与各行各业的结合越来越紧密,专业化的服务趋势逐渐增强。可以预测,自然语言处理首先会在信息准备充分并且服务方式本身就是知识和信息的领域产生突破,例如医疗、金融、教育和司法领域。4. 学习模式:先验语言知识与深度学习结合

自然语言处理中学习模式有一个较为明显的变化。在浅层到深层的学习模式中,浅层学习是分步骤的,深度学习的方法贯穿在浅层分析的每个步骤中,由各个步骤连接而成。而直接的深度学习则是直接从端到端,人为贡献的知识在深度学习中所占的比重大幅度减小。但如何将深度学习应用于自然语言处理需要进行更多的研究和探索,针对不同任务的不同字词表示,将先验知识和深度学习相结合是未来的一个发展趋势。5. 文本情感分析:事实性文本到情感文本

之前的研究主要是新闻领域的事实性文本,现在情感文本分析更受重视,并且在商业和政府舆情上可以得到很好的应用。例如,2017年新浪微舆情和哈尔滨工业大学推出“情绪地图”,网民可以登录新浪舆情官方网站查询任何关键词的“情绪地图”,这是语义情绪分析在舆情分析产业上的首次正式应用。1.9 总结

在本章中,为了建立本书的基本框架,我们首先解释了为什么我们需要NLP,然后讨论了NLP的各类任务。对于NLP的来龙去脉,我们又从理性主义和经验主义到当前深层学习浪潮的三次自然语言处理浪潮出发,回顾了自然语言处理领域几十年来的历史发展情况,以便从历史发展中提炼出有助于指导未来方向的见解。接着,我们对于当前NLP中深度学习的局限性进行了解读。最后,我们对于NLP中的应用场景和前景做了简述。

首先,我们通过一个日常生活中常见的寻找小吃店位置的例子开启了解读NLP的篇章,并对NLP主要的工作任务进行了初步划分,包括标记化、词义消歧、词性标注、实体命名识别、句子或概要分类、文本生成、问答系统、机器翻译等。

其次,通过对于NLP发展的三个阶段的分析,我们知道当前的NLP深度学习技术是从前两波发展起来的一种NLP技术概念和范式上的革新。这场革新的关键支撑包括通过嵌入对语言实体(子单词、单词、短语、句子、段落、文档等)的分布式表示、嵌入引起的语义概括、语言的大跨度深层序列建模、能够从低到高有效表达语言水平的层次网络以及端到端的深度学习方法,以共同解决许多NLP任务中的问题。在深度学习浪潮出现之前,这些都是不可能实现的,这不仅是因为之前的两次发展浪潮缺乏大数据和强大的计算能力,更重要的是在于近年来深度学习范式出现了之前缺少的正确框架。

接着,我们对于当前NLP领域深度学习方面的局限性进行了解

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载