用于社会变革的聊天机器人/大型语言模型理论
介绍性视频
- Google 的 LLM 是什么 - 一个关于 LLM 能够做什么的简单 5 分钟介绍。
- 苹果的 LLM 是什么 (WWDC) - 一个关于嵌入、标记和 LLM 的精彩介绍,前 6 分钟。然后转入主题,即多语言模型。
- 从头开始构建 LLM - 一个很好的视频介绍,配合博客,将从零到全面构建 LLM 的过程概念化(100 万美元后!)。
- 微软的 chatGPT 训练基础设施,以及类似的超高吞吐量应用程序。
- 使用 DeepSpeed 优化训练
- InfiniBand 用于实现惊人的网络吞吐量
- ONNX 用于在网络之间移动模型(还可以查看 CRIU 以了解检查点机制的工作原理)。
- 英伟达的 张量核心 代替 GPU 进行计算
讲座
- 神经网络简介 - 斯坦福 CS224N。一个关于神经网络的很好的数学概述。
- 扩展语言模型 - 斯坦福 CS224N 客座讲座。一个关于 LLM 能力提升的总体展望。
- 构建知识表示 - 斯坦福 CS224N 客座讲座。对于理解我们的向量检索方法非常有用,但从更广阔的视角来看。
- 点积具有快速最近邻搜索算法(亚线性)。
- 重新排序通常是必要的,因为点积不一定是那么具有表达能力。
- 并非所有向量集都易于索引,“病态”,为了提高性能,可以将它们“散开”,例如
- 社会智能 NLP 系统 - 很棒!深入探讨了社会如何影响语言,以及如何破坏我们的模型。
- LangChain 与助手 API - 一个关于两个用于更深入的聊天机器人计算的接口的很好概述。
- LLM 应用程序的新兴架构,从企业的角度来看,架构及其使用。涵盖了使用向量搜索的 RAG、助手以及 LLM 模型精炼的一般工作流程。
- 从头开始构建 GPT - 由 Andrej Karpathy 提供的关于 chatGPT 的绝佳介绍,了解其确切的工作原理(Torch)。
- GPT 中的标记化,由 Andrej Karpathy 提供的精彩介绍,他在这个领域还有很多其他优秀的讲座。
课程
教科书
- 黑客语言模型指南,作者:Jeremy Howard
- 程序员的实用深度学习
- 理解深度学习,以及这个很好的介绍性演讲
- Dahl, D. A. (2023). 使用 Python 进行自然语言理解: 将自然语言技术、深度学习和大型语言模型相结合,在计算机系统中创建类似人类的语言理解能力。Packt 出版社。
- Sinan Ozdemir. (2023). 大型语言模型快速入门指南: 使用 ChatGPT 和其他 LLM 的策略和最佳实践。Addison-Wesley 专业。
- Zhao, W. X. 等人。(2023)。大型语言模型综述 (arXiv:2303.18223)。arXiv。
- 这并不完全是一本教科书,但它有 122 页密集的参考材料,内容丰富,不应被视为一次性阅读的资源。
在信息检索的上下文中,重新排序是一个两步过程,用于增强搜索结果的相关性。以下是如何通常工作的
- 第一步检索:在初始阶段,使用快速高效的方法检索一组广泛的文档。这通常使用基于嵌入的检索完成,其中文档和查询在多维空间中表示为向量。这里的目标是撒开一张大网,快速检索大量候选文档集,并且计算成本相对较低。
- 第二阶段重排序:第一阶段检索到的文档将在第二阶段重新评估,以提高搜索结果的准确性。此阶段涉及计算量更大的算法,通常由语言模型(如大型语言模型)驱动,该算法更全面地考虑了搜索查询的上下文。此步骤会重新排序(重新排名)第一阶段的结果,将更相关的文档提升到更高位置,而将不太相关的文档降级。
重排序步骤是搜索结果相关性与所需计算资源之间的权衡。通过将其用作第二阶段,系统旨在平衡基于嵌入的检索的速度和效率以及基于大型语言模型的检索的深度和相关性。这种组合方法可以生成既相关又可以在可接受的时间范围内和成本内生成的结果集。
斯坦福自然语言处理小组一直在研究文本中的矛盾检测,并为此创建了矛盾数据集。他们对 PASCAL RTE 数据集进行了矛盾标注,针对推理进行了三元决策标记:"YES"(蕴含)、"NO"(矛盾)和 "UNKNOWN"(不蕴含,但不是矛盾)。此外,他们还创建了一个语料库,其中矛盾来自对 RTE2 测试数据的负标记,并收集了一组在“野外”出现的矛盾。
- Uray, Martin (2018). "探索矛盾检测的神经模型".
{{cite journal}}
: Cite journal requires|journal=
(帮助) - Tawfik, Noha S.; Spruit, Marco R. (2018). "生物医学文献中的自动矛盾检测". 在 Petra Perner (ed.) (ed.). 机器学习和数据挖掘在模式识别中的应用. Vol. 10934. Cham: Springer International Publishing. pp. 138–148. ISBN 978-3-319-96135-4 978-3-319-96136-1. 检索于 2023-11-16.
{{cite book}}
:|editor=
has generic name (帮助); Check|isbn=
value: length (帮助) - Hsu, Cheng; Li, Cheng-Te; Saez-Trumper, Diego; Hsu, Yi-Zhan (2021-11-16), WikiContradiction:检测维基百科中的自相矛盾文章, arXiv, 检索于 2023-11-16
- Li, Luyang; Qin, Bing; Liu, Ting (2017-05-24). "利用矛盾特定词嵌入进行矛盾检测". 算法. 10 (2): 59. doi:10.3390/a10020059. ISSN 1999-4893. 检索于 2023-11-16.
- Al Jallad, Khloud; Ghneim, Nada. "ArNLI:阿拉伯自然语言推理用于蕴含和矛盾检测".
{{cite journal}}
: Cite journal requires|journal=
(帮助)
让我们深入了解大型语言模型 (LLM) 的世界。它们是旨在理解、使用和生成人类语言的先进计算机程序。想象它们就像巨大的图书馆,里面装满了各种各样的书籍,涵盖了你能想到的每一个主题。就像一个知道如何在这些书中找到每条信息的图书管理员一样,LLM 可以在这浩瀚的知识中进行导航,为我们提供见解、答案,甚至生成新内容。
它们是如何实现这一点的呢?LLM 建立在复杂的算法和数学模型之上。它们从大量文本中学习——从小说和新闻文章到科学论文和社交媒体帖子。这个学习过程涉及识别语言中的模式:单词和句子是如何构建的,想法是如何连接的,以及不同的表达方式是如何传达相同含义的。
每个 LLM 都有数百万,有时甚至数十亿个参数——这些是模型的旋钮和拨盘。每个参数都在理解语言的微小方面发挥作用,比如句子的语气、单词的含义或段落的结构。当你与 LLM 交互时,它会使用这些参数来解码你的请求并生成准确且相关的响应。
LLM 最迷人的方面之一是它们的通用性。它们可以以不同的风格写作,从正式报告到随意对话。它们可以回答事实性问题,创作富有想象力的故事,甚至编写代码。这种适应性使它们在各个领域和应用中都非常有用。
LLM 是我们与机器交互方式的突破。它们带来了以前无法达到的理解和响应能力,使我们与计算机的交互更加自然和直观。随着它们的不断发展,它们不仅在改变我们使用技术的方式,而且还在扩展它所能实现的界限。
在本章中,我们将深入探讨大型语言模型 (LLM) 的世界。从基本定义和概念开始,我们将追踪它们的 historical development 以了解它们是如何演变成今天的先进模型的。我们将深入研究使 LLM 能够运作的关键组成部分,包括神经网络架构、它们的训练过程以及语言建模和预测的复杂性。最后,我们将研究 LLM 的基本应用,如自然语言理解和生成,涵盖对话代理、情感分析、内容创作和语言翻译等领域。本章旨在对 LLM 提供清晰全面的理解,展示其能力及其在各个领域产生的变革性影响。
神经网络的基础
为了真正理解大型语言模型 (LLM) 的概念,我们必须首先了解神经网络,它是其背后的核心技术。神经网络是受人脑启发的机器学习的一个子集。它们由多层节点(或“神经元”)组成,每个节点都能执行简单的计算。当这些神经元相互连接并分层时,它们可以处理复杂的数据。在 LLM 的语境中,这些网络分析和处理语言数据。LLM 中神经网络的结构
- 输入层:这是模型接收文本数据的层。每个单词或字符都用数字表示,通常是一个向量,它是一系列数字,捕捉了该单词的本质。
- 隐藏层:这是进行大部分处理的地方。在 LLM 中,隐藏层通常非常复杂,允许模型识别语言中的错综复杂的模式。模型具有的层越多(或“深度”越大),它对语言的理解就越细致入微。
- 输出层:此层生成最终的输出,它可以是对句子中下一个单词的预测、将文本分类为不同类别或其他语言任务。
训练大型语言模型
训练 LLM 包括向其提供大量文本数据。在这个过程中,模型会对文本做出预测(比如猜测句子中下一个单词)。然后,它会将自己的预测与实际文本进行比较,调整参数(神经元的权重和偏差)以提高准确性。这个过程会重复无数次,使模型能够从错误中学习并提高其语言理解能力。参数:LLM 的构建块
神经网络中的参数是在训练过程中模型调整的方面。在大型语言模型 (LLM) 中,这些参数非常多,通常数以亿计甚至更多。它们使模型能够捕捉和记忆语言的细微差别,从基本语法到复杂的文风元素。从数据到语言理解
通过训练,大型语言模型 (LLM) 发展出理解上下文、语法和语义的能力。这不仅仅是词语识别,而是理解语言如何在不同情况下构建和使用。它们可以检测出讽刺、幽默和情绪等微妙之处,即使对于人类来说也是一项挑战。用大型语言模型 (LLM) 生成语言
经过训练后,大型语言模型 (LLM) 可以生成文本。它们通过预测给定文本片段中的下一个词来实现这一点。这种能力不仅仅是简单地重复学习的数据,而是对模型内化的语言模式进行智能的综合。
通过理解这些基本概念,我们开始将大型语言模型 (LLM) 不仅仅视为工具或程序,而是视为模拟人类智能中最复杂方面的一些高级系统。本节为更深入地探索其历史发展、关键组成部分以及它们所支持的变革性应用奠定了基础。
大型语言模型 (LLM) 的旅程始于计算语言学早期基于规则的系统。这些早期的模型可以追溯到 20 世纪 50 年代和 60 年代,基于为语法和语法制定的手工规则集。20 世纪 80 年代后期和 90 年代统计模型的出现标志着一个重大转变。这些模型使用概率来预测词语序列,为现代语言建模奠定了基础。
2000 年代见证了从统计模型到基于机器学习方法的转变。这一时期在语言建模中引入了神经网络,但这些早期的网络相对简单,通常局限于特定任务,如词性标注或命名实体识别。重点主要放在改进语言处理的特定方面,而不是发展全面的语言理解。
2010 年代初深度学习和词嵌入的引入彻底改变了自然语言处理 (NLP)。像 Word2Vec 这样的模型提供了一种将词语表示为向量空间的方法,捕捉了词语之间的语义关系。这一时期还见证了更复杂的神经网络架构的发展,例如长短期记忆 (LSTM) 网络,它们更善于处理语言的顺序性。
2017 年引入 Transformer 模型是一个划时代的时刻。Transformer 模型最初在一篇名为“注意力就是你所需要的一切”的论文中提出,它放弃了循环层,转而使用注意力机制。这允许进行更多并行处理,并显着提高了语言模型的效率和有效性。大型语言模型 (LLM) 的兴起
在 Transformer 模型取得成功之后,语言模型的规模迅速扩大。值得注意的模型包括 OpenAI 的 GPT 系列、Google 的 BERT 以及其他模型,如 XLNet 和 T5。这些模型拥有庞大的参数数量(达到数十亿),展现出前所未有的语言理解和生成能力。它们经过了对各种广泛数据集的训练,使它们能够以高超的熟练程度执行各种语言任务。
最近的发展:不断增强的能力和规模
大型语言模型 (LLM) 发展的最新阶段的特点是模型规模和能力的进一步提高。像 GPT-3 及其后续模型这样的模型在参数数量和语言理解的深度方面突破了界限。这些模型在生成连贯且与上下文相关的文本、回答复杂问题、翻译语言甚至创建与人写的文本无法区分的内容方面表现出非凡的能力。
架构大型语言模型 (LLM),例如基于 Transformer 架构的模型,代表了自然语言处理领域的重大进步。Transformer 模型是在论文“注意力就是你所需要的一切”中提出的,已成为大多数现代大型语言模型 (LLM) 的核心。
- 基于 Transformer 的大型语言模型 (LLM) 的架构非常复杂,由多个层和组件组成,这些层和组件协同工作以处理和生成语言。这种架构的关键元素包括
- 输入嵌入层:该层将输入文本转换为数值向量。输入文本中的每个词语或标记都表示为高维空间中的一个向量。这个过程对于模型处理语言数据至关重要。
- 位置编码:除了词语嵌入之外,Transformer 模型还将位置编码添加到输入嵌入中,以捕捉句子中词语的顺序。这一点很重要,因为模型本身不像 RNN(循环神经网络)那样按顺序处理词语。
- 编码器和解码器层:Transformer 模型具有编码器-解码器结构。编码器处理输入文本,解码器生成输出文本。每个编码器和解码器都包含多个层。
- 编码器中的每一层都包含两个子层:一个多头自注意力机制和一个简单的逐位置全连接前馈网络。
- 解码器中的每一层也包含两个子层,但包含一个额外的第三个子层,用于对编码器输出进行注意力操作。
- 自注意力机制:该机制允许模型权衡输入句子中不同词语的重要性。它使模型能够捕捉到整个句子的上下文信息,这是 Transformer 模型的关键特征。
- 多头注意力:该组件将注意力机制拆分为多个头,允许模型同时关注不同表示子空间中不同位置的信息。
- 前馈神经网络:这些网络分别且相同地应用于每个位置。它们由带有激活函数的全连接层组成。
- 归一化和丢弃层:这些层用于 Transformer 架构的其他组件之间,以稳定和规范化训练过程。
输出层:最终的解码器输出被转换为一个预测的词语或标记,通常使用 softmax 层生成一个可能的输出概率分布。
Transformer 架构是高度可并行的,与 RNN 或 LSTM 等旧架构相比,使其能够更有效地训练大型数据集。这种效率是基于 Transformer 的模型可以扩展到拥有大量参数并处理大量语言数据的原因之一。
有关 Transformer 架构的更多详细信息,请参阅 维基百科 Transformer 页面.
神经网络架构思想图 论文,其中很好地阐述了思维链提示和树形思维提示。
Hadi 等人 (2023) 的 44 页调查报告 [1] 为此提供了一个可靠且最新的资源。