立委按:鉴于语言大模型GPT的重要性,特此根据AI大神Karpathy的nanoGPT讲座,编纂此科普系列,计五篇,其中此篇没有代码和数学公式,是最通俗的科普。其他四篇包括一篇英文,均附带可验证的Python代码,并给予不同角度的详细解说,面对有工程背景的对象。
ChatGPT这样的大语言模型在今天已展现出惊人的能力:它们能与人对话,辅助创作,甚至独立生成颇具文采的诗篇。这不禁引人深思:大模型是如何理解并运用复杂的人类语言的呢?本文将以大模型传教士Karpathy简化的迷你版nanoGPT模型为例,揭示其学习模仿大文豪莎士比亚风格的奥秘。
核心机制:预测下一个字词
大模型学习过程核心机制之一在于对一句话或一段文字里,接下来会出现哪个字或哪个词的预测。在文本领域,这意味着当nanoGPT接收到一句话的前半部分,例如“生存还是毁灭,这是一个…”,它需要根据已有的信息,推断出最有可能紧随其后的词语,比如“问题”。我们所讨论的这个莎翁风格,其核心训练目标,就是在莎士比亚所有作品的文字里,当读到某处时,能精准地猜出下一个字是什么。
第一步:数据的数字化——AI的“识字”过程
nanoGPT的第一个挑战在于,它难以直接理解人类的文字符号。计算机系统以数字为基础进行运算。因此,首要任务是将莎士比亚的文本转化为机器能够处理的数字形式。
- 训练语料的准备:在这个例子中,即莎士比亚的全部剧作。这些文本数据经过收集和整理,作为nanoGPT学习的材料。
- 构建字符“密码本”:接下来,nanoGPT会构建一本特殊的“字典”或“密码本”。在这本“密码本”里,莎士比亚作品中出现的每一个独立字符(字母、标点符号等)都被赋予一个独一无二的数字代号。例如,“T”可能对应38,“o”对应33,空格对应0等等。通过这种方式,一句“To be or not to be”在AI内部就表示为一串特定的数字序列。反之,AI也能用这本“密码本”,把数字代码“翻译”回我们能读懂的文字。
第二步:赋予数字上下文含义——“数字档案”的建立
仅仅将字符转化为孤立的、互不相关的数字代号是不够的。nanoGPT需要一种方式来捕捉这些代号背后的“意义/特性”以及它们在特定上下文中的“角色”。这就是“嵌入”(Embedding)技术发挥作用的地方。
- 字符嵌入:为了让nanoGPT理解这些数字代号的“含义”和它们之间的联系,科学家们发明了一种叫做“嵌入”(Embedding)的技术。可以把它想象成,给每个字(或词)都创建了一份独特的“数字档案”。这份档案不是一个简单的数字,而是一组特定长度的、精心计算出来的数字(专业上称为向量)。这组数字就像这个字的“多维度评分”,从不同方面描述了它的特性。比如,“国王”和“王后”的数字档案,在代表“皇室”的那个维度上评分可能都比较高,而“苹果”和“香蕉”则在代表“水果”的维度上评分高。这样,意思相近的字,它们的“数字档案”也会比较相似。
- 位置嵌入:语言中,字词的顺序也重要。“国王杀了王后”与“王后杀了国王”的含义天差地别。因此,nanoGPT不仅要知道每个字是什么,还要知道它在句子里的位置。所以,每个位置(比如第一个字、第二个字……)也会有自己的一份独特的“位置数字档案”。
最终,输入序列中一个字符的初始信息,就是它自身的“特征数字档案”和它所在“位置数字档案”的结合。这样,nanoGPT拿到的每个字的信息,既包含了字本身的含义,也包含了它在句子中的顺序信息。
第三步:信息处理的核心——Transformer“工厂”
这是nanoGPT模型进行复杂信息处理和上下文理解的核心部件。你可以把它想象成一个多层加工的“工厂”,每一层流水线都对输入信息进行更深一步的加工和理解。
nanoGPT内一层流水线通常包含以下关键环节:
- 掩码自注意力机制:这是Transformer结构的一大亮点。当nanoGPT读到一个字时,它会回顾前面所有读过的字,判断哪些字对理解当前这个字最重要,然后给予这些重要的字更多的“关注”。“掩码”则是因为在猜下一个字是什么的时候,nanoGPT不能“偷看”答案,它只能关注已经出现的字,保证预测的单向性。
- 前馈神经网络:这个模块会对信息进行进一步的加工和提炼,让AI的理解更透彻,能够学习到更复杂的文字模式。
- “快速通道”与“信息质检”(残差连接与层归一化):这些是帮助AI工厂高效运转的辅助设计。
- 为了防止信息在多层工厂的传递中失真或减弱,工厂里还有“快速通道”(专业上叫残差连接),允许一部分原始信息直接“跳”到后面的工序,保证重要信息不丢失,使得AI可以构建更深的工厂层级有效学习。
- 同时,每一道工序后,还有“质检员”(专业上叫层归一化)会把信息“整理”一下,让信息更“规整”,加速学习过程。
在nanoGPT中,通常会堆叠多个这样的加工层。每一层都在前一层的基础上进行更抽象的规律性提取,并把它们和上下文联系起来进行综合理解。
第四步:生成预测——输出结果
经过多层的深度处理后,nanoGPT对输入序列的每个字符都生成了一个包含了丰富上下文信息的数字总结。现在,需要将这个内部总结转化为对下一个字符的具体预测。
这通常通过以下步骤完成:
- 一个“最终决策转换器”(专业上叫线性层)会将这个数字总结转换成对词汇表中所有候选字的“原始打分”。每个字都有一个分数,分数高低代表nanoGPT判断它作为下一个字的可能性。
- 然后,另一个部件(专业上叫Softmax函数)会把这些“原始打分”转换成每个候选字作为正确答案的“可能性百分比”。可能性越高的字,模型就越认为它应该是正确的下一个字。
第五步:从经验中学习——模型的训练过程
nanoGPT模型并非一开始就能准确预测。它需要通过一个称为“训练”的过程,从大量的样本数据中学习规律。
- 数据准备(输入与目标):从训练语料(莎士比亚剧作)中,选取一段文本序列作为模型的输入(例如,“To be or not to b”),并将其真实的下一个字符(“e”)作为期望的输出(标准答案)。
- 损失计算(衡量差距):GPT根据输入序列进行预测,得到一个关于下一个字符的“可能性百分比”列表。然后,将这个预测结果与标准答案进行比较,一个叫“损失函数”的裁判来打分,衡量nanoGPT的答案和标准答案之间的“差距”或“错误程度”。差距越大,说明GPT错得越厉害。
- 参数优化(“复盘”与调整):训练的目标是让这个“差距”尽可能小。nanoGPT会启动一个“复盘机制”(专业上叫反向传播算法),仔细分析这次错误是哪些内部环节没做好导致的,并计算出每个内部“小齿轮”(即模型中可调整的参数)应该朝哪个方向、调整多少才能减少错误。接着,一个“总工程师”(专业上叫优化器)会根据分析结果,对nanoGPT内部的这些“小齿轮”进行微小的调整,目标是让nanoGPT下次遇到类似情况时表现得更好一些。
这个“输入-预测-计算差距-复盘调整”的迭代过程会重复进行成千上万甚至上亿次。每一次迭代,模型都会从错误中学习,逐渐提升其预测的准确性,从而更好地捕捉莎士比亚文本的语言模式。
第六步:文本生成
当nanoGPT训练到一定程度后,就可以用它来生成新的、具有莎士比亚风格的文本了。
- 起始提示(Prompt):可以给nanoGPT一个初始的文本片段(prompt)作为生成的起点,例如“ROMEO:”。
- 迭代生成过程:
- 模型接收当前已生成的文本序列作为上下文。
- 模型进行一次完整的处理和计算过程(如第四步所述),预测下一个最可能的字符,即从“可能性百分比”列表中按概率抽取一个字符。
- 将新生成的字符追加到当前序列的末尾。
- 重复以上步骤,直到达到预设的生成长度或遇到特定的终止标记。
- 控制生成的多样性与质量:
- 温度(Temperature):在计算“可能性百分比”之前,可以对“原始打分”进行调整。调低“温度”,AI会更倾向于选择那些分数最高的字,写出来的东西更确定、更保守。调高“温度”,GPT则会更大胆,愿意尝试不那么常见的字,可能会更有创意,但也可能更容易“跑题”。
- Top-K采样 / Top-P (Nucleus) 采样:这些技术像是给AI的选择加了个“筛选器”。比如,只允许nanoGPT从分数最高的K个字里选,或者从那些加起来可能性超过一定百分比(P)的一小撮字里选。这有助于避免nanoGPT选到非常不靠谱的字,让生成的文本更连贯。
通过这些机制,nanoGPT模型就能够一句句模仿莎士比亚风格的文本。
从简化模型nanoGPT到大型语言模型
本文描述的模仿莎士比亚风格的nanoGPT是一个高度简化的示例。现实中的大型语言模型(LLMs),如OpenAI GPT系列,其核心原理(如Transformer结构、预测下一个词元等)与此相同,但有着显著的量级和复杂度差异:
- 模型规模:内部“小齿轮”(参数)的数量可达千亿甚至万亿级别,远超简化模型的规模。
- 数据规模:训练数据量是TB乃至PB级别(1 PB = 1024 TB,1 TB = 1024 GB),来源极其广泛,不仅仅是单一作者的作品,几乎涵盖了互联网上公开的绝大部分文字。
- 词元化(Tokenization):它们处理的单位比字符大,叫做“词元”(token)。一个词元可能是一个完整的词,也可能是一个词的一部分(比如英语中的“un-”、“-able”这样的前后缀),甚至是单个字母。这种方式更灵活,能更有效地处理各种词汇、生僻词和复杂词形。
- 训练技术与资源:涉及更复杂的训练策略、使用成百上千台计算机协同工作(分布式计算)、海量的计算资源以及更长的训练周期(数周甚至数月)。
- 对齐技术:大型模型还会经过更高级的后续“特训”,比如让它们学习理解并遵循人类给出的各种指令(这叫指令微调),或者根据人类对它们生成内容的评价好坏来不断改进(这叫基于人类反馈的强化学习)。这些步骤能让大型GPT的行为更符合我们的期望、指令和社会的价值观。
结语
通过对这个简化AI模型nonoGPT的剖析,我们可以看到,GPT这类模型基于对大量文本数据中复杂模式的统计学习,基于这些规律进行的语言接龙的概率预测。从简单的字符预测任务出发,nanoGPT借助Transformer结构、莎士比亚全集数据和强大的计算能力,AI能够学习并模仿出高度复杂的语言风格。理解GPT背后的机制,有助于我们更理性地看待AI大模型的能力边界,并思考其在未来社会和文化领域中可能扮演的角色。