生产中的大语言模型(MEAP)(一)(1)

简介: 生产中的大语言模型(MEAP)(一)

第一章:词语的觉醒:大型语言模型为何引起关注

本章节涵盖

  • 什么是大型语言模型,以及它们可以做什么和不能做什么
  • 什么时候你应该部署自己的大型语言模型,以及什么时候不应该
  • 大型语言模型的神话及其背后的真相

“任何足够先进的技术都与魔法无异。”

1.1 大型语言模型加速沟通

每一份工作都有一定程度的沟通。通常这种沟通是单调乏味的、官僚主义的和政治性的。我经常警告学生和门徒,每份工作都有它的文书工作。曾经是激情的东西很容易被日复一日的乏味和琐碎的工作所扼杀,当它变成一份工作时就会出现这种情况。事实上,当我们谈论我们的职业时,我们经常吹嘘它们,试图提高我们的社会地位,所以你很少会听到全部真相。你不会听到有关无聊的部分,日常的苦差事会方便地被遗忘。

然而,想象一下一个减轻单调工作负担的世界。一个警察不再每天浪费数小时填写报告,而是可以把那些时间用在社区外展项目上的地方。或者一个世界,教师不再彻夜忙于批改作业和准备课程计划,而是可以考虑和准备针对个别学生的定制课程。甚至一个世界,律师们不再陷入为期数日的法律文件梳理之中,而是有自由去接受激励他们的慈善案件?当沟通负担、文书负担和会计负担消失时,工作更像是我们所说的那样。

对于这一点,LLMs 是自印刷术以来最有前途的技术。首先,它们彻底颠覆了人类和计算机之间的角色和关系,改变了我们认为它们有能力的东西。它们已经通过了医学考试[1],律师资格考试,以及多次心灵理论测试。它们已经通过了谷歌和亚马逊的编程面试。它们在 SAT 考试中至少获得了 1600 分中的 1410 分。其中最令作者印象深刻的是,GPT-4 甚至通过了高级侍酒师考试-这让我们想知道它们是如何通过实际的品酒部分的。事实上,它们前所未有的成就以惊人的速度发展,往往让我们这些凡人感到有点不安和不安。对于一种似乎能做任何事情的技术,你会做什么呢?

虽然通过考试很有趣,但除非我们的目标是建造史上最昂贵的作弊机器,否则并不是特别有帮助,我们承诺我们的时间有更好的利用。LLMs 擅长的是语言,特别是帮助我们改善和自动化沟通。这使我们能够将常见的苦涩经验转化为轻松愉快的经验。首先,想象一下走进你的家门,你有自己的个人 JARVIS,就好像踏入了钢铁侠的鞋子,这是一个为你的日常生活增添了无与伦比的活力的 AI 助手。虽然 LLMs 还没有达到漫威电影中 JARVIS 所表现出的人工智能(AGI)水平,但它们正在为改善客户支持到帮助你购物挑选爱人的生日礼物等新的用户体验提供动力。它懂得询问你关于这个人,了解他们的兴趣和身份,找出你的预算,然后给出专业的建议。尽管许多这些助手正在被很好地利用,但还有许多只是用户可以与之对话和娱乐的聊天机器人-这很重要,因为即使我们的想象朋友这些天也太忙了。开玩笑的,这些可以创造出惊人的体验,让你见到你最喜爱的虚构角色,比如哈利·波特,福尔摩斯,阿纳金·天行者或者钢铁侠。

我们确信许多读者对编程助手感兴趣,因为我们都知道无所不 Google 实际上是最糟糕的用户体验之一。能够用简单的英语写下几个目标,然后看到助手帮你写代码是一种令人振奋的体验。我个人曾经使用这些工具来帮助我记住语法,简化和清理代码,编写测试,并学习一种新的编程语言。

视频游戏是另一个有趣的领域,我们可以期待大型语言模型(LLM)带来许多创新。它们不仅帮助程序员创造游戏,还允许设计者创造更沉浸式的体验。例如,与 NPC 对话会更加深入和引人入胜。想象一下,像《动物之森》或《星露谷物语》这样的游戏会有几乎无穷无尽的任务和对话。

考虑其他行业,比如教育,似乎没有足够的老师满足需求,意味着我们的孩子没有得到他们需要的一对一关注。LLM 助手可以帮助老师节省做手工事务的时间,同时为那些困难的孩子提供私人辅导。企业正在研究将 LLM 用于对话式数据工作,协助员工理解季度报告和数据表,基本上为每个人提供他们自己的个人分析师。销售和营销部门肯定会利用这一神奇的创新,无论好坏。搜索引擎优化(SEO)的状况也将发生很大变化,因为目前它主要是通过产生内容来希望使网站更受欢迎,而现在这变得非常容易。

那个清单只是我看到的一些常见例子,公司对使用它们感兴趣。人们也出于个人原因使用它们。创作音乐、诗歌,甚至写书,翻译语言,总结法律文件或电子邮件,甚至免费咨询——是的,这个主意很糟糕,因为它们在这方面还是很糟糕。个人偏好,但当我们的心智受到威胁时,我们不应该节省一分钱。当然,这导致了人们已经开始将它们用于欺骗、诈骗和伪造新闻以扭曲选举的黑暗目的。此时,清单已经变得相当大而且多样化,但我们只是开始挖掘其潜力的一角。实际上,由于大型语言模型(LLM)通常帮助我们进行沟通,所以更好的思考方式应该是,“它们做不到什么?”而不是“它们能做什么?”。

或者更好的是,“它们不应该做什么?”嗯,作为一种技术,有一些限制和约束,例如,LLM 速度有点慢。当然,慢是一个相对的词,但响应时间通常是以秒为单位而不是毫秒。我们将在第三章中更深入地探讨这个问题,但举个例子,我们可能不会很快看到它们用于自动完成任务,因为那需要非常快的推理才能有用。毕竟,自动完成需要能够比某人的打字速度更快地预测单词或短语。类似地,LLM 是大型复杂系统,我们不需要它们来解决这样一个简单的问题。用 LLM 解决自动完成问题不仅仅是用锤子打钉子,而是用整个拆迁球撞击它。就像租用一颗拆迁球比买一把锤子更贵一样,运行 LLM 会花费你更多。有很多类似的任务,我们应该考虑解决的问题的复杂性。

还有许多复杂的问题通常很难用 LLM 解决,比如预测未来。不,我们不是指神秘的艺术,而是预测问题,比如预测天气或海滩上涨潮的时间。这些实际上是我们解决了的问题,但我们并没有一定好的方法来传达这些问题是如何解决的。它们通过数学解决方案的组合来表达,比如傅里叶变换和谐波分析,或者通过黑盒子 ML 模型。有很多问题符合这个类别,比如异常值预测,微积分,或者找到胶带卷的结尾。

你也可能想要避免在高风险项目中使用它们。LLM 并不是绝对可靠,经常会犯错误。为了增加创造力,我们通常允许 LLM 中有一点随机性,这意味着你可以问 LLM 同样的问题,得到不同的答案。这是有风险的。你可以通过降低温度来消除这种随机性,但根据你的需求,这可能会使它变得无用。例如,你可能决定使用 LLM 将投资选项分类为好或坏,但你是否希望它根据其输出做出实际的投资决策?除非你的目标是制作一个迷因视频,否则不要没有监督地这样做。

最终,LLM 只是一个模型,它不能对你的损失负责,而实际上是你选择使用它造成了损失。类似的风险问题可能包括填写税表或寻求医疗建议。虽然 LLM 可以做这些事情,但它不会像雇用经过认证的注册会计师那样保护你免受 IRS 审计的严重处罚。如果你从 LLM 那里得到错误的医疗建议,就没有医生可以告你医疗事故。然而,在所有这些例子中,LLM 都有可能大大帮助从业者更好地执行他们的工作角色,减少错误并提高速度。

何时使用 LLM

用途包括:

  • 生成内容
  • 问答服务
  • 聊天机器人和 AI 助手
  • 扩散(txt2img、txt23d、txt2vid 等)
  • 与数据交互的应用
  • 任何涉及沟通的事情

避免用于以下场景:

  • 对延迟敏感的工作负载
  • 简单的项目
  • 不是用文字解决而是用数学或算法解决的问题 - 预测、异常值预测、微积分等
  • 严格的评估
  • 高风险项目

语言不仅仅是人们用来沟通的媒介。它是使人类成为顶级捕食者并为每个个体赋予社区自我定义的工具。人类生活的每个方面,从与父母争论到大学毕业再到阅读这本书,都被我们的语言所渗透。语言模型正在学习利用人类存在的基本方面之一,并且在使用时负责任地帮助我们完成每一个任务。它们有潜力解锁关于我们自己和他人的理解维度,如果我们负责任地教给它们如何。

自 LLMs 发布以来,它们就吸引了全球的注意力,因为它们的潜力让想象力勃发。LLMs 承诺了这么多,但是……这些解决方案都在哪里?哪里有给我们带来沉浸式体验的视频游戏?为什么我们的孩子还没有个人 AI 导师?为什么我还没有自己的个人助手像钢铁侠一样?这些是激发我们写这本书的深刻而深奥的问题。特别是最后一个问题,它让我夜不能寐。因此,虽然 LLMs 可以做出惊人的事情,但真正知道如何将它们转化为产品的人不够多,这正是我们在本书中的目标。

1.2.1 购买:被打的道路

简单地购买 LLM 访问权限有许多很好的理由。首先也是最重要的是,访问 API 提供的速度和灵活性。使用 API 是建立原型并迅速入手的一种非常简单和便宜的方法。事实上,如您在列表 1.1 中所见,只需几行代码即可开始连接到 OpenAI 的 API 并开始使用 LLM。当然,有很多可能性,但是过度投资于 LLM,只是发现它们恰好在您特定的领域失败,这将是一个糟糕的主意。使用 API 可以让您快速失败。构建原型应用程序以证明概念,并通过 API 启动它是一个很好的起点。

列表 1.1 调用 OpenAI API 的简单应用程序
import os
import openai
# Load your API key from an environment variable
openai.api_key = os.getenv("OPENAI_API_KEY")
chat_completion = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Hello world"}],

往往,购买对模型的访问权可以为您带来竞争优势。在许多情况下,市场上最好的模型很可能是由专门从事该领域的公司构建的,他们使用了他们花费了大量金钱来策划的专业数据集。虽然你可以尝试竞争并构建自己的模型,但也许直接购买他们的模型访问权更符合你的目的。最终,谁拥有更好的特定领域数据来进行微调,很可能会获胜,而如果这只是贵公司的一个副产品,那可能不是你。毕竟,策划数据可能是昂贵的。提前购买可以节省很多工作量。

这导致了下一个观点,购买是快速获得专业知识和支持的方法。例如,OpenAI 花了大量时间使他们的模型安全,并配备了大量的过滤器和控件,以防止滥用他们的 LLMs。他们已经遇到并覆盖了很多边缘情况,因此您无需担心。购买他们模型的访问权还可以让您访问他们围绕其构建的系统。

更不用说,部署 LLM 本身只是问题的一半。你还需要构建一个完整的应用程序在其之上。有时候,购买 OpenAI 的模型成功超过竞争对手,这在很大程度上要归功于他们的用户体验和一些技巧,比如让标记看起来像是正在被输入。我们将带领您了解如何开始解决您的用例中的用户体验问题,以及您可以采用一些原型设计方法,为此领域提供主要的起步。

1.2.2 建设:少有人走的道路

使用 API 很容易,在大多数情况下,可能是最佳选择。但是,有很多理由可以让你应该努力拥有这项技术,并学会自己部署它。虽然这条路可能更难走,但我们会教你如何做到。让我们从最明显的原因开始探讨其中的几个原因:控制。

控制

第一批真正采用 LLMs 作为核心技术的公司之一是一家名为 Latitude 的小型游戏公司。Latitude 专注于使用 LLM 聊天机器人的 Dungeon and Dragons 类型角色扮演游戏,并在与它们合作时遇到了挑战。这并不是要批评这家公司的失误,因为他们为我们的集体学习经验做出了贡献,并且是开辟新道路的先驱。尽管如此,他们的故事令人着迷而有趣,就像一场我们个人无法停止观看的火车失事。

Latitude 的第一个发布是一个名为 AI Dungeon 的游戏。在初始阶段,它利用了 OpenAI 的 GPT2 来创建一个交互式和动态的故事体验。它很快就吸引了大量玩家,当然,他们开始不适当地使用它。当 OpenAI 向 Latitude 提供了 GPT3 的访问权限时,它承诺升级游戏体验,但实际上得到的是一场噩梦。

告诉你一个事,GPT3 加入了人类反馈加强学习(RLHF)这个功能,这大大有助于提高功能,但这也意味着 OpenAI 的合同工现在正在查看提示。这就是人类反馈的部分。这些工作人员并不是太喜欢阅读游戏创建的淫秽内容。OpenAI 的代表迅速向 Latitude 提出了最后通牒。要么他们需要开始审查玩家,否则他们将撤销他们对模型的访问——这将基本上扼杀了游戏和公司。由于没有其他选择,他们迅速添加了一些过滤器,但过滤系统却太过于是一个应急措施,一个漏洞和故障的混乱。玩家们对系统的糟糕程度感到不满,并且意识到 Latitude 的开发人员正在阅读他们的故事,完全不知道 OpenAI 已经在这方面做出了贡献。这是一场公关灾难。但这还没有结束。

OpenAI 认为游戏工作室不够努力,一直在制造障碍,他们被迫增加保障措施,开始禁止玩家进入游戏。这里是因果转折,很多故事变得淫秽是因为这个模型有偏好于情色文学。它经常会将无害的情节意外地转化为不当的情挑状况,导致玩家被驱逐和禁止进入游戏。OpenAI 又扮演起真理的楷模,但问题在于他们的模型。这让玩家们面临了游戏史上最具讽刺意味和不公正的问题:他们因游戏所传达的内容而被禁止进入游戏。

因此,这是一个年轻的游戏工作室,只是想制作一个有趣的游戏却陷入了挫败的客户和一个把所有责任都推到他们身上的技术巨头之间的困境。如果公司对技术拥有更多的控制权,他们可以采取真正的解决方案,比如修复模型,而不是只能把化妆品涂在猪身上。

在这个例子中,控制可能表现为你微调模型的能力,而 OpenAI 现在提供了微调功能,但仍有许多细节的决策在使用服务而不是自己的解决方案时会丢失。例如,使用哪些训练方法,将模型部署到哪些区域,或者在哪种基础设施上运行。控制对于任何面向客户或内部的工具也很重要。你不希望代码生成器意外输出侵犯版权或为你的公司创建法律问题的代码。你也不希望你面向客户的 LLM 输出关于你的公司或其过程的事实不正确的信息。

控制是你管理操作、过程、资源的能力,以便与你的目标、目的和价值观保持一致。如果一个模型最终成为你产品提供的核心,并且供应商意外提高了价格,你能做的很少。如果供应商决定他们的模型应该给出更自由或更保守的答案,而这不再与你的价值

技术对你的业务计划越核心,控制它的重要性就越大。这就是为什么麦当劳拥有其特许经营的房地产,以及为什么谷歌、微软和亚马逊都拥有自己的云网络。甚至为什么那么多企业家通过 Shopify 建立在线商店,而不只是使用其他平台,比如 Etsy 或亚马逊市场。最终,当你购买别人的产品时,第一件失去的就是控制权。保持控制权将为你提供更多解决未来问题的选择,并且也将为你带来竞争优势。

竞争优势

部署自己模型最有价值的一个方面是它给你带来了竞争优势。定制化——训练模型成为最擅长的一件事。例如,在 2017 年发布了双向编码器表示来自变压器(BERT),这是一种你可以用来训练自己模型的变压器模型架构后,有一大批研究人员和企业开始测试这项新技术在他们自己的数据上取得全球成功。在撰写本文时,如果你在 Hugging Face Hub 搜索“BERT”,会返回超过 13.7k 个模型,所有这些模型都是人们为了自己的目的个别训练的,以成为他们任务的最佳模型。

在这个领域的一个我个人的经验是训练斯洛文尼亚 BERTcina。在征得许可的情况下,通过爬取斯洛伐克国家语料库等资源,我汇总了当时最大的(单语种斯洛伐克语)数据集,还包括像 OSCAR 项目和欧洲议会语料库等一大堆其他资源。它从未创造过任何计算记录,也从未出现在任何模型评论中或为我工作的公司产生合作伙伴关系。然而,在它训练的任务上,它确实胜过了市场上的其他任何模型。

很可能,你和你的公司都不需要 AGI(人工通用智能)来从你的数据中生成相关见解,实际上,如果你发明了一个真正自我意识的 AGI,并计划仅仅将其用于每周一次为幻灯片制作一些数字、分析数据和生成可视化内容,那肯定足以成为 AGI 消灭人类的理由。更有可能的情况是,你需要的正是我制作斯洛文尼亚 BERTcina 时所需要的,一个大型语言模型,它在市场上执行的两到三个任务比其他任何模型都要好,并且不会将你的数据与微软或其他潜在竞争对手共享。虽然一些数据需要因安全或法律原因保密,但很多数据只是因为它们是商业机密而需要保护。

有数百种针对通用智能和特定任务基础知识的开源 LLM。我们将在第四章中介绍一些我们最喜欢的。采用这些开源替代方案之一,并对其进行训练以创建世界上最好的该任务模型,将确保您在市场上具有竞争优势。它还将允许您以自己的方式部署模型并将其集成到系统中以产生最大影响。

集成到任何地方

假设您想要部署 LLM 作为选择自己冒险风格游戏的一部分,该游戏使用设备的 GPS 位置来确定故事情节。您知道您的用户经常会冒险进入山区、海上等地,通常会遇到网络服务不佳和缺乏互联网访问的情况。调用 API 是行不通的。现在,别误会,像在这种情况下将 LLM 部署到边缘设备上仍然是一个探索性的课题,但是这是可能的,我们将在第九章中向您展示如何做到这一点。依靠 API 服务对于沉浸式体验来说是不可行的。

类似地,使用第三方 LLM 并调用 API 会增加集成和延迟问题,需要您将数据发送到网络并等待响应。API 很棒,但它们总是很慢,而且不总是可靠的。当延迟对项目很重要时,最好在内部提供服务。前一节关于竞争优势的讨论提到了两个以边缘计算为优先的项目,但还有许多其他项目存在。LLAMA.cpp 和 ALPACA.cpp 是最早的这类项目之一,而且这个领域的创新速度比其他任何领域都要快。4 位量化、低秩适应和参数高效微调都是最近为满足这些需求而创建的方法,我们将从第三章开始逐一介绍这些方法。

当我们团队首次开始与 ChatGPT 的 API 集成时,这是一次令人敬畏和令人谦卑的经历。令人敬畏的是,它使我们能够快速构建一些有价值的工具。令人谦卑的是,正如一位工程师对我开玩笑说的那样:“当你触及端点时,你会收到 503 错误,有时你会收到一条文本响应,就好像模型正在生成文本一样,但我认为那是一个 bug。”在生产环境中提供 LLM,试图满足这么多客户的需求,这并不是一件容易的事情。然而,部署一个集成到您的系统中的模型会让您对过程有更多的控制,提供比目前市场上找到的更高的可用性和可维护性。

成本

考虑成本始终很重要,因为它在做出明智决策并确保项目或组织的财务健康方面起着关键作用。它可以帮助您有效地管理预算,并确保资源得到适当的分配。控制成本可以让您在长期内维持项目的可行性和可持续性。

此外,考虑成本对于风险管理至关重要。当你了解不同的成本方面时,你可以识别潜在风险并更好地对其进行控制。这样,你可以避免不必要的支出,并确保你的项目对市场或行业的意外变化更具弹性。

最后,成本考虑对于保持透明度和问责制是重要的。通过监控和披露成本,组织向利益相关者、客户和员工展示了他们对道德和高效运营的承诺。这种透明度可以提高组织的声誉并有助于建立信任。

在考虑构建和购买 LLM 时,所有这些都适用。购买可能似乎立即较为廉价,因为目前市场上使用最多的服务每月只需 20 美元。但与在 AWS 上运行的 EC2 实例相比,仅仅运行同样的模型进行推理(甚至不是训练)每年可能会花费约 25 万美元。然而,这正是构建方面最快的创新所在。如果你只需要一个 LLM 来证明概念,文中竞争优势部分提到的任何项目都可以让你以运行演示计算机所需的电费为代价创建演示,并且中文文本处理后能很容易地解释出训练相关的内容,从而能够大大降低自己数据训练模型的成本,最低为 100 美元(是的,这个数字是真实的),可以训练包含 200 亿个参数的模型。另一个好处是,如果你自己构建,你的成本将永远不会增加,而支付服务的话,成本却很可能会大幅上涨。

安全性和隐私

考虑下面的情况。你是负责军事核弹头维护的军事人员。所有的文档都放在一本庞大的手册里。为了概述所有的安全要求和维护协议,学员们会因为遗忘重要信息而经常先剪掉保险丝再剪断导线。你决定调整一个 LLM 模型成为个人助手,给出指示,帮助压缩所有这些信息,为士兵在需要时提供精确所需的信息。将这些手册上传到另外一家公司显然不是个好主意——这是本世纪的轻描淡写——你需要在本地训练一些保持安全和隐私的东西。

这种情况听起来可能很牵强,但当与一家警察局的分析专家交谈时,他们同样表达了这个问题。和他们交谈时,他们表达了 ChatGPT 有多酷,甚至让他们整个团队参加了一门提示工程课程,以更好地利用它,但他们抱怨说,没有办法让他们的团队在不暴露敏感数据和对话的情况下使用该模型进行最有价值的工作-那种可以拯救生命的工作。任何处于类似境地的人都应该热切学习如何安全、可靠地部署模型。

不用在军队或警察部门工作,也能处理敏感数据。每家公司都有重要的知识产权和商业机密,最好保守秘密。我们在半导体、医疗保健和金融行业工作过,可以亲身告诉你,偏执和企业间谍是这些行业文化的一部分。因此,三星和其他行业参与者最初锁定了 ChatGPT,防止员工使用它,后来才开放了它。当然,不久之后,几名三星员工泄露了机密源代码[4]。由于 OpenAI 使用了 RLHF,这些代码被保留并用于以后进一步训练模型。这意味着只要有正确的提示注入,任何人都有可能从模型中提取代码。

不仅代码容易丢失。商业计划、会议记录、机密电子邮件甚至潜在专利想法都有风险。我们很不幸地知道一些公司已经开始向 ChatGPT 发送机密数据,使用该模型清理和提取 PII。如果您认为这可能是潜在的疏忽滥用,你是对的。这种方法直接暴露客户数据,不仅仅是给 Microsoft/OpnAI,而是给他们使用的任何第三方服务(包括 AWS Mechanical Turk、Fiverr 和自由职业者)执行 RLHF 中的人类反馈部分。

总结

如你所见,有很多原因使得公司想要拥有和构建自己的 LLMs,包括更大的控制力、降低成本以及满足安全和监管要求。尽管如此,我们了解到购买很容易,建设却更加困难,因此对于许多项目来说,仅购买是有意义的,但在你这样做之前,在图 1.1 中,我们分享了一些你应该自问的问题的流程图。尽管这是更艰难的道路,但建设可能会更加有回报。

图 1.1 在做出构建与购买决策之前你应该问自己的问题。


我们认为这些关于建立与购买的对话永远没有充分讨论的一个最后一个观点是,“为什么不两者兼而有之?”购买能让你得到建立所不擅长的所有东西:上市时间短,成本相对较低,易用性。建立则能让你得到购买所苦于的所有东西:隐私、控制和灵活性。研究和原型阶段可能非常受益于购买 GPT4 或 Databricks 的订阅,以快速构建一些东西来帮助筹集资金或获得利益相关者的支持。然而,生产往往不是一个适合第三方解决方案的环境。

最终,无论你打算建立还是购买,我们都为你写了这本书。显然,如果你打算建立它,你需要了解更多的东西,所以这本书的大部分内容将面向这些人群。事实上,我们不需要再多谈这个观点了,我们会在这本书中教你如何建立,但这并不妨碍你为你的公司做正确的事情。

1.2.3 警告一词:现在就拥抱未来

新技术就像火一样,它们可以在寒冷的夜晚为我们提供温暖,帮助我们烹饪食物,但它们也可能烧毁我们的家园,伤害我们。在商业上,有很多公司因为没有适应新技术而失败的故事。我们可以从他们的失败中学到很多。

Borders Books 在 1971 年首次开业。在开发了包括先进分析能力在内的全面库存管理系统后,它飙升成为全球第二大图书零售商,仅次于 Barnes & Noble。利用这项新技术,它颠覆了行业,使其能够轻松跟踪数万本书籍,开设大型商店,顾客可以在那里浏览比小型商店更多的书籍。分析能力帮助它跟踪哪些书籍正在流行,并更好地了解他们的顾客,从而做出更好的业务决策。它在行业中占据主导地位超过两十年。

然而,Borders 没有从自己的历史中吸取教训,在 2011 年破产,未能适应并被技术(电子商务)打乱。2001 年,他们没有建立自己的平台和在线商店,而是决定将在线销售外包给亚马逊。[5] 这个决定被许多评论家认为类似于把竞争对手的关键交给了他们的业务。虽然并不是直接交出他们的秘密配方,但这个决定放弃了他们的竞争优势。

在接下来的七年里,他们对不断增长的在线部门视而不见,而是专注于扩大他们的实体店铺存在,收购竞争对手并获得令人垂涎的星巴克交易。当亚马逊在 2007 年发布 Kindle 时,图书零售业的格局完全改变了。Barnes & Noble 运营他们自己的在线商店,迅速转变并发布 Nook 来竞争,然而,Borders 则无所作为,或者事实上,无能为力。

通过借助第三方来拥抱电子商务,他们未能发展内部所需的专业知识,无法制定出成功的在线销售策略,导致市场份额大幅下降。他们最终在 2010 年底推出了自己的电子阅读器 Kobo,但为时已晚。由于无法充分理解和有效实施电子商务技术,导致了巨额财务损失、门店关闭,最终于 2011 年破产。

Borders Books 是一个警示性的故事,但还有许多类似的公司因未能采用新技术而自食其果。对于如此具有影响力的新技术 LLMs,每家公司都必须决定他们希望站在哪一方。他们将执行和部署委托给大型的 FAANG 公司,只限于调用 API,还是他们愿意主导技术并自行部署?

我们希望从这个故事中传达的最重要的一点是技术是相互依赖的。电子商务是建立在互联网之上的。没能建立自己的在线商店意味着 Borders 在景观转变时未能建立起所需的内部技术专长,导致了失败。如今,我们也能看到同样的情况出现在 LLM 领域,因为最好准备利用 LLM 的公司已经积累了机器学习和数据科学方面的专业知识,并且对如何使用这些知识有一定的了解。

我们没有能预知未来的水晶球,但许多人相信 LLMs 是一项像互联网或电力一样具有革命性的新技术。了解如何使用这些模型,或者未能这样做,可能会成为许多公司的决定性时刻。不是因为这样做现在会让他们的公司起死回生,而是因为未来会有更有价值的建立在 LLMs 之上的东西。

进军部署 LLMs 的新世界可能具有挑战性,但它将帮助您的公司建立起保持领先地位所需的技术专长。没有人真正知道这项技术将引领我们走向何方,但了解这项技术很可能是避免类似 Borders Books 的错误所必需的。

有很多很好的原因可以通过购买成功,但至少有一个普遍的想法是完全错误的。这就是只有大公司才能在这个领域工作,因为训练这些模型需要数百万美元和数千个 GPU。通过创造这个金钱和资源无法逾越的围墙,小人物无法希望跨越。我们将在下一节中更详细地讨论这个问题,但任何规模的公司都可以开始,现在做的时机再好不过了。


1.4 总结

  • LLMs 之所以令人兴奋,是因为它们与人类一起工作,而不是反对他们
  • 社会是建立在语言之上的,因此有效的语言模型具有无限的应用,如聊天机器人、编程助手、视频游戏和人工智能助手。
  • LLMs 在许多任务上表现出色,甚至可以通过高级医学和法律考试
  • LLMs 是破坏性的,而不是锤子,应避免用于简单问题、需要低延迟的问题和高风险的问题。
  • 购买原因包括:
  • 快速启动并进行研究和原型用例
  • 轻松访问高度优化的生产模型
  • 访问供应商的技术支持和系统
  • 构建原因包括:
  • 为您的业务用例获得竞争优势
  • 保持低成本和透明度
  • 确保模型的可靠性
  • 保护您的数据安全
  • 在敏感或私密话题上控制模型输出
  • 没有技术壁垒阻止你与更大的公司竞争,因为开源框架和模型提供了打造自己道路的基石。

[1] Med-PaLM 2 在 MedQA 考试中取得了 86.5%的分数。

[2] WIRED,“It began as an AI-fueled dungeon game. Then it got much darker,”Ars Technica,2021 年 5 月 8 日。arstechnica.com/gaming/2021/05/it-began-as-an-ai-fueled-dungeon-game-then-it-got-much-darker/

[3] 对于那些想知道的人来说,这是 MAS*H 的参考:youtu.be/UcaWQZlPXgQ

[4] 이코노미스트,“[단독] 우려가 현실로…삼성전자, 챗GPT 빗장 풀자마자 ‘오남용’ 속출,” 이코노미스트,2023 年 3 月 30 日。economist.co.kr/article/view/ecn202303300057?s=31

[5] A. Lowrey,“Borders bankruptcy: Done in by its own stupidity, not the Internet.,”Slate Magazine,2011 年 7 月 20 日。slate.com/business/2011/07/borders-bankruptcy-done-in-by-its-own-stupidity-not-the-internet.html

[6] J. Best,“IBM 沃森:制霸“危险边缘”的全过程以及接下来要做的事情”,TechRepublic,2013 年 9 月 9 日。www.techrepublic.com/article/ibm-watson-the-inside-story-of-how-the-jeopardy-winning-supercomputer-was-born-and-what-it-wants-to-do-next/

[7] “与 OpenAI CEO Sam Altman 的谈话|由 Elevate 主办”,2023 年 5 月 18 日。youtu.be/uRIWgbvouEw

第二章:大型语言模型:深入探究语言建模

本章内容包括:

  • 理解含义和解释的语言学背景
  • 语言建模技术的比较研究
  • 注意力和 Transformer 架构
  • 大型语言模型如何融入和建立在这些历史之上

所有好故事都以“从前有一位”为开头,但不幸的是,本书不是故事,而是关于创建和生产化 LLMs 的书籍。因此,本章将深入探讨与大型语言模型(LLMs)的开发相关的语言学知识,探索形式语言学的基础、语言特征和塑造自然语言处理(NLP)领域的语言建模技术的演变。我们将从研究语言学的基础和其与 LLMs 的关联性开始,重点介绍句法、语义和语用等关键概念,这些概念构成了自然语言的基础,并在 LLMs 的运行中起着至关重要的作用。我们将深入探讨符号学,即符号和符号的研究,并探讨其原则如何影响 LLMs 的设计和解释。

接下来我们将在 2.2 节中追溯语言建模技术的演变,概述了早期方法,包括 N-Gram、朴素贝叶斯分类器以及基于神经网络的方法,如多层感知机(MLP)、循环神经网络(RNN)和长短期记忆(LSTM)网络。然后在 2.3 节中讨论了基于 Transformer 模型的革命性转变,这为大型语言模型(LLMs)的出现奠定了基础,而 LLMs 只是非常大型的基于 Transformer 模型。最后,在 2.4 节中介绍了 LLMs 及其独特的特点,讨论了它们如何在建立在并超过早期的语言建模技术基础上,从而彻底改变了自然语言处理(NLP)领域。

这是一本关于 LLMs 在生产中的书籍。我们坚决认为,如果你想将 LLMs 变成实际产品,更好地理解这项技术将提高你的成果,避免犯下代价高昂且耗时的错误。任何工程师都可以弄清楚如何将大型模型引入生产环境并投入大量资源使其运行,但这种愚蠢的策略完全忽略了人们在之前尝试做同样事情时已经学到的教训,而这正是我们首先要解决的问题。掌握这些基础知识将更好地为您准备处理 LLMs 时可能遇到的棘手部分、陷阱和边界情况。通过了解 LLMs 出现的背景,我们可以欣赏它们对 NLP 的变革性影响,以及如何使其能够创建各种应用程序。

2.1 语言建模

在深入讨论 LLM 之前,如果不首先讨论语言,那么就对 LLM 做了一个极大的伤害,首先我们将从简短但全面的语言模型概述开始,重点是可以帮助我们理解现代 LLM 的教训。让我们首先讨论抽象层级,因为这将帮助我们欣赏语言建模。

语言作为一个概念,是我们头脑中产生的感觉和思维的抽象。同样,数学是语言的一种抽象,着重于逻辑和可证明性,但正如任何数学家所说的那样,它是一种用于有组织和“逻辑”方式描述和定义的语言的子集。二进制语言就源于数学,它是一种由组成的二进制数字表示系统。

二进制是数学的非常有用的抽象,它又是语言的抽象,而语言又是我们感觉的抽象,因为它是软件、模型和计算机中使用的底层工具。当计算机首次制造出来时,我们通过打孔卡片或直接使用二进制与它们交流。不幸的是,人类用这种方式沟通重要事物需要太长时间,因此二进制也被抽象为汇编语言,这是一种更符合人类理解的与计算机交流的语言。这又进一步抽象为高级汇编语言 C,甚至进一步抽象为面向对象的编程语言如 Python。我们刚才讨论的流程如图 2.1 所示。

图 2.1 比较了认知抽象层级与编程抽象层级,直到逻辑二进制抽象。Python 并不来自 C,也不编译为 C。然而,Python 是另一种与二进制相距一定抽象层级的语言。类似地,语言也经过类似的路径。每一层的抽象都会造成潜在的错误点。创建模型也有多层次的抽象,每一层都很重要。


显然,这是一种简化,但了解一下,你在头脑中所感受到的情感与计算机实际读取的二进制相隔着相同数量的抽象层级,就像大多数人用来编程的语言一样。有些人可能会认为 Python 和二进制之间存在更多的步骤,例如编译器或使用汇编语言支持 C 语言,这是正确的,但在语言方面也有更多的步骤,例如形态学、语法、逻辑和一致性。

这可以帮助我们理解让人工智能语言模型(LLM)理解我们想要表达的内容的过程有多困难,甚至可以帮助我们更好地理解语言建模技术。我们在这里专注于二进制的原因仅仅是为了说明从你有的想法或我们的代码示例之一到一个工作模型的抽象层次是相似的数量。就像儿童的电话游戏,参与者互相耳语一样,每一个抽象层次都会产生一个断开点或障碍,错误可能在这些地方发生。

图 2.1 也旨在说明不仅创建可靠的代码和语言输入的困难,而且要引起注意的是中间的抽象步骤(如标记化和嵌入)对于模型本身是多么重要。即使你有完全可靠的代码和完美表达的想法,含义在到达 LLM 之前可能会在这些过程中被错误地处理。

在本章中,我们将尝试帮助您理解如何减少这些失败点的风险,无论是在语言、编码还是建模方面。不幸的是,在为当前任务不立即重要的语言学知识和为您提供太多的技术知识之间取得平衡有点棘手,尽管它们很有用,但并不能帮助您培养对语言建模作为一种实践的直觉。在此基础上,您应该知道语言学可以追溯到我们历史上数千年前,并且有很多可以从中学到的东西。我们在附录 A 中提供了一个简要的概述,供有兴趣的读者了解语言建模是如何随着时间的推移发展的,并鼓励您查阅。

让我们从我们专注于构成语言本身的基本组成部分开始。我们期望我们的读者至少在尝试过语言建模之前,并可能听说过像 PyTorch 和 Tensorflow 这样的库,但我们不指望大多数读者之前曾考虑过语言方面的问题。通过理解构成语言的基本特征,我们可以更好地欣赏创建有效语言模型所涉及的复杂性,以及这些特征如何相互作用形成我们所有人之间相互连接的复杂的交流网络。在接下来的章节中,我们将研究语言的各个组成部分,如语音学、语用学、形态学、语法和语义,以及它们在塑造我们对世界各地语言的理解和使用方面所起的作用。让我们花一点时间来探索我们目前如何理解语言以及我们面临的 LLM 意图解决的挑战。

2.1.1 语言特征

我们目前对语言的理解是,语言由至少 5 个部分组成:语音学、句法学、语义学、语用学和形态学。这些部分中的每一个都对任何对话中听者所接受的整体体验和意义做出了重大贡献。并非所有的交流都使用所有这些形式,例如,你正在阅读的书籍中没有语音学,这就是为什么很多人认为短信不适合进行更严肃或更复杂的对话的原因之一。让我们仔细分析一下这些内容,以确定如何向语言模型呈现它们,以实现全面的沟通能力。

语音学

对于语言模型来说,语音学可能是最容易吸收的,它涉及到语言的实际发音。这就是口音的表现形式,涉及到语音的产生和感知,而音韵学则侧重于声音在特定语言系统内的组织方式。类似于计算机视觉,虽然作为一个整体来处理声音并不一定容易,但如何解析、向量化或标记实际的声波并不模糊。它们在每个部分都附有一个数字值,包括波峰、波谷以及每个频率周期内的斜率。相比文本,它更容易被计算机标记和处理,但同样复杂。声音本质上包含的编码意义比文本更多,例如,想象一下有人对你说“是的,对啊”。可能是讽刺的,也可能是祝贺的,这取决于语调,而英语甚至不是语调语言!不幸的是,语音学通常没有与之相关的千兆字节数据集,并且在语音数据的数据采集和清理方面,尤其是在需要训练 LLM 的规模上,这是非常困难的。在一个声音数据比文本数据更普遍且占用更小内存空间的替代世界中,基于语音或具有语音感知能力的 LLM 将会更加复杂,创造这样一个世界是一个可靠的目标。

为了应对这个问题,创建于 1888 年的国际音标(IPA)在 20 世纪和 21 世纪都进行了修订,使其更加简洁、一致和清晰,这可能是将语音认知融入文本数据的一种方式。 IPA 作为每种语言的音韵特征的国际标准化版本。音韵特征是语言使用的一套音素,例如在英语中,我们绝不会把音素/ʃ/(she, shirt, sh)与/v/音放在一起。 IPA 用来书写音素,而不是像大多数语言那样书写字母或表意文字。例如,你可以用这些符号简单地描述如何发音单词“cat”:/k/、/æ/和/t/。当然这是一个非常简化的版本,但对于模型来说,不必太复杂。你还可以描述语调和送气。这可能是文本和语音之间的一种折中,捕捉到一些音韵信息。想想短语“what’s up?” 你的发音和语调可以极大地改变你理解这个短语的方式,有时听起来像友好的“wazuuuuup”,有时像一种几乎威胁的“‘sup”,而这些都会被 IPA 完全捕捉到。然而,IPA 并不是一个完美的解决方案,例如,它并不能很好地解决模拟语调的问题。

音韵学被列为首位,因为在所有特点中,LLMs 对其应用最少,因此在改进空间方面有最大的可能性。即使是现代的 TTS 和语音合成模型大部分时间最终会将声音转换为频谱图,并分析该图像,而不是将任何类型的音韵语言建模纳入其中。这是未来几个月甚至几年研究的一个方向。

语法

这是当前 LLM 性能最好的领域,既能从用户那里解析语法,又能生成自己的语法。语法通常是我们所说的语法和词序,研究单词如何组合形成短语、从句和句子。语法也是语言学习程序开始帮助人们习得新语言的第一个地方,特别是根据你的母语出发。例如,对于一个以英语为母语的人学习土耳其语来说,知道语法完全不同很重要,你可以经常构建完全由一个长复合词组成的土耳其语句子,而在英语中,我们从来不把主语和动词合为一个词。

语法与语言意义大体上是分开的,正如语法之父诺姆·乔姆斯基(Noam Chomsky)所说的那句名言:“无色的绿色思想在狂暴地睡眠。” 这句话的一切都在语法上是正确的,并且在语义上是可以理解的。问题不在于它毫无意义,而在于它确实有意义,而且这些词的编码意义相互冲突。然而,这只是一种简化,你可以把所有时候大型语言模型给出荒谬答案看作是这种现象的表现。不幸的是,语法也是歧义最常见的地方。考虑一下这个句子,“我看见一个老人和一个女人。”现在回答这个问题:这个女人也老吗?这是语法歧义,我们不确定修饰语“老”的范围是适用于后续短语中的所有人还是仅仅适用于紧接着的那个人。这比语义和语用歧义出现在语法中更不重要。现在考虑这个句子,“我在一个山上看见一个人,他手里拿着望远镜”,然后回答这个问题:说话者在哪里,正在做什么?说话者在山上用望远镜将一个人割开吗?可能你在读这个句子时甚至没有考虑到这个选项,因为当我们解释语法时,我们所有的解释至少在语义和语用上都是得到了启发的。我们从生活经验中知道,那种解释根本不可能发生,所以我们立即将其排除,通常甚至没有时间去处理我们将其从可能含义的范围中消除的事实。当我们与大型语言模型进行项目时,请稍后考虑这一点。

对于为什么大型语言模型需要具备语法意识以实现高性能,不应该需要任何逻辑推理。那些不能正确排序单词或生成无意义内容的大型语言模型通常不被描述为“优秀”。大型语言模型对语法的依赖性是导致乔姆斯基甚至称大型语言模型为“随机鹦鹉”的原因之一。在作者看来,2018 年的 GPT2 是语言建模将语法解决为完全独立于意义的演示,我们很高兴看到最近的尝试将 GPT2 如此出色的语法与编码和暗示的意义结合起来,我们将在接下来详细讨论。

语义

语义是话语中词语的字面编码含义。人们会自动优化语义含义,只使用他们认为在当前语言时期有意义的词语。如果你曾经创建或使用过语言模型的嵌入(如 word2vec、ELMO、BERT【E 代表嵌入】、MUSE 等),你就使用了语义近似。词语经常经历语义转变,虽然我们不会涵盖这个话题的全部内容,也不会深入讨论,但下面是一些你可能已经熟悉的常见情况:狭义化,从更广泛的含义变为更具体的含义;扩义,与狭义化相反,从具体含义变为广泛含义;重新解释,经历整体或部分转变。这些转变并没有某种伟大的逻辑基础。它们甚至不必与现实相关,说某种语言的人几乎从来不会在这些变化发生时有意识地考虑。但这并不妨碍变化的发生,在语言建模的背景下,这也不会阻止我们跟上这种变化的步伐。

一些例子:狭义化包括“deer”,在古英语和中古英语中它只是指任何野生动物,甚至包括熊或美洲狮,而现在只指一种森林动物。扩义的例子是“dog”,它曾经只指英国的一种犬类,现在可以用来指任何驯化的犬类动物。关于“dog”扩义的有趣细节是在 FromSoft 的游戏《Elden Ring》中,由于玩家之间的信息传递系统有限,他们会用“dog”来指代从海龟到巨型蜘蛛甚至所有中间形态的任何东西。关于重新解释,我们可以考虑“pretty”,它曾经意味着聪明或制作精良,而不是视觉上吸引人。另一个很好的例子是“bikini”,它从指代一个特定的环礁,变成指代你在访问那个环礁时可能穿的衣服,最后人们把“bi-”解释为衣服的两部分结构,于是发明了泳装和连体泳衣。根据专家的研究和几十年的研究,我们可以把语言看作是由母语人士不断比较和重新评估的,其中会出现共同的模式。这些模式的传播在社会语言学中得到了密切研究,这在当前目的上大多不在讨论范围之内,但我们鼓励读者如果感兴趣可以研究一下,因为社会语言学现象如声望可以帮助设计对每个人都有效的系统。

在 LLM 的语境中,所谓的语义嵌入是文本的向量化版本,试图模拟语义含义。目前最流行的做法是通过对话中的每个子词(例如前缀、后缀和词素)进行标记或分配字典中的任意数字,应用连续语言模型来增加向量中每个令牌的维度,以便有一个更大的向量表示每个令牌的每个索引,然后对每个向量应用位置编码来捕获词序。每个子词最终都会根据其用法与较大词典中的其他词进行比较。考虑词嵌入时需要考虑的一点是,它们很难捕捉到这些令牌的深层编码含义,而仅仅增加嵌入的维度并没有显示出明显的改善。证明嵌入正在以类似于人类的方式工作的一个证据是,你可以将一个距离函数应用于相关的单词,看到它们比不相关的单词更接近。这是另一个可以期待在未来几年和几个月内进行开创性研究的领域,以更完整地捕捉和表示含义。

实用语用学

有时会被语言学省略,因为其指称对象是影响听者解释和说话者决定以某种方式表达事物的所有非语言语境。语用学在很大程度上指的是文化、地区、社会经济阶层和共同的生活经验中遵循的教条,通过使用蕴涵在对话中采取捷径。

如果我说,“一个知名的名人刚刚被送进了 ICU”,根据生活经验,你可能会推断一位备受喜爱的人受了严重的伤,现在正在一家设备齐全的医院接受治疗。你可能会想知道是哪位名人,他们是否需要支付医疗费用,或者伤害是否是自己造成的,这些也是基于你的生活经验。这些都不能直接从文本及其编码的意义中推断出来。你需要知道 ICU 代表一系列更广泛的词语,以及这些词语是什么。你需要知道医院是什么,以及为什么有人需要被送到那里而不是自己去。如果这些都感觉很明显,那很好。你生活在一个社会中,你对社会的语用知识与提供的例子之间有很好的重叠。如果我分享一个来自人口较少的社会的例子,“Janka 昨天晚上挨了打,明天轮到 Peter 了”,你可能会感到困惑。如果你确实感到困惑,意识到这可能就是 LLM 看待很多文本数据的方式(人格化得到认可)。对于那些想知道的人,这个句子来自斯洛伐克的复活节传统。这里有很多意义,如果你不习惯这个文化中这些特定传统,那么这些意义将被忽略和不解释。我个人有幸尝试向外国同事解释复活节兔子及其对蛋的痴迷,并享受着看起来像个疯子的满足感。

在 LLM 的语境中,我们可以有效地将所有与文本无关的内容归为语用学范畴。这意味着 LLM 在开始时没有任何关于外部世界的知识,并且在训练过程中也不会获取。它们只会获取人类对特定语用刺激的反应知识。LLM 并不理解社会阶级、种族、性别、总统候选人或者其他可能基于个人生活经验引发某种情绪的事物。语用学不是我们期望直接整合到模型中的内容,但我们已经通过数据工程和策划、提示以及指导下的监督微调看到了间接整合的好处。

一旦你获得了要训练的数据,无论你是否打算,语用结构都会被添加进去。你可以将这种类型的语用结构视为偏见,它并非本质上的好或者坏,但无法摆脱。后面你可以通过规范化和策划来选择你希望你的数据保留的偏见类型,增加特定的代表不足的点,减少代表过多或噪音干扰的例子。

数据工程和语用语境之间存在着微妙的界限,这只是理解你的数据中存在的蕴涵。蕴涵是你的数据中的语用标记,而不是你的数据集中包含的字面文本。例如,假设你有一个模型试图接受像“写一篇关于青蛙吃湿袜子的演讲,不要押韵,每行的首字母拼成两栖动物”这样的输入,并实际按照这个指令来操作。你可以立即知道这个输入要求很多。作为数据工程师,你的平衡点就是确保输入要求在你的数据中被明确考虑到。你需要有演讲的例子,青蛙和袜子以及它们的行为的例子,还有藏头诗的例子。如果没有这些,模型可能仅仅能够从数据集中存在的蕴涵中理解,但是结果可能不确定。如果你更上一层楼并且记录数据集中的蕴涵信息和显性信息以及任务,还有数据分布,你就会有例子来回答“碎垃圾导致了什么样的结果?”

LLMs 很难理解语用语言学,甚至比人类更难,但它们能够捕捉到大多数人的平均标准差。它们甚至可以复制来自标准差之外的人的回答,但是在没有准确的刺激下很难保持一致。这就是培训期间和培训后的关键。基于指令的数据集试图通过在培训过程中问问题来制造这些刺激,从而得到代表性的回答。在培训中不可能考虑到每种可能的情况,而且你试图考虑到所有情况可能会无意中造成用户新类型的回答。在培训之后,你可以通过提示从模型中获取特定的信息,这取决于你的数据最初包含的内容而有一定的限度。

词形变化。

词形变化是研究词结构以及词是如何由更小的单元(称为词素)组成的。词素是最小的具有意义的单位,例如“重新”在“重新做”或“重新学习”中。但是,并非所有单词的部分都是词素,比如“饲料”中的“ra-”或“国家”中的“na-”。

理解单词构造的方式有助于创建更好的语言模型和解析算法,这对于诸如标记化之类的任务至关重要。标记介于单词和形态素之间,在统计上它们是最可能表示意义单位的候选词,但不一定对应现有的形态素。语言模型的有效性可能取决于它有多么好地理解和处理这些标记。例如,在标记化中,模型需要存储一组字典,以便在单词和它们对应的索引之间进行转换。其中一个标记通常是""标记,它代表着模型不认识的任何单词。如果这个标记使用得太频繁,它可能会妨碍模型的性能,要么是因为模型的词汇量太小,要么是因为标记器没有为任务使用正确的算法。

想象一个场景,你想构建一个代码补全模型,但是你使用的标记器只识别由空格分隔的单词,就像 nltk 的"punkt"标记器一样。当它遇到字符串"def add_two_numbers_together(x, y):,“时,它会将”[def, , y]"传递给模型。这导致模型丢失了宝贵的信息,不仅因为它无法识别标点符号,还因为函数的重要部分由于标记器的形态学算法而被替换为未知标记。要提高模型的性能,需要更好地理解单词结构和适当的解析算法。

2.1.2 符号学

探讨了语言的基本特征并在大型语言模型的语境中考察它们的重要性之后,重要的是考虑人类交流中意义构建和解释的更广阔视角。符号学,即标志和符号的研究,为我们提供了一个宝贵的视角,通过这个视角我们可以更好地理解人们如何解释和处理语言。在接下来的部分中,我们将深入探讨符号学的领域,考察符号、指示符和抽象之间的关系,以及 LLMs 如何利用这些元素生成有意义的输出。这次讨论将更深入地理解 LLMs 模拟人类语言理解的复杂过程,同时也揭示了它们在这一努力中面临的挑战和局限性。值得注意的是,作者并不认为模仿人类行为对 LLM 的改进必然是正确答案,只是模仿是该领域迄今为止评估自己的方式。

在我们介绍符号学时,让我们考虑图 2.2 是一个改编的皮尔斯符号三角形。这些被用来将基本思想组织成第一性、第二性和第三性的序列,其中第一性位于左上角,第二性位于底部,而第三性位于右上角。如果你以前见过符号三角形,你可能会对角数和方向感到惊讶。为了解释,我们把它们倒过来,以便稍微容易阅读,并且因为该系统是递归的,我们展示了系统如何同时模拟整个过程以及每个单独部分。虽然这些想法的整个概念非常酷,但深入探讨哲学并不在本书的范围之内。相反,我们可以将焦点放在这些词(first、second、third)的基本部分上,显示事物处理的顺序。

图 2.2 这是一个递归的皮尔斯符号三角形。它是一个组织从任何事物中提取意义的过程的系统,在我们的案例中是从语言中提取的。三角形上的每个点都说明了在被用来描述的系统中合成意义所需的最小部分之一,所以在这里,每个这些点都是语言中的最小单位。Firstness、Secondness 和 Thirdness 不是三角形上的点,更像是符号学家能够在这个图表中定位自己的标记。


我们也可以看看每个三角形的每个交叉点,以了解为什么事物以它们的顺序呈现。感觉可以与图像和编码联系在一起,远在它们能够与单词和表联系在一起之前。仪式和常见脚本为被解释的动作提供了一个空间,这只是第二天性,不需要考虑,类似于大多数短语只是由单词组成,而母语使用者无需对每个单词进行元认知。所有这些最终都导向一种解释或文档(一系列话语),在我们的案例中,那种解释应该由 LLM 达成。这就是为什么,例如,提示工程可以提高模型的效力。基础 LLM 在数百万个仪式脚本示例上进行了训练,当您明确告诉模型提示需要遵循哪个脚本时,它能够更好地复制这种类型的脚本。尝试要求模型给出一个逐步解释,也许在你的生成之前加上“让我们逐步思考”,你会看到模型会基于它之前看到的脚本逐步生成脚本。

对于那些感兴趣的人来说,有特定的方法来阅读这些图表,以及整个符号学领域需要考虑的内容,然而,并不能保证通过理解整个过程就能创建最好的 LLM。与其深入研究这个问题,我们将考虑能帮助您为所有人构建最佳模型、用户体验和用户界面的最低要求。例如,创建意义的过程的一个方面是递归性。当有人对你说一些对你来说毫无意义的话时,你会怎么做?通常,人们会问一个或多个澄清问题,以弄清意思,这个过程一遍又一遍地开始,直到意思被传达。目前市场上最先进的模型并没有做到这一点,但通过非常有目的的提示可以做到这一点,但许多人甚至不知道要这样做,除非有人指出。换句话说,这是对符号学的简要介绍。你不需要能够在本节结束时向符号学领域的专家提供深入和准确的坐标特定解释。我真正想强调的是,这是一个组织系统,展示了你实际上需要创建另一个人能够解释的意义的完整图景的最少数量的事物。在训练过程中,我们没有向我们的模型提供相同数量和相同类型的信息,但如果我们这样做了,模型的行为将会显著改善。

这些图表旨在代表一个最小的组织模型,其中每个部分都是必不可少的。让我们考虑一下图 2.3,它展示了使用符号三角形的示例。考虑一下图像、图片和记忆,并想象一下如果没有眼睛来处理图像,没有文字来抽象知识,那么试图吸收这本书中的知识会是什么样子。看看项目符号等,如果没有章节,字母之间的空白和项目符号来显示你处理信息的顺序和结构,你怎么能读这本书?看看语义学和文字编码的意义,想象一下如果没有图表和没有字典定义的词,这本书会是什么样子。看看中间的电子表格,那可能是一本没有任何表格或比较信息组织者的书,包括这些图表。如果没有一个习惯和教条的文化或社会来作为我们解释的镜头,那么试图读这本书会是什么样子?所有这些观点构成了我们解释信息的能力,以及我们最终通过的镜头来识别模式。

图 2.3 从左上角开始,按照箭头的方向看,我们使用的一般顺序来构建我们的解释和从我们所接触的事物中提取意义。在这里,我们用一些每个点的例子替换了描述性词语。试想一下在没有任何单词、没有例子、没有箭头,甚至没有知道这本书中的图是用来干什么的实际语境的情况下,你是如何解释这个图的。


因此,重要的问题是:您认为 LLM 能够访问多少这样的事物以返回有意义的解释?LLM 是否能够访问情感或社会习俗?目前,他们还不能,但在我们讨论传统和新型自然语言处理推理技术时,请考虑这一点,思考不同模型能够访问的内容。

2.1.3 多语言自然语言处理

在我们评估以前的自然语言处理技术和当前一代 LLM 之前,我们需要提及的最后一个挑战是语言学的基础以及 LLM 的存在原因。自从最早的文明接触以来,人们就希望了解或利用彼此。这些情况导致了对翻译员的需求,随着全球经济的增长和繁荣,这种需求只是呈指数级增长。

对于商业而言,这其实是相当简单的数学问题。您知道孟加拉语的母语使用者几乎和英语的母语使用者一样多吗?如果这是您第一次听说孟加拉语,这应该会让您认识到多语言模型市场的价值。世界上有数十亿人口,但只有大约十亿人的母语是英语。如果您的模型像大多数模型一样以英语为中心,那么您将错过世界上 95%的人口作为客户和用户。西班牙语和普通话在这方面都是很容易的选择,但更多的人甚至没有做到这一点。

有许多涉及政治的例子,涉及将事物称为相同或不同语言的范畴超出了本书的范围。这些通常是由于政府介入等外部因素引起的。牢记这两点——一个以英语为中心的单语系统并没有像许多企业所表现出的覆盖范围或利润潜力那样可靠,并且语言和方言之间的界限充其量是不可靠的,而在最坏的情况下是系统性有害的——这应该突显出危险的意见沼泽。许多企业和研究科学家在设计产品或系统时甚至都不假装想要触及这个沼泽。

不幸的是,目前还没有简单的解决方案。然而,考虑到这些因素可以帮助你作为一名科学家或工程师(希望也是一名道德人士),设计出至少不会加剧和负面影响已经存在问题的 LLMs。这个过程的第一步是从项目开始就确定一个方向性目标,要么朝着本地化(L10n)要么朝着国际化(I18n)。本地化是 Mozilla 的一种方法,他们通过众包 L10n,在 90 多种语言中提供了不同版本的浏览器,而且没有停止这项工作的迹象。国际化类似,但方向相反,例如,宜家试图在他们的指南册中尽量少使用文字,而是选择使用国际通用的符号和图片来帮助顾客进行 DIY 项目的导航。在项目开始阶段做出决定将大大减少扩展到任一解决方案所需的努力。足够大到将翻译和格式化的看法从成本转变为投资。在 LLMs 及其在公众意识中的迅速扩展的背景下,及早考虑这一点变得更加重要。推出一项改变世界的技术,却自动排除了大多数世界的人与其互动,这会贬值那些声音。不得不等待会危及他们的经济前景。

在继续之前,让我们花点时间反思一下我们到目前为止讨论的内容。我们触及了语言学中的重要观点,这些观点为我们说明了一些概念,比如理解语言的结构与其含义是分开的。我们展示了我们每个人以及作为一个社会所经历的旅程,向着具有元认知能力的方向发展,以便理解和表达语言,以一种计算机可以处理的连贯方式。随着我们加深对认知领域的知识,以及解决我们遇到的语言特征,我们的理解将不断提高。结合图 2.1,我们将展示我们所遵循的语言建模的计算路径,并探讨它如何解决了哪些语言特征或努力创造了意义。让我们开始评估各种用于算法表示语言的技术。

2.2 语言建模技术

通过深入研究语言的基本特征、符号学的原则以及大型语言模型解释和处理语言信息的方式,我们现在将转向更加实际的领域。在接下来的部分中,我们将探讨各种自然语言处理技术的发展和应用,这些技术已被用于创建这些强大的语言模型。通过检验每种方法的优势和弱点,我们将对这些技术在捕捉人类语言和交流精髓方面的有效性获得宝贵的见解。这样的知识不仅将帮助我们欣赏自然语言处理领域取得的进步,而且还将使我们更好地了解这些模型当前的局限性以及未来研究和发展所面临的挑战。

让我们花一点时间来回顾一些数据处理,这些处理将适用于所有语言建模。首先,我们需要决定如何分割要传入模型的单词和符号,有效地决定我们模型中的一个标记将是什么。然后,我们需要找到一种方法将这些标记转换为数字值,然后再转换回来。接下来,我们需要选择我们的模型将如何处理标记化输入。以下每种技术都将至少在其中一种方面基于先前的技术进行构建。

这些技术中的第一种被称为词袋(BoW)模型,它只是简单地计算文本中单词的出现次数。它可以很容易地通过一个扫描文本的字典来完成,为每个新单词创建一个新的词汇表条目作为关键字,并以 1 开始递增的值。考虑到它的简单性,即使完全基于频率的这种模型在试图洞悉演讲者意图或至少是他们的怪癖时也可能非常有用。例如,你可以在美国总统就职演讲中运行一个简单的 BoW 模型,搜索自由、经济和敌人这几个词,以便从提及每个单词的次数多少来相当不错地洞悉哪位总统是在和平时期上任的、在战时上任的以及在货币困难时期上任的。然而,BoW 模型也有很多弱点,因为这种模型不提供任何图像、语义、语用、短语或感情。它没有任何机制来评估上下文或语音学,并且因为它默认以空格划分单词(显然你可以按照自己的方式进行标记化,但尝试在子词上进行标记化并观察这个模型会发生什么事情—— 剧透,结果糟糕),它也不考虑形态。总的来说,它应该被认为是一种代表语言的弱模型,但也是评估其他模型的强基准。为了解决词袋模型不捕捉任何序列数据的问题,N-Gram 模型应运而生。

2.2.1 N-Gram 和基于语料库的技术

N-Gram 模型是对 BoW 的显着但高效的改进,其中您可以给模型一种上下文,由 N 表示。它们是相对简单的统计模型,允许您根据 N-1 上下文空间生成单词。查看列表 2.1,我正在使用三元组,这意味着 N=3。我清理文本并进行最小的填充/格式化,以帮助模型,然后我们使用 everygrams 进行训练,这意味着优先灵活性而不是效率,因此您也可以选择训练五元或七元(N=5,N=7)模型。在我生成的列表的末尾,我可以给模型多达 2 个标记,以帮助它进一步生成。N-Gram 模型并未被创建,甚至从未声称尝试完整地对语言知识进行建模,但它们在实际应用中非常有用。它们忽略了所有语言特征,包括句法,只尝试在 N 长度短语中的词之间建立概率连接。

查看图 2.2,N-Grams 实际上只使用静态信号(空白、正字法)和单词来尝试提取任何含义。它试图手动测量短语,假设所有短语的长度都相同。话虽如此,N-Grams 可用于创建文本分析的强大基线,如果分析员已经了解话语的实用语境,它们可以用来快速而准确地洞察现实场景。可以通过设置 N=1000000000 或更高来制作 N-Gram LLM,但这没有任何实际应用,因为 99.9% 的所有文本和 100% 的所有有意义的文本都包含少于十亿次出现的标记,并且计算能力可以更好地用在其他地方。

列表 2.1 生成式 N-Grams 语言模型实现
from nltk.corpus.reader import PlaintextCorpusReader
from nltk.util import everygrams
from nltk.lm.preprocessing import (
    pad_both_ends,
    flatten,
    padded_everygram_pipeline,
)
from nltk.lm import MLE
# Create a corpus from any number of plain .txt files
my_corpus = PlaintextCorpusReader("./", ".*\.txt")
for sent in my_corpus.sents(fileids="hamlet.txt"):
    print(sent)
# Pad each side of every line in the corpus with <s> and </s> to indicate the start and end of utterances
padded_trigrams = list(
    pad_both_ends(my_corpus.sents(fileids="hamlet.txt")[1104], n=2)
)
list(everygrams(padded_trigrams, max_len=3))
list(
    flatten(
        pad_both_ends(sent, n=2)
        for sent in my_corpus.sents(fileids="hamlet.txt")
    )
)
# Allow everygrams to create a training set and a vocab object from the data
train, vocab = padded_everygram_pipeline(
    3, my_corpus.sents(fileids="hamlet.txt")
)
# Instantiate and train the model we’ll use for N-Grams, a Maximum Likelihood Estimator (MLE)
# This model will take the everygrams vocabulary, including the <UNK> token used for out-of-vocabulary
lm = MLE(3)
len(lm.vocab)
lm.fit(train, vocab)
print(lm.vocab)
len(lm.vocab)
# And finally, language can be generated with this model and conditioned with n-1 tokens preceding
lm.generate(6, ["to", "be"])

上面的代码就是创建生成式 N-Gram 模型所需的全部内容。对于那些希望能进一步评估该模型的人,我们在下面的代码中添加了获取概率和对数分数、分析特定短语的熵和困惑度的代码。因为这一切都是基于频率的,即使在数学上具有重要意义,它仍然不能很好地描述现实世界语言的困惑程度或频率。

# Any set of tokens up to length=n can be counted easily to determine frequency
print(lm.counts)
lm.counts[["to"]]["be"]
# Any token can be given a probability of occurrence, and can be augmented with up to n-1 tokens to precede it
print(lm.score("be"))
print(lm.score("be", ["to"]))
print(lm.score("be", ["not", "to"]))
# This can be done as a log score as well to avoid very big and very small numbers
print(lm.logscore("be"))
print(lm.logscore("be", ["to"]))
print(lm.logscore("be", ["not", "to"]))
# Sets of tokens can be tested for entropy and perplexity as well
test = [("to", "be"), ("or", "not"), ("to", "be")]
print(lm.entropy(test))
print(lm.perplexity(test))

尽管此代码示例说明了创建三元语言模型,但遗憾的是,并非所有需要捕获的短语都只有 3 个标记。例如,来自《哈姆雷特》的“生存还是毁灭”,包含一个由 2 个词组成的短语和一个由 4 个词组成的短语。这种短语建模也无法捕获单个词可能具有的任何语义编码。为了解决这些问题,贝叶斯统计学被应用于语言建模。

生产中的大语言模型(MEAP)(一)(2)https://developer.aliyun.com/article/1517049



相关文章
|
24天前
|
存储 人工智能 测试技术
AI 驱动的开发者(MEAP)(二)(3)
AI 驱动的开发者(MEAP)(二)
26 0
|
24天前
|
消息中间件 人工智能 分布式计算
AI 驱动的开发者(MEAP)(二)(2)
AI 驱动的开发者(MEAP)(二)
25 0
|
23天前
|
机器学习/深度学习 存储 自然语言处理
生产中的大语言模型(MEAP)(一)(2)
生产中的大语言模型(MEAP)(一)
27 0
|
23天前
|
机器学习/深度学习 自然语言处理 数据可视化
生产中的大语言模型(MEAP)(一)(3)
生产中的大语言模型(MEAP)(一)
30 0
|
23天前
|
存储 机器学习/深度学习 监控
生产中的大语言模型(MEAP)(一)(5)
生产中的大语言模型(MEAP)(一)
22 0
|
23天前
|
机器学习/深度学习 人工智能 自然语言处理
生产中的大语言模型(MEAP)(一)(4)
生产中的大语言模型(MEAP)(一)
33 0
|
24天前
|
机器学习/深度学习 存储 人工智能
AI 辅助测试(MEAP)(一)(1)
AI 辅助测试(MEAP)(一)
31 0
|
24天前
|
存储 人工智能 自然语言处理
AI 辅助测试(MEAP)(一)(5)
AI 辅助测试(MEAP)(一)
26 0
|
24天前
|
存储 人工智能 自然语言处理
AI 辅助测试(MEAP)(一)(3)
AI 辅助测试(MEAP)(一)
14 1
|
24天前
|
人工智能 IDE Java
AI 辅助测试(MEAP)(一)(4)
AI 辅助测试(MEAP)(一)
14 0

热门文章

最新文章