书名:生成式人工智能(基于PyTorch实现)
ISBN:978-7-115-66615-4
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 [美]刘焕良(Mark Liu)
译 刘 晖
责任编辑 吴晋瑜
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书通过从零开始构建生成式人工智能模型来探讨生成式人工智能的底层机制,并使用PyTorch对生成式人工智能模型进行编程的实践指导,以期让读者在了解生成对抗网络(GAN)、变分自编码器(VAE)、循环神经网络(RNN)、Transformer、扩散模型、大语言模型(LLM)和LangChain等技术原理之后,能构建可生成形状、数字、图像、文本和音乐的生成式人工智能模型。
本书适合各种商业领域中的人工智能技术工程师和数据科学家在实践生成式人工智能模型时随手查阅,也适合生成式人工智能的初学者作为入门指南。
我第一次见到Mark是在肯塔基大学举办的PNC创新峰会上,当时我们都是演讲者,他的演讲主题是How Machines Learn(机器如何学习)。初次见面,Mark就给我留下了深刻印象,他能以引人入胜、通俗易懂的方式将复杂概念解释得一清二楚。此外,他还善于将复杂的想法分解为易懂、易理解的术语,这也令我印象深刻。而现在,他正在将自己的天赋通过这本书分享给读者。
在我担任Native AI公司联合创始人兼首席运营官期间,我们的任务是生成准确且用途多样的预测性合成数据。Mark研究的温度和top-K采样等技术是控制人工智能生成文本精确率的前沿技术。这些方法对于根据特定用例定制自然语言处理输出至关重要,而这些技术的重要性和商业价值也还在继续扩大。
这是一本全面的指南,不仅向读者介绍了生成式人工智能的迷人世界,还帮助读者掌握自行构建和实现模型的实用技能。Mark用PyTorch作为首选框架,也足见PyTorch在开发高级人工智能模型方面的灵活性和强大功能。本书从长短期记忆模型到变分自编码器,从生成对抗网络到Transformer,涵盖的主题广泛而全面。
无论你是希望了解基础知识的初学者,还是希望扩展知识与技能的资深从业者,这本书都是深入学习生成式人工智能的不可多得的资源。Mark善于将复杂主题变得通俗易懂、引人入胜,这确保了读者在阅读本书后会形成扎实的理解,更有信心学以致用。
能为本书作序,我深感荣幸,也非常期望众多读者能从本书介绍的专业知识中受益。相信这本书一定会给读者带来启发和教育,为生成式人工智能领域未来的创新铺平道路。
莎拉·桑德斯(Sarah Sanders)
Native AI公司联合创始人兼首席运营官
我对生成式人工智能的痴迷始于几年前,当时我第一次看到将马的图像转换成斑马图像的模型,以及能生成生动的文本内容的Transformer。这本书是我从零开始构建并理解这些模型的心路历程结晶,也是我之前在实验各种生成模型时希望手头能有的一本书。本书从简单的模型入手,帮助读者建立基础的深度学习技能,然后再向更复杂的挑战进发。在尝试了TensorFlow后,我最终选择了PyTorch,因为它支持动态计算图并且语法更清晰。
本书中的所有生成模型都是深度神经网络。本书从PyTorch中一个综合的深度学习项目开始,非常适合该领域的新手。每一章都是在前一章的基础上精心编排的。首先,读者将学习使用架构简单的生成对抗网络创建形状、数字和图像等基本内容。随着学习的深入,复杂性会逐渐提高,最终我们将建立更先进的模型,如用于生成文本和音乐的Transformer,以及用于生成高分辨率图像的扩散模型。
从表面上看,本书探索了各种生成式人工智能模型。但从更深层次来看,这一次的技术旅程反映了我们大脑的工作原理,也反映了人类的本质。深度神经网络在这些生成模型中的突出表现,证明了我们对理解和复现人类复杂学习过程这一目标的不懈追求。生成式人工智能模型从塑造我们大脑的生物进化过程中汲取灵感,从自己所遇到的大量数据中学习,这一过程就和我们人类从周围的刺激中学习一样。
生成式人工智能的影响远远超出了它的实际应用。站在这场技术革命的前沿,我们不得不重新评估自己对意识、生命和人类存在本质的理解。机器学习与人类学习之间的相似之处非常明显。正如生成式人工智能通过受人脑启发所构建的神经网络运行一样,人类的思想、情感和行为也是我们体内神经网络的输出。因此,对生成式人工智能的研究已经超越了技术界限,成为对人类自身和人类意识底层基础机制的探索。对生成式人工智能的研究不禁让我们深入思考一个深刻的问题:人类在本质上是不是复杂的生成式人工智能模型?
从这个意义上说,生成式人工智能不仅是一种工具,还是一面镜子,映射出我们最深层的“存在”问题。随着不断发展这些技术并与之互动,我们不仅在塑造人工智能的未来,也在加深自己对人类智慧的理解。归根结底,对生成式人工智能的探索也是对我们自身的探索,是一次探寻意识核心和生命本质的旅程,促使我们重新思考意识、生命和人类的意义。
本书的出版得到了许多人的帮助。Jonathan Gennick是曼宁公司的策划编辑,他在确定读者希望学习的主题和安排章节结构方便读者理解方面发挥了重要作用。我要特别感谢内容编辑Rebecca Johnson,她不懈追求完美的精神极大提升了本书的质量。正是她鼓励我以清晰、易懂的方式来解释复杂概念。
我还要感谢技术编辑Emmanuel Maggiori,他是Smart Until It’s Dumb(Applied Maths Ltd.,2023)一书的作者。每当我在写人工智能的神奇潜力而变得忘乎所以时,Emmanuel总是能很快指出其局限性。我最喜欢阿瑟·克拉克(Arthur C. Clarke)说过的一句话:“任何足够先进的技术都与魔法无异”,而Emmanuel对人工智能的看法恰恰可以用他那本书的书名(Smart Until It’s Dumb,即犯蠢之前始终显得很聪明)来概括。我相信,这种观点的碰撞会为我们的读者提供一个更平衡的视角。
感谢所有审稿人,他们是Abhilash Babu、Ankit Virmani、Arpit Singh、Christopher Kottmyer、David Cronkite、Eduardo Rienzi、Erim Erturk、Francis Osei Annin、Georg Piwonka、Holger Voges、Ian Long、Japneet Singh、Karrtik Iyer、Kollin Trujillo、Michael Petrey、Mirerfan Gheibi、Nathan Crocker、Neeraj Gupta、Neha Shetty、Palak Mathur、Peter Henstock、Piergiorgio Faraglia、Rajat Kant Goel、Ramaa Vissa、Ravi Kiran Bamidi、Richard Tobias、Ruud Gijsen、Slavomir Furman、Sumit Pal、Thiago Britto Borges、Tony Holdroyd、Ursin Stauss、Vamsi Srinivas Parasa、Viju Kothuvatiparambil和Walter Alexander Mata López,你们的建议让本书变得更好。我还要感谢曼宁出版社的制作团队帮助我完成了本书的出版。
最后,向我的妻子Ivey Zhang和儿子Andrew Liu表达最深切的谢意,感谢他们一直以来给予我的坚定支持。
本书旨在指导读者从零开始创建各种内容(形状、数字、图像、文本和音乐)。它从简单的模型入手,帮助读者建立基础的深度学习技能,然后再向更复杂的挑战进发。书中所有的生成模型都是深度神经网络。
本书从PyTorch中一个综合的深度学习项目开始,非常适合该领域的新手。每一章都是在前一章的基础上精心编排的。首先,读者将学习使用架构简单的生成对抗网络创建形状、数字和图像等基本内容。随着学习的深入,复杂性会逐渐提高,最终我们将建立更先进的模型,如Transformer和扩散模型。
本书旨在介绍生成式人工智能技术,以及如何借此创建新颖、创新的内容,如图像、文本、图案、数字、形状和音频,从而提升企业的业务能力并促进从业者的职业生涯发展。虽然网上有许多涵盖了各个主题的免费学习材料,但这一本将所有内容整合成清晰且易于学做的新式格式,使其足以为任何有志成为生成式人工智能专家的人带来价值。
本书适合各种商业领域中的机器学习爱好者和数据科学家阅读。在阅读前,读者应对Python有扎实的掌握,具备一定的Python编程技能,要熟悉变量类型、函数和类,以及第三方Python库和包的安装。对于上述知识的学习,读者可以参考W3Schools提供的免费在线Python教程。
读者还应对机器学习,尤其是神经网络和深度学习有基本了解。如果需要,可参考《PyTorch深度学习实战》(Deep Learning with PyTorch)一书。附录B简要介绍了损失函数、激活函数和优化器等关键概念,这些概念对开发和训练深度神经网络至关重要,不过附录内容并非这些话题的完整教程。
本书共16章,分四部分。第一部分主要介绍基于PyTorch的生成式人工智能和深度学习。
■ 第1章解释什么是生成式人工智能,以及本书选择用PyTorch而非TensorFlow等其他人工智能框架来构建生成模型的理由。
■ 第2章使用PyTorch创建能执行二分类和多类别分类的深度神经网络,从而帮读者掌握深度学习和分类任务。这一章是为后续章节做准备,在后续章节中,我们将使用PyTorch中的深度神经网络创建各种生成模型。
■ 第3章介绍生成对抗网络(GAN)。读者将学习使用GAN生成具有特定模式的形状和数字序列。
第二部分主要介绍图像生成。
■ 第4章讨论如何构建并训练能生成高分辨率彩色图像的GAN。特别是,读者将学习使用卷积神经网络捕捉图像中的空间特征,此外,读者还将学习使用转置卷积层对图像进行上采样并生成高分辨率特征图。
■ 第5章详细介绍在生成图像中选择特征的两种方法。第一种方法是在潜空间中选择特定向量,第二种方法使用条件GAN,即使用带标签的数据构建和训练GAN。
■ 第6章介绍如何使用CycleGAN在两个域(如黑发图像和金发图像、马的图像和斑马图像)之间转换图像。
■ 第7章介绍如何使用自编码器及其变体——变分自编码器生成高分辨率图像。
第三部分深入介绍自然语言处理和文本生成。
■ 第8章讨论使用循环神经网络生成文本。在学习过程中,读者将了解词元化和词嵌入的工作原理,还将学习使用训练好的模型以自回归方式生成文本,以及如何使用温度和top-K采样控制所生成文本的创造性。
■ 第9章根据论文“Attention Is All You Need”,从零开始构建一个用于在任意两种语言之间进行翻译的Transformer。读者将逐行实现多头注意力机制和编码器-解码器Transformer。
■ 第10章使用47000多对英译法译文训练第9章构建的Transformer。读者将学会用训练好的模型将常用英语句子翻译成法语。
■ 第11章从零开始构建GPT-2的最大版本GPT-2XL。之后,读者将学习如何从Hugging Face中提取预训练的模型权重,并将其加载到自己的GPT-2模型中进而生成文本。
■ 第12章构建一个缩减版的GPT模型,其中包含约500万个参数,这样就可以在普通计算机上进行训练。读者将使用海明威的3部小说作为训练数据。训练好的模型可以生成海明威写作风格的文本。
第四部分讨论本书中介绍的生成模型的一些实际应用及生成式人工智能领域的最新进展。
■ 第13章建立并训练能生成音乐的MuseGAN。MuseGAN将一段音乐视为一个类似于图像的多维对象。生成器生成一首完整音乐,并提交给批评者进行评估。然后,生成器会根据批评者的反馈修改音乐,直到它与训练数据集中的真实音乐非常相似。
■ 第14章采用一种与MuseGAN不同的人工智能音乐创作方法。我们不再将一段音乐视为一个多维对象,而是将其视为一系列音乐事件。然后,应用文本生成技术来预测序列中的下一个元素。
■ 第15章介绍扩散模型,它是所有流行的文生图Transformer(如DALL·E 2或Imagen)的基础。我们将建立并训练一个能生成高分辨率花朵图像的扩散模型。
■ 第16章以一个项目结束本书。在这个项目中,我们会使用LangChain库将预训练的大语言模型与Wolfram Alpha API或Wikipedia API结合起来,创建一个“无所不知”的个人助理。
附录A介绍如何在具备或不具备计算统一设备体系结构(CUDA)GPU的计算机上安装PyTorch。附录B提供了与本书项目有关的一些背景信息,以及深度学习的一些基本概念,如损失函数、激活函数和优化器。
刘焕良(Mark Liu)博士是美国肯塔基大学金融学终身副教授和金融学硕士项目(创始)负责人。他著有两本书:Make Python Talk(No Starch Press,2021)和Machine Learning, Animated(CRC Press,2023)。
他拥有20多年的编程经验。他获得美国波士顿学院金融学博士学位,曾在Journal of Financial Economics、Journal of Financial and Quantitative Analysis和Journal of Corporate Finance等金融学顶级期刊上发表过研究论文。
本书封面上的插图标题为“耶路撒冷街的代理人”(L’Agent de la rue de Jerusalem或The Jerusalem Street Agent)。该插图选自Louis Curmer于1841年出版的一本书,书中的每张插图都是手工精细绘制并着色的。
在19世纪那个年代,仅凭衣着就可以很容易辨别出一个人的居住地、职业或社会地位。曼宁出版社基于近几个世纪前丰富多彩的地域文化来设计图书封面,以此来赞扬计算机行业的创造性和主动性,正如本书的封面一样,这些图片把我们带回到过去的生活中。
本书提供如下资源:
■ 本书思维导图;
■ 异步社区7天VIP会员。
要获得以上资源,你可以扫描右方二维码,根据指引领取。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎读者将发现的问题反馈给我们,帮助我们提升图书的质量。
当读者发现错误时,请登录异步社区(https://www.epubit.com),按书名搜索,进入本书页面,单击“发表勘误”,输入勘误信息,单击“提交勘误”按钮即可(见下图)。本书的作者和编辑会对读者提交的勘误进行审核,确认并接受后,将赠予读者异步社区100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是wujinyu@ptpress.com.cn。
如果读者对本书有任何疑问或建议,请你发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果读者有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们。
如果读者所在的学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果读者在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请将怀疑有侵权行为的链接发邮件给我们。这一举动是对作者权益的保护,也是我们持续为广大读者提供有价值的内容的动力之源。
“异步社区”(www.epubit.com)是由人民邮电出版社创办的IT专业图书社区,于2015年8月上线运营,致力于优质内容的出版和分享,为读者提供高品质的学习内容,为作译者提供专业的出版服务,实现作者与读者在线交流互动,以及传统出版与数字出版的融合发展。
“异步图书”是异步社区策划出版的精品IT图书的品牌,依托于人民邮电出版社在计算机图书领域多年来的发展与积淀。异步图书面向IT行业以及各行业使用IT技术的用户。
什么是生成式人工智能?它与相应的非生成式模型(判别模型)有何不同?为什么我们选择用PyTorch作为本书的人工智能框架?
在这一部分,我们将解答上述问题。此外,本书中的所有生成式人工智能模型都是深度神经网络。因此,读者将学习如何使用PyTorch创建能执行二分类和多类别分类的深度神经网络,从而掌握深度学习和分类任务。这样做的目的是为后续章节做准备,在后续章节中,我们将使用PyTorch中的深度神经网络创建各种生成模型,还将使用PyTorch构建并训练能生成形状和数字序列的生成对抗网络。
本章内容
■ 生成式人工智能与非生成式人工智能
■ PyTorch适用于深度学习和生成式人工智能
■ 生成对抗网络
■ 注意力机制和Transformer的好处
■ 从零开始构建生成模型的优势
自2022年11月ChatGPT问世以来,生成式人工智能(generative AI)已经对全球格局产生了重大影响,吸引了人们的广泛关注,业已成为大众焦点。这一技术进步彻底改变了人们日常生活的方方面面,标志着新技术时代的到来,并激发了众多初创企业探索各种生成模型(generative model)所蕴含的广泛潜力。
作为该领域的先驱,Midjourney已能通过输入简短的文本内容创建出栩栩如生的高分辨率图像。类似地,软件公司Freshworks也通过ChatGPT大幅加快应用程序开发速度,将开发工作所需时间从原本的平均10周缩短到仅需数天。[1](英文原书中的)这段介绍也是经人工智能技术润色而来的,足以凸显人工智能技术的强大和不凡的吸引力。
[1] 参考Bernard Barr在《福布斯》(Forbes)杂志上发表的文章“10 Amazing Real-World Examples of How Companies Are Using ChatGPT in 2023”(2023)。
注意
还有什么能比让生成式人工智能自己来解释生成式人工智能更好的方式呢?在最终定稿前,我请ChatGPT用“更吸引人的方式”重写了(英文原书中的)这段介绍的初稿。
这一技术进步的影响远不止这几个例子。由于生成式人工智能的能力极为先进,各行各业都已开始经历变革。现在,这项技术已经可以撰写出与人类所写文章相媲美的文章,创作出类似古典音乐风格的乐曲,甚至快速生成复杂的法律文书……而这些任务以往都需要投入大量人力和时间。ChatGPT发布后,教育平台CheggMate的股价大幅下跌。此外,美国编剧工会也在最近一次罢工中达成共识,为人工智能技术在剧本创作和修改工作中的应用施加了限制。[2]
[2] 参考Will Bedingfield在《连线》(WIRED)杂志上发表的文章“Hollywood Writers Reached an AI Deal That Will Rewrite History”(2023)。
注意
CheggMate向大学生收费,为其提供人类专家的答疑服务。现在,许多此类工作都可以通过ChatGPT或类似工具来完成,而成本更低。
那么问题来了,生成式人工智能到底是什么?它与其他人工智能技术有何不同?为什么它会在各行各业造成如此广泛的影响?生成式人工智能的底层机制是什么,为什么理解它很重要?
本书深入探讨生成式人工智能。这是一项开创性的新技术,可以通过高效、快速的内容创建能力重塑众多行业。具体来说,我将介绍使用最先进的生成模型来创建各种形式的内容:形状、数字、图像、文本和音频。此外,本书还将从零开始创建模型(而不是把现成模型当黑盒子来使用),使读者深入理解生成式人工智能的内部原理。毕竟,用物理学家理查德·费曼(Richard Feynman)的话来说:“凡是我不能创造的东西,我就不能真正理解。”
所有这些模型都基于深度神经网络。本书选择使用Python和PyTorch来构建这些模型,毕竟Python因简单易用的语法、跨平台兼容性和强大的社区支持而备受青睐。本书选择PyTorch而非TensorFlow等其他框架的原因则在于:PyTorch更易用,且适用于不同架构的模型。Python已成为一种广受认可的机器学习(machine learning,ML)的重要工具,而PyTorch在人工智能领域也越来越受欢迎。因此,使用Python和PyTorch使得我们可以紧跟生成式人工智能技术的新进展。由于PyTorch支持通过图形处理单元(graphics processing unit,GPU)为训练加速,我们可以在几分钟或几小时内训练出这些模型,并见证生成式人工智能的实际应用!
本节将介绍生成式人工智能的定义,以及它与判别模型(discriminative model)等非生成式人工智能模型的区别。生成式人工智能是一类技术,具备生成各种新内容的能力,例如生成文本、图像、音频、视频、源代码和其他复杂模式的内容。生成式人工智能可以创造出包含新颖和创新内容的全新世界,ChatGPT就是一个很好的例子。相比之下,判别模型更侧重于已有内容的识别和分类。
生成式人工智能是一种通过从现有数据中学习数据所蕴含的模式,进而生成新的文本、图像、音乐等内容的人工智能技术。与生成模型不同,判别模型专门用于辨别不同数据实例之间的差异并学习不同类别之间的界限。图1.1对比了生成模型与判别模型之间的差异。例如,当面对一系列以狗和猫为主体的图像时,判别模型通过捕捉几个能够区分猫和狗的关键特征(如猫有小鼻子和尖耳朵)来确定每张图像描绘的到底是狗还是猫。如图1.1上半部分所示,判别模型将数据作为输入,得出不同标签的概率——这些标签的概率可以用Prob(dog)和Prob(cat)来表示,随后即可根据最高的预测概率对输入进行标注。
相比之下,生成模型具有生成新数据实例的独特能力。在我们的猫和狗的例子中,生成模型深入理解这些图像的定义特征,从而合成代表猫或狗的新图像。如图1.1下半部分所示,生成模型以任务描述(例如潜空间中不同的值,这些值会导致所生成的图像包含不同的特征,相关内容参见第4~6章)作为输入,生成了全新的猫和狗的图像。
从统计学角度来看,当数据示例具备描述输入的特征X和多种相应的标签Y时,判别模型就会承担预测条件概率的任务,具体来说就是计算概率Prob(Y | X)。与此相反,生成模型则踏上了一条不同的路,生成模型会试图学习输入特征X和目标变量Y的联合概率分布,即Prob(X,Y)。凭借这些知识,生成模型从分布中采样,从而生成X的新实例。
图1.1 生成模型与判别模型的对比。判别模型将数据作为输入,得出不同标签的概率,用Prob(dog)和Prob(cat)表示。相比之下,生成模型深入理解这些图像的定义特征,从而合成代表猫或狗的新图像
生成模型有很多不同的类型,不同类型的模型是为生成特定类型的内容量身定制的。本书主要关注生成对抗网络(generative adversarial network,GAN)和Transformer(尽管我们也会涵盖变分自编码器和扩散模型)。生成对抗网络中的“对抗”一词指的是两个神经网络在零和博弈框架下相互竞争:生成网络(generative network)试图创建与真实样本无异的数据实例,而判别网络(discriminative network)则试图从真实样本中识别出生成的样本。两个网络之间的竞争会促进两者的共同进步,最终使生成器能够创建出高度逼真的数据。Transformer则是一种深度神经网络,可以高效解决序列到序列(sequence-to-sequence)预测任务,本章后半部分会对其进行更详细的介绍。
GAN因易于实现和多功能性而闻名。即使对深度学习仅有初步了解的人,也能从零开始构建生成模型。这些多功能模型可以生成大量的创作内容,从几何形状和复杂图案(见第3章)到高质量的彩色图像(如人脸,见第4章)不一而足。此外,GAN还能转换图像内容,例如将金发的人脸图像无缝转换为黑发的人脸图像(见第6章)。不仅如此,GAN还将创作能力扩展到音乐领域,可以生成听起来非常接近指定音乐家风格的音乐作品(见第13章)。
与图形、数字或图像生成相比,文本生成面临着巨大挑战,这主要是因为文本信息有顺序,即各个字符或单词的顺序和排列都蕴含着重要意义。为应对这种复杂性,我们使用Transformer,这是一种能够熟练处理序列到序列预测任务的深度神经网络。与循环神经网络(recurrent neural network,RNN)或卷积神经网络(convolutional neural network,CNN)等“前辈”不同,Transformer更擅长在输入序列和输出序列中捕获固有的、错综复杂的长程依赖(long-range dependency)关系。另外,Transformer还有一个重要特点,它的并行训练能力(一种分布式训练方法,能在多个设备上同时训练同一个模型)可以大幅缩短训练耗时,使得我们可以用海量数据来训练Transformer。
Transformer革命性的架构同时也是ChatGPT、BERT、DALL·E和T5等大语言模型(large language model,LLM,即具有大量参数并在大型数据集上训练获得的深度神经网络)诞生的基础。ChatGPT和其他生成式预训练Transformer(generative pretrained Transformer,GPT)模型的推出引发了最近的人工智能的迅猛进步,Transformer这一变革性架构成为这种进步的基石。
在后续章节中,我将深入探讨这两项开创性技术的内部运作原理,包括它们的底层机制及其蕴含的无限潜力。
本书假设读者已经对Python有一定的了解。要学习本书内容,读者需要了解Python的基础知识,如函数、类、列表、词典等。如果尚不了解,网上有很多免费资源可以帮助读者入门。按照附录A中的说明安装Python,然后为本书创建一个虚拟环境,并安装Jupyter Notebook作为本书项目的计算环境。
根据《经济学人》(The Economist)的报道,自2018年下半年以来,Python已成为全球最受欢迎的编程语言。[3]Python不仅免费供所有人使用,还允许其他用户创建和修改各种库。Python拥有一个由社区驱动的庞大生态系统,我们可以很容易地从其他Python爱好者那里找到自己需要的资源和帮助。此外,Python程序员喜欢分享他们的代码,因此我们无须重复“造轮子”,可以导入现成的库,也可以在Python社区分享自己的库。
[3] 参考Data Team在《经济学人》(The Economist)杂志上发表的文章“Python is becoming the world’s most popular coding language”(2018)。
无论我们使用的是Windows、macOS还是Linux系统,Python都能满足我们的需求。它是一种跨平台语言,尽管安装软件和库的过程可能会因操作系统的不同而略有差异。但读者也不用担心,我会在附录A中给出安装方法。一旦设置好环境,同一段Python代码在不同系统中的运行表现会完全相同。
Python是一种表达丰富的语言,适用于常规应用开发。它的语法简单易懂,人工智能爱好者可以轻松理解和使用。如果在使用本书提到的Python库时遇到任何问题,读者可以搜索Python论坛或访问Stack Overflow等网站寻求帮助。
最后,Python提供了大量库,可以(相对于C++或R语言)进一步简化生成模型的创建过程。本书将用PyTorch作为人工智能框架,接下来我将解释为什么选择它而非TensorFlow等竞争对手。
既然决定在本书中用Python作为编程语言,接下来还要为生成模型选择一个合适的人工智能框架。PyTorch和TensorFlow是基于Python的两个最流行的人工智能框架。本书将选择PyTorch而非TensorFlow,强烈建议读者都这样做,因为PyTorch更易用。
PyTorch是Meta的人工智能研究实验室开发的开源机器学习库。它基于Python编程语言和Torch库构建,旨在为创建和训练深度学习模型提供一个灵活、直观的平台。作为PyTorch的前身,Torch是一个用于在C语言中使用Lua封装器构建深度神经网络的机器学习库,但现已停止开发。打造PyTorch的目的是通过提供一种更易用、适应性更强的深度学习项目框架,满足研究人员和开发者的各类需求。
计算图(computational graph)是深度学习中的一个基本概念,它在高效计算复杂数学运算,尤其是涉及多维数组或张量(tensor)的运算中发挥着至关重要的作用。计算图是一种有向图(directed graph),其中的“节点”代表数学运算,“边”代表在这些运算之间流动的数据。计算图的一个主要用途是在实现反向传播和梯度下降算法时计算偏导数。利用图结构,我们可以在训练过程中高效计算更新模型参数所需的梯度。与TensorFlow等框架中的静态图不同,PyTorch能够在运行过程中创建并修改图,这是一种动态计算图。这使得PyTorch更适应不同的模型架构,并简化调试。此外,与TensorFlow一样,PyTorch可以通过GPU训练提供加速计算,与使用CPU训练相比,可以大幅缩短训练时间。
PyTorch的设计与Python契合度很高。它的语法简洁易懂,无论新手或是有经验的开发者都能轻松使用。研究人员和开发者都非常欣赏PyTorch的灵活性。PyTorch的动态计算图和简单易用的界面使我们能够快速尝试新想法。在快速发展的生成式人工智能领域,这种灵活性不可或缺。PyTorch还有一个快速成长的社区,社区成员积极为PyTorch的发展作出贡献。这就形成了一个由库、工具和资源组成的广泛的生态系统,供开发者使用。
PyTorch也很适合用于迁移学习(transfer learning),这是一种针对一般任务设计,并围绕特定任务进行微调的预训练模型技术。研究人员和从业者可以轻松利用预训练模型,从而节省时间和计算资源。在预训练LLM时代,这一特性尤为重要,它允许我们将LLM用于分类、文本摘要和文本生成等下游任务。
PyTorch也可以兼容NumPy、Matplotlib等Python库。这种互操作性使数据科学家和工程师能够将PyTorch无缝集成到自己现有的工作流程中,从而提高工作效率。PyTorch还以致力于社区驱动的开发而著称。它发展迅速,可根据实际使用情况与用户反馈定期更新和增强,因此始终处于人工智能研究和开发的最前沿。
附录A提供了在计算机上安装PyTorch的详细说明。按照说明在虚拟环境中安装PyTorch。如果读者所用的计算机未配备支持计算统一设备体系结构(compute unified device architecture,CUDA)的GPU,本书中的所有程序也兼容CPU训练。此外,本书的GitHub代码库中提供训练好的模型,以便读者直接使用。第2章将深入介绍PyTorch,首先介绍PyTorch中的数据结构张量,它用于保存数字和矩阵,并提供用于执行操作的函数。随后,我将介绍如何使用PyTorch执行端到端深度学习项目。具体来说,我们将在PyTorch中创建一个神经网络,并使用服装图像和相应的标签来训练网络。完成后,我们会用训练好的模型将服装分类为10种不同的标签。完成这个项目,可以为我们使用PyTorch构建和训练各种生成模型做好准备。
本节首先从较高层次概括介绍生成对抗网络(GAN)的工作原理;然后以生成动漫人脸图像为例,向读者展示GAN的内部工作原理;最后,还将讨论GAN的实际应用。
生成对抗网络是一种生成模型,最初由Ian Goodfellow等人于2014年提出。[4]近年来GAN变得非常流行,因为它易于构建和训练,而且可以生成各种各样的内容。我们将在图1.2的示例中看到,GAN采用了双网络架构,其中包括一个生成模型,负责捕捉生成内容时所需的底层数据分布,还包括一个判别模型,用于估算特定样本来自真实训练数据集(被视为“真实样本”)而非生成模型(被视为“虚假样本”)的可能性。该模型的主要目标是生成与训练数据集中的数据非常相似的新数据实例。GAN生成数据的性质取决于训练数据集的组成。例如,如果训练数据由服装灰度图像组成,那么生成的图像也将与这些服装非常相似;同理,如果训练数据集由人脸彩色图像组成,那么生成的图像也将与人脸相似。
[4] GOODFELLOW I. J, POUGET-ABADIE J, MIRZA M, et al. Generative adversarial nets[C]//Proceedings of the 27th International Conference on Neural Information Processing Systems, MIT Press, 2014:2672-2680.
图1.2展示了GAN架构及其组成部分。为了训练模型,训练数据集中的真实样本和生成器创建的虚假样本都要输入判别器。生成器的主要目的是创建与训练数据集中的示例几乎没有区别的数据实例,而判别器则需要努力将生成器生成的虚假样本与真实样本区分开来。这两个网络进行着类似于猫鼠游戏的持续竞争,每个网络都会不断尝试超越对方。
GAN模型的训练过程包括多次迭代。在每次迭代中,生成器都会获取某种形式的任务描述(步骤1),并用它来创建虚假图像(步骤2)。虚假图像与训练集中的真实图像一起被输入判别器(步骤3)。判别器会尝试将每个样本分类为“真实”或“虚假”,然后将分类结果与实际标签[真实数据(ground truth)]进行比较(步骤4)。判别器和生成器都会从分类结果中获得反馈(步骤5),并据此提高自己的能力:判别器会调整自己识别虚假样本的能力;生成器则会学习如何增强其生成更加令判别器信服的样本的能力。随着训练的推进,当两个网络都无法进一步提升时,就会达到一个平衡点。此时,生成器即可生成与真实样本几乎没有区别的数据实例了。
图1.2 生成对抗网络架构及其组成部分。生成对抗网络采用双网络架构,包括一个生成模型(左)和
一个判别模型(中),生成模型负责捕捉底层数据分布,判别模型负责估算特定样本来自真实训练
数据集(被视为“真实样本”)而非生成模型(被视为“虚假样本”)的可能性
为了准确理解GAN的工作原理,我们看一个示例。
假设我们是充满激情的动漫爱好者,正在进行一项激动人心的探索,打算使用一种名为深度卷积GAN(deep convolutional GAN,DCGAN,详见第4章)的强大工具创建自己的动漫脸谱。
回顾图1.2中间上方,有一张标有“真实样本”的图像。我们将使用63632张彩色动漫人脸图像作为训练数据集。图1.3展示了训练集中的32个示例图像。这些特殊图像起着至关重要的作用,它们将作为判别器网络的一半输入数据。
图1.3 动漫人脸训练数据集中的示例
图1.2左侧是生成器网络。为了每次生成不同图像,生成器会从潜空间(latent space)获取一个向量Z作为输入。我们可以把这个向量看作“任务描述”。在训练过程中,我们从潜空间中提取不同的Z向量,因此网络每次都会生成不同图像。这些虚假图像是判别器网络的另一半输入数据。
注意
通过改变向量Z的值,可以生成不同的输出。在第5章中,我们将学习如何选择向量Z来生成具有特定特征(如男性或女性特征)的图像。
但有一个问题需要注意,那就是在两个网络学会有关创作和检测的技能之前,生成器生成的图像都是乱七八糟的!此时的结果看起来完全不像图1.3中的动漫人脸。实际上,此时的结果看起来就像电视屏幕上显示的“雪花点”(第4章会展示此时的生成结果)。
我们需要对模型进行多次迭代训练。在每次迭代中,我们将生成器创建的一组图像连同从训练集中随机抽取的一组真实动漫人脸图像输入判别器,我们期望判别器预测每张图像是由生成器创建的(虚假图像)还是从训练集中抽取的(真实图像)。
有人可能会问:在每次迭代训练中,判别器和生成器是如何学习的?一旦做出了预测,判别器并不会就此作罢,而是从每张图像的预测错误中学习。有了这些新获得的知识,判别器将调整参数,使自己在下一轮判断中做出更好的预测。生成器也没闲着!它记录图像生成过程和预测结果。有了这些知识,生成器也将调整自己的网络参数,力争在下一次迭代中生成越来越逼真的图像,以降低判别器识别出虚假图像的概率。
随着不断迭代,我们将迎来显著变化。生成器网络不断进化,生成的动漫人脸越来越逼真,与训练集中的人脸非常相似。与此同时,判别器网络也通过磨炼自己的技能,成长为一名火眼金睛的识假侦探。创作者和检测者就这样联手“翩翩起舞。”
渐渐地,我们终于迎来了那个神奇时刻:模型达成了一种平衡,一种完美的平衡。此时,生成器创建的图像变得惊人地真实,以至于与训练集中的真实动漫人脸难以区分。此时,判别器已经无所适从了,它会对每张图像都赋予50%的真实性概率,无论图像是来自训练集,还是由生成器生成的。
最后,读者可以看看图1.4所示的一些生成器作品示例,它们看起来与训练集中的图像没有任何区别。
图1.4 由DCGAN中训练好的生成器生成的动漫人脸图像
GAN易于实现且用途广泛。在本书中,我将介绍如何用GAN生成几何图形、复杂图案、高分辨率图像和风格显著的音乐。
GAN的实际应用不仅限于生成逼真的数据。GAN还可以将一个图像域(image domain)中的属性转换到另一个图像域中。正如第6章将要介绍的,我们可以训练CycleGAN(GAN家族中的一种生成模型)将人脸图像中的金发转换为黑发,同一模型还可以将黑发转换为金发。图1.5显示了4行图像。第一行是金发原始图像。经过训练的CycleGAN将其转换为黑发图像(第二行)。最后两行则分别是黑发原始图像和转换后的金发图像。
图1.5 利用CycleGAN改变发色。如果将金发图像(第一行)输入训练好的CycleGAN模型,
该模型会将这些图像中的金发转换为黑发(第二行)。这个模型还能将黑发(第三行)
转换为金发(第四行)
想想看,我们能从GAN的训练中获得哪些神奇技能?这些技能不仅很酷,而且超级实用!假设我们经营了一家“按单定制”的在线服装店(在实际生产所订购的产品前,允许顾客对产品进行定制)。我们的网站展示了大量独特的设计供顾客挑选,但这会面临一个问题:只有当顾客下订单后,才会生产定制化的服装。那么如何在下单前让顾客看到这些定制化服装的照片?制作这些服装的高质量照片可能会非常昂贵,因为必须先生产出商品,然后才能拍摄它们。
GAN可以大展拳脚了!我们再也不需要收集大量已生产服装的照片,而是可以用CycleGAN等工具将一组图像的特征转换为另一组图像的特征,从而创造出一系列全新款式。这只是GAN的一种有趣用法。由于这些模型具有超强的通用性,可以处理各种数据,因此在实际应用中具有无限的可能性。
Transformer是一种深度神经网络,擅长处理序列到序列预测问题,例如接收输入的句子并预测最有可能出现的下一个单词。本节将介绍Transformer的关键创新:自注意力机制(self-attention mechanism)。随后将讨论Transformer的架构及不同类型的Transformer。最后,还将讨论Transformer的一些最新进展,如多模态模型(不仅可以输入文本,还可输入音频和图像等其他数据类型的Transformer)和预训练LLM(用大量文本数据训练的模型,可执行各种下游任务)。
在谷歌的一群研究员于2017年发明Transformer架构之前,[5]自然语言处理(natural language processing,NLP)和其他类型的序列到序列预测任务主要由循环神经网络(recurrent neural network,RNN)处理。然而RNN是按顺序处理输入的,这意味着模型每次只能按顺序处理一个输入,不能同时处理整个序列。事实上,RNN会沿着输入序列和输出序列的符号位置进行计算,因此无法并行训练,这使得训练速度非常缓慢。反过来,这也导致无法用庞大的数据集训练模型。此外,当循环模型处理序列时,模型会逐渐丢失序列中早期元素的信息,这些因素使得此类模型无法成功捕捉序列中的长程依赖关系。即使是长短期记忆(long short term memory,LSTM)网络这样的高级RNN变体可以处理更长程的依赖关系,在处理极长程的依赖关系时也存在不足。
[5] VASWANI A, SHAZEER N, PARMAR N, et al. Attention is all you need[C]//Advances in Neural Information Processing Systems, 2017: 5998-6008.
自注意力机制是Transformer的一项重大创新,这种机制擅长捕捉序列中的长程依赖关系。此外,由于输入数据在模型中不是按顺序处理的,因此Transformer可以并行训练,这大幅缩短了训练时间。更重要的是,并行训练使得用大量数据训练Transformer成为可能,从而让LLM(基于其处理和生成文本、理解上下文和执行各种语言任务的能力)变得智能和知识渊博。这一切引发了ChatGPT等LLM的兴起及当前的人工智能热潮。
注意力机制(attention mechanism)会根据一个元素与序列中所有元素(包括这个元素本身)的关系来分配权重。权重越高,两个元素间的关系就越密切。这些权重是在训练过程中从大量训练数据中学来的。因此,训练好的LLM(如ChatGPT)能够找出句子中任何两个词之间的关系,从而理解人类语言。
有人可能会问:注意力机制如何为序列中的元素分配分数,从而捕捉长程依赖关系?注意力权重的计算是通过将输入传递给3个神经网络层获得查询Q、键K和值V(见第9章)。使用查询、键和值来计算注意力的方法其实来自检索系统。例如,想在公共图书馆找一本书,可以先在图书馆的搜索引擎中输入一些内容,如“金融领域的机器学习”。此时,查询Q就是“金融领域的机器学习”,键K是书名和书籍描述等。图书馆的检索系统会根据查询和键之间的相似性为我们推荐图书列表(值V)。当然,书名或描述中包含“机器学习”“金融”,或同时包含这两个短语的书会排在最前面,而书名或描述中不包含这两个短语的书会排在列表的最后面,因为这些书的匹配分数较低。
在第9章和第10章中,我会进一步介绍有关注意力机制的更多细节。不仅如此,我们还将从零开始实现注意力机制,从而构建并训练一个能将英语翻译成法语的Transformer。
Transformer最初是在设计机器语言翻译(如英译德或英译法)模型时提出的,其架构如图1.6所示,左侧部分为编码器,右侧部分为解码器。
图1.6 Transformer架构。Transformer的编码器“学习”输入序列的含义,并将其转换为表示该含义的抽象表示(向量),然后将这些向量传递给解码器。解码器根据序列中前一个单词和编码器输出的抽象表示(向量),每次预测一个单词,从而构建输出(如英语句子的法语译文)
Transformer中的编码器“学习”输入序列(如英语句子“How are you?”)的含义,并将其转换为表示该含义的抽象表示(向量),然后将这些向量传递给解码器。解码器根据序列中前一个单词和编码器输出的抽象表示(向量),每次预测一个单词,从而构建输出(如英语句子的法语译文)。在第9章和第10章中,我们将从零开始创建这样一个Transformer,并训练它将英语翻译成法语。
Transformer有3种类型: 仅编码器Transformer(encoder-only Transformer)、仅解码器Transformer(decoder-only Transformer)和编码器-解码器Transformer(encoder-decoder Transformer)。仅编码器Transformer没有解码器,能够将序列转换为抽象表示,随后用于各种下游任务,如情感分析、命名实体识别和文本生成。仅解码器Transformer只有解码器而没有编码器,非常适合文本生成、语言建模和创意写作。GPT-2(ChatGPT的前身)和ChatGPT都是仅解码器Transformer。在第11章中,我们将从零开始创建GPT-2,然后从Hugging Face(人工智能社区,围绕ML模型、数据集和应用提供托管和合作服务)中提取训练好的模型权重。我们将把权重加载到GPT-2模型中,然后开始生成文本。
编码器-解码器Transformer是复杂任务(如可以处理文生图任务或语音识别任务的多模态模型)所需要的。编码器-解码器Transformer结合了编码器和解码器的优点。编码器能有效处理和理解输入的数据,而解码器则擅长生成输出。这种组合使模型能高效地理解复杂的输入(如文本或语音),并生成复杂的输出(如图像或转录的文本)。
生成式人工智能的最新发展催生了各种多模态模型(multimodal model)。对于这种模型,Transformer不仅可以使用文本,还可以使用音频和图像等其他类型的数据作为输入。文生图Transformer(text-to-image Transformer)就是这样一个例子。DALL·E 2、Imagen和Stable Diffusion都是文生图模型,由于它们能根据文本提示生成高分辨率图像,因此备受媒体关注。文生图Transformer采用了扩散模型(diffusion model)原理,即通过一系列转换来逐渐提高数据的复杂性。在讨论文生图Transformer之前,我们先了解扩散模型。
假设想使用基于扩散的模型生成高分辨率的花朵图像。首先,我们需要准备一组高质量的花朵图像训练集,然后,要求模型逐渐向花朵图像中添加噪声(所谓的扩散过程),直到花朵图像变成完全随机的噪声。最后,我们训练模型从充满噪声的图像中逐渐去除噪声,生成新的数据样本。扩散过程如图1.7所示。最左侧一列包含4张原始花朵图像。随着向右推进,在每一时间步中都会在图像中添加一些噪声,直到最右侧一列的4张图像变成纯随机噪声。
图1.7 扩散模型会在图像中添加越来越多的噪声,并学习重建图像。最左侧一列包含4张原始花朵图像。随着向右推进,在每一时间步中都会在图像中添加一些噪声,直到最右侧一列的4张图像变成纯随机噪声。然后,利用这些图像训练一个基于扩散的模型,从充满噪声的图像中逐渐去除噪声,生成新的数据样本
有人可能会好奇:文生图Transformer与扩散模型有什么关系?文生图Transformer可将文本提示作为输入,生成与文本描述相符的图像。文本提示是一种条件,而模型会使用一系列神经网络层将文本描述转换为图像。与扩散模型一样,文生图Transformer也采用了多层分级架构,每一层都会逐步增加所生成图像的细节。在扩散模型和文生图Transformer中,对输出结果进行迭代改进的核心概念是相似的,我将在第15章中解释。
扩散模型能提供稳定的训练并生成高质量图像,因此越来越受欢迎,其性能也优于GAN和变分自编码器(variational autoencoder,VAE)等其他生成模型。第15章将使用Oxford Flower数据集训练一个简单的扩散模型,还将介绍多模态Transformer背后的基本思想,并编写一个Python程序,借此让OpenAI的DALL·E 2通过文本提示生成图像。例如,当输入“an astronaut in a space suit riding a unicorn”(穿着宇航服的宇航员骑乘独角兽)作为提示词时,DALL·E 2将生成如图1.8所示的图像。
图1.8 使用“an astronaut in a space suit riding a unicorn”作为提示词用DALL·E 2生成的图像
在第16章中,我将介绍如何访问预训练LLM(如ChatGPT、GPT4和DALL·E 2)。这些模型是在大量文本数据上训练出来的,它们从数据中学到了一般知识,可以执行各种下游任务(如文本生成、情感分析、问题解答和命名实体识别)。由于预训练LLM往往是根据几个月前的信息训练的,因此无法提供最近一两个月新出现的事件的相关信息,更不用说天气状况、航班状态或股票价格等实时信息了。我们将使用LangChain库(一个用于使用LLM构建应用的Python库,提供提示词管理、LLM链接和输出解析等工具)将LLM与Wolfram Alpha和Wikipedia API链接,从而创建一个“全能”的个人助理。
本书旨在向读者展示如何从零开始构建和训练生成模型。这样,我们就能全面了解这些模型的内部工作原理,从而更好地利用它们。从零开始创建一个东西是理解它的最佳途径。我们将围绕GAN实现这一目标:包括DCGAN和CycleGAN在内,所有模型都将从零开始构建,此外还会使用来自公有领域的精选数据来训练这些模型。
对于Transformer,我们将从零开始构建和训练除LLM之外的所有模型。之所以排除LLM,是因为LLM的训练需要大量数据和超级算力。不过,在这方面我们依然可以进行一些尝试。具体来说,第9章和第10章将以英语到法语的翻译为例,循序渐进地实现2017年的一篇开创性论文“Attention is all you need”所提出的模型(这个Transformer也可以用其他数据集训练,如汉译英或英译德)。我们还将构建一个小型的仅编码器Transformer,并使用包括《老人与海》(The Old Man and the Sea)在内的几部海明威的作品对其进行训练。训练好的模型将能生成海明威写作风格的文本。ChatGPT和GPT-4体量太大,无法从零开始构建和训练,但我们会以它们的前身GPT-2为目标,学习如何从零开始构建GPT-2。除此之外,我们还会从Hugging Face中提取训练好的权重,并将其加载到我们构建的GPT-2模型中,随后就可以生成足以冒充人类作品的文本了。
从这个意义上说,本书采用了一种比大多数书更基础的方法。本书并不是把生成式人工智能模型当作一个黑匣子来介绍,而是让感兴趣的读者有机会深入了解这些模型的内部工作原理。这样做是为了让读者对生成模型有更深入的理解,这反过来也可以帮助读者构建更好、更负责任的生成式人工智能。原因如下。
首先,深入理解生成模型的架构有助于更好地实际使用这些模型。例如在第5章中,读者将学习如何在生成的图像中选择特征,如男性或女性、戴眼镜或不戴眼镜等。通过从零开始构建条件式GAN,我们可以理解生成图像的某些特征是由潜空间中的随机噪声向量Z决定的。因此,我们可以选择不同的Z值作为训练模型的输入,以生成所需特征(如男性或女性)。在不理解模型设计的情况下,将很难进行这种属性选择。
对Transformer来说,了解其架构(以及编码器和解码器的作用)后,我们就有能力创建和训练Transformer,以生成自己感兴趣的内容类型(例如简·奥斯汀写作风格的小说或莫扎特创作风格的音乐)。这种理解也有助于我们使用预训练LLM。例如,GPT-2有15亿个参数,很难从零开始训练,但我们可以为该模型添加一个附加层,并针对文本分类、情感分析和问题解答等其他下游任务对其进行微调。
其次,深入理解生成式人工智能,有助于读者对人工智能的危险性做出公正的评估。虽然生成式人工智能的非凡能力让我们在日常生活和工作中受益匪浅,但它也有可能造成巨大的伤害。埃隆·马斯克(Elon Musk)甚至说:“它有可能出错并毁灭人类。”[6]越来越多的学术界和科技界人士对人工智能,尤其是生成式人工智能带来的危险感到担忧。正如许多科技界先驱所告诫的那样,生成式人工智能(尤其是LLM)可能会导致意想不到的后果。[7]也怪不得在ChatGPT发布仅5个月后,包括史蒂夫·沃兹尼亚克(Steve Wozniak)、特里斯坦·哈里斯(Tristan Harris)、约书亚·本吉奥(Yoshua Bengio)和山姆·阿尔特曼(Sam Altman)在内的许多科技界专家和企业家就签署了一封公开信,呼吁在至少6个月内暂停训练任何比GPT-4更强大的人工智能系统。[8]透彻理解生成模型的架构,有助于我们对人工智能的益处和潜在危险进行深入而公正的评估。
[6] 参考Julia Mueller在《国会山报》(The Hill)上发表的文章“Musk: There’s a chance AI ‘goes wrong and destroys humanity’”(2023)。
[7] 参考Stuart Russell的文章“How to stop runaway AI”(2023)。
[8] 参考Connie Loizos在TechCrunch上发表的文章“1,100+ notable signatories just signed an open letter asking ‘all AI labs to immediately pause for at least 6 months’”(2023)。
■ 生成式人工智能是一种能够生成各种形式的新内容(包括文本、图像、代码、音乐、音频和视频)的技术。
■ 判别模型专门分配标签,而生成模型负责生成新的数据实例。
■ PyTorch具有动态计算图和GPU训练能力,非常适合深度学习和生成模型。
■ GAN是一种生成式建模方法,由生成器和判别器这两个神经网络组成。生成器的目标是创建逼真的数据样本,最大限度提高判别器认为这些样本是真实样本的概率;而判别器的目标是正确识别虚假样本和真实样本。
■ Transformer是一种深度神经网络,它利用注意力机制来识别序列中元素间的长程依赖关系。原始的Transformer有一个编码器和一个解码器。例如,当用于英语到法语的翻译时,编码器会将英语句子转换为抽象表示的向量,然后将其传递给解码器。解码器根据编码器的输出和之前生成的单词,每次生成一个单词的法语译文。