基本信息
- 作者: (以)约阿夫·戈尔德贝格(Yoav Goldberg) (意)朱塞佩·博纳科尔索
- 译者: 车万翔 郭江 张伟男 刘铭 罗娜
- 出版社:机械工业出版社
- ISBN:9787008014307
- 上架时间:2018-5-30
- 出版日期:2018 年5月
- 开本:16开
- 版次:1-1
- 所属分类:计算机 > 软件与程序设计 > 综合 > 高级程序语言设计

内容简介
计算机书籍
基于深度学习的自然语言处理
本书重点介绍了神经网络模型在自然语言处理中的应用。首先介绍有监督的机器学习和前馈神经网络的基本知识,如何将机器学习方法应用在自然语言处理中,以及词向量表示(而不是符号表示)的应用。然后介绍更多专门的神经网络结构,包括一维卷积神经网络、循环神经网络、条件生成模型和基于注意力的模型。最后讨论树形网络、结构化预测以及多任务学习的前景。
机器学习算法
本书介绍了数据科学领域常用的所有重要机器学习算法以及TensorFlow和特征工程等相关内容。涵盖的算法包括线性回归、逻辑回归、支持向量机、朴素贝叶斯、k均值、随机森林等,这些算法可以用于监督学习、非监督学习、强化学习或半监督学习。
在本书中,你将学会如何使用这些算法来解决所遇到的问题,并了解这些算法的工作方式。本书还将介绍自然语言处理和推荐系统,这些内容将帮助大家进行多种算法的实践。
阅读完本书后,面对你所遇到的问题,你将了解如何选择合适的聚类、分类或回归的机器学习算法。
作译者
本书的作者Yoav Goldberg现就职于以色列巴伊兰大学,是自然语言处理领域一位非常活跃的青年学者。Goldberg博士期间的主要研究方向为依存句法分析,随着深度学习的兴起,他也将研究兴趣转移至此,并成功地将该技术应用于依存句法分析等任务。与此同时,他在理论上对词嵌入和传统矩阵分解方法的对比分析也具有广泛的影响力。另外,他还是DyNet深度学习库的主要开发者之一。可见,无论在理论上还是实践上,他对深度学习以及自然语言处理都具有非常深的造诣。这些都为本书的写作奠定了良好的基础
机器学习算法
作者简介
Giuseppe Bonaccorso是一位拥有12年经验的机器学习和大数据方面的专家。他拥有意大利卡塔尼亚大学电子工程专业工程学硕士学位,并在意大利罗马第二大学、英国埃塞克斯大学深造过。在他的职业生涯中,担任过公共管理、军事、公用事业、医疗保健、诊断学和广告等多个业务领域的IT工程师,使用Java、Python、Hadoop、Spark、Theano和TensorFlow等多种技术进行过项目开发与管理。他的主要研究兴趣包括人工智能、机器学习、数据科学和精神哲学。
审校人员简介
Manuel Amunategui是SpringML公司数据科学项目副总裁。SpringML是一家初创公司,提供Google Cloud、TensorFlow和Salesforce企业解决方案。在此之前,他曾在华尔街担任量化开发人员,为一家大型股票期权交易商工作,之后担任微软的软件开发人员。他拥有预测分析和国际管理硕士学位。
他是数据科学爱好者、博主(http://amunategui.github.io),担任Udemy.com和O'Reilly Media的培训师,以及Packt出版社的技术审校人员。
Doug Ortiz是ByteCubed的一名高级大数据架构师,他在整个职业生涯中一直从事企业解决方案方面的架构、开发和集成工作。他帮助企业通过一些现有的和新兴的技术,诸如Microsoft BI Stack、Hadoop、NoSQL数据库、SharePoint以及相关工具和技术,重新发现和利用未充分利用的数据。他也是Illustris公司的创始人,可通过ougortiz@illustris.org与他联系。
在专业领域,他有多平台和产品集成、大数据、数据科学、R和Python方面的丰富经验。Doug还帮助企业深入了解并重视对数据和现有资源的投资,将其转化为有用的信息来源。他利用独特和创新的技术改进、拯救并架构了多个项目。他的爱好是瑜伽和潜水。
Lukasz Tracewski是一名软件开发人员和科学家,专攻机器学习、数字信号处理和云计算。作为开源社区的积极成员,他也是众多研究类出版物的作者。他曾在荷兰一家高科技产业作为软件科学家工作了6年,先后在光刻和电子显微镜方面帮助构建达到生产量与物理精度极限的算法及机器。目前,他在金融行业领导着一支数据科学团队。
4年来,Lukasz一直在自然保护领域利用他的专业技能提供无偿服务,如从录音或卫星图像分析中进行鸟类分类等。他在业余时间从事濒危物种的保护工作。
目录
译者序
前言
致谢
第1章引言
1.1自然语言处理的挑战
1.2神经网络和深度学习
1.3自然语言处理中的深度学习
1.4本书的覆盖面和组织结构
1.5本书未覆盖的内容
1.6术语
1.7数学符号
注释
第一部分有监督分类与前馈神经网络
第2章学习基础与线性模型
2.1有监督学习和参数化函数
2.2训练集、测试集和验证集
2.3线性模型
2.3.1二分类
2.3.2对数线性二分类
译者序
自然语言处理(Natural Language Processing,NLP)主要研究用计算机来处理、理解以及运用人类语言(又称自然语言)的各种理论和方法,属于人工智能领域的一个重要研究方向,是计算机科学与语言学的交叉学科,又常被称为计算语言学。随着互联网的快速发展,网络文本尤其是用户生成的文本呈爆炸性增长,为自然语言处理带来了巨大的应用需求。同时,自然语言处理研究的进步,也为人们更深刻地理解语言的机理和社会的机制提供了一种新的途径,因此具有重要的科学意义。
然而,自然语言具有歧义性、动态性和非规范性,同时语言理解通常需要丰富的知识和一定的推理能力,这些都给自然语言处理带来了极大的挑战。目前,统计机器学习技术为以上问题提供了一种可行的解决方案,成为研究的主流,该研究领域又被称为统计自然语言处理。一个统计自然语言处理系统通常由两部分组成,即训练数据(也称样本)和统计模型(也称算法)。
但是,传统的机器学习方法在数据获取和模型构建等诸多方面都存在严重的问题。首先,为获得大规模的标注数据,传统方法需要花费大量的人力、物力、财力,雇用语言学专家进行繁琐的标注工作。由于这种方法存在标注代价高、规范性差等问题,很难获得大规模、高质量的人工标注数据,由此带来了严重的数据稀疏问题。其次,在传统的自然语言处理模型中,通常需要人工设计模型所需要的特征以及特征组合。这种人工设计特征的方式,需要开发人员对所面对的问题有深刻的理解和丰富的经验,这会消耗大量的人力和时间,即便如此也往往很难获得有效的特征。
近年来,如火如荼的深度学习技术为这两方面的问题提供了一种可能的解决思路,有效推动了自然语言处理技术的发展。深度学习一般是指建立在含有多层非线性变换的神经网络结构之上,对数据的表示进行抽象和学习的一系列机器学习算法。该方法已对语音识别、图像处理等领域的进步起到了极大的推动作用,同时也引起了自然语言处理领域学者的广泛关注。
深度学习主要为自然语言处理的研究带来了两方面的变化:一方面是使用统一的分布式(低维、稠密、连续)向量表示不同粒度的语言单元,如词、短语、句子和篇章等;另一方面是使用循环、卷积、递归等神经网络模型对不同的语言单元向量进行组合,获得更大语言单元的表示。除了不同粒度的单语语言单元外,不同种类的语言甚至不同模态(语言、图像等)的数据都可以通过类似的组合方式表示在相同的语义向量空间中,然后通过在向量空间中的运算来实现分类、推理、生成等各种任务并应用于各种相关的任务之中。
虽然将深度学习技术应用于自然语言处理的研究目前非常热门,但是市面上还没有一本书系统地阐述这方面的研究进展,初学者往往通过学习一些在线课程(如斯坦福的CS224N课程)来掌握相关的内容。本书恰好弥补了这一不足,深入浅出地介绍了深度学习的基本知识及各种常用的网络结构,并重点介绍了如何使用这些技术处理自然语言。
本书的作者Yoav Goldberg现就职于以色列巴伊兰大学,是自然语言处理领域一位非常活跃的青年学者。Goldberg博士期间的主要研究方向为依存句法分析,随着深度学习的兴起,他也将研究兴趣转移至此,并成功地将该技术应用于依存句法分析等任务。与此同时,他在理论上对词嵌入和传统矩阵分解方法的对比分析也具有广泛的影响力。另外,他还是DyNet深度学习库的主要开发者之一。可见,无论在理论上还是实践上,他对深度学习以及自然语言处理都具有非常深的造诣。这些都为本书的写作奠定了良好的基础。
由于基于深度学习的自然语言处理是一个非常活跃的研究领域,新的理论和技术层出不穷,因此本书很难涵盖所有的最新技术。不过,本书基本涵盖了目前已经被证明非常有效的技术。关于这方面的进展,读者可以参阅自然语言处理领域最新的论文。
我们要感谢对本书的翻译有所襄助的老师和学生。本书由哈尔滨工业大学的车万翔、郭江、张伟男、刘铭四位老师主译,刘挺教授主审。侯宇泰、姜天文、李家琦、覃立波、宋皓宇、滕德川、王宇轩、向政鹏、张杨子、郑桂东、朱海潮、朱庆福等对本书部分内容的初译做了很多工作,机械工业出版社华章公司策划编辑朱劼和姚蕾在本书的整个翻译过程中提供了许多帮助,在此一并予以衷心感谢。
译文虽经多次修改和校对,但由于译者的水平有限,加之时间仓促,疏漏及错误在所难免,我们真诚地希望读者不吝赐教,不胜感激。
车万翔
2017年10月于哈尔滨工业大学
机器学习算法
作为一门多领域交叉学科,人工智能近年来引起了越来越多的关注,也日益广泛地应用于工业及日常生活中。作为未来能真正意义上实现人工智能的方向之一,机器学习涵盖了包括概率、统计、代数、优化等在内的大量基础知识以及数量繁多的算法,形成了庞大的理论知识体系。对机器学习方法进行实现并封装的软件包,使得人们可以在了解基础理论的基础上,快速地将机器学习的现有技术应用于所关注的领域。
作为一种解释型语言,Python简单易学,开发生态成熟,有很多非常有用的库可以调用,无论是初学者还是专业的程序员都可以利用它方便地编写出所需要的程序。同时,Python可以方便地调用很多第三方库,从而给程序员带来了很大的便捷性。基于此,Python拥有庞大的用户群体以及繁荣的社区,这反过来也促进了Python的进一步发展。
与机器学习领域很多偏重于理论的图书相比,本书在简明扼要地阐明基本原理的基础上,侧重于介绍如何在Python环境下使用机器学习方法库,并通过大量实例清晰形象地展示了不同场景下机器学习方法的应用。从这个角度来说,本书是一本使机器学习算法通过Python实现真正“落地”的书,而这无疑将给想要或致力于机器学习应用的读者带来方法理解和实现上的巨大裨益。
感谢华东理工大学信息科学与工程学院的部分研究生,包括金宇尘、何翔、陈鹏、李福杰、余刚、骆楠、戚鹏程等,他们在本书的翻译过程中做了一些辅助性的工作。感谢崔冬等软件开发人员,他们在本书的审阅过程中提出了建设性意见和建议。这里还要特别感谢机械工业出版社张梦玲编辑的大力引荐和无私帮助。
限于本人水平,对本书中部分内容的理解或中文语言的表达难免存在不当之处,敬请读者批评指正,以便能够不断改进。
罗娜
前言
自然语言处理(Natural Language Processing,NLP)这一术语指的是对人类语言进行自动的计算处理。它包括两类算法:将人类产生的文本作为输入;产生看上去很自然的文本作为输出。由于人类产生的文本每年都在不停增加,同时人们期望使用人类的语言与计算机进行交流,因此人们对该类算法的需求在不断增加。然而,由于人类语言固有的歧义、不断变化以及病态性(not well defined),导致自然语言处理极具挑战性。
自然语言本质上是符号化的,因此人们最开始也尝试使用符号化的方式处理语言,即基于逻辑、规则以及本体的方法。然而,自然语言具有很强的歧义性和可变性,这就需要使用统计的方法。事实上,如今自然语言处理的主流方法都是基于统计机器学习(Statistical Machine Learning)的。过去十几年,核心的NLP技术都是以有监督学习的线性模型为主导,核心算法如感知机、线性支持向量机、逻辑回归等都是在非常高维和稀疏的特征向量上进行训练的。
2014年左右,该领域开始看到一些从基于稀疏向量的线性模型向基于稠密向量的非线性神经网络模型(Nonlinear Neural Network Model)切换的成功案例。一些神经网络技术是线性模型的简单推广,可用于替代线性分类器。另一些神经网络技术更进一步提出了新的建模方法,这需要改变现有的思维方式。特别是一系列基于循环神经网络(Recurrent Neural Network,RNN)的方法,减轻了对马尔可夫假设的依赖性,这曾普遍用于序列模型中。循环神经网络可以处理任意长度的序列数据,并生成有效的特征抽取器。这些进展导致了语言模型、自动机器翻译以及其他一些应用的突破。
虽然神经网络方法很强大,但是由于各种原因,入门并不容易。本书中,我将试图为自然语言处理的从业者以及刚入门的读者介绍神经网络的基本背景、术语、工具和方法论,帮助他们理解将神经网络用于自然语言处理的原理,并且能够应用于他们自己的工作中。我也希望为机器学习和神经网络的从业者介绍自然语言处理的基本背景、术语、工具以及思维模式,以便他们能有效地处理语言数据。
最后,我希望本书能够作为自然语言处理以及机器学习这两个领域新手的一个较好的入门指导。
目标读者
本书的目标读者应具有计算机或相关领域的技术背景,他们想使用神经网络技术来加速自然语言处理的研究。虽然本书的主要读者是自然语言处理和机器学习领域的研究生,但是我试图(通过介绍一些高级材料)使自然语言处理或者机器学习领域的研究者,甚至对这两个领域都不了解的人也能阅读本书,后者显然需要更加努力。
虽然本书是自包含的,我仍然假设读者具有数学知识,特别是本科水平的概率、代数和微积分以及基本的算法和数据结构知识。有机器学习的先验知识会很有帮助,但这并不是必需的。
本书是对一篇综述文章[Goldberg, 2016]的扩展,内容上进行了重新组织,提供了更宽泛的介绍,涵盖了一些更深入的主题,由于各种原因,这些主题没有在那篇综述文章中提及。本书也包括一些综述文章中没有的,将神经网络用于语言数据的更具体的应用实例。本书试图对那些没有自然语言处理和机器学习背景的读者也能有用,然而综述文章假设他们对这些领域已经具备了一些知识。事实上,熟悉2006年到2014年期间自然语言处理实践的读者,可能发现期刊版本读起来更快并且对于他们的需求组织得更好,这是因为那段时期人们大量使用基于线性模型的机器学习技术。然而,这些读者可能也会愿意阅读关于词嵌入的章节(第10和11章)、使用循环神经网络有条件生成的章节(第17章),以及结构化预测和多任务学习(Multitask Learning,MTL)的章节(第19和20章)。
本书的焦点
本书试图是自包含的,因此将不同的方法在统一的表示和框架下加以表述。然而,本书的主要目的是介绍神经网络(深度学习)的机制及其在语言数据上的应用,而不是深入介绍机器学习理论和自然语言处理技术。如果需要这些内容,建议读者参考外部资源。
类似地,对于那些想开发新的神经网络机制的人,本书不是一个全面的资源(虽然本书可能是一个很好的入门)。确切地讲,本书的目标读者是那些对现有技术感兴趣,并且想将其以创造性的方式应用于他们喜欢的语言处理任务的人。
扩展阅读对神经网络更深入、一般性的讨论以及它们背后的理论、最新的优化方法和其他主题,读者可以参考其他资源。强烈推荐Bengio等人[2016]的书。
对于更友好而且更严密的实用机器学习介绍,强烈推荐Daumé III [2015]的免费书。对于机器学习更理论化的介绍,参见ShalevShwartz和BenDavid [2014]的免费书以及Mohri等人[2012]的教科书。
对于自然语言处理的更深入介绍参见Jurafsky和Martin [2008]的书。Manning等人[2008]的信息检索书也包括语言数据处理的一些相关信息。
最后,如要快速了解语言学的背景,Bender [2013]的书提供了简单但全面的介绍,对于有计算思维的读者有指导意义。Sag等人[2003]的介绍性语法书的前几章也值得一读。
本书写作之际,神经网络和深度学习的研究也在快速进展之中。最好的方法在不断变化,所以我不能保证介绍的都是最新、最好的方法。因此,我会专注于涵盖更确定、更鲁棒的技术(它们在很多场景下都被证明有效),同时选取那些还没完全发挥作用但有前途的技术。
Yoav Goldberg
2017年3月