自然语言处理:基于预训练模型的方法
  • 推荐0
  • 收藏5
  • 浏览971

自然语言处理:基于预训练模型的方法

车万翔 (作者) 

  • 丛  书:人工智能前沿技术丛书
  • 书  号:978-7-121-41512-8
  • 出版日期:2021-07-16
  • 页  数:320
  • 开  本:16(170*240)
  • 出版状态:上市销售
  • 维护人:宋亚东
纸质版 ¥118.00
自然语言处理被誉为“人工智能皇冠上的明珠”。深度学习等技术的引入为自然语言处理技术带来了一场革命,尤其是近年来出现的基于预训练模型的方法,已成为研究自然语言处理的新范式。本书在介绍自然语言处理、深度学习等基本概念的基础上,重点介绍新的基于预训练模型的自然语言处理技术。本书包括基础知识、预训练词向量和预训练模型三大部分:基础知识部分介绍自然语言处理和深度学习的基础知识和基本工具;预训练词向量部分介绍静态词向量和动态词向量的预训练方法及应用;预训练模型部分介绍几种典型的预训练语言模型及应用,以及预训练模型的最新进展。除了理论知识,本书还有针对性地结合具体案例提供相应的PyTorch 代码实现,不仅能让读者对理论有更深刻的理解,还能快速地实现自然语言处理模型,达到理论和实践的统一。
本书既适合具有一定机器学习基础的高等院校学生、研究机构的研究者,以及希望深入研究自然语言处理算法的计算机工程师阅读,也适合对人工智能、深度学习和自然语言处理感兴趣的学生和希望进入人工智能应用领域的研究者参考。
本书得到欧洲科学院外籍院士、清华大学人工智能研究院常务副院长孙茂松教授作序。
创新工场首席科学家、微软亚洲研究院原副院长、国际计算语言学会(ACL)主席周明,字节跳动人工智能实验室总监李航,科大讯飞执行总裁胡郁老师倾力推荐。
本书从基础知识、预训练词向量、预训练模型等几大方面全面系统地介绍了预训练语言模型技术。
书中为代表性的模型提供了规范的示例代码及实践案例。
本书采用全彩印刷,提供良好的阅读体验。
推荐序
自然语言处理的目标是使得机器具有和人类一样的语言理解与运用能力。在过去的十年里,自然语言处理经历了两次里程碑式的重要发展。第一次是深度学习的勃兴,使得传统的特征工程方法被摒弃,而基于深度神经网络的表示学习迅速成为自然语言处理的主流。第二次则是2018 年以来大规模预训练语言模型的应用,开启了基于“预训练+ 精调”的新一代自然语言处理范式。每一次的发展都为自然语言处理系统的能力带来了巨大的进步。与此同时,这些令人欣喜的发展也带给我们很多关于语言智能的更本质的思考。由车万翔等人所著的《自然语言处理:基于预训练模型的方法》一书从预训练模型的角度对这两次重要的发展进行了系统性的论述,能够帮助读者深入理解这些技术背后的原理、相互之间的联系以及潜在的局限性,对于当前学术界和工业界的相关研究与应用都具有重要的价值。
本书包括三部分,共9 章。书中从自然语言处理与神经网络的基础知识出发,沿着预训练模型的发展轨迹系统讨论了静态词向量、动态词向量,以及语言模型的预训练方法,还深入讨论了模型优化、蒸馏与压缩、生成模型、多模态融合等前沿进展,内容上兼具广度与深度。本书作者车万翔等人研发的语言技术平台LTP,是国内自然语言处理领域较早、影响力大且仍在不断发展完善的开源平台之一。LTP 的“进化”历程也对应着作者对于自然语言处理不同时期范式变迁的思考与实践——从最初发布时使用的传统机器学习方法,到基于深度学习的多任务学习框架,再到近年来发布的基于预训练模型的统一框架。可以说,本书的问世是作者多年深耕于自然语言处理领域的自然结果。
本书的一大特色是含有丰富的实践内容。作者均为活跃在科研一线的青年学者,极具实战经验。书中为代表性的模型提供了规范的示例代码以及实践指导,这对于刚刚进入自然语言处理领域并热爱实践与应用的读者而言是一份难得的学习资源。本书可以作为计算机科学、人工智能和机器学习专业的学生、研究者,以及人工智能应用开发者的参考书,也适合高校教师和研究机构的研究人员阅读。
孙茂松
欧洲科学院外籍院士
清华大学人工智能研究院常务副院长、计算机系教授

推荐语
自然语言处理被誉为“人工智能皇冠上的明珠”。近年来,以BERT、GPT 为代表
的大规模预训练语言模型异军突起,使问答、检索、摘要、阅读理解等自然语言处理任
务性能都得到了显著提升。《自然语言处理:基于预训练模型的方法》一书深入浅出地
阐述了预训练语言模型技术,全面深入地分析了它的发展方向,非常适合人工智能和自
然语言处理领域人士阅读。读者可在较短的时间内了解和掌握其关键技术并快速上手。
特此推荐!
周明
创新工场首席科学家
微软亚洲研究院原副院长
中国计算机学会副理事长
国际计算语言学会(ACL)主席(2019 年)
预训练语言模型是当今自然语言处理的核心技术。车万翔教授等人所著的本书从基础知识、预训练词向量、预训练模型等几个方面全面系统地介绍了该项技术。选题合理,立论明确,讲述清晰,出版及时。相信每一位读者都会从中获得很大的收获。向大家推荐!
李航
ACL/IEEE Fellow
字节跳动人工智能实验室总监
在运动智能和感知智能突飞猛进的发展态势下,以自然语言处理为核心的认知智能已成为人工智能极大的挑战。随着业界对认知智能重视程度的持续提升,基于预训练模型的自然语言处理方法一经提出,便快速席卷了诸多NLP 任务。本书系统地介绍了该类方法,并配套了丰富的实践案例和代码,对于从事AI 技术研究和相关行业的爱好者而言,是一本不可多得的参考学习佳作!
胡郁
科大讯飞执行总裁
前言
自然语言是人类思维的载体和交流的基本工具,也是人类区别于动物的根本标志,更是人类智能发展的重要外在体现形式。自然语言处理(Natural LanguageProcessing,NLP)主要研究用计算机理解和生成自然语言的各种理论与方法,属于人工智能领域的一个重要的甚至处于核心的地位分支。随着互联网的快速发展,网络文本规模呈爆炸性增长,为自然语言处理提出了巨大的应用需求。同时,自然语言处理研究也为人们更深刻地理解语言的机理和社会的机制提供了一条重要的途径,因此具有重要的科学意义。
自然语言处理技术经历了从早期的理性主义到后来的经验主义的转变。近十年来,深度学习技术快速发展,引发了自然语言处理领域一系列的变革。但是基于深度学习的算法有一个严重的缺点,就是过度依赖于大规模的有标注数据。2018年以来,以BERT、GPT 为代表的超大规模预训练语言模型恰好弥补了自然语言处理标注数据不足的这一缺点,帮助自然语言处理取得了一系列的突破,使得包括阅读理解在内的众多自然语言处理任务的性能都得到了大幅提高,在有些数据集上甚至达到或超过了人类水平。那么,预训练模型是如何获得如此强大的威力甚至“魔力”的呢?希望本书能够为各位读者揭开预训练模型的神秘面纱。
本书主要内容
本书内容分为三部分:基础知识、预训练词向量和预训练模型。各部分内容安排如下。
第1 部分:基础知识。包括第2~4 章,主要介绍自然语言处理和深度学习的基础知识、基本工具集和常用数据集。
第2 章首先介绍文本的向量表示方法,重点介绍词嵌入表示。其次介绍自然语言处理的三大任务,包括语言模型、基础任务和应用任务。虽然这些任务看似纷繁复杂,但是基本可以归纳为三类问题,即文本分类问题、结构预测问题和序列到序列问题。最后介绍自然语言处理任务的评价方法。
第3 章首先介绍两种常用的自然语言处理基础工具集——NLTK 和LTP。其次介绍本书使用的深度学习框架PyTorch。最后介绍自然语言处理中常用的大规模预训练数据。
第4 章首先介绍自然语言处理中常用的四种神经网络模型:多层感知器模型、卷积神经网络、循环神经网络,以及以Transformer 为代表的自注意力模型。其次介绍模型的参数优化方法。最后通过两个综合性的实战项目,介绍如何使用深度学习模型解决一个实际的自然语言处理问题。
第2 部分:预训练词向量。包括第5、6 章,主要介绍静态词向量和动态词向量两种词向量的预训练方法及应用。
第5 章介绍基于语言模型以及基于词共现两大类方法的静态词向量的预训练技术,它们能够通过自监督学习方法,从未标注文本中获得词汇级别的语义表示。最后提供对应的代码实现。
第6 章介绍基于双向LSTM 语言模型的动态词向量的预训练技术,它们能够根据词语所在的不同上下文赋予不同的词向量表示,并作为特征进一步提升下游任务的性能。最后同样提供对应的代码实现。
第3 部分:预训练模型。包括第7~9 章,首先介绍几种典型的预训练语言模型及应用,其次介绍目前预训练语言模型的最新进展及融入更多模态的预训练模型。
第7 章首先介绍两种典型的预训练语言模型,即以GPT 为代表的基于自回归的预训练语言模型和以BERT 为代表的基于非自回归的预训练语言模型,其次介绍如何将预训练语言模型应用于典型的自然语言处理任务。
第8 章主要从四个方面介绍预训练语言模型最新的进展,包括用于提高模型准确率的模型优化方法,用于提高模型表示能力的长文本处理方法,用于提高模型可用性的模型蒸馏与压缩方法,以及用于提高模型应用范围的生成模型。
第9 章在介绍语言之外,还融合更多模态的预训练模型,包括多种语言的融合、多种媒体的融合以及多种异构知识的融合等。
致谢
本书第1~4 章及第9 章部分内容由哈尔滨工业大学车万翔教授编写;第5、6 章及第8、9章部分内容由美国麻省理工学院(MIT)郭江博士后编写;第7 章及第8 章主要内容由科大讯飞主管研究员崔一鸣编写。全书由哈尔滨工业大学刘挺教授主审。
本书的编写参阅了大量的著作和相关文献,在此一并表示衷心的感谢!
感谢宋亚东先生和电子工业出版社博文视点对本书的重视,以及为本书出版所做的一切。
由于作者水平有限,书中不足及错误之处在所难免,敬请专家和读者给予批评指正。
车万翔
2021 年3 月

目录

目录
推荐序III
推荐语IV
前言V
数学符号IX
第1 章绪论1
1.1 自然语言处理的概念. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 自然语言处理的难点. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 抽象性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 组合性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.3 歧义性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.4 进化性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.5 非规范性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.6 主观性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.7 知识性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.8 难移植性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 自然语言处理任务体系. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
1.3.1 任务层级. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2 任务类别. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.3 研究对象与层次. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 自然语言处理技术发展历史. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
第2 章自然语言处理基础11
2.1 文本的表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
2.1.1 词的独热表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.2 词的分布式表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.3 词嵌入表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.4 文本的词袋表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 自然语言处理任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.1 语言模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.2 自然语言处理基础任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.3 自然语言处理应用任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3 基本问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.1 文本分类问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.2 结构预测问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.3.3 序列到序列问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.4 评价指标. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
2.5 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
第3 章基础工具集与常用数据集45
3.1 NLTK 工具集. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
3.1.1 常用语料库和词典资源. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.2 常用自然语言处理工具集. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
3.2 LTP 工具集. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.1 中文分词. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.2 其他中文自然语言处理功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
3.3 PyTorch 基础. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.3.1 张量的基本概念. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.3.2 张量的基本运算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.3.3 自动微分. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.4 调整张量形状. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.3.5 广播机制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3.6 索引与切片. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.3.7 降维与升维. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.4 大规模预训练数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.4.1 维基百科数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.4.2 原始数据的获取. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.4.3 语料处理方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.4.4 Common Crawl 数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.5 更多数据集. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66
3.6 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
第4 章自然语言处理中的神经网络基础69
4.1 多层感知器模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.1.1 感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.1.2 线性回归. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.1.3 Logistic 回归. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.1.4 Softmax 回归. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.1.5 多层感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.1.6 模型实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.2 卷积神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.2.1 模型结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.2.2 模型实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.3 循环神经网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.3.1 模型结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.3.2 长短时记忆网络. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.3.3 模型实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.3.4 基于循环神经网络的序列到序列模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.4 注意力模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89
4.4.1 注意力机制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.4.2 自注意力模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.4.3 Transformer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.4.4 基于Transformer 的序列到序列模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.4.5 Transformer 模型的优缺点. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.4.6 模型实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.5 神经网络模型的训练. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.5.1 损失函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.5.2 梯度下降. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.6 情感分类实战. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.6.1 词表映射. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.6.2 词向量层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.6.3 融入词向量层的多层感知器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.6.4 数据处理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.6.5 多层感知器模型的训练与测试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.6.6 基于卷积神经网络的情感分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.6.7 基于循环神经网络的情感分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.6.8 基于Transformer 的情感分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
4.7 词性标注实战. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.7.1 基于前馈神经网络的词性标注. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.7.2 基于循环神经网络的词性标注. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.7.3 基于Transformer 的词性标注. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.8 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
第5 章静态词向量预训练模型119
5.1 神经网络语言模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.1.1 预训练任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.1.2 模型实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.2 Word2vec 词向量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.2.1 概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.2.2 负采样. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.2.3 模型实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.3 GloVe 词向量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
5.3.1 概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
5.3.2 预训练任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
5.3.3 参数估计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
5.3.4 模型实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.4 评价与应用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
5.4.1 词义相关性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
5.4.2 类比性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
5.4.3 应用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
5.5 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148
第6 章动态词向量预训练模型151
6.1 词向量——从静态到动态. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
6.2 基于语言模型的动态词向量预训练. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.2.1 双向语言模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.2.2 ELMo 词向量. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.2.3 模型实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
6.2.4 应用与评价. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
6.3 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
第7 章预训练语言模型173
7.1 概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
7.1.1 大数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
7.1.2 大模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
7.1.3 大算力. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
7.2 GPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.2.1 无监督预训练. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
7.2.2 有监督下游任务精调. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
7.2.3 适配不同的下游任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
7.3 BERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
7.3.1 整体结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
7.3.2 输入表示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
7.3.3 基本预训练任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
7.3.4 更多预训练任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
7.3.5 模型对比. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
7.4 预训练语言模型的应用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
7.4.1 概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
7.4.2 单句文本分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
7.4.3 句对文本分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
7.4.4 阅读理解. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
7.4.5 序列标注. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
7.5 深入理解BERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
7.5.1 概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
7.5.2 自注意力可视化分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
7.5.3 探针实验. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
7.6 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215
第8 章预训练语言模型进阶217
8.1 模型优化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218
8.1.1 XLNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
8.1.2 RoBERTa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223
8.1.3 ALBERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
8.1.4 ELECTRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
8.1.5 MacBERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
8.1.6 模型对比. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
8.2 长文本处理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234
8.2.1 概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
8.2.2 Transformer-XL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
8.2.3 Reformer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238
8.2.4 Longformer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
8.2.5 BigBird . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243
8.2.6 模型对比. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
8.3 模型蒸馏与压缩. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
8.3.1 概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
8.3.2 DistilBERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
8.3.3 TinyBERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
8.3.4 MobileBERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
8.3.5 TextBrewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
8.4 生成模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
8.4.1 BART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
8.4.2 UniLM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
8.4.3 T5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263
8.4.4 GPT-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
8.4.5 可控文本生成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
8.5 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
第9 章多模态融合的预训练模型269
9.1 多语言融合. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .270
9.1.1 多语言BERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .270
9.1.2 跨语言预训练语言模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
9.1.3 多语言预训练语言模型的应用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
9.2 多媒体融合. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274
9.2.1 VideoBERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
9.2.2 VL-BERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
9.2.3 DALL?E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
9.2.4 ALIGN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
9.3 异构知识融合. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
9.3.1 融入知识的预训练. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
9.3.2 多任务学习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
9.4 更多模态的预训练模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
9.5 小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .285
参考文献287
术语表297

本书勘误

印次
  • 页码:66  •  行数:1  •  印次: 1  •  修订印次: 2

    代码还是python2版本过于老旧,python3中应为:

    1. unichr改为chr
    2. range改为list(range())
    namezz 提交于 2021/7/24 23:32:49
    宋亚东 确认于 2021/7/27 14:27:20
  • 页码:77  •  行数:3,4,9,15  •  印次: 1  •  修订印次: 2

    第四章p77页中关于在pytorch中调用sigmoid、softmax、relu函数的代码过于陈旧,目前该函数已经在torch包中。
    from torch.nn import functional as F 应改为 import torch

    activation = F.sigmoid(outputs) 应改为 activation = torch.sigmoid(outputs)

    后面代码错误以此类推

    ayi111 提交于 2021/8/1 22:10:51
    宋亚东 确认于 2021/8/2 9:57:00
  • 页码:81  •  行数:倒数第7行  •  印次: 1  •  修订印次: 2

    该行应为:
    outputs_pool2 = pool2(outputs2)

    namezz 提交于 2021/7/25 20:30:13
    宋亚东 确认于 2021/7/27 14:29:17
  • 页码:102  •  行数:3  •  印次: 1  •  修订印次: 2

    vacob类构造函数与改行返回值cls(uniq_tokens)不符
    可能是由于构造函数写错或者漏写,idx_to_token和token_to_idx都没有进行操作

    namezz 提交于 2021/7/25 20:37:20
    宋亚东 确认于 2021/7/27 14:28:50
  • 页码:112  •  行数:6  •  印次: 1  •  修订印次: 3

    encoder_layer = nn.TransformerEncoderLayer(hidden_dim, num_head, dim_feedforward, dropout, activation)
    这里运行时会报错参数传多了
    报错信息
    可以通过删除最后一个activation参数解决错误,因为该类的默认activation就是relu,所以删了不会影响原功能

    ayi111 提交于 2021/8/7 9:27:16
    宋亚东 确认于 2021/8/10 8:59:46

读者评论

相关博文

  • 揭秘自然语言处理中预训练语言模型的“魔力”之源

    揭秘自然语言处理中预训练语言模型的“魔力”之源

    博文小编 2021-07-23

    自然语言处理被誉为“人工智能皇冠上的明珠”! 深度学习等技术的引入为自然语言处理技术带来了一场革命,近年来也出现了自然语言处理的新范式。 为什么自然语言是“人工智能皇冠上的明珠”呢? 自然语言处理,英文名称是Natural La...

    博文小编 2021-07-23
    492 0 0 0

同系列书

  • 深入浅出AI算法:基础概览

    吕磊 (作者)

    本书从理论到实践,循序渐进地介绍人工智能算法的基础知识,帮助读者敲开人工智能算法之门。本书共有8 章,分别为算法入门、算法之内力、算法之招式、算法之武功秘籍、算...

    ¥89.00
  • 自然语言处理:基于预训练模型的方法

    车万翔 (作者)

    自然语言处理被誉为“人工智能皇冠上的明珠”。深度学习等技术的引入为自然语言处理技术带来了一场革命,尤其是近年来出现的基于预训练模型的方法,已成为研究自然语言处理...

    ¥118.00
  • 隐私计算

    陈凯 杨强 (作者)

    在大数据和人工智能时代,如何在享受新技术带来的便利性的同时保护自己的隐私,是一个重要的问题。本书系统讲解了隐私计算的基础技术和实践案例,全书共有11 章,按层次...