当前位置: 首页 > news >正文

杭州专业的网站制作成功案例营销型网站建设论文

杭州专业的网站制作成功案例,营销型网站建设论文,千图主站的功能介绍,宁乡住房和城乡建设局网站原文#xff1a;Modern Generative AI with ChatGPT and OpenAI Models 译者#xff1a;飞龙 协议#xff1a;CC BY-NC-SA 4.0 序言 本书以介绍生成式 AI 领域开始#xff0c;重点是使用机器学习算法创建新的独特数据或内容。它涵盖了生成式 AI 模型的基础知识#xff0c… 原文Modern Generative AI with ChatGPT and OpenAI Models 译者飞龙 协议CC BY-NC-SA 4.0 序言 本书以介绍生成式 AI 领域开始重点是使用机器学习算法创建新的独特数据或内容。它涵盖了生成式 AI 模型的基础知识并解释了这些模型如何训练以生成新数据。 之后它着重于 ChatGPT 如何提升生产力和增强创造力的具体用例。它还探讨了如何通过改进提示设计和利用零、一、和少次学习能力来充分利用 ChatGPT 互动。 本书随后对之前按领域聚类的用例进行了详细介绍营销人员、研究人员和开发人员/数据科学家。每个领域将涵盖四个具体的用例您可以轻松地自行复制。 然后从个别用例开始本书转向利用 Azure 基础设施上可用的 OpenAI 模型 API 的企业级场景。本书还将重点关注现有客户故事的端到端场景以及负责任的 AI 影响。 最后本书将回顾迄今讨论的主要要点并反思生成式 AI 领域接下来的发展方向。 通过本书您将掌握深入研究生成式 AI 领域并开始在自己的项目中使用 ChatGPT 和 OpenAI 模型 API 的知识。 本书适合谁 本书面向广泛的读者群体。它适用于对使用 ChatGPT 和 OpenAI 提高日常生产力以及深入了解 ChatGPT 背后的技术和模型架构感兴趣的一般用户。它也适用于希望深入了解 ChatGPT 和 OpenAI 模型在现实世界应用中的商业用户并了解它们如何赋能其组织。本书还适用于希望深入了解 ChatGPT 和 OpenAI 模型如何提升其 ML 模型和代码的数据科学家和开发人员以及希望深入了解其领域中 OpenAI 和 ChatGPT 用例的营销人员和研究人员。 由于本书提供了 OpenAI 模型背后的技术和生成式 AI 主要概念的理论概述因此阅读本书并无特殊要求。如果您还对实施实际用例感兴趣我们提供了端到端的解决方案和相关 Python 代码以及逐步实施说明。 本书涵盖了什么内容 第一章生成式 AI 简介提供了生成式 AI 领域的概述重点是使用机器学习算法创建新的独特数据或内容。它涵盖了生成式 AI 模型的基础知识并解释了这些模型如何训练以生成新数据。该章节还着重介绍了生成式 AI 在各个领域的应用如图像合成、文本生成和音乐创作突出了生成式 AI 在革新各行业中的潜力。 第二章OpenAI 和 ChatGPT – 超越市场炒作概述了 OpenAI 及其最显著的发展 ChatGPT重点介绍其历史、技术和能力。本章还关注了 ChatGPT 如何在各行业和应用中使用以改善沟通和自动化流程最终如何影响技术领域及其他领域。 第三章熟悉 ChatGPT指导您如何设置 ChatGPT 账户并开始使用该服务。还将介绍如何与 Web UI 交互如何根据主题组织聊天以及如何构建对话。 第四章理解提示设计着重介绍了提示设计的重要性作为提高模型准确性的技术。实际上提示对模型生成的输出有很大影响。一个设计良好的提示可以帮助引导模型生成相关和准确的输出而一个设计不当的提示可能是无关或令人困惑的。最后还重要的是在提示中实施道德考虑以防止模型生成有害内容。 第五章ChatGPT 提升日常工作效率介绍了 ChatGPT 可以为普通用户在日常生活中做的主要活动提高用户的生产力。本章将重点介绍写作辅助、决策制定、创意灵感等具体示例让您可以自己尝试。 第六章与 ChatGPT 共同开发未来着重介绍了开发人员如何利用 ChatGPT。本章将重点关注 ChatGPT 在这一领域可以解决的主要用例包括代码审查和优化、文档生成和代码生成。本章将提供示例并让您尝试自己的提示。 第七章ChatGPT 精通营销着重介绍了营销人员如何利用 ChatGPT。本章将重点关注 ChatGPT 在这一领域可以解决的主要用例包括 A/B 测试、关键词定位建议和社交媒体情感分析。本章将提供示例并让您尝试自己的提示。 第八章ChatGPT 改变研究方式着重介绍了研究人员如何利用 ChatGPT。本章将重点关注 ChatGPT 在这一领域可以解决的主要用例包括文献综述、实验设计和参考文献生成。本章将提供示例并让您尝试自己的提示。 第九章OpenAI 和 ChatGPT 企业版 – 介绍 Azure OpenAI着重介绍了 OpenAI 模型在企业级应用中的应用介绍了 Azure OpenAI 服务。我们将概述 Azure OpenAI 服务的模型 API 以及如何将其嵌入自定义代码中。我们还将关注模型参数、配置和微调。最后我们将对负责任人工智能的主题进行一些考虑以确保您的人工智能系统符合道德标准。 第十章企业的热门用例以当前市场上企业正在开发的使用 Azure OpenAI 的最热门用例概述开始。我们将探讨项目的具体示例如智能搜索引擎、人工智能助手和报告生成器。最后我们将专注于特定行业的端到端生产项目。 第十一章结语和最终思考以对前几章中探讨的最热门用例进行简短回顾开始。然后我们将转向一些关于生成式人工智能对行业和日常生活影响的考虑。我们还将了解道德考虑和负责任人工智能在项目设计阶段的作用。本章将以一些关于生成式人工智能未来发展的最终思考结束GPT-4 即将推出。 要充分利用本书 这里是您需要准备的清单 书中涵盖的软件/硬件系统要求Python 3.7.1 或更高版本Windows、macOS 或 LinuxStreamlitWindows、macOS 或 LinuxLangChainWindows、macOS 或 LinuxOpenAI 模型 APIOpenAI 账户Azure OpenAI 服务已启用 Azure OpenAI 的 Azure 订阅 与往常一样您可以在书的 GitHub 存储库中找到所有章节中使用的提示github.com/PacktPublishing/Modern-Generative-AI-with-ChatGPT-and-OpenAI-Models/tree/main/Chapter%204%20-%20Prompt%20design 如果您使用本书的数字版本我们建议您自己输入代码或从书的 GitHub 存储库中访问代码链接在下一节中提供。这样做将有助于避免与复制粘贴代码相关的任何潜在错误。 下载示例代码文件 您可以从 GitHub 下载本书的示例代码文件github.com/PacktPublishing/Modern-Generative-AI-with-ChatGPT-and-OpenAI-Models。如果代码有更新将在 GitHub 存储库中更新。 我们还提供来自我们丰富书籍和视频目录的其他代码包可在github.com/PacktPublishing/上找到。快来看看吧 下载彩色图片 我们还提供一份 PDF 文件其中包含本书中使用的屏幕截图和图表的彩色图片。您可以在此处下载packt.link/YFTZk。 使用的约定 本书中使用了许多文本约定。 文本中的代码表示文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。这里有一个例子“将下载的WebStorm-10*.dmg磁盘映像文件挂载为系统中的另一个磁盘。” 代码块设置如下 query st.text_area(Ask a question about the document) if query:docs faiss_index.similarity_search(query, k1)button st.button(Submit)if button:st.write(get_answer(faiss_index, query))任何命令输入或输出都将如下所示 pip install --upgrade openai粗体表示新术语、重要单词或屏幕上看到的单词。例如菜单或对话框中的单词以粗体显示。这里有一个例子“您可以选择通过选择本地文件或Azure blob 或其他共享 网络位置来上传文件。” 提示或重要说明 显示如此。 第一部分生成式人工智能和 GPT 模型的基础知识 在本书的第一部分中介绍了生成式人工智能和 GPT 模型的基础知识包括 OpenAI 及其旗舰模型系列 GPT 的简要发展历史。 本部分以生成式人工智能领域的概述开始为您提供关于这一 AI 研究领域的基础知识包括其历史和最新发展。您还将熟悉生成式人工智能的应用从文本生成到音乐创作。 第一部分介绍了将生成式人工智能的力量带给大众的公司OpenAI。您将熟悉 OpenAI 最受欢迎发布的技术背后的技术——ChatGPT并了解从人工神经网络ANNs起步发展到大型语言模型LLMs的研究历程。 本部分包括以下章节 第一章生成式人工智能简介 第二章OpenAI 和 ChatGPT 超越市场炒作 一、生成式人工智能简介 你好欢迎来到ChatGPT 和 OpenAI 模型的现代生成式人工智能在本书中我们将探索生成式人工智能AI及其开创性应用的迷人世界。生成式人工智能已经改变了我们与机器互动的方式使计算机能够在没有明确人类指导的情况下创建、预测和学习。通过 ChatGPT 和 OpenAI我们见证了自然语言处理、图像和视频合成等领域的前所未有的进步。无论您是一个好奇的初学者还是一个经验丰富的从业者本指南将为您提供了解和掌握生成式人工智能激动人心的领域所需的知识和技能。让我们开始并从我们所处的背景的一些定义开始。 本章概述了生成式人工智能领域该领域利用机器学习ML算法创建新的独特数据或内容。 它专注于将生成式人工智能应用于各个领域如图像合成、文本生成和音乐创作突出了生成式人工智能革新各行业的潜力。这个生成式人工智能的介绍将为您提供这项技术所处的背景以及将其置于人工智能、机器学习和深度学习DL的广阔世界中的知识。然后我们将深入探讨生成式人工智能的主要应用领域提供具体示例和最新发展以便您熟悉它可能对企业和社会产生的影响。 此外了解研究生成式人工智能的当前最新技术发展历程将帮助您更好地理解最近发展和最新模型的基础。 我们将涵盖以下主题 理解生成式人工智能 探索生成式人工智能的领域 生成式人工智能研究的历史和当前状态 通过本章结束时您将熟悉生成式人工智能这个激动人心的世界它的应用、背后的研究历史以及当前的发展这些发展可能对企业产生影响目前也正在产生影响。 介绍生成式人工智能 AI 在近年来取得了显著进展其中一个发展迅速的领域是生成式人工智能。生成式人工智能是人工智能和深度学习的一个子领域专注于利用机器学习技术在现有数据上训练的算法和模型生成新内容如图像、文本、音乐和视频。 为了更好地理解人工智能、机器学习、深度学习和生成式人工智能之间的关系请将人工智能视为基础而机器学习、深度学习和生成式人工智能代表着越来越专业化和专注的研究和应用领域 人工智能代表着创造能够执行任务、展示人类智能和能力并能够与生态系统互动的系统的广泛领域。 机器学习是一个专注于创建算法和模型的分支使这些系统能够通过时间和训练学习和改进自己。机器学习模型从现有数据中学习并在其成长过程中自动更新其参数。 深度学习DL是机器学习ML的一个子分支因为它包含深度学习模型。这些深度模型被称为神经网络特别适用于计算机视觉或自然语言处理NLP等领域。当我们谈论机器学习和深度学习模型时我们通常指的是判别模型其目的是在数据之上进行预测或推断模式。 最后我们来到生成式人工智能这是深度学习的进一步子支它不使用深度神经网络来对现有数据进行聚类、分类或预测它使用这些强大的神经网络模型来生成全新的内容从图像到自然语言从音乐到视频。 以下图显示了这些研究领域之间的关系 图 1.1 – 人工智能、机器学习、深度学习和生成式人工智能之间的关系 生成式人工智能模型可以在大量数据上进行训练然后可以使用该数据中的模式从头开始生成新的示例。这种生成过程与判别模型不同后者被训练用于预测给定示例的类别或标签。 生成式人工智能领域 近年来生成式人工智能取得了重大进展并将其应用扩展到了各种领域如艺术、音乐、时尚、建筑等等。在其中一些领域它确实正在改变我们创造、设计和理解周围世界的方式。在其他领域它正在改进并使现有的流程和操作更加高效。 生成式人工智能应用于许多领域的事实也意味着其模型可以处理不同类型的数据从自然语言到音频或图像。让我们了解生成式人工智能模型如何处理不同类型的数据和领域。 文本生成 生成式人工智能generative AI最伟大的应用之一——也是我们在本书中将要重点介绍的——是其能够以自然语言生成新内容的能力。事实上生成式人工智能算法可以用于生成新的文本如文章、诗歌和产品描述。 例如OpenAI 开发的 GPT-3 等语言模型可以在大量文本数据上进行训练然后用于生成新的、连贯且语法正确的文本包括不同语言输入和输出以及从文本中提取关键词、主题或完整摘要等相关特征。 这是一个使用 GPT-3 的示例 图 1.2 – ChatGPT 响应用户提示的示例并添加参考资料 接下来我们将继续讨论图像生成。 图像生成 在图像合成中最早且最知名的生成式 AI 示例之一是 2014 年 I. Goodfellow 等人发表的论文中介绍的生成对抗网络GAN架构生成对抗网络。GAN 的目的是生成与真实图像难以区分的逼真图像。这种能力有一些有趣的商业应用如为训练计算机视觉模型生成合成数据集生成逼真的产品图像以及为虚拟现实和增强现实应用生成逼真图像。 这里是一些由 AI 完全生成的不存在的人脸的例子 图 1.3 – GAN StyleGAN2 生成的虚构面孔网址为 https://this-person-does-not-exist.com/en 然后在 2021 年OpenAI 在这一领域推出了一种新的生成式 AI 模型DALL-E。与 GAN 不同DALL-E 模型旨在根据自然语言描述生成图像GAN 以随机噪声向量作为输入可以生成各种图像这些图像可能看起来不太真实但仍描绘出所需的概念。 DALL-E 在广告、产品设计、时尚等创意产业中具有巨大潜力可以创造独特和创意的图像。 在这里你可以看到 DALL-E 生成四幅图像的例子从一个自然语言请求开始 图 1.4 – DALL-E 生成的图像以自然语言提示作为输入 请注意文本和图像生成可以结合起来产生全新的材料。近年来广泛使用这种组合的新 AI 工具已经出现。 一个例子是 Tome AI一种生成式叙事格式除了其能力外还能从头开始创建幻灯片利用诸如 DALL-E 和 GPT-3 的模型。 图 1.5 – 一份关于生成式 AI 的演示完全由 Tome 生成使用自然语言输入 正如你所看到的前述的 AI 工具完全能够根据我在自然语言中的简短输入创建一份草稿演示。 音乐生成 生成音乐的生成式人工智能的最初方法可以追溯到 50 年代在算法作曲领域的研究中这种技术使用算法生成音乐作品。事实上1957 年Lejaren Hiller 和 Leonard Isaacson 创作了《Illiac Suite for String Quartet》(www.youtube.com/watch?vn0njBFLQSk8)这是由 AI 完全创作的第一首音乐作品。从那时起生成音乐的生成式人工智能领域一直是持续研究的课题。在近年的发展中新的架构和框架已经在普通大众中广泛传播例如谷歌在 2016 年推出的 WaveNet 架构能够生成高质量的音频样本或者由谷歌开发的 Magenta 项目该项目使用循环神经网络RNNs和其他机器学习技术来生成音乐和其他形式的艺术。然后在 2020 年OpenAI 还宣布了 Jukebox这是一个能够生成音乐的神经网络可以根据音乐和声音风格、流派、参考艺术家等进行输出定制。 这些以及其他框架成为许多生成音乐 AI 作曲助手的基础。一个例子是由索尼 CSL 研究开发的 Flow Machines。这个生成式人工智能系统在大量音乐作品数据库上进行训练以在各种风格中创作新音乐。法国作曲家 Benoît Carré使用它创作了一张名为Hello World的专辑(www.helloworldalbum.net/)其中与几位人类音乐家合作。 在这里你可以看到一个完全由 Magenta 项目中的 Music Transformer 模型生成的曲目的示例 图 1.6 – Music Transformer 允许用户听取由 AI 生成的音乐表演 另一个音乐领域内生成式人工智能的令人难以置信的应用是语音合成。事实上可以找到许多能够根据文本输入以知名歌手的声音创建音频的 AI 工具。 例如如果你一直想知道如果 Kanye West 演唱你的歌曲会是什么样子那么现在你可以通过诸如 FakeYou.com (fakeyou.com/)、Deep Fake Text to Speech 或 UberDuck.ai (uberduck.ai/)等工具实现你的梦想。 图 1.7 – 使用 UberDuck.ai 进行文本转语音合成 我必须说结果真的令人印象深刻。如果你想玩得开心你也可以尝试你所有最喜爱的卡通人物的声音比如小熊维尼… 接下来我们将看到用于视频的生成式人工智能。 视频生成 视频生成的生成式人工智能与图像生成有着类似的发展时间线。事实上在视频生成领域的关键发展之一就是 GANs 的发展。由于它们在生成逼真图像方面的准确性研究人员开始将这些技术应用于视频生成。基于 GAN 的视频生成的最显著例子之一是 DeepMind 的Motion to Video它可以从单个图像和一系列动作生成高质量的视频。另一个很好的例子是 NVIDIA 的Video-to-Video SynthesisVid2VidDL 框架它使用 GANs 从输入视频中合成高质量的视频。 Vid2Vid 系统可以生成时间上连贯的视频这意味着它们在时间上保持平滑和逼真的运动。这项技术可以用于执行各种视频合成任务例如 将一个领域的视频转换为另一个领域例如将白天视频转换为夜晚视频或将素描转换为逼真图像 修改现有视频例如更改视频中物体的风格或外观 从静态图像创建新视频例如将一系列静止图像制作成动画 在 2022 年 9 月Meta 的研究人员宣布了Make-A-Videomakeavideo.studio/的普遍可用性这是一个新的人工智能系统允许用户将他们的自然语言提示转换为视频片段。在这样的技术背后你可以认出我们迄今为止提到的许多其他领域的模型 - 用于提示的语言理解图像和运动生成与图像生成以及由 AI 作曲家制作的背景音乐。 总的来说生成式人工智能多年来已经影响了许多领域并且一些人工智能工具已经持续支持艺术家、组织和一般用户。未来看起来非常有前途然而在跳入当今市场上最终模型之前我们首先需要更深入地了解生成式人工智能的根源、其研究历史以及最终导致当前 OpenAI 模型的最新发展。 研究的历史和当前状态 在前几节中我们概述了生成式人工智能领域中最新和尖端的技术这些技术都是近年来开发的。然而这一领域的研究可以追溯到几十年前。 我们可以将生成 AI 领域的研究始于 20 世纪 60 年代当时 Joseph Weizenbaum 开发了聊天机器人 ELIZA这是 NLP 系统的最早例子之一。它是一个简单的基于规则的交互系统旨在通过基于文本输入的响应来娱乐用户并为 NLP 和生成 AI 的进一步发展铺平了道路。然而我们知道现代生成 AI 是 DL 的一个子领域尽管最早的人工神经网络ANNs最早是在 20 世纪 40 年代引入的研究人员面临着一些挑战包括有限的计算能力和对大脑生物学基础的理解不足。因此直到 20 世纪 80 年代随着新硬件和神经科学的发展反向传播算法的出现促进了 ANNs 的训练阶段。事实上在反向传播算法出现之前训练神经网络是困难的因为无法有效地计算与每个神经元相关的参数或权重的误差梯度而反向传播使得自动化训练过程成为可能并实现了 ANNs 的应用。 然后到了 21 世纪初和 2010 年代计算能力的进步加上大量可用于训练的数据使得 DL 更加实用和普及随之而来的是研究的提升。 2013 年Kingma 和 Welling 在他们的论文自动编码变分贝叶斯中引入了一种新的模型架构称为变分自编码器VAEs。VAEs 是基于变分推断概念的生成模型。它们通过将数据编码为称为潜在空间具有编码器组件的低维空间然后将其解码回原始数据空间具有解码器组件的方式提供了一种学习的方法。 VAE 的关键创新在于引入了潜在空间的概率解释。与学习输入到潜在空间的确定性映射不同编码器将输入映射到潜在空间上的概率分布。这使得 VAE 能够通过从潜在空间中采样并将样本解码到输入空间中来生成新样本。 举个例子假设我们想训练一个 VAE它可以生成看起来像真实的猫和狗的新图片。 为了实现这一点VAE 首先接收一张猫或狗的图片并将其压缩成一组较小的数字进入潜在空间这些数字代表图片的最重要特征。这些数字被称为潜在变量。 然后VAE 获取这些潜在变量并使用它们创建一幅看起来像真实猫或狗图片的新图片。这幅新图片可能与原始图片有些差异但它应该看起来像属于同一组图片。 随着时间的推移通过将生成的图片与真实图片进行比较并调整其潜在变量使生成的图片看起来更像真实图片VAE 变得更擅长创建逼真的图片。 VAE 为生成式人工智能领域的快速发展铺平了道路。事实上仅仅 1 年后Ian Goodfellow 提出了 GAN。与 VAE 架构不同GAN 由两个神经网络组成 - 生成器和判别器 - 它们在一个零和博弈中相互对抗。 生成器创建假数据在图像的情况下它创建一幅新图像旨在看起来像真实数据例如一幅猫的图像。判别器接收真实数据和假数据并试图区分它们 - 在我们的艺术赝品制作者示例中它是评论家。 在训练过程中生成器试图创建可以欺骗判别器认为它是真实的数据而判别器则试图变得更擅长区分真实数据和假数据。这两部分一起进行训练这个过程称为对抗训练。 随着时间的推移生成器变得更擅长创建看起来像真实数据的假数据而判别器则变得更擅长区分真实数据和假数据。最终生成器变得如此擅长创建假数据以至于连判别器也无法区分真假数据。 这里是 GAN 完全生成的人脸的一个例子 图 1.8 - 逼真的 GAN 生成的人脸示例摘自 2017 年《逐步增长的 GAN 用于提高质量、稳定性和变化性》https://arxiv.org/pdf/1710.10196.pdf VAE 和 GAN 这两种模型旨在生成与原始样本无法区分的全新数据并且它们的架构自提出以来已经得到改进与 Van den Oord 及其团队提出的 PixelCNNs 和由 Google DeepMind 开发的 WaveNet 等新模型的发展并行推动了音频和语音生成的进步。 2017 年另一个重要的里程碑是谷歌研究人员在一篇名为*– Attention Is All You Need的论文中引入了一种名为Transformer*的新架构。这在语言生成领域具有革命性意义因为它允许并行处理同时保留有关语言上下文的记忆超越了以 RNN 或长短期记忆LSTM框架为基础的语言模型的先前尝试。 变压器确实是谷歌于 2018 年推出的名为双向编码器表示来自变压器BERT的大规模语言模型的基础并很快成为自然语言处理实验的基准。 变压器也是由 OpenAI 推出的所有生成式预训练GPT模型的基础包括 ChatGPT 背后的 GPT-3 模型。 尽管在那些年里有大量的研究和成就但直到 2022 年下半年公众的注意力才开始转向生成式人工智能领域。 不是偶然的2022 年被誉为生成式人工智能之年。这一年强大的人工智能模型和工具开始在普通大众中广泛传播基于扩散的图像服务MidJourney、DALL-E 2 和 Stable Diffusion、OpenAI 的 ChatGPT、文本到视频Make-a-Video 和 Imagen Video以及文本到 3DDreamFusion、Magic3D 和 Get3D工具都向个人用户提供有时还是免费的。 这对两个主要原因产生了颠覆性影响 一旦生成式人工智能模型普及到公众每个个人用户或组织都有可能尝试并欣赏其潜力即使不是数据科学家或机器学习工程师。 这些新模型的输出及其内在的创造力在客观上令人惊叹而且常常令人担忧。对于个人和政府来说迫切需要适应。 因此在不久的将来我们可能会目睹人工智能系统在个人使用和企业级项目中的采用率激增。 总结 在本章中我们探索了生成式人工智能及其各种应用领域包括图像生成、文本生成、音乐生成和视频生成的令人兴奋的世界。我们了解到 OpenAI 训练的 ChatGPT 和 DALL-E 等生成式人工智能模型如何使用深度学习技术学习大型数据集中的模式并生成既新颖又连贯的新内容。我们还讨论了生成式人工智能的历史、起源以及当前的研究现状。 本章的目标是为生成式人工智能的基础知识提供坚实的基础并激励您进一步探索这个迷人的领域。 在下一章中我们将专注于当今市场上最具前景的技术之一ChatGPT我们将深入研究其背后的研究以及 OpenAI 的开发其模型的架构以及它目前可以解决的主要用例。 参考文献 arxiv.org/abs/1406.2661 www.youtube.com/watch?vIy9vRvyRf_E arxiv.org/abs/1912.04958 这个人不存在: this-person-does-not-exist.com arxiv.org/abs/1808.06601 www.microsoft.com/en-us/research/blog/a-deep-generative-model-trifecta-three-advances-that-work-towards-harnessing-large-scale-power/ tcwang0509.github.io/vid2vid/ 二、OpenAI 和 ChatGPT – 超越市场炒作 本章概述了 OpenAI 及其最显著的发展—ChatGPT重点介绍其历史、技术和能力。 总体目标是提供 ChatGPT 如何在各个行业和应用中使用以改善沟通和自动化流程的更深入了解最终这些应用如何影响技术领域及其他领域。 我们将涵盖以下主题 什么是 OpenAI OpenAI 模型系列概述 ChatGPT 之路背后模型的数学 ChatGPT最先进技术 技术要求 为了能够测试本章中的示例您需要以下内容 一个 OpenAI 账户用于访问 Playground 和 Models APIopenai.com/api/login20) 你喜欢的集成开发环境比如 Jupyter 或 Visual Studio 已安装 Python 3.7.1www.python.org/downloads pip已安装pip.pypa.io/en/stable/installation/ OpenAI Python 库pypi.org/project/openai/ 什么是 OpenAI OpenAI 是由埃隆·马斯克、山姆·奥尔特曼、格雷格·布罗克曼、伊利亚·苏茨克维尔、沃伊切赫·扎雷姆巴和约翰·舒尔曼于 2015 年创立的研究组织。正如 OpenAI 网页上所述其使命是*“确保人工通用智能AGI造福全人类”。由于是通用*的AGI 旨在具有学习和执行各种任务的能力而无需特定任务的编程。 自 2015 年以来OpenAI 将研究重点放在深度强化学习DRL上这是机器学习ML的一个子集将强化学习RL与深度神经网络结合起来。该领域的第一个贡献可以追溯到 2016 年当时该公司发布了 OpenAI Gym这是一个供研究人员开发和测试RL算法的工具包。 图 2.1 – Gym 文档的首页https://www.gymlibrary.dev/ OpenAI 继续在该领域进行研究和贡献然而其最显著的成就与生成模型有关—生成式预训练 变换器GPT。 在他们的论文*“通过生成式预训练改进语言理解”*中介绍了模型架构并将其命名为GPT-1OpenAI 研究人员很快在 2019 年发布了其继任者GPT-2。这个版本的 GPT 是在一个名为WebText的语料库上训练的当时该语料库包含稍微超过 800 万个文档总共 40 GB 的文本这些文本来自 Reddit 提交的 URL至少有 3 个赞。它有 12 亿个参数是其前身的十倍。 在这里您可以看到 HuggingFace 发布的 GPT-2 的 UI 的着陆页transformer.huggingface.co/doc/distil-gpt2 图 2.2 – GPT-2 根据提示撰写段落。来源https://transformer.huggingface.co/doc/distil-gpt2 然后在 2020 年OpenAI 首先宣布然后发布了 GPT-3其拥有 1750 亿个参数显着改善了 GPT-2 的基准结果。 除了自然语言生成模型OpenAI 还在图像生成领域取得了进展发布了该领域的第一个模型名为DALL-E于 2021 年揭示。正如前一章所述DALL-E 能够根据自然语言输入创建全新的图像这由最新版本的 GPT-3 解释。 DALL-E 最近升级到其新版本 DALL-E 2于 2022 年 4 月宣布。 在下图中您可以看到以自然语言提示在舒适环境中生成一杯咖啡的逼真图片为例的 DALL-E 生成的图像 图 2.3 – DALL-E 生成的图像以自然语言提示为输入 您可以在 OpenAI DALL-E 实验室labs.openai.com/尝试生成创意图片您将获得有限的免费积分进行实验。 尽管 OpenAI 在许多生成 AI 领域进行了投资但其在文本理解和生成方面的贡献卓越这要归功于我们将在接下来的段落中探讨的基础 GPT 模型的发展。 OpenAI 模型系列概述 今天OpenAI 提供一组预训练的、可供公众使用的模型。这有两个重要的含义 强大的基础模型可以在不需要长时间和昂贵的训练的情况下使用 操纵这些模型并不需要成为数据科学家或 ML 工程师 用户可以在 OpenAI Playground 中测试 OpenAI 模型这是一个友好的用户界面您可以与模型进行交互而无需编写任何代码。 在下面的截图中您可以看到 OpenAI Playground 的着陆页 图 2.4 – OpenAI Playground 位于 https://platform.openai.com/playground 正如您从图 2**.4中所看到的Playground 提供了一个用户界面用户可以在该界面的右侧选择模型开始与之交互。要开始与 Playground 交互您只需在自然语言的输入空间中键入任何问题或指令。您也可以从 OpenAI 文档中提供的一些示例开始platform.openai.com/examples。 在深入研究模型系列之前让我们首先定义一些您将在本章中看到的行话 标记标记可以被视为 API 用于处理输入提示的单词片段或段。与完整单词不同标记可能包含尾随空格甚至部分子单词。为了更好地理解标记的长度概念有一些一般性指导原则需要牢记。例如在英语中一个标记大约相当于四个字符或者三分之四个单词。 提示在自然语言处理NLP和机器学习的背景下提示是指作为输入提供给 AI 语言模型以生成响应或输出的文本片段。提示可以是一个问题、一个陈述或一个句子用于为语言模型提供上下文和指导。 上下文在 GPT 领域上下文指的是用户提示之前的单词和句子。语言模型利用这个上下文来生成最可能的下一个单词或短语基于训练数据中发现的模式和关系。 模型置信度模型置信度指的是 AI 模型对特定预测或输出的确定性或概率水平。在 NLP 的背景下模型置信度通常用于指示 AI 模型对其生成的响应与给定输入提示的正确性或相关性的信心程度。 上述定义将对理解如何使用 Azure OpenAI 模型系列以及如何配置其参数起到关键作用。 在 Playground 中有两个主要的模型系列可以进行测试 GPT-3一组能够理解和生成自然语言的模型。GPT-3 已经在大量文本语料库上进行了训练可以执行各种自然语言任务如语言翻译、摘要、问答等。这里是一个例子 图 2.5 – 使用 GPT-3 进行摘要任务的示例 GPT-3.5: 这是在 GPT-3 基础上构建的新一代模型旨在提高其自然语言理解和生成能力。GPT-3.5 模型可以执行复杂的自然语言任务如撰写连贯的段落或文章生成诗歌甚至以自然语言创建计算机程序。GPT-3.5 是 ChatGPT 背后的模型在其 API 上它还可以通过专门的 UI 在 Playground 中消耗 图 2.6 – 使用 GPT-3.5 进行交互的示例 Codex: 一组能够理解和生成各种编程语言代码的模型。Codex 可以将自然语言提示转换为可运行的代码使其成为软件开发的强大工具。以下是使用 Codex 的例子 图 2.7 – 使用 Codex 生成代码的示例 注 在 2023 年 3 月OpenAI 宣布 Codex 模型将从该日期起被弃用。原因是新的聊天模型包括 ChatGPT 背后的模型 GPT-3.5-turbo的不可思议的能力这些模型还可以涵盖编码任务并且其结果可以达到或甚至超过 Codex 模型的结果。 对于每个模型你还可以调整一些可配置的参数。以下是一个列表 温度从 0 到 1控制模型响应的随机性。低温度使你的模型更加确定性意味着它会倾向于给出相同的输出作为同样的问题。例如如果我多次问我的模型“OpenAI 是什么”并将温度设置为 0它总是会给出相同的答案。另一方面如果我使用温度设置为 1 的模型做同样的事情它将试图通过措辞和风格在每次都修改它的答案。 最大长度从 0 到 2048控制模型对用户提示的响应的长度以标记为单位。 停止序列用户输入: 这会使得回应在期望的地方结束比如句子或列表的结尾。 顶部概率从 0 到 1控制模型在生成回应时将考虑哪些标记。将其设置为 0.9 将考虑所有可能标记中最有可能的前 90%。也许你会问“为什么不将顶部概率设置为 1这样就可以选择所有最有可能的标记”答案是用户可能仍然希望在模型信心较低时保持多样性即使在得分最高的标记中。 频率惩罚从 0 到 1控制生成的回应中相同标记的重复频率。惩罚越高出现相同标记在回应中的概率就越低。该惩罚通过标记在文本中迄今为止出现的频率来比例减少概率这是与下一个参数的关键区别。 存在惩罚范围从 0 到 2这类似于上一个但更严格。它减少了出现在文本中的任何一个标记的重复机会。由于比频率惩罚更严格存在惩罚也增加了在回应中引入新主题的可能性。 最佳范围从 0 到 20这将生成多个回应并仅显示所有标记的总概率最佳的回应。 回应前后文本用户输入这在模型回应之前和之后插入文本。这可以帮助模型准备回应。 除了在 Playground 中尝试 OpenAI 模型您还可以在自定义代码中调用模型 API 并将模型嵌入到您的应用程序中。实际上在 Playground 的右上角您可以点击查看代码并导出如下所示的配置 图 2.8 - 使用自然语言提示调用 GPT3 模型的 Python 代码 如您从前述屏幕截图中所见该代码导出了您在 Playground 中设置的参数配置。 现在您可以通过在终端中使用pip install openai来安装 Python 中的 OpenAI 库来开始使用。为了使用模型您需要生成一个 API 密钥。您可以在您的账户设置中找到您的 API 密钥platform.openai.com/account/api-keys如下所示 图 2.9 - 您 OpenAI 配置文件中帐户设置页面中的 API 密钥 使用 OpenAI API您还可以尝试以下在 Playground 中不可用的其他模型系列 审查这是由 OpenAI 开发的经过调整的模型可以检测潜在的敏感或不安全的文本内容。审查使用机器学习算法根据上下文和语言使用对文本进行分类为安全或不安全。此模型可用于在社交媒体平台、在线社区及其他许多领域自动化内容审查。有多个类别如仇恨、仇恨/威胁、自残、性暴力、性暴力/未成年人、暴力、暴力/图形。 下面是审查 API 的示例代码 import os import openai openai.api_key os.getenv(OPENAI_API_KEY) openai.Moderation.create(inputI want to kill him, )其输出如下所示 OpenAIObject idmodr-6sHusuY9frxJdfqTBXHsOAfWhckrh at 0x218bd8482c0 JSON: {id: modr-6sHusuY9frxJdfqTBXHsOAfWhckrh,model: text-moderation-004,results: [{categories: {hate: false, hate/threatening: false,self-harm: false,sexual: false,sexual/minors: false,violence: true,violence/graphic: false},category_scores: {hate: 1.7164344171760604e-05,hate/threatening: 2.614225103059198e-08, self-harm: 2.5988580176772302e-08,sexual: 2.8184256279928377e-06,sexual/minors: 9.1383149936064e-09,violence: 0.9910049438476562,violence/graphic: 5.316753117767803e-07},flagged: true}] }在这种情况下审查 API 检测到暴力内容的证据。 嵌入一些模型可以使用嵌入。这些嵌入涉及在多维空间中表示单词或句子。在这个空间中不同实例之间的数学距离表示它们在意义上的相似性。举个例子想象单词 queen、woman、king 和 man。理想情况下在我们的多维空间中如果表示正确我们希望实现以下内容 图 2.10 – 单词之间的矢量方程示例 这意味着女人和男人之间的距离应该等于女王和国王之间的距离。这里是一个嵌入的例子 import openai embedding openai.Embedding.create(inputThe cat is on the table,modeltext-embedding-ada-002)[data][0][ embedding]前面的方法创建了输入的向量表示。我们可以在这里查看输出的前 10 个向量。 embedding[1:10] [-0.01369840931147337,-0.007505378685891628,-0.002576263388618827,-0.014773285016417503,0.019935185089707375,-0.01802290789783001,-0.01594814844429493,-0.0010944041423499584,-0.014323337003588676]嵌入在智能搜索场景中可以极其有用。事实上通过获取用户输入和用户想要搜索的文档的嵌入可以计算距离度量即余弦相似度来衡量输入和文档之间的距离。通过这样做我们可以检索与用户输入在数学距离上更接近的文档。 Whisper这是一个语音识别模型可以将音频转录为文本。Whisper 可以识别和转录各种语言和方言准确率很高是自动语音识别系统的有价值的工具。这里是一个例子 # Note: you need to be using OpenAI Python v 0.27.0 for the code below to workimport openaiopenai.api_key os.getenv(OPENAI_API_KEY)audio_file open(/path/to/file/audio.mp3, rb)transcript openai.Audio.transcribe(whisper-1, audio_file)输出如下所示 {text: Yes, hi, I just noticed a dent on the side of my car and I have no idea how it got there. There were no witnesses around and Im really frustrated. …. }所有先前的模型都是预先构建的也就是说它们已经在一个庞大的知识库上进行了预训练。 然而有一些方法可以使您的模型更加定制化以适应您的用例。 第一种方法嵌入在模型设计的方式中它涉及在few-learning 方法中为您的模型提供上下文我们将在本书的后面重点介绍这种技术。换句话说您可以要求模型生成一篇文章其模板和词汇回忆您已经写过的另一篇文章。为此您可以向模型提供您的查询生成一篇文章和以前的文章作为参考或上下文以便模型更好地为您的请求做好准备。 这里是一个例子 图 2.11 – OpenAI Playground 中使用 few-shot learning 方法进行对话的示例 第二种方法更为复杂被称为微调。微调是将预训练模型适应新任务的过程。 在微调中预训练模型的参数被改变要么通过调整现有参数要么通过添加新参数以更好地适应新任务的数据。这是通过在特定于新任务的较小标记数据集上训练模型来实现的。微调的关键思想是利用从预训练模型中学到的知识并将其微调到新任务而不是从头开始训练模型。请看下面的图 图 2.12 – 模型微调 在前图中你可以看到关于如何在 OpenAI 预构建模型上进行精调的模式图。其思想是你可以使用通用参数或权重的预训练模型。然后你用自定义数据喂养你的模型通常以键-值提示和完成的形式如下所示 {prompt: prompt text, completion: ideal generated text} {prompt: prompt text, completion: ideal generated text} {prompt: prompt text, completion: ideal generated text} ...训练完成后你将会得到一个定制化模型对于给定任务表现特别出色例如对公司文档进行分类。 精调的好处在于你可以根据自己的用例定制预构建模型无需从头开始重新训练但是可以利用更小的训练数据集因此训练时间和计算量更少。与此同时模型保持其生成能力和通过原始训练学习的准确性这是在大规模数据集上发生的。 在这一段中我们对 OpenAI 提供给一般公众的模型进行了概述从你可以直接在 Playground 中尝试的模型GPT、Codex到如嵌入等更复杂的模型。我们还了解到除了使用预构建模型之外你还可以通过精调进行定制化提供一组示例供学习。 在接下来的章节中我们将专注于这些惊人模型的背景从它们背后的数学开始然后深入探讨使 ChatGPT 成为可能的重大发现。 ChatGPT 之路其背后的模型数学 自 2015 年成立以来OpenAI 投资于研究和开发一类被称为生成式预训练变压器GPT的模型并且它们作为 ChatGPT 背后的引擎已经引起了大家的关注。 GPT 模型属于变压器结构框架此框架于 2017 年由 Google 研究员在一篇论文中介绍Attention Is All You Need。 变压器架构是为了克服传统循环神经网络RNNs的局限性而引入的。RNNs 首次在 1980 年代由洛斯阿拉莫斯国家实验室的研究人员提出但直到 1990 年代它们才引起了人们的关注。RNNs 背后的最初想法是处理顺序数据或时间序列数据跨时间步保留信息。 确实直到那一时刻经典的人工神经网络ANN结构是前馈 ANN 的结构其中每个隐藏层的输出是下一个隐藏层的输入没有保留有关过去层的信息。 为了理解变压器背后的思想我们需要从它的起源开始。因此我们将深入探讨以下主题 RNN 的结构 RNN 的主要局限性 如何通过引入新的架构元素包括位置编码、自注意力和前馈层克服这些局限性 我们如何达到 GPT 和 ChatGPT 的最先进技术 让我们从变压器的前身架构开始。 RNN 的结构 让我们想象我们想要预测房价。如果我们只有今天的价格我们可以使用一个前馈架构通过隐藏层带有激活函数对输入进行非线性转换并得到明天价格的预测输出。具体如下 图 2.13 – 具有隐藏层的前馈架构 然而对于这种类型的数据也很可能有更长的序列可用。例如我们可能有未来 5 年的这栋房子的时间序列。当然我们希望将我们拥有的额外信息嵌入到我们的模型中以便我们的 RNN 能够保持过去输入的记忆以正确解释当前输入并预测未来输出。 因此回到我们的例子想象我们不仅有今天的价格还有昨天的价格**(t-1)和前一天的价格(t-2)**。这是我们如何计算的 图 2.14 – RNN 示例 由于我们只关心明天的价格让我们忽略t-1和t的中间最终输出。 图 2.15 – RNN 示例 如您所见t-2的隐藏层输出作为t-1的隐藏层的加权输入同时也接受t-1的输入。然后t-1的隐藏层输出已经保留了t-2和t-1输入的记忆作为t的隐藏层的输入。因此我们感兴趣的明天价格yt1带有所有先前几天输入的记忆。 最后如果我们想要缩小这张图片我们可以将 RNN 看作如下 图 2.16 – RNN 的包装形式示例 这意味着 RNN 层在时间步t-n的输出然后被产生并传递为下一个时间步的输入。RNN 层的隐藏状态也作为下一个时间步的输入传递使网络能够在输入序列的不同部分之间保持和传播信息。 尽管 RNN 在人工神经网络领域是一项重大进展但它们仍然存在一些限制我们将在下一节中进行探讨。 RNN 的主要限制 如本节介绍所述RNNs 存在三个主要限制 梯度消失和爆炸RNNs 存在梯度消失和爆炸的问题这使得有效训练网络变得困难。这个问题发生在反向传播过程中梯度被多次相乘导致梯度变得非常小或非常大。 有限的上下文传统的 RNN 只能捕捉有限数量的上下文因为它们一次处理输入序列的一个元素。这意味着它们无法有效处理长期依赖关系或输入序列中相距较远的元素之间的关系。 并行化困难RNN 本质上是顺序的这使得并行化它们的计算变得困难因此它们无法充分利用今天的图形处理单元GPU。这可能导致它们在大规模数据集和设备上训练和部署变慢。 1997 年Sepp Hochreiter 和 Jürgen Schmidhuber 在他们的论文《长短期记忆》中引入了一种新的架构试图克服前两个限制有限的上下文和梯度消失和梯度爆炸。 LSTM 网络通过引入细胞状态的概念来克服有限上下文的问题该状态与隐藏状态分开能够长时间保持信息。细胞状态在网络中保持不变传递使其能够存储从以前时间步丢失的信息。 此外LSTM 网络通过使用精心设计的门控来控制信息在细胞内外的流动从而克服了梯度消失和梯度爆炸的问题这有助于防止梯度变得过小或过大。 然而LSTM 网络仍然存在并行化不足的问题因此训练时间较慢甚至比 RNN 更复杂因此更慢。目标是拥有一个能够在顺序数据上实现并行化的模型。 为了克服这些限制引入了一种新的框架。 克服限制 - 引入 transformers Transformer 架构通过替换循环使用自注意机制来解决这些限制允许并行计算并捕捉长期依赖关系。 图 2.7 - 来自原始论文“注意力就是你所需要的”的 Transformer 架构。Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L., Polosukhin, I. (2017). Attention Is All You Need. ArXiv. https://doi.org/10.48550/arXiv.1706.03762 在上述图中摘自原始论文您可以看到有两个主要的构建模块左侧是“编码器”其任务是将输入表示为较低维空间右侧是“解码器”其任务是将编码器提供的较低维数据翻译回原始数据格式。 编码器和解码器共享三种主要类型的层区分了 Transformer 架构位置编码、自注意力和前馈。 让我们在以下部分了解每一个。 位置编码 编码器是将自然语言输入转换为数字向量的层。这得益于嵌入的过程这是一种 NLP 技术它用向量表示单词使得一旦在向量空间中表示向量之间的数学距离代表了它们所代表的单词之间的相似性。请看下图 图 2.18 – 《注意力就是你所需要的》原始论文中的 Transformer 架构。Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L., Polosukhin, I. (2017). Attention Is All You Need. ArXiv. https://doi.org/10.48550/arXiv.1706.03762 当我们谈论句子的含义时我们都同意句子中单词的排列对于确定其含义是重要的。这就是为什么我们希望我们的编码器考虑到这种顺序是位置的原因。 位置编码是一个固定的、可学习的向量表示单词在序列中的位置。它被添加到单词的嵌入中使得单词的最终表示包括其含义和位置。 自注意力 自注意力层负责确定生成输出时每个输入标记的重要性。它们回答了这个问题“我应该关注输入的哪一部分” 图 2.19 – 《注意力就是你所需要的》原始论文中的 Transformer 架构。Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L., Polosukhin, I. (2017). Attention Is All You Need. ArXiv. https://doi.org/10.48550/arXiv.1706.03762 为了获得一个句子的自注意力向量我们需要的元素是值查询和键。这些矩阵用于计算输入序列中元素之间的注意力得分并且是在训练过程中学习的三个权重矩阵通常初始化为随机值。 查询用于表示注意力机制的当前焦点而键用于确定应该受到注意的输入部分值用于计算上下文向量。然后这些矩阵相乘并通过非线性变换传递使用 softmax 函数。自注意力层的输出以一种转换的、具有上下文意识的方式表示输入值这使得 Transformer 可以根据手头任务关注输入的不同部分。这是如何描述矩阵相乘的过程 图 2.20 - 查询键和值矩阵相乘以获得上下文向量的表示 注意在论文作者提出的架构中“注意力就是你需要的”注意力层被称为多头注意力。多头注意力实际上是一种机制多个自注意力机制并行处理输入数据的不同部分生成多个表示。这允许 Transformer 模型同时关注输入数据的不同部分并从多个角度汇总信息。 一旦注意力层的并行输出准备就绪它们将被串联并通过前馈层进行处理。 前馈层 前馈层负责将自注意力层的输出转换为最终输出的合适表示。 图 2.21 - “注意力就是你需要的”原始论文中的 Transformer 架构。Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L., Polosukhin, I. (2017). Attention Is All You Need. ArXiv. https://doi.org/10.48550/arXiv.1706.03762 前馈层是 Transformer 架构的主要构件并包括两个主要元素 全连接层也称为密集层这是一种每个神经元与前一层中的每个神经元相连接的层类型。换句话说来自前一层的每个输入都连接到当前层中的每个神经元并且当前层中的每个神经元都对下一层中所有神经元的输出有贡献。密集层中的每个神经元通过线性变换计算其输入的加权和。 激活函数这是应用于全连接层输出的非线性函数。激活函数用于向神经元的输出引入非线性这对于网络学习输入数据中的复杂模式和关系是必要的。在 GPT 的情况下激活函数是 ReLU。 前馈层的输出然后被用作网络中下一层的输入。 在下图中我们可以看到一个通用前馈层的示例它以一个二维向量作为输入在密集层中使用训练好的权重进行线性操作然后使用 ReLU 激活函数对输出进行非线性转换 图 2.22 - 具有二维输入的通用前馈层在密集层中和 ReLU 非线性激活函数中的模式图 最后一英里 - 解码结果 我们提到变压器由两个组件组成编码器和解码器。尽管它们共享位置编码、自注意力和前馈层的核心元素但解码器仍然必须执行一个额外的操作 - 将输入解码为原始数据格式。这个操作是通过一个线性层一个将输入的维度调整为输出维度的前馈网络和一个 softmax 函数它将输入转换为概率向量来完成的。 从该向量中我们选择对应最高概率的单词并将其用作模型的最佳输出。 上面解释的所有架构元素定义了变压器的框架。在下一节中我们将看到这一创新框架如何为 GPT-3 和其他由 OpenAI 开发的强大语言模型铺平了道路。 GPT-3 现在我们来到了 ChatGPT 背后的 GPT-3 架构。它确实是基于变压器架构的模型但有一个特殊之处它只有解码器层。事实上在他们的介绍性论文通过生成式预训练改进语言理解中OpenAI 的研究人员采用了仅解码器的方法。 GPT-3 是巨大的。但具体有多大呢 让我们从它训练的知识库开始。它旨在尽可能详尽地涵盖人类知识因此由不同来源组成 Common Crawl (commoncrawl.org/)一个在 8 年时间内收集的大规模网络数据语料库几乎没有过滤 WebText2 (openwebtext2.readthedocs.io/en/latest/background/)一个包含来自 Reddit 帖子中链接的网页文本的集合至少有 3 个赞 Books1 和 Books2两个分别由互联网上可用的书籍组成的语料库 维基百科一个包含来自流行在线百科全书维基百科英文版的文章的语料库 在这里你可以更好地了解 图 2.23 – GPT-3 知识库 让我们考虑以下假设 1 代币 ~ 4 个英文字符 1 代币 ~ ¾ 词 我们可以得出结论GPT-3 已经在374 亿个单词上进行了训练 这个知识库旨在在 96 个隐藏层中稀疏地训练 1750 亿个参数。为了让你了解 GPT-3 有多庞大让我们将其与之前的版本 GPT-1 和 GPT-2 进行比较 图 2.24 – GPT 模型随时间在参数数量上的演变 正如你所看到的在自 2018 年 GPT-1 推出以来的几年里GPT 模型的复杂性和深度呈指数级增长。 GPT 模型背后的发展速度令人惊叹特别是如果我们考虑到这个模型的最新版本也是首个向普通大众提供的版本ChatGPT。 ChatGPT最先进的技术 2022 年 11 月OpenAI 宣布了其会话式人工智能系统 ChatGPT 的网络预览向普通大众提供。这引起了来自专家、组织和普通大众的巨大热情以至于在仅仅 5 天后该服务就吸引了 100 万用户 在写关于 ChatGPT 之前我会让它自我介绍 图 2.25 – ChatGPT 自我介绍 ChatGPT 是建立在一个先进的语言模型之上的该模型利用了 GPT-3 的修改版本专门为对话进行了微调。优化过程涉及到强化学习与人类反馈RLHF这是一种利用人类输入来训练模型展现出期望对话行为的技术。 我们可以将 RLHF 定义为一种机器学习方法其中算法通过接收来自人类的反馈来学习执行任务。该算法经过训练以做出最大化人类提供的奖励信号的决策并且人类提供额外的反馈以改善算法的性能。当任务对于传统编程来说过于复杂或者期望的结果难以提前指定时这种方法就很有用。 这里的相关区别是 ChatGPT 已经在人类的帮助下进行了训练使其与其用户保持一致。通过整合 RLHFChatGPT 被设计为更好地理解并以一种自然而引人入胜的方式回应人类语言。 注意 相同的 RLHF 机制被用于我们可以将其视为 ChatGPT 前身的InstructGPT。在 OpenAI 的研究人员于 2022 年 1 月发表的相关论文中InstructGPT 被介绍为一类比 GPT-3 更擅长遵循英语指示的模型。 ChatGPT 的知识截止日期是 2021 年这意味着该模型了解到截止日期前可用的信息。然而您仍然可以通过少量示例学习方法为模型提供上下文尽管模型的回复仍然基于其知识库直到截止日期。 ChatGPT 正在彻底改变与人工智能的互动方式。ChatGPT 生成类人文本的能力使其成为广泛应用的热门选择包括聊天机器人、客户服务和内容创作。此外OpenAI 宣布 ChatGPT API 将很快发布允许开发人员将 ChatGPT 直接集成到自定义应用程序中。 ChatGPT 的架构和训练方法的不断发展和改进承诺将进一步推动语言处理的边界。 总结 在本章中我们回顾了 OpenAI 的历史、研究领域和最新发展一直到 ChatGPT。我们深入研究了 OpenAI Playground 作为测试环境以及如何将 Models API 嵌入到您的代码中。然后我们深入探讨了 GPT 模型家族背后的数学知识以更清晰地了解 GPT-3 的运作原理这是 ChatGPT 背后的模型。 通过深入理解 GPT 模型背后的数学我们可以更好地理解这些模型的强大之处以及它们对个人和组织的多种影响。通过对 OpenAI Playground 和 Models API 的第一次了解我们看到了测试或嵌入预训练模型的简易性这里的改变游戏规则的因素是您无需强大的硬件和数小时的时间来训练您的模型因为它们已经可供您使用如果需要还可以定制一些示例。 在下一章中我们也开始了本书的第二部分我们将看到 ChatGPT 在各个领域内的应用以及如何释放其潜力。您将学习如何通过正确设计提示来获取 ChatGPT 的最高价值如何提高日常生产力以及它如何成为开发人员、市场营销人员和研究人员的出色项目助手。 参考文献 Radford, A., Narasimhan, K. (2018). 通过生成式预训练改善语言理解。 Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L., Polosukhin, I. (2017). 注意力机制就是你所需要的. ArXiv. doi.org/10.48550/arXiv.1706.03762 OpenAI. Fine-Tuning Guide. OpenAI 平台文档. platform.openai.com/docs/guides/fine-tuning. 第二部分ChatGPT 的实践 在本部分我们将开始我们在 ChatGPT 为市场带来的新可能性的旅程。从日常生产率到领域特定的用例您将熟悉 ChatGPT 的能力以及它如何作为各种任务的推理引擎使用。 一旦我们探讨了技术前提条件这一部分就会概述 ChatGPT 用户界面包括聊天管理和问题修改。 然后它转向了 ChatGPT 最重要的元素之一即如何充分利用 ChatGPT在一般的大语言模型中即提示设计的概念。在这里您将熟悉让 ChatGPT 发挥其最佳作用的强大技术包括最新的发展和关于诸如Reason and ActReAct和Chain of ThoughtsCoT等技术的研究论文。 本部分最后将重点放在如何在实际操作中使用 ChatGPT 的具体示例上从日常生产力开始逐步转向更多领域特定的学科如营销开发和研究。在这里您不仅可以了解 ChatGPT 在这些领域可以覆盖的用例还可以看到具体示例以自行复制。 本部分包括以下章节 第三章熟悉 ChatGPT 第四章理解提示设计 第五章提升日常工作效率与 ChatGPT 第六章用 ChatGPT 开发未来 第七章用 ChatGPT 掌握营销 第八章用 ChatGPT 重新定义研究 三、熟悉 ChatGPT 本章让您设置 ChatGPT 账户并开始使用该服务。它还将介绍如何与 Web UI 交互如何按主题组织聊天以及如何构建对话。 在本章结束时您将更好地了解 ChatGPT 是什么它是如何工作的以及如何有效地将其组织为日常助手。您还将了解其主要功能和局限性以便知道如何负责任地使用它。 在本章中我们将涵盖以下主题 设置 ChatGPT 账户 熟悉 UI 组织聊天 设置 ChatGPT 账户 要开始使用 ChatGPT您首先需要创建一个 OpenAI 账户。请按照这里的说明 在这里导航至 OpenAI 网站openai.com。 滚动到下方点击ChatGPT如下所示 图 3.1 – OpenAI 登陆页面 然后您需要点击尝试 ChatGPT 图 3.2 – ChatGPT 登陆页面 在下一页您需要填写表格注册一个 OpenAI 账户。这是您可以用来访问 OpenAI Playground 并生成 API 密钥的同一个账户。 图 3.3 – ChatGPT 登陆页面带有登录和注册选项 现在您可以开始使用 ChatGPT Web 应用程序了。找到 ChatGPT Web 应用程序后点击启动。您将能够直接在 Web 浏览器中与 ChatGPT 交互并执行各种自然语言处理任务。 图 3.4 – ChatGPT Web 界面 太棒了现在您可以开始使用 ChatGPT。但您也需要了解应用程序是什么样的。让我们接着了解一下。 熟悉 UI ChatGPT 的 Web 界面非常直观易用。在开始编写提示之前您可以轻松尝试服务提供的一些示例 图 3.5 – ChatGPT 提供的示例提示 接下来您还将了解 ChatGPT 的主要功能 图 3.6 – ChatGPT 的功能 在功能中强调了 ChatGPT 如何在整个对话中保持记忆。在上一章中我们深入研究了 GPT 背后的数学并看到了记忆保留组件的重要性现在您可以欣赏到这种数学复杂性的实际运作。 ChatGPT 的这种能力也是少样本学习的一个例子我们将在接下来的章节中更多地了解这个概念。 注意 ChatGPT 能够保持先前上下文的记忆这要归功于其少样本学习能力。少样本学习是一种机器学习技术使模型能够在非常有限的标记数据下学习新概念或任务已成为人工智能领域的重要研究领域。 由于具有记忆保持和少样本学习等功能ChatGPT 允许用户在对话过程中提供跟进或更正而无需再次提供上下文。 这里有一个示例展示了如何在与 ChatGPT 对话中对提示进行更正 图 3.7 – ChatGPT 跟进评论和提示更正示例 最后模型还提醒用户除了其功能之外它还经过训练可以拒绝可能有害或冒犯性的不当请求。 在其主页上提供的最后一组信息与 ChatGPT 的限制相关 图 3.8 – ChatGPT 限制 这些元素是一个重要的提醒即如今AI 工具仍需要人类监督。事实上除了 2021 年至今之间的缺失信息外ChatGPT 可能还会提供不准确甚至错误的信息。这就是为什么它仍然需要监督的原因。 值得一提的有趣现象是幻觉。幻觉指的是 AI 模型生成类似真实数据但实际上并非基于任何真实观察的虚假或想象数据的现象。以下是一个例子 图 3.9 – ChatGPT 幻觉示例 图 3.9中的问题最初由道格拉斯·霍夫斯塔德和大卫·本德尔开发旨在诱导 ChatGPT 产生幻觉性回应 为了防止幻觉应该牢记一些良好的做法 具体明确确保您的提示定义明确清楚陈述您想要实现的目标。这将有助于模型生成更专注和相关的回应。例如一个提示如告诉我关于世界的事情可能不会产生很好的结果。 提供充分的上下文提供的上下文越多模型就能更好地理解您的需求并生成相关的响应。 避免歧义在您的提示中避免使用模糊或含糊不清的术语或短语因为这可能会使模型难以理解您想要什么。 使用简洁的语言尽可能简洁地表达您的提示同时提供足够的信息让模型生成响应。这将有助于确保模型生成专注和简洁的回应。 注意训练数据ChatGPT 已经在大量文本语料库上进行了训练它可能生成基于该数据模式的有偏见或不准确的响应。请注意这一点并考虑调整您的提示如果您怀疑模型生成的响应不合适或准确。 正如我们将在下一章中看到的这些提示设计考虑不仅有助于防止幻觉还有助于从与 ChatGPT 的互动中获得最高价值和效用。 有了这一点让我们现在看看聊天是如何管理的。 组织聊天 ChatGPT 展示的节省时间功能是具有多个开放线程或聊天的可能性。实际上当您开始编写第一个提示时ChatGPT 将自动启动一个新的聊天并以相关标题命名。请看以下截图的左上角 图 3.10 – 在 ChatGPT 中创建新聊天 您始终可以决定从头开始新的聊天但是您可能希望继续几天前开始的对话。 想象一下您已经要求 ChatGPT 解释线性回归的概念然后开始了几个后续对话。这是它的显示方式 图 3.11 – 具有上下文的现有聊天示例 在那个聊天中ChatGPT 已经有了上下文因此您可以继续对话而无需重复概念。请看这里 图 3.12 – 同一上下文中的后续问题示例 通过这一点我们了解了 ChatGPT 聊天是如何维护和组织的这使得参考旧聊天变得容易。 摘要 在本章中我们详细介绍了如何使用我们的帐户开始使用 ChatGPT 的具体步骤。我们还深入探讨了其能力和局限性以及有关幻觉风险以及如何通过提示设计避免这种风险的一些考虑。我们还看到了应用程序中如何呈现聊天以及如何轻松地参考旧聊天。 在下一章中我们将更多关注提示设计和工程以便从与 ChatGPT 的对话中获得最高价值。 参考资料 openai.com/blog/chatgpt/ www.sify.com/ai-analytics/the-hilarious-and-horrifying-hallucinations-of-ai/ www.datanami.com/2023/01/17/hallucinations-plagiarism-and-chatgpt/ 四、理解提示设计 在前几章中我们多次提到“提示”这个术语同时指的是 ChatGPT 和 OpenAI 模型中的用户输入。 本章更深入地探讨了提示设计和工程作为改善模型准确性的技术的重要性。提示对模型生成的输出产生重大影响一个设计良好的提示可以帮助引导模型生成相关和准确的输出而一个设计不良的提示可能导致无关或令人困惑的输出。最后还重要的是将道德考虑因素纳入提示中以防止模型生成有害内容。 在本章中我们将讨论以下主题 什么是提示为什么它重要 零、一和少次学习 - 变压器模型的典型特征 获得相关和一致结果的明确定义提示的原则 避免隐藏偏见的风险并考虑 ChatGPT 中的道德考虑因素 在本章结束时您将能够通过适当的提示设计从 ChatGPT 和 OpenAI 模型的交互中获得高质量的结果。 什么是提示为什么它重要 在生成式人工智能的背景下提示是指用户提供给生成模型的输入。当我们谈论 ChatGPT 和 OpenAI 模型时提示主要指的是自然语言中的一段文本或者 - 正如我们在 Codex 模型中看到的那样 - 是编程语言中的一段文本。 提示是用户可以控制这些模型生成的输出的唯一方式。因此毫无疑问地说用于与 AI 系统进行对话的提示的质量对于确定其成功至关重要。 明确定义的提示是成功对话的秘诀涵盖了感兴趣的主题相反定义不清晰的提示不仅会阻止对话对用户有用还可能导致潜在的误导性内容。正如我们在上一章中看到的ChatGPT 仍然存在一些限制比如其知识库的 2021 年截止日期以及生成式人工智能系统通常存在的另一个警告比如幻觉现象。 比如想象一下我们想要了解卷积神经网络CNNs。我们对人工神经网络ANNs一无所知因此需要从一个简单的介绍开始。这个想法是从第一个输出开始我们可以深入研究相关元素。 让我们来看看 ChatGPT 中一个定义不清晰提示的结果 图 4.1 - 一个定义不清晰提示的示例 结果是正确和准确的但涉及了许多我们以前可能从未见过的技术概念。全连接层是什么池化层是什么这个答案假设我们有人工神经网络的先前知识。 让我们尝试为 ChatGPT 提供更多上下文以获得对我们更有用的结果 图 4.2 - 良好定义提示的示例 正如你所看到的这个回答中的措辞比我寻找的那个更有可能。在介绍中它不使用诸如多层感知器或全连接层之类的词语。它还提供了一个图像识别过程的示例然后进一步详细说明确保用简单的词语解释每一步。 我对这个回答感到非常满意作为用户我现在可以开始更详细地询问关于池化层的问题例如。 因此快速设计和工程正在变得越来越受到关注并且作为一个独立的学科正在发展。 现在让我们专注于如何通过利用其少量样本学习能力来改进 ChatGPT 的回应。 零、一和少量样本学习 - 典型的变压器模型 在前几章中我们提到了 OpenAI 模型因此也包括 ChatGPT以预训练的格式呈现。它们经过大量数据的训练并相应地配置了它们的数十亿个参数。 然而这并不意味着这些模型不能再学习了。在第二章中我们看到定制 OpenAI 模型并使其更能够解决特定任务的一种方法是通过微调。 定义 微调是将预训练模型适应新任务的过程。在微调中预训练模型的参数被改变要么通过调整现有参数要么通过添加新参数使其适应新任务的数据。这是通过在特定于新任务的较小标记数据集上训练模型来完成的。微调的关键思想是利用从预训练模型中学到的知识并将其微调到新任务而不是从头开始训练模型。 微调是一个适当的训练过程需要一个训练数据集、计算能力和一些训练时间取决于数据量和计算实例。 这就是为什么值得测试另一种方法让我们的模型在特定任务上变得更加熟练少量样本学习。 这个想法是让模型从简单的例子中学习而不是整个数据集。这些例子是我们希望模型响应的方式的样本以便模型不仅学习内容还学习格式、风格和分类法来在其回应中使用。 此外通过提示直接进行学习正如我们将在接下来的场景中看到的那样整个体验更少耗时且更易执行。 提供的示例数量决定了我们所指的样本学习的级别。换句话说如果没有提供示例则我们称之为零样本如果提供了一个示例则称为单样本如果提供了 2-3 个以上的示例则称为少样本。 让我们专注于每一个场景 零样本学习。在这种学习中模型被要求执行一个它没有见过训练示例的任务。模型必须依靠关于任务的先验知识或一般信息来完成任务。例如零样本学习方法可能是要求模型生成一个描述就像我在提示中定义的一样 图 4.3 – 零样本学习示例 单样本学习在这种类型的学习中模型只提供每个新任务的单个示例。模型必须利用其先前的知识从这个单一示例中泛化以执行任务。如果考虑前面的例子我可以在要求其生成新的示例之前向模型提供一个提示完成的示例 图 4.4 – 单样本学习示例 请注意我提供示例的方式类似于微调所使用的结构 {prompt: prompt text, completion: ideal generated text}少样本学习在这种学习中模型只提供了每个新任务的少量示例通常在 3 到 5 个之间。模型必须利用其先前的知识从这些示例中泛化以执行任务。让我们继续我们的例子并提供模型更多的示例 图 4.5 – 少样本学习示例提供了三个示例 少样本学习的好处在于你还可以控制模型输出的呈现方式。你还可以为模型提供你希望输出看起来的模板。例如考虑以下推文分类器 图 4.6 – 推文分类器的少样本学习。这是修改自 https://learn.microsoft.com/en-us/azure/cognitive-services/openai/how-to/completions 的原始脚本 让我们看看前面的图。首先我向 ChatGPT 提供了一些标记的推文示例。然后我以不同的数据格式列表格式提供了相同的推文以及相同格式的标签。最后我以列表格式提供未标记的推文以便模型返回标签列表。 输出格式并不是您可以教给您的模型的唯一内容。您还可以教它以特定的行话和分类法行事和言语这可以帮助您以期望的措辞获得所需的结果 图 4.7 – ChatGPT 充当面试官进行对话的例子 或者想象一下你想生成一个名为 Simpy 的聊天机器人回复时非常滑稽和讽刺 图 4.8 – 一个滑稽而讽刺的聊天机器人的例子取笑我的请求 我们不得不说通过最后一个例子ChatGPT 做得很好。 少样本学习的可能性是无限的通常比 Simpy 更有用– 这只是一个测试和一点耐心来找到适当的提示设计的问题。 如前所述重要的是要记住这些学习形式与传统的监督学习以及微调是不同的。在少样本学习中目标是使模型能够从非常少的示例中学习并从这些示例中推广到新任务。 现在我们已经学会了让 ChatGPT 从示例中学习让我们专注于如何正确定义我们的提示使模型的响应尽可能准确。 为获得相关和一致结果而定义良好提示的原则 在控制模型输出时我们之前看到了设计和工程化提示的重要性。以下是一些您可以使用的最佳实践来改进您的提示以及一些应该避免的做法 清晰性使用简单的句子和指令ChatGPT 可以轻松理解。 简洁性偏爱简短的提示和简短的句子。通过将指令分成更小的句子并明确表达意图可以实现这一点。 专注将提示的焦点放在一个明确定义的主题上这样您就不会冒险使输出过于普遍化。 一致性在对话过程中保持一致的语气和语言以确保对话连贯。 “充当…”让 ChatGPT 充当某人或某物的技巧被证明是非常强大的。您可以通过简单要求他扮演您想要获取信息的人或系统缩短您必须向模型提供的上下文。我们已经看到了面试候选人的例子ChatGPT 充当了数据科学家职位的面试官。一个非常有趣的提示是要求 ChatGPT 充当控制台。以下是一个示例 图 4.9 – ChatGPT 充当 Python 控制台的例子 请注意控制台就像真实的情况一样也在报告我在for循环中犯的错误指出我遗漏了括号。 在下面的 GitHub 仓库中你可以尝试一个不断增长的列表 Act as 提示https://github.com/f/awesome-chatgpt-prompts。 考虑到前一段中详细阐述的少样本学习能力有一些很好的提示可以帮助你在设计提示时充分利用这一特性。一个理想的对话如下所示 从简明、清晰、有重点的提示开始。这将帮助你对你想讨论的主题有一个概览同时为思考和特定元素的潜在扩展提供食粮。以下是一个示例 图 4.10 – 一个清晰、有重点的提示用于开始和 ChatGPT 的对话 一旦你在讨论中确定了相关元素你可以要求 ChatGPT 更加聚焦地阐述这些元素 图 4.11 – 在与 ChatGPT 对话中进行深入追问的示例 有时候记得模型和你提问的上下文可能非常有用尤其是如果问题可能适用于各种领域时。 图 4.12 – 在与 ChatGPT 对话中提醒上下文的示例 最后永远记住我们在前几章提到的限制。ChatGPT 可能会提供部分或不正确的信息所以始终检查是一个很好的做法。你可以尝试的一个好方法是要求模型提供关于其回应的文档这样你就可以轻松找到它们的证据 图 4.13 – ChatGPT 提供支持其先前回答的文档的示例 另一方面在设计提示时有一些事情是应该避免的 信息过载避免向 ChatGPT 提供过多的信息因为这可能会降低响应的准确性。 开放式问题避免向 ChatGPT 提出模糊、开放式的问题。像“你能告诉我一些关于世界的事情吗”或“你能帮我复习考试吗”这样的提示太泛泛了会导致 ChatGPT 产生模糊、无用甚至幻觉般的回应。 缺乏约束如果你期望一个特定结构的输出请不要忘记告诉 ChatGPT如果你思考一下 ChatGPT 起到面试官的早期示例你会看到我在明确不要一次性生成所有问题时是多么严格。在得到结果之前尝试了好几次因为 ChatGPT 被设计为产生连续的文本流。 注意 作为一般性考虑我们仍然必须记住ChatGPT 的知识库仅限于 2021 年因此我们应避免询问发生在该日期之后的事实。您仍然可以提供背景信息然而所有的回答都会偏向于 2021 年之前的知识库。 此外值得一提的是在过去几个月中已经有大量的研究和开发致力于对大型语言模型LLMs不仅仅是生成式预训练变换器GPT的提示设计进行研究因为一些特定技术的广泛使用例如以下技术 思维链CoTGoogle 研究员魏杰森等人提出了一种名为CoT 提示的新技术以提高 LLM 的推理能力。该方法将复杂问题分解为较小、可管理的步骤使语言模型能够解决传统提示方法无法处理的复杂推理任务。 例如假设我们想训练一个语言模型来解决一个复杂的数学问题比如计算代数表达式的值。我们可以使用 CoT 提示将问题分解为较小、可管理的步骤。 首先我们可以提示模型识别表达式中的变量和常数。然后我们可以提示模型应用运算顺序简化表达式。接下来我们可以指导模型替换变量和常数的数值。最后我们可以提示模型评估表达式以获得最终结果。 通过使用 CoT 提示语言模型可以学会解决需要多步推理和解决问题能力的复杂数学问题。 主动提示即使使用 CoT 推理提示已被证明有效当前的 CoT 方法仍依赖于一组固定的人工注释示例这些示例可能对不同任务不是最佳的。在他们的论文《使用思维链进行主动提示的大型语言模型》中刁世哲等人提出了一种名为主动提示的新方法通过从一组特定任务的查询中选择最重要和有帮助的问题来使 LLM 适应不同任务。以下方法涉及向 LLM 提出几个 CoT 示例的查询并为一组训练问题生成k个可能的答案。然后根据k个答案之间的分歧计算不确定性度量。最不确定的问题被选中由人类进行注释并使用新注释的示例来推断每个问题。 推理与行动ReAct这种方法基于人类智能无缝结合面向任务的行动和口头推理的能力。 例如想象一个人试图组装一件家具比如一本书架。在每个具体的动作之间这个人可能会用语言来推理跟踪进度“现在我连接上了侧板我需要连接上架子”处理异常情况或者根据情况调整计划“这些螺丝不合适我需要找到不同尺寸”并在需要外部信息时意识到“我不确定这个部件应该怎么放让我看看说明书”。这个人还可能通过借助说明书、找到必要的工具并正确摆放部件来支持推理和回答问题“哪些螺丝应该放在哪里”。行动和推理之间的紧密协作使得这个人能够高效而有效地完成任务即使他们以前从未组装过书架。 嗯姚顺宇等人介绍的 ReAct 范式正是这样做的它提示 LLMs 产生与手头任务相关的口头推理轨迹和行为以无缝交错的方式。通过这样做模型可以进行动态推理为行动创建、调整和维护高级计划同时与外部信息源如维基百科交互以将附加洞察融入推理过程中行动用于推理。这种方法有助于更全面、更有效地利用语言模型解决复杂问题使其能够以一种集成的方式进行推理和行动。 这些只是一些最新开发的技术的一部分由于这是一个新兴的研究领域我们可能会在接下来的几个月看到关于提示设计的大量实验和论文。 最后重要的是要对 ChatGPT 的回复保持一些伦理考虑。我们将在下一节中介绍这些内容。 避免隐藏偏见的风险并考虑 ChatGPT 中的伦理问题。 ChatGPT 已经使用了 Moderator API因此它不会参与可能不安全的对话。Moderator API 是由基于以下类别的 GPT 模型执行的分类模型暴力、自残、仇恨、骚扰和性。为此OpenAI 使用匿名化数据和合成数据以零-shot 形式来创建合成数据。 Moderation API 是基于 OpenAI API 中可用的内容过滤模型的更复杂版本。我们在第一章中讨论过这个模型在那里我们看到它对假阳性而不是假阴性非常保守。 然而有一些我们可以称之为隐藏偏见的东西它直接源于模型所训练的知识库。例如关于 GPT-3 的主要训练数据即Common Crawl专家认为这主要是由来自西方国家的白人男性编写的。如果是这样我们已经面临着模型的隐藏偏见它将不可避免地模仿一类有限和不具代表性的人类。 在他们的论文《语言模型为少样本学习者》中OpenAI 的研究人员汤姆·布朗等https://arxiv.org/pdf/2005.1416创建了一个实验设置来调查 GPT-3 中的种族偏见。模型受到包含种族类别的短语的提示并为每个类别生成了 800 个样本。使用 Senti WordNet 根据词共现来衡量生成文本的情感情感范围从-100 到 100正分数表示积极词语反之亦然。 结果显示与不同模型相关的每个种族类别的情绪不同亚洲一直具有很高的情感而黑人一直具有很低的情感。作者警告称结果反映了实验设置并且社会历史因素可能影响与不同人口统计数据相关联的情感。研究强调了在情感、实体和输入数据之间关系的更加复杂的分析的需要 图 4.14—模型间的种族情绪 这种隐藏偏见可能产生不符合负责任人工智能原则的有害反应。 然而值得注意的是 ChatGPT 以及所有 OpenAI 模型都在不断改进中。这也与 OpenAI 的 AI alignmenthttps://openai.com/alignment/一致其研究侧重于训练 AI 系统成为有益、真实和安全的。 例如如果我们要求 ChatGPT 基于人的性别和种族进行猜测它不会满足这个请求 图 4.15—ChatGPT 随着时间的推移改善的示例因为它给出了一个不带偏见的回答 总的来说尽管在道德原则领域不断改进但在使用 ChatGPT 时我们应始终确保输出符合这些原则并且没有偏见。 ChatGPT 和 OpenAI 模型中的偏见和伦理概念在整个负责任人工智能的主题中具有更广泛的搭配在本书的最后一章中我们将重点关注这一点。 总结 在本章中我们深入探讨了提示设计和工程的概念因为这是控制 ChatGPT 和 OpenAI 模型输出的最强大方式。我们学会了如何利用不同级别的 shot learning使 ChatGPT 更加符合我们的目标如果我们希望 AI 的回应具有特定的风格和格式我们可以提供示例让它从中学习就像我们在分析推文情绪时所看到的那样。我们还学会了如何撰写有效的提示附有一些不错的例子 - 尤其是使用*Act as…*技巧 - 以及要避免的内容比如开放式问题或信息过载。 在接下来的几章中我们将介绍 ChatGPT 如何提高普通用户的日常生产力的具体示例提供易于复制的提示和技巧。 从下一章开始我们将深入探讨 ChatGPT 可以提高生产力并对我们今天的工作方式产生颠覆性影响的不同领域。 参考资料 arxiv.org/abs/2005.14165 dl.acm.org/doi/10.1145/3442188.3445922 openai.com/alignment/ twitter.com/spiantado/status/1599462375887114240?ref _srctwsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1599462375887114240%7Ctwgr%5E1dc908b53fd4be487829472a6bc8590a9dc4aa2d%7Ctwcon%5Es1_ref_urlhttps%3A%2F%2Fthestoryexchange.org%2Fchatgpt-and-the-hidden-bias-of-language-models%2F 五、通过 ChatGPT 提升日常工作效率 在本章中我们将介绍 ChatGPT 可以为普通用户每天执行的主要活动以提高他们的生产力。本章将重点介绍写作辅助、决策制定、信息检索等具体示例并提供建议和提示以便您自行实施。 在本章结束时您将学会如何将 ChatGPT 用作以下活动的助推器 诸如组织议程、备餐、购物等日常活动 生成全新的文本内容 提高您的写作技能并将相同内容适应不同的受众 检索文档和信息以进行研究和竞争情报 技术要求 对于本章您将需要一个 ChatGPT 账户。您可以按照第四章中提供的说明免费创建一个。 ChatGPT 作为日常助手 ChatGPT 可以作为有价值的日常助手帮助您管理任务并简化工作流程。它可以通过提供个性化的帮助来优化您的日常生活从而节省时间并提高效率。 让我们从一个关于如何让我的一天更加高效的一般建议开始 图 5.1 – ChatGPT 生成高效日常的示例 前述日常例行事项相当通用因为它不专注于特定的活动列表除了学习。让我们挑战 ChatGPT 创建一个更注重任务的日常安排包括我们在一天中必须进行的活动清单 图 5.2 – ChatGPT 在我的活动之上生成的优化日常 正如您所看到的在这里ChatGPT 充当了待办事项列表制作人为我管理时间并帮助我组织繁忙的一天。 ChatGPT 在组织我的一周中的另一个有趣用途是我可以将其用作备餐助手 图 5.3 – ChatGPT 生成的我工作周的备餐 除了备餐外ChatGPT 还可以生成我的购物清单以便我坚持我的饮食计划 图 5.4 – ChatGPT 生成的购物清单 ChatGPT 还可以成为一位忠诚而守纪的学习伙伴。例如它可以帮助您总结长篇论文以便您对讨论的主题有一个初步了解或者帮助您为考试做准备。 换句话说假设你正在使用 Lorenzo Peccati 等人编写的大学教材《经济与商业数学》准备数学考试。在深入研究每章内容之前你可能想要了解内容和主要讨论主题的概述以及是否需要进一步的先修知识以及最重要的是如果我正在准备考试需要花多长时间来学习。你可以向 ChatGPT 询问 图 5.5 – ChatGPT 提供大学教材概述 你也可以要求 ChatGPT 向你提问关于你刚刚学习的材料的一些问题 图 5.6 – ChatGPT 充当教授的示例 注意 这是Act as… hack 的另一个例子该 hack 在第四章中有描述。在那里我们看到了一个面试官-候选人对话的例子ChatGPT 充当面试官。在图 5**.5中我们要求 ChatGPT 充当教授。除了对话内容不同之外你还可以感知到风格和语言形式的不同 – 更加学术化。 现在让我们看一些更具体任务的 ChatGPT 使用示例包括文本生成、写作辅助和信息检索。 生成文本 作为语言模型ChatGPT 特别适合根据用户的指令生成文本。 例如你可以要求 ChatGPT 生成针对特定受众的电子邮件、草稿或模板 图 5.7 – ChatGPT 生成的电子邮件示例 另一个例子可能是要求 ChatGPT 为你需要准备的演示文稿创建一个提纲结构 图 5.8 – ChatGPT 生成的幻灯片议程和结构 注意 在第一章中我们看到有一些工具结合了不同的生成 AI。我们还看到了一个用于幻灯片演示的 AI 示例 – 即 Tome AI。从图 5**.8中我们可以了解这些工具的后端是如何工作的 – 从用户提示开始它们生成演示文稿的结构和内容。然后在 Tome AI 或类似工具的情况下结构被转换为幻灯片并且使用每张幻灯片的内容作为提示生成图像调用像 DALL-E 这样的图像生成模型。 你也可以通过这种方式生成关于热门话题的博客文章或文章。这里是一个例子 图 5.9 – ChatGPT 生成的带有相关标签和 SEO 关键词的博客文章示例 我们甚至可以让 ChatGPT 缩减帖子的大小使其适合成为一条推文。以下是我们可以这样做的方式 图 5.10 – ChatGPT 将一篇文章缩减为 Twitter 帖子 最后ChatGPT 还可以生成视频或戏剧剧本包括布景和建议的编辑。下图显示了一个人和 ChatGPT 之间的戏剧对话的示例 图 5.11 – 由 ChatGPT 生成的带布景的戏剧对话 我只提供了一个截断版本以保持您对结尾的悬念… 总的来说每当需要从头开始生成新内容时ChatGPT 都能很好地提供第一稿这可以作为进一步完善的起点。 然而正如我们将在下一节中看到的那样ChatGPT 还可以通过提供写作帮助和翻译来支持现有内容。 提高写作技能和翻译 有时您可能不是要生成新内容而是要重新审视现有的一段文字。这可能是为了改善风格受众变化语言翻译等等。 让我们看一些例子。想象一下我起草了一封电子邮件邀请我的客户参加网络研讨会。我写了两个简短的句子。在这里我希望 ChatGPT 改进这封电子邮件的形式和风格因为目标受众将是高管层 图 5.12 – 由 ChatGPT 重新审视以针对高管受众的电子邮件示例 现在让我们用不同的目标受众再问同样的问题 图 5.13 – 由 ChatGPT 生成的针对不同受众的相同电子邮件示例 ChatGPT 还可以就您的写作风格和结构给出一些建议。 想象一下例如您为自己的 YouTube 频道编写了一个带布景的剧本。您包括了演讲以及图像、片段和视频编辑活动。您还知道您的典型受众年龄在 15 至 25 岁之间。您想要对您的剧本进行反馈并向 ChatGPT 请求 图 5.14 – ChatGPT 提供视频剧本反馈的示例 正如您所看到的ChatGPT 不仅能够就写作风格给我反馈还建议我如何改进整个视频的布景包括更多的视觉元素。 再次想象一下您为一篇名为自然语言处理的历史的文章写了一个引言并希望得到有关写作风格及其与标题一致性的反馈 图 5.15 – ChatGPT 就论文引言提供反馈的示例 我们还可以请 ChatGPT 具体举例说明它在回答中提到的引人入胜的轶事 图 5.16 – ChatGPT 详细阐述了它之前提到的某个内容的示例 我也对我的引言是否与标题一致或者我是否走错方向感兴趣 图 5.17 – ChatGPT 就引言与标题的一致性提供反馈 我对最后一个印象深刻。ChatGPT 足够聪明能够看出我的引言中并没有特别提到 NLP 的历史。尽管如此它还设定了关于该主题稍后将会处理的期望。这意味着 ChatGPT 在论文结构方面也有专门的知识并且非常准确地应用其判断知道这只是一个引言。 值得注意的是该模型能够根据上下文给出不同的反馈意见。在视频脚本中ChatGPT 的反馈意见考虑到最终内容的呈现形式是在屏幕上。另一方面文章的引言处于更正式和学术化的语境中具有特定的结构而 ChatGPT 再次能够捕捉到这一点。 最后但并非最不重要的是ChatGPT 也是一款出色的翻译工具。它至少了解 95 种语言如果你对自己的语言是否被支持有疑问你可以直接问 ChatGPT。然而在这里可能会有一个问题产生当我们已经拥有谷歌翻译等尖端工具时ChatGPT 在翻译方面的附加价值是什么 要回答这个问题我们必须考虑一些关键的差异并如何利用 ChatGPT 的内置翻译功能 ChatGPT 可以捕捉意图。这意味着你也可以绕过翻译阶段因为这是 ChatGPT 可以在后台处理的事情。例如如果你想写一个提示以制作一条法语社交媒体帖子你可以用任何你想用的语言来写这个提示 – ChatGPT 会自动检测到它不需要提前指定并理解你的意图 图 5.18 – ChatGPT 生成与输入语言不同的输出的示例 ChatGPT 能够捕捉特定俚语或成语的更精致含义。这使得翻译不是字面的这样它可以保留潜在的含义。换句话说让我们考虑英式表达It’s not my cup of tea指的是你不喜欢的东西。让我们让 ChatGPT 和谷歌翻译将其翻译成意大利文 图 5.19 – 比较 ChatGPT 和谷歌翻译在将英文翻译成意大利文时的表现 正如你所看到的ChatGPT 可以提供几个意大利成语它们相当于原来的成语而且还有俚语格式。另一方面谷歌翻译进行了字面翻译忽略了成语的真正含义。 与任何其他任务一样你可以向 ChatGPT 提供上下文。因此如果你希望你的翻译具有特定的俚语或风格你可以总是在提示中指定。或者更有趣的是你可以要求 ChatGPT 带有讽刺意味地翻译你的提示 图 5.20 – ChatGPT 翻译带有讽刺意味的提示的例子。提示的原始内容取自 OpenAI 的维基百科页面https://it.wikipedia.org/wiki/OpenAI 所有这些场景都突显了 ChatGPT 和 OpenAI 模型的一个关键杀手特性。因为它们代表了 OpenAI 定义的人工通用智能AGI的体现它们并不是要专门化也就是受限于单个任务。相反它们旨在以动态方式为多种场景提供服务这样你可以用单一模型解决广泛的用例。 总之ChatGPT 不仅能够生成新文本还能够操纵现有材料以满足你的需求。它还被证明非常精确地在不同语言之间进行翻译同时保持行话和语言特定的表达方式。 在下一节中我们将看到 ChatGPT 如何协助我们进行信息检索和竞争情报。 快速信息检索和竞争情报 信息检索和竞争情报是 ChatGPT 变革性的另两个领域。ChatGPT 检索信息的最常见方式是作为搜索引擎。每当我们向 ChatGPT 提出问题它都可以从知识库中检索信息并以原创方式重新表述。 一个例子涉及要求 ChatGPT 提供我们可能有兴趣阅读的书的快速摘要或评论 图 5.21 – ChatGPT 提供书籍摘要和评论的示例 或者我们可以根据自己的喜好要求一些新书的建议 图 5.22 – ChatGPT 根据我的喜好推荐书籍列表的示例 此外如果我们设计的提示信息更具体ChatGPT 可以作为指引我们寻找研究或学习的正确参考资料的工具。 换句话说您可能希望快速检索有关您想了解更多的主题的背景参考资料 – 例如前馈神经网络。您可能会要求 ChatGPT 指引您到一些广泛讨论该主题的网站或论文 图 5.23 – ChatGPT 列出相关参考资料的示例 正如您所看到的ChatGPT 能够为我提供相关参考资料以便开始研究这个主题。然而在竞争情报方面它还可以进一步发展。 假设我正在写一本名为使用 Python 实现卷积神经网络简介的书。我想研究市场上潜在竞争对手。我想调查的第一件事是是否已经有一些具有相同内容的竞争性标题因此我可以要求 ChatGPT 生成一份现有书籍列表 图 5.24 – ChatGPT 提供竞争书籍列表的示例 您还可以要求关于您想要出版的市场饱和度的反馈 图 5.25 – ChatGPT 就如何在市场上保持竞争力提供建议 最后让我们请 ChatGPT 更准确地告诉我在我将要操作的市场上如何保持竞争力 图 5.26 – ChatGPT 如何建议改进您的书籍内容以使其脱颖而出的示例 ChatGPT 在列举一些使我的书独特的好建议方面做得相当不错。 总的来说ChatGPT 可以成为信息检索和竞争情报的有价值助手。然而重要的是要记住知识库截止日期为 2021 年这意味着每当我们需要检索实时信息或者在进行今天的竞争市场分析时我们可能无法依赖 ChatGPT。 尽管如此这个工具仍然提供了可以应用的出色建议和最佳实践而不受知识库截止日期的影响。 总结 本章我们看到的所有示例都只是 ChatGPT 可以帮助提高生产力的一小部分模拟。这些小技巧可以极大地帮助你完成可能会重复的活动比如用类似模板回复邮件而不是写每日例行公事或者繁琐的活动比如搜索背景资料或竞争情报。 在下一章中我们将更深入地探讨 ChatGPT 正在改变游戏规则的三个主要领域——开发、营销和研究。 六、用 ChatGPT 开发未来 在本章中我们将讨论开发人员如何利用 ChatGPT。本章关注 ChatGPT 在开发人员领域中解决的主要用例包括代码审查和优化、文档生成和代码生成。本章将提供示例并让您自行尝试提示。 在对开发人员为什么应该将 ChatGPT 作为日常助手进行一般性介绍之后我们将重点关注 ChatGPT 以及它可以做到以下几点 为什么开发人员选择 ChatGPT 生成、优化和调试代码 生成与代码相关的文档并调试您的代码 解释机器学习ML模型以帮助数据科学家和业务用户理解模型的可解释性 翻译不同的编程语言 在本章末尾您将能够利用 ChatGPT 进行编码活动并将其用作您编码生产力的助手。 为什么开发人员选择 ChatGPT 就我个人而言我相信 ChatGPT 最让人惊叹的能力之一就是处理代码。任何类型的代码。我们已经在第四章中看到 ChatGPT 如何可以作为 Python 控制台。然而对于开发人员来说ChatGPT 的能力远不止这个例子。它可以成为代码生成、解释和调试的日常助手。 在最受欢迎的语言中我们当然可以提到 Python、JavaScript、SQL 和 C#。然而ChatGPT 覆盖了各种语言就像它自己披露的那样 图 6.1 – ChatGPT 列出了它能够理解和生成的编程语言 无论你是后端/前端开发人员、数据科学家还是数据工程师在你使用编程语言时ChatGPT 都可能是一个改变游戏规则的因素而我们将在下一节的几个示例中看到它是如何做到这一点的。 从下一节开始我们将深入研究 ChatGPT 在处理代码时可以取得的具体成就。我们将看到覆盖不同领域的端到端用例以便我们熟悉使用 ChatGPT 作为代码助手。 生成、优化和调试代码 您应该利用的主要功能是 ChatGPT 代码生成。你有多少次在寻找预先构建的代码片段来作为起点生成utils函数、示例数据集、SQL 模式等ChatGPT 能够根据自然语言输入生成代码 图 6.2 – ChatGPT 生成 Python 函数来写入 CSV 文件的示例 正如您所见ChatGPT 不仅能够生成函数还能够解释函数的功能、如何使用它以及使用通用占位符如my_folder替代什么。 另一个示例可能是为结构化表创建模式。比如想象一下你是一个数据工程师正在创建 SAP ERP 系统中两个标准表之间的关系MARA 和 VBAP分别存储一般物料数据和销售文档数据。 让我们请求 ChatGPT 根据列名创建这些表的模式将列名作为上下文 图 6.3 – ChatGPT 为 SAP 表生成 SQL 模式的示例 请注意ChatGPT 能够建立关系因为它了解 SAP 分类和列名解释这是任何不了解 SAP 分类包括数据工程师在内的人都会遇到困难的地方。作为确认让我们请求 ChatGPT 用更易理解的名称重命名所有这些列 图 6.4 – ChatGPT 重命名的 SAP 表列 最后让我们使用新列重新创建模式确保避免重复新名称 Condition Value 确实重复了五次 图 6.5 – SQL 模式列已重命名 上面的示例对于减少创建用于进一步数据分析的模式所需的时间至关重要。 ChatGPT 也可以成为代码优化的好助手。事实上它可能节省我们一些运行时间或计算资源从我们的输入开始制作优化的脚本。在自然语言领域这种能力可能与我们在第五章中看到的写作辅助功能相媲美在提高写作技能和 翻译 部分。 例如想象一下你想从另一个列表开始创建一个奇数列表。为了达到这个目的你编写了以下 Python 脚本为了这个练习我还将使用 timeit 和 datetime 库跟踪执行时间 from timeit import default_timer as timer from datetime import timedelta start timer() elements list(range(1_000_000)) data [] for el in elements:if not el % 2:# if odd numberdata.append(el) end timer() print(timedelta(secondsend-start))执行时间为 00.141185 秒。如果我们要求 ChatGPT 优化这个脚本会发生什么呢 图 6.6 – ChatGPT 生成优化的 Python 脚本替代方案 ChatGPT 为我提供了一个示例以更低的执行时间实现相同的结果。它还详细说明了为什么理解方法比 for 循环更快的替代方案。 让我们看看这个新脚本与之前脚本的性能比较 图 6.7 – 用户和 ChatGPT 脚本执行时间的比较 如您所见第二种方法由 ChatGPT 生成的方法将执行时间减少约 47.8%。 除了代码生成和优化外ChatGPT 还可以用于错误解释和调试。有时错误很难解释因此自然语言解释可以帮助识别问题并引导您走向解决方案。 例如当我从命令行运行一个.py文件时我收到以下错误 2023-03-25 11:27:10.270 Uncaught app exception Traceback (most recent call last):File C:\Users\vaalt\Anaconda3\lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py, line 565, in _run_scriptexec(code, module.__dict__)File C:\Users\vaalt\OneDrive\Desktop\medium articles\llm.py, line 129, in moduleuser_input get_text()File C:\Users\vaalt\OneDrive\Desktop\medium articles\llm.py, line 50, in get_textinput_text st.text_input(You: , st.session_state[input], keyinput, placeholder Your AI assistant here! Ask me anything..., label_visibility hidden)File C:\Users\vaalt\Anaconda3\lib\site-packages\streamlit\runtime\metrics_util.py, line 311, in wrapped_funcresult non_optional_func(*args, **kwargs)File C:\Users\vaalt\Anaconda3\lib\site-packages\streamlit\elements\text_widgets.py, line 174, in text_inputreturn self._text_input(File C:\Users\vaalt\Anaconda3\lib\site-packages\streamlit\elements\text_widgets.py, line 266, in _text_inputtext_input_proto.value widget_state.value TypeError: [] has type list, but expected one of: bytes, Unicode让我们看看 ChatGPT 是否能让我理解错误的本质。为此我只需向 ChatGPT 提供错误文本并要求它给我解释。 图 6.8 – ChatGPT 用自然语言解释 Python 错误 最后让我们想象我写了一个函数该函数接受一个字符串作为输入并返回每个字母后面带有下划线的相同字符串。 在上面的例子中我期望看到g_p_t_的结果然而实际上它只返回了这段代码中的t_ 图 6.9 – 有错误的 Python 函数 让我们请 ChatGPT 为我们调试这个函数 图 6.10 – ChatGPT 调试 Python 函数的示例 令人印象深刻不是吗再次ChatGPT 提供了正确版本的代码并帮助解释错误在哪里以及为什么导致不正确的结果。让我们看看现在是否可以工作 图 6.11 – ChatGPT 调试后的 Python 函数 嗯显然是这样的 这些以及许多其他与代码相关的功能确实可以提高您的生产力缩短执行许多任务所需的时间。 然而ChatGPT 不仅仅局限于纯粹的调试。由于 GPT 模型背后的令人难以置信的语言理解能力这个人工智能AI工具能够在代码旁边生成适当的文档以及准确解释代码将做什么我们将在下一节中看到。 生成文档和代码可解释性 在处理新应用程序或项目时将代码与文档相关联始终是一个好的实践。这可以通过在函数或类中嵌入文档字符串的形式来实现以便他人可以直接在开发环境中调用它们。 例如以下 Python 类具有 10 个不同的方法用于基本数学运算 class Calculator:def add(self, x, y):return x ydef subtract(self, x, y):return x - ydef multiply(self, x, y):return x * ydef divide(self, x, y):try:return x / yexcept ZeroDivisionError:print(Error: division by zero)return Nonedef power(self, x, y):return x ** ydef square_root(self, x):try:return x ** 0.5except ValueError:print(Error: square root of a negative number)return Nonedef logarithm(self, x, base):try:return math.log(x, base)except ValueError:print(Error: invalid logarithm arguments)return Nonedef factorial(self, x):if x 0:print(Error: factorial of a negative number)return Noneelif x 0:return 1else:return x * self.factorial(x-1)def fibonacci(self, n):if n 0:print(Error: fibonacci sequence index cannot be negative)return Noneelif n 0:return 0elif n 1:return 1else:return self.fibonacci(n-1) self.fibonacci(n-2)您可以初始化该类并测试它如下作为示例我将使用加法方法 图 6.12 – 初始化 Python 类并使用其中一个方法 现在假设我想能够使用Calculator?约定来检索文档字符串文档。通过这样做对于 Python 包、函数和方法我们可以得到该特定对象的全面文档如下所示pandas Python 库的示例 图 6.13 – pandas 库文档示例 现在让我们请 ChatGPT 为我们的Calculator类生成相同的结果。 因此在向 ChatGPT 提供Calculator类作为上下文之后我要求它生成相关的文档如下 图 6.14 – ChatGPT 更新代码文档 您可以在本书的 GitHub 存储库中找到整个 ChatGPT 响应网址为github.com/PacktPublishing/Modern-Generative-AI-with-ChatGPT-and-OpenAI-Models/blob/main/Chapter%206%20-%20ChatGPT%20for%20Developers/prompts。 因此如果我们按照前面代码中所示更新我们的类并调用Calculator?我们将得到以下输出 图 6.15 – 新的计算器类文档 最后ChatGPT 还可以被利用来用自然语言解释脚本、函数、类或其他类似的内容所做的事情。我们已经看到 ChatGPT 用清晰的解释丰富了其与代码相关的响应的许多示例。然而我们可以通过以代码理解为特定问题提出具体问题来增强这一能力。 例如让我们请 ChatGPT 向我们解释以下 Python 脚本的作用 图 6.16 – ChatGPT 解释 Python 脚本的示例 代码可解释性也可以作为前述文档的一部分或者可以在希望更好地理解来自其他团队的复杂代码的开发人员之间使用或者就像有时发生在我身上的记住他们一段时间前写的东西。 由于 ChatGPT 和本节提到的能力开发人员可以轻松地用自然语言跟踪项目生命周期这样新团队成员和非技术用户更容易理解到目前为止所做的工作。 在下一节中我们将看到代码可解释性是数据科学项目中机器学习模型可解释性的关键步骤。 理解机器学习模型可解释性 模型可解释性是指人类可以理解 ML 模型预测逻辑的程度。基本上这是理解模型如何做出决策以及哪些变量有助于其预测的能力。 让我们看一个使用深度学习 keras.datasets 进行模型可解释性的示例它包含 60,000 张 32x32 的彩色图像因此是 3 通道图像分为 10 类飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车每类有 6,000 张图像。在这里我将分享模型的主体部分您可以在书的 GitHub 代码库中找到所有相关代码用于数据准备和预处理github.com/PacktPublishing/Modern-Generative-AI-with-ChatGPT-and-OpenAI-Models/tree/main/Chapter%206%20-%20ChatGPT%20for%20Developers/code。 modeltf.keras.Sequential() model.add(tf.keras.layers.Conv2D(32,kernel_size(3,3),activationrelu,input_shape (32,32,1))) model.add(tf.keras.layers.MaxPooling2D(pool_size(2,2))) model.add(tf.keras.layers.Flatten()) model.add(tf.keras.layers.Dense(1024,activationrelu)) model.add(tf.keras.layers.Dense(10,activationsoftmax))上述代码由几个执行不同操作的层组成。我可能对模型的结构以及每个层的目的感兴趣。让我们向 ChatGPT 寻求帮助 图 6.17 – 使用 ChatGPT 进行模型可解释性 正如您在上图中所看到的ChatGPT 能够清晰地解释我们的 CNN 的结构和层次。它还添加了一些评论和提示比如使用最大池化层有助于减少输入的维度。 我还可以通过 ChatGPT 在验证阶段解释模型结果。因此在将数据分为训练集和测试集并在训练集上训练模型后我想看到它在测试集上的表现 图 6.18 – 评估指标 让我们还请 ChatGPT 对我们的验证指标进行详细说明 图 6.19 – ChatGPT 解释评估指标示例 再次结果非常令人印象深刻并清晰指导如何设置 ML 实验的训练和测试集。它解释了模型足够泛化的重要性以便它不会过拟合并能够在以前从未见过的数据上预测准确的结果。 模型可解释性之所以重要有很多原因。一个关键因素是它减少了业务用户与模型背后代码之间的差距。这对于使业务用户能够理解模型行为并将其转化为代码业务理念至关重要。 此外模型可解释性实现了负责任和道德人工智能的关键原则之一即 AI 系统背后的模型思考和行为的透明性。解锁模型可解释性意味着检测模型在生产中可能存在的潜在偏见或有害行为并因此防止它们发生。 总的来说ChatGPT 在模型可解释性的背景下能够提供有价值的支持通过在行级别生成见解正如我们在上一个示例中所看到的。 接下来我们将探讨 ChatGPT 的下一个并且也是最后一个能力这将对开发人员的生产力产生更大的提升尤其是在同一个项目中使用多种编程语言时。 不同编程语言之间的翻译 在第五章中我们看到 ChatGPT 在不同语言之间具有很强的翻译能力。真正令人难以置信的是自然语言并不是它唯一的翻译对象。事实上ChatGPT 能够在不同的编程语言之间进行翻译同时保持相同的输出以及相同的风格即如果存在文档字符串文档它将保留该文档。 在许多情况下这可能是一个改变局面的游戏规则的场景。 例如你可能需要学习一个之前从未见过的新编程语言或统计工具因为你需要快速交付一个项目。有了 ChatGPT 的帮助你可以开始使用你喜欢的编程语言然后要求它翻译到你想要的语言而你会在翻译过程中学会这门语言。 想象一下项目需要在 MATLAB由 MathWorks 开发的专有数值计算和编程软件中交付可你一直在 Python 中编程。该项目包括从修改后的美国国家标准与技术研究所MNIST数据集中对图像进行分类原始数据集的描述和相关论文可以在此处找到yann.lecun.com/exdb/mnist/。该数据集包含许多手写数字经常被用于教授各种图像处理系统。 首先我编写了以下 Python 代码来初始化一个用于分类的深度学习模型 import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers # Load the MNIST dataset (x_train, y_train), (x_test, y_test) keras.datasets.mnist.load_data() # Preprocess the data x_train x_train.reshape(-1, 28*28) / 255.0 x_test x_test.reshape(-1, 28*28) / 255.0 y_train keras.utils.to_categorical(y_train) y_test keras.utils.to_categorical(y_test) # Define the model architecture model keras.Sequential([layers.Dense(256, activationrelu, input_shape(28*28,)),layers.Dense(128, activationrelu),layers.Dense(10, activationsoftmax) ]) # Compile the model model.compile(optimizeradam, losscategorical_crossentropy, metrics[accuracy]) # Train the model history model.fit(x_train, y_train, validation_split0.2, epochs10, batch_size128) # Evaluate the model test_loss, test_acc model.evaluate(x_test, y_test, verbose0) print(Test accuracy:, test_acc)现在让我们看看如果我们把前面的代码作为 ChatGPT 的上下文并要求它将其翻译成 MATLAB 会发生什么 图表 20 – ChatGPT 将 Python 代码翻译成 MATLAB 让我们看看它是否能够将代码翻译成其他语言比如 JavaScript 图表 6.21 – ChatGPT 将 Python 代码翻译成 JavaScript 代码翻译还可以减少新技术和当前编程能力之间的技能差距。 代码翻译的另一个关键影响是应用现代化。诚然想象一下你希望刷新你的应用程序堆栈即迁移到云上。你可以决定从基础设施即服务IaaS实例如 Windows 或 Linux 虚拟机VM进行简单的搬迁。然而在第二阶段你可能希望重新构建、重新设计或甚至重建你的应用程序。 以下图表描述了应用程序现代化的各种选项 图 6.22 – 迁移应用程序到公共云的四种方式 ChatGPT 和 OpenAI Codex 模型可以帮助你进行迁移。例如考虑大型机。 大型组织主要使用大型机进行重要任务如用于人口普查、消费者和行业统计、企业资源规划以及大规模事务处理的大规模数据处理。大型机环境的应用程序编程语言是通用商业定向语言COBOL。尽管 COBOL 在 1959 年发明但今天仍在使用是现存最古老的编程语言之一。 随着技术的不断改进存储在大型机领域的应用程序一直在经历持续的迁移和现代化过程旨在增强存在的遗留大型机基础设施的接口、代码、成本、性能和可维护性。 当然这意味着将 COBOL 翻译成更现代的编程语言比如 C#或 Java。问题在于大多数新一代程序员不了解 COBOL因此在这一背景下存在巨大的技能鸿沟。 让我们考虑一个读取员工记录文件并编写服务时间超过 10 年的员工报告的 COBOL 脚本 IDENTIFICATION DIVISION. PROGRAM-ID. EMPLOYEEREPORT. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL.SELECT EMPLOYEE-FILE ASSIGN TO EMPLOYEE.DATORGANIZATION IS LINE SEQUENTIAL.SELECT REPORT-FILE ASSIGN TO EMPLOYEEREPORT.TXTORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD EMPLOYEE-FILE. 01 EMPLOYEE-RECORD.05 EMPLOYEE-ID PIC X(10).05 HIRE-DATE PIC 9(6).05 EMPLOYEE-NAME PIC X(30). FD REPORT-FILE. 01 REPORT-LINE PIC X(80). WORKING-STORAGE SECTION. 01 WS-CURRENT-DATE PIC 9(6). 01 WS-EMPLOYEE-YEARS PIC 9(2). 01 WS-REPORT-HEADER.05 FILLER PIC X(30) VALUE EMPLOYEES WITH 10 YEARS OF SERVICE.05 FILLER PIC X(10) VALUE SPACES.05 WS-REPORT-DATE PIC X(6). PROCEDURE DIVISION. MAIN-PARAGRAPH.OPEN INPUT EMPLOYEE-FILEOPEN OUTPUT REPORT-FILEMOVE FUNCTION CURRENT-DATE TO WS-CURRENT-DATEMOVE WS-CURRENT-DATE(1:6) TO WS-REPORT-DATEWRITE REPORT-LINE FROM WS-REPORT-HEADERWRITE REPORT-LINE FROM SPACESPERFORM READ-EMPLOYEE UNTIL EMPLOYEE-FILE-STATUS 10CLOSE EMPLOYEE-FILECLOSE REPORT-FILESTOP RUN. READ-EMPLOYEE.READ EMPLOYEE-FILEAT END MOVE 10 TO EMPLOYEE-FILE-STATUSEND-READCOMPUTE WS-EMPLOYEE-YEARS FUNCTION INTEGER-OF-DATE(WS-CURRENT-DATE) - HIRE-DATE(1:6)IF WS-EMPLOYEE-YEARS 10WRITE REPORT-LINE FROM EMPLOYEE-RECORDEND-IF.我然后将之前的 COBOL 脚本传递给 ChatGPT这样它就可以将其作为上下文来制定其响应。现在让我们要求 ChatGPT 将该脚本翻译成 JavaScript 图 6.23 – ChatGPT 将 COBOL 翻译成 JavaScript 的示例 像 ChatGPT 这样的工具可以帮助减少这种以及类似场景中的技能鸿沟引入了一个既懂得编程的过去又懂得未来的层。 总之ChatGPT 可以成为应用现代化的有效工具提供代码升级以及增强遗留系统的宝贵见解和建议。凭借其先进的语言处理能力和丰富的知识库ChatGPT 可以帮助组织简化其现代化工作使该过程更快、更有效率和更有效。 注 OpenAI Codex 模型是 GitHub Copilot 背后的引擎。这种新功能涵盖了本章中我们将看到的许多用例比如代码生成、自动填充和代码优化。 总结 ChatGPT 可以成为开发人员寻求提升技能和简化工作流程的宝贵资源。我们首先看到了 ChatGPT 如何生成、优化和调试您的代码但我们还涵盖了更多的功能比如在您的代码旁边生成文档解释您的 ML 模型以及在不同编程语言之间进行翻译用于应用现代化。 无论您是经验丰富的开发人员还是刚刚起步ChatGPT 都为学习和成长提供了强大的工具缩小了代码和自然语言之间的差距。 在下一章中我们将深入探讨另一个应用领域ChatGPT 可能成为游戏改变者的地方营销。
http://www.tj-hxxt.cn/news/139280.html

相关文章:

  • 手机网站制作的价格科技创新的魅力
  • 企业模板建站有哪些云南新建设国际小学网站
  • 网站关键词没被搜出来泰州做网站
  • 如何登录建设部网站电脑版长春火车站封闭了吗
  • 摄影作品投稿平台网站seo思路
  • 网站空间多少钱一年怎样做博客网站
  • 个人网站空间申请宁波最新发布
  • 做菠菜网站西安未央区今天出啥事了
  • 临沂网站设计价格做网站用虚拟机还是服务器
  • 网站建设博采wordpress点餐主题
  • 兰州最大网络公司八方资源网做网站优化怎么样
  • 建站快车是什么网站开发就业
  • 邯郸做移动网站的公司南山区网站建设
  • 做网站保存什么格式最好策划书格式模板
  • 闵行区网站开发上海高端做网站
  • 本地邵阳网站建设wordpress关闭注册激活邮件
  • 扬州北京网站建设文山网站建设报价
  • 网站建设公司盈利动态wordpress模板
  • 品牌网站建设可信大蝌蚪江门网站程序开发制作
  • 长春网站建设模板样式网页制作咨询公司
  • 西安做网站公司北京网站建设 爱牛
  • 个人网站建设联系仿站模板
  • 天眼查网站建设公司网站建设 58同城
  • 做网站怎么购买主机色流网站怎么做
  • 中国有哪些网站可以做兼职手机wordpress
  • 单位做网站注意什么做网站要求高吗
  • 创建网站的基本流程免费电视剧网站大全在线观看
  • 网站提交网站开发工具总结
  • 做外贸电商网站有哪个wordpress安装使用教程
  • wordpress怎么制作网站主页桂林做手机网站建设