购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

前言

自2017年推出以来,Transformer已成为学术界和工业界处理各种自然语言处理(NLP)任务的事实标准。你不知道的是,你很可能已经与Transformer有过了互动:Google目前运用BERT模型来增强搜索引擎,帮助其更好地理解用户的搜索内容。与此同时,OpenAI推出的GPT系列模型因其能生成类人表达的文本和图像,从而反复登上主流媒体的头版头条。Transformer甚至正在为GitHub的Copilot(一种自动编写代码的AI程序)等应用提供支持,如图P-1所示,它可以将评论转换为源代码,自动构建神经网络!

图P-1:来自GitHub Copilot的一个例子——给定一个任务的简要描述,随即生成了整个类的细节建议(class之后的所有内容均为自动生成的)

是什么让Transformer几乎一夜之间改变了整个AI领域?就像许多伟大的科学突破一样,它是在许多先进的研究成果之上取得的突破,比如注意力模型、迁移学习和可伸缩神经网络。

尽管它异常强大,但任何新方法想要在业界获得广泛的认可与使用,都需要借助某种工具来降低门槛。Hugging Face推出的Transformers库( https://oreil.ly/Z79jF )响应了这一号召,使从业者能够轻松地使用、训练和分享Transformer模型。这加速促成了Transformer应用的百花齐放,目前该库正在被5000多个组织使用。本书内容将提供训练和优化Transformer模型的案例,并将其应用到实际当中。

这本书适合谁

本书适合AI领域的数据科学家和机器学习工程师,以及对Transformer略有耳闻但缺乏学习渠道,想将Transformer付诸实践的群体阅读。本书不会介绍机器学习相关基础知识,读者需要熟悉Python编程,并且了解常见的深度学习框架,例如PyTorch( https://pytorch.org )和TensorFlow( https://www.tensorflow.org ),以及有使用GPU训练模型的实际经验。本书会重点讲解Transformers库的PyTorch API,第2章还会介绍如何使用TensorFlow来运行案例。

了解以下相关资源将有助于你阅读本书:

Hands-On Machine Learning with Scikit-Learn and TensorFlow [1] (O'Reilly),作者Aurélien Géron

Deep Learning for Coders with fastai and PyTorch (O'Reilly),作者Jeremy Howard和Sylvain Gugger

Natural Language Processing with PyTorch (O'Reilly),作者Delip Rao和Brian McMahan

●The Hugging Face课程( https://oreil.ly/n3MaR ),由Hugging Face的开源团队提供

你将学到什么

本书的目标是让更多开发者能够构建自己的NLP应用程序。为此,书中介绍了大量实际的案例,并在必要时穿插理论来讲解。本书风格偏向实战,建议读者按照书中步骤运行代码示例进行实验。

本书涵盖Transformer在NLP领域的主要应用,几乎每章(有少数例外)都会介绍一个实际任务,并结合真实的用例和数据集。此外,每章还会介绍一些前沿的概念。以下是每章任务与主题的简单概述:

●第1章将介绍Transformer模型和Hugging Face生态系统。

●第2章将重点介绍情感分析任务(一种常见的文本分类问题)以及Trainer API。

●第3章将深入探讨Transformer架构,以为接下来的章节做准备。

●第4章将讲述在多语言中识别文本中的实体(一种词元分类问题)的任务。

●第5章将讲述Transformer模型生成文本的能力,并介绍解码策略和度量指标。

●第6章将深入挖掘文本摘要这个复杂的序列到序列的任务,并介绍用于此任务的度量指标。

●第7章将聚焦于构建基于评论的问答系统,并介绍如何基于Haystack进行信息检索。

●第8章将聚焦于模型性能。我们将研究意图识别(一种序列分类问题)的任务,并探索知识蒸馏、量化和剪枝等技术。

●第9章将探讨在缺乏大量标注数据的情况下提高模型性能的方法。我们将构建一个针对GitHub Issue的标注器,并探索零样本分类技术和数据增强技术。

●第10章将展示如何从头开始构建和训练用于自动填充Python源代码的模型。我们将研究流式数据集和大规模训练任务,并构建自己的词元分析器。

●第11章将探讨Transformer面临的挑战以及将这个模型应用于其他领域的一些新研究。

Hugging Face Transformers库为使用和训练Transformer模型提供了多个抽象。本书将从易于使用的pipeline开始,pipeline仅用短短几行代码就可以将文本示例传到模型中,并进行结果的预测。随后,我们将介绍词元分析器、模型类和Trainer API,掌握这些之后就可以为用例训练模型。紧接着,我们将介绍如何使用Hugging Face Accelerate库替换Trainer,以完全控制训练循环,并带领读者从头开始训练大规模Transformer模型!尽管每章内容都相对独立,但随着任务难度逐渐增加,后续章节的难度也会增加。因此,我们建议先从第1章和第2章开始,然后再选择最感兴趣的章节进行阅读与实践。

除了Hugging Face Transformers库和Hugging Face Accelerate库,书中还将广泛使用Hugging Face Datasets库,它可以与其他库无缝集成。Datasets库提供了与Pandas相似的数据处理功能,但是Datasets在设计上旨在处理大型数据集和机器学习任务。

有了这些工具,你就拥有了应对几乎任何NLP挑战所需的一切!

软件和硬件要求

由于本书侧重实战,我们强烈建议读者在阅读每章时运行代码示例。因此需要一台配备NVIDIA GPU的PC来训练模型,此外,以下几个免费的在线工具也可供学习时使用:

●Google Colaboratory( https://oreil.ly/jyXgA

●Kaggle Notebooks( https://oreil.ly/RnMP3

●Paperspace Gradient Notebooks( https://oreil.ly/mZEKy

想要成功运行用例,读者需要按照书中介绍的GitHub仓库中提供的安装指南进行操作,本书所有代码与指南托管在 https://github.com/nlp-with-transformers/notebooks

本书大部分章节使用NVIDIA Tesla P100 GPU完成,其显存为16GB。一些免费平台提供显存较小的GPU,因此在训练模型时要根据实际情况缩减训练规模。

排版约定

本书中使用以下排版约定:

斜体( Italic

表示新的术语、URL、电子邮件地址、文件名和文件扩展名。

等宽字体(Constant width)

用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、数据类型、环境变量、语句以及关键字。

等宽粗体( Constant width bold

表示应由用户直接输入的命令或其他文本。

等宽斜体( Constant width italic

表示应由用户提供的值或由上下文确定的值替换的文本。

该图示表示提示或建议。

该图示表示一般性说明。

该图示表示警告或注意。

示例代码

可以从 https://github.com/nlp-with-transformers/notebooks 下载补充材料(示例代码、练习、勘误等)。

这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O'Reilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布O'Reilly的示例代码则需要获得许可。引用本书的示例代码来回答问题也不需要许可,将本书中的很大一部分示例代码放到自己的产品文档中则需要获得许可。

非常欢迎读者使用本书中的代码,希望(但不强制)注明出处。注明出处时包含书名、作者、出版社和ISBN,例如:

Natural Language Processing with Transformers ,作者Lewis Tunstall、Leandro von Werra和Thomas Wolf,由O'Reilly出版,书号978-1-098-13679-6。

如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过 permission@oreilly.com 联系我们。

O'Reilly在线学习平台(O'Reilly Online Learning)

40多年来,O'Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。

我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O'Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O'Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问 http://oreilly.com

如何联系我们

对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。

美国:

O'Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol,CA 95472

中国:

北京市西城区西直门南大街2号成铭大厦C座807室(100035)

奥莱利技术咨询(北京)有限公司

要询问技术问题或对本书提出建议,请发送电子邮件至 errata@oreilly.com.cn

本书配套网站 https://oreil.ly/nlp-with-transformers 上列出了勘误表、示例以及其他信息。

关于书籍和课程的新闻和信息,请访问我们的网站 http://oreilly.com

我们在Facebook上的地址: http://facebook.com/oreilly

我们在Twitter上的地址: http://twitter.com/oreillymedia

我们在YouTube上的地址: http://www.youtube.com/oreillymedia

致谢

写一本关于机器学习中发展最快的领域之一的书,离不开很多人的帮助。首先要感谢出色的O'Reilly团队,特别是Melissa Potter、Rebecca Novack和Katherine Tozer,感谢他们的支持和建议。当然,这本书也受益于许多审校人员的帮助,他们花费了大量的时间来提供宝贵的反馈。特别感谢Luca Perozzi、Hamel Husain、Shabie Iqbal、Umberto Lupo、Malte Pietsch、Timo Möller和Aurélien Géron的详细审校。感谢deepset( https://www.deepset.ai )的Branden Chan帮助扩展Haystack库,以支持第7章的用例。本书中优美的插图归功于令人惊叹的Christa Lanz( https://christalanz.ch ),是她让这本书更具特色。另外,本书还有幸得到整个Hugging Face技术团队的支持。非常感谢Quentin Lhoest回答了无数关于Datasets的问题、Lysandre Debut对Hugging Face Hub相关事项的帮助,以及Sylvain Gugger在Accelerate方面的帮助,还有Joe Davison对于在第9章零样本学习方面的启发。还要感谢Sidd Karamcheti和整个Mistral团队( https://oreil.ly/aOYLt )为GPT-2调整稳定性,使第10章成为可能。本书完全使用Jupyter notebook编写,感谢Jeremy Howard和Sylvain Gugger创建了像fastdoc( https://oreil.ly/yVCfT )这样的出色工具,使这一切成为可能。

Lewis :感谢Sofia一直以来对我的支持和鼓励——否则,这本书就不会存在。经历了漫长的写作阶段,我们终于可以再次享受周末的快乐时光!

Leandro :感谢Janine,在这一年中的许多深夜和繁忙的周末,她的耐心和支持给了我很大的鼓励。

Thomas :首先我要感谢Lewis和Leandro提出写这本书的想法,并大力推动以如此美丽和易于理解的方式编写本书并出版。我还要感谢Hugging Face团队的所有成员,感谢他们相信AI的使命是一项社区工作,感谢整个NLP/AI社区与我们一起建立和使用我们在本书中描述的程序和研究结果。

相对于我们完成的工作,整个NLP/AI社区所走过的旅程才是真正重要的,今天有幸与成千上万的社区成员和像你一样的读者一起走这条道路,我们从心底里感谢你们所有人。


[1] 本书已由机械工业出版社翻译出版,书名为《机器学习实战:基于Scikit-Learn、Keras和TensorFlow(原书第2版)》(书号为978-7-111-66597-7)。 pFwEIM+KCYahumXsn2QxhvrRVwEVG9IwG7hKI+eCxd7LkXIVKRY+yVuo/IJCWKuJ

点击中间区域
呼出菜单
上一章
目录
下一章
×