Statistics
65
Views
0
Downloads
0
Donations
Support
Share
Uploader

高宏飞

Shared on 2025-11-22

Author【澳大利亚】路易斯·汤斯顿 【瑞士】莱安德罗·冯·韦拉 【法】托马斯·沃尔夫

本书涵盖了Transformer在NLP领域的主要应用。首先介绍Transformer模型和Hugging Face生态系统。然后重点介绍情感分析任务以及Trainer API、Transformer的架构,并讲述了在多语言中识别文本内实体的任务,以及Transformer模型生成文本的能力,还介绍了解码策略和度量指标。 接着深入挖掘了文本摘要这个复杂的序列到序列的任务,并介绍了用于此任务的度量指标。之后聚焦于构建基于评论的问答系统,介绍如何基于Haystack进行信息检索,探讨在缺乏大量标注数据的情况下提高模型性能的方法。最后展示如何从头开始构建和训练用于自动填充Python源代码的模型,并总结Transformer面临的挑战以及将这个模型应用于其他领域的一些新研究。

Tags
No tags
ISBN: 7111741927
Publisher: 机械工业出版社
Publish Year: 2023
Language: 中文
Pages: 547
File Format: PDF
File Size: 25.7 MB
Support Statistics
¥.00 · 0times
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

(This page has no text content)
(This page has no text content)
版权信息 COPYRIGHT 书名:Transformer自然语言处理实战:使用 Hugging Face Transformers库构建NLP应用 作者:【澳大利亚】路易斯·汤斯顿 【瑞士】莱安德罗·冯·韦 拉 【法】托马斯·沃尔夫 译者:叶伟民;叶志远 出版社:机械工业出版社 出版时间:2023年12月 ISBN:9787111741923 字数:181千字 本书由机械工业出版社有限公司授权得到APP电子版制作与发行 版权所有·侵权必究
O'Reilly Media, Inc.介绍 O'Reilly以“分享创新知识、改变世界”为己任。40多年来我们一直 向企业、个人提供成功所必需之技能及思想,激励他们创新并做得更 好。 O'Reilly业务的核心是独特的专家及创新者网络,众多专家及创新者 通过我们分享知识。我们的在线学习(Online Learning)平台提供 独家的直播培训、互动学习、认证体验、图书、视频,等等,使客户 更容易获取业务成功所需的专业知识。几十年来O'Reilly图书一直被 视为学习开创未来之技术的权威资料。我们所做的一切是为了帮助各 领域的专业人士学习最佳实践,发现并塑造科技行业未来的新趋势。 我们的客户渴望做出推动世界前进的创新之举,我们希望能助他们一 臂之力。
业界评论 “O'Reilly Radar博客有口皆碑。” ——Wired “O'Reilly凭借一系列非凡想法(真希望当初我也想到了)建立了数 百万美元的业务。” ——Business 2.0 “O'Reilly Conference是聚集关键思想领袖的绝对典范。” ——CRN “一本O'Reilly的书就代表一个有用、有前途、需要学习的主题。” ——Irisb Times “Tim是位特立独行的商人,他不光放眼于最长远、最广阔的领域,并 且切实地按照Yogi Berra的建议去做了:‘如果你在路上遇到岔路 口,那就走小路。’回顾过去,Tim似乎每一次都选择了小路,而且有 几次都是一闪即逝的机会,尽管大路也不错。” ——Linux Journal
本书赞誉 Transformer预训练语言模型正在席卷整个NLP领域,而 Hugging Face Transformers库则使其更易于使用。读者可以跟随作 者的脚步,尽情领略这一NLP领域最新突破的奥妙。本书作者在NLP工 程与研究领域有深厚造诣,通过本书,他们以通俗易懂的方式巧妙地 将研究成果与现实应用相结合,提供了深刻见解。本书是一本难得的 佳作,从多语言到高效模型,从问答系统到文本生成,全面介绍了当 前NLP领域最重要的方法与应用。本书每章都以丰富的代码示例为基 础,提供细致讲解,并突出最佳实践和实际考虑因素,使读者能够轻 松地将Transformer模型应用于现实世界。无论你是NLP新手还是老 手,本书都将增进你对NLP的理解,并提升你开发和部署先进模型的速 度。 ——Sebastian Ruder,Google DeepMind Transformer已经成为NLP领域的新范式,而Hugging Face是将 Transformer应用在产品和研究中的先驱者。本书由来自 Hugging Face公司的Lewis Tunstall、Leandro von Werra和 Thomas Wolf共同撰写,对Transformer提供了便捷而实用的介绍。本 书介绍了Transformer模型的基础概念,由浅入深地讲解了 Transformer的实际运用,还包括训练过程和将Transformer应用于生 产等实际问题。在阅读本书时,深入、丰富的内容和清晰的示例将使 你信心倍增,对任何想要学习Transformer的人来说,本书都是首选工 具书。 ——Delip Rao, Natural Language Processing and Deep Learning with P yTorch的作者 将复杂性变得简单!这是一本介绍如何将Transformer应用于NLP领 域,以及围绕它们不断成长的技术生态系统Hugging Face的珍贵书 籍。无论你对这些词汇的理解是只停留在概念上还是已经有了扎实的 掌握,作者都会用幽默、科学的严谨性和大量代码示例来引导你深入 了解这个酷炫的技术领域中最深层次的奥秘。从“现成的预训练模 型”到“自定义模型”,从性能到标注缺失问题,本书内容几乎涵盖
了每一个机器学习工程师会在实际应用中遇到的挑战,并提供了先进 的解决方案,这本书极有可能会在未来几年成为NLP领域的标准工具 书。 ——Luca Perrozzi,博士,埃森哲公司数据科学和机器学习副经 理
序 当你读到这里时,一件神奇的事情正在悄无声息地发生:我在2021年 11月产生的这些想法,通过黑色字迹经由你的眼睛穿过你的大脑皮 层,转换为文字、概念和情感,成功地侵入了你的大脑。很有可能它 们暂时没有引起你的注意,但仍在这个高度竞争的环境中扎下了根, 很可能在你与他人分享这些想法时,它们就会“破土”而出。感谢语 言的存在,让思想成为经空气传播的高传染性的“脑部病菌”,一旦 染上就无药可救。 所幸,大多数“脑部病菌”是无害的,并且有一些对我们大有裨益。 事实上,人类的“脑部病菌”构成了我们最宝贵的两个财富:知识与 文化。就像肠道进行消化需要益生菌一样,没有这些对我们有益的 “脑部病菌”,我们就很难进行思考。你的大部分思想其实都不是你 自身产生的:这些思想在“传染”你之前,它们已经在其他人的大脑 中产生、成长、进化。所以,如果我们想造出智能机器,就必须要找 到一种方法把人类的思想“传染”给它们。 好消息是,另一件神奇的事情在过去几年也一直在发生着:深度学习 的突破性进展催生出了强大的语言模型。在你阅读本书之前,你可能 已经感受过语言模型的奇妙,比如GPT-3,只需要输入一段简短的提示 语,比如“写一个青蛙遇到鳄鱼的故事”,它就能写出完整的故事。 尽管它与莎士比亚写的作品还有明显的差距,但读起来确实很难让人 相信这是由人工神经网络编写的。其实我在行文时借助了GitHub的 Copilot,你能分辨哪些内容是我写的吗? 目前,这场人工智能革命已不仅局限于文本生成,它涵盖了自然语言 处理(NLP)整个领域,从文本分类到摘要、翻译、问答、聊天机器 人、自然语言理解(NLU)等。只要有语言、语音或文字,就存在NLP 的用武之地。在生活中,我们已经可以向手机询问明天的天气情况, 或通过与虚拟助手对话来解决问题,还可以通过搜索引擎查到想要的 结果。但这项技术是如此的新,最好的可能还没有到来。 正如大多数的科技进步,这场NLP的革命是数百名无名英雄默默无闻努 力工作的结果,其中有三大关键因素:
●Transformer是2017年Google发表的一篇名为 “Attention Is All You Need” (https://arxiv.org/abs/1706.03762)的开创性论文中提出的神经 网络架构。只用了短短几年时间,Transformer就颠覆了此前RNN的循 环结构与CNN的卷积结构,占领了技术的制高点。Transformer架构在 处理长序列数据和大型数据集方面表现得非常出色,以至于它的用途 已不仅仅局限于NLP领域,像图像处理等领域也有大量的应用。 ●在大多数项目中,很难使用一个大型数据集来从头开始训练一个模 型。在实际工作中,更常用的做法是直接下载一个在通用数据集上预 训练过的模型,然后在自己的(更小的)数据集上进行微调。自从 2010年以来,使用预训练模型是图像处理领域的主流方式,但在NLP领 域,该方式仅限于与上下文无关的词嵌入(单个词汇的密集向量表 示)。比如,“bear”这个词在“teddy bear”和“to bear”中有 相同的预训练嵌入。不过随即在2018年的几篇论文中提出的语言模型 就解决了这个问题,将预训练与微调变得更加通用,这完全改变了游 戏规则。 ●Hugging Face提供的模型仓库从某种意义上来说也间接改变了游戏 规则。早期,预训练模型在训练完后并没有被统一管理起来,因此想 要获得一个可用的预训练模型并不容易。墨菲定律告诉我们,总会有 一些PyTorch用户只能找到适用于TensorFlow而不能用于PyTorch的模 型,反之亦然。在获得一个预训练模型后,找到对其做微调的方式并 不是件容易的事。而Hugging Face的Transformers库就肩负着这样的 使命,它完全开源,并同时支持PyTorch和TensorFlow,我们只需要从 Hugging Face Hub下载一个预训练模型,根据任务进行配置、微 调,并进行评估。此库的用户数正在迅速增长,截至2021年第四季 度,已有5000多个组织使用,且每个月使用p i p方式安装的次数超 过400万。此外,Hugging Face Transformers库的生态系统正逐渐 蔓延到NLP领域之外,也可以将其用于图像处理。最后,还可以从 Hugging Face Hub下载数据集来训练或评估微调的模型。 想了解更多内容,请阅读本书。本书由Hugging Face的开源开发者所 撰写,作者包括了Hugging Face Transformers库的创建者。本书具 备一定的广度和深度,因此受众群体广泛。它涵盖了Transformer架构 本身的知识点,以及围绕它的整个生态系统。读者可使用 Jupyter notebook跟进每个案例,一步一步地构建起模型。本书作者
在训练大型Transformer模型方面经验丰富,书中提供了大量的提示与 技巧,并尽可能地让内容通俗易懂。 总之,如果你对NLP领域具有浓厚兴趣,想要获知目前最先进的NLP产 品的原理以及训练方式,那么本书一定值得阅读。千言万语,尽在书 中。 Aurélien Géron 2021年11月于新西兰奥克兰
前言 自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来运行案例。 了解以下相关资源将有助于你阅读本书: 本书已由机械工业出版社翻译出版,书名为《机器学习实战:基于 Scikit-Learn、Keras和TensorFlow(原书第2版)》(书号为978-7- 111-66597-7)。 ●Hands-On Machine Learning with Scikit- Learn and TensorFlow (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章 欢迎来到Transformer的世界