Andrej Karpathy 带你扒 ChatGPT 老底:LLM 技术、认知与未来的深度解读

文摘   2025-02-07 08:36   美国  

 

你是不是也觉得 ChatGPT 特别神?能聊天、写诗、甚至还能写代码!但它真有那么神吗?这篇文章,我们就跟着 AI 大佬 Andrej Karpathy 一起,扒一扒 ChatGPT 背后的“秘密武器”——大型语言模型(LLM)的底裤,看看它到底是怎么工作的,有哪些本事,又有哪些“短板”。看完这篇,保证你对 LLM 有个全新的认识!

开启LLM的神秘之旅 (Introduction)

你有没有想过,ChatGPT 为什么能跟你对答如流,甚至写诗、写代码?它真的有所谓的“智能”吗?今天,咱们就来扒开 LLM(大型语言模型)的神秘面纱,看看它到底是怎么工作的。这可不是什么魔法,而是实实在在的技术!

这段油管视频 是 AI 领域大神级人物 Andrej Karpathy 制作的,他对 LLM 进行了深入浅出的讲解。Andrej Karpathy 可不是一般人,他是 OpenAI 的创始成员和前特斯拉 AI 总监,现在又搞了个 AI 教育项目。他对 LLM 的理解,那绝对是业内顶尖的。

近年来,以ChatGPT为代表的大型语言模型(LLMs)掀起了一股人工智能热潮。它们能像模像样地跟人聊天,写个邮件、总结个报告更是不在话下。这些能力可不是凭空来的,背后是一整套复杂的技术在支撑。

本文的目的,就是带你深入LLMs的世界,一探究竟。我们会讲到LLMs是怎么“学习”的,它们是怎么“思考”的,以及它们的未来会是什么样子。准备好了吗?咱们这就出发,跟着 Karpathy 大神一起,揭秘 LLM 的前世今生!

 LLM的“食粮”:预训练数据 (Pretraining Data)

LLMs 的本事,很大程度上取决于它们“吃”了多少东西。这里的“吃”,指的就是预训练。你可以把预训练想象成让 LLM 疯狂“读书”的过程,它读的书越多,知识就越丰富。

数据收集与处理:从互联网到数据集

预训练的第一步,就是收集和处理这些“书”。这些“书”从哪里来呢?主要就是互联网上的各种公开信息。

1. 数据来源:像 Common Crawl 这样的组织,一直在兢兢业业地“爬”遍整个互联网,把各种网页都收集起来。这些数据,就是 LLMs 的“粮食”。具体来说,Common Crawl 自 2007 年就开始抓取互联网信息,截止到 2024 年,已经索引了 27 亿个网页。

2. URL 过滤:互联网上的信息鱼龙混杂,得先把那些不好的东西过滤掉,比如恶意网站、垃圾邮件、少儿不宜的内容等等。通常会维护一个黑名单,把这些网站排除在外。

3. 文本提取:网页上除了文字,还有很多图片、视频、广告之类的。我们只需要文字,所以要把这些文字从网页的 HTML 代码里“抠”出来。这需要用到一些文本提取工具和技术。

4. 语言过滤:根据需要,我们可以只保留特定语言的文本,比如中文或者英文。例如,FineWeb 数据集主要关注英文,会使用语言分类器过滤掉非英语网页。FineWeb 数据集 (https://huggingface.co/datasets/HuggingFaceFW/fineweb)就是一个很好的例子,它详细介绍了如何从Common Crawl数据中构建高质量的预训练数据集。

  1. 5. PII 移除:为了保护隐私,我们还得把文本里的个人信息(比如身份证号、电话号码)给去掉。这通常需要用到一些自然语言处理技术,比如命名实体识别(NER)。

Tokenization:文本的“原子化”

LLMs 可不认识“字”,它们只认识“数字”。所以,我们得把文本变成数字,这个过程就叫做Tokenization(分词)。你可以把它想象成把一句话“打碎”成一个个的小块,每个小块就是一个token

• UTF-8 编码:在电脑里,文字是以 UTF-8 编码的形式存储的,每个字都对应着一串数字。例如,“你”字的 UTF-8 编码是 E4 BD A0,“好”字的 UTF-8 编码是 E5 A5 BD。

• 字节对编码(Byte Pair Encoding, BPE):BPE 是一种常用的“打碎”方法。它会把经常一起出现的字组合起来,变成一个新的 token。比如,“hello”和“world”经常一起出现,那就把它们合并成一个 token“helloworld”。这样可以减少 token 的数量,让 LLM 更容易“消化”。BPE 的具体做法是:

    1. 从单个字符开始,构建一个初始词汇表。

    2. 统计文本中相邻 token 对的出现频率。

    3. 将频率最高的 token 对合并成一个新的 token,加入词汇表。

    4. 重复步骤 2 和 3,直到词汇表达到预定大小,或者没有更多的 token 对可以合并。

    • Tiktokenizer 工具:https://tiktokenizer.vercel.app/ 这个工具可以让你直观地看到 GPT-4 是怎么把一句话“打碎”成 token 的。比如,你可以输入“Hello world”,看看它会被切分成几个 token,每个 token 对应的 ID 是什么。

神经网络的输入/输出:token 序列 (Neural Network I/O)

“打碎”之后,我们就有了一串 token 序列,这就是 LLMs 的“输入”了。

  • • 输入:一串 token 序列。LLMs 可以处理不同长度的句子,但通常有一个上限(比如最多 8000 个 token)。这个上限叫做“上下文窗口长度”(context window length)。

  • • 输出:LLMs 会预测下一个 token 是什么。它会给词汇表里的每个 token 都打个分(计算一个概率值),分数越高的,表示它觉得这个 token 越有可能是下一个。

  • • 损失函数与模型更新:LLMs 会把自己预测的下一个 token 和实际的下一个 token 进行比较。如果预测错了,就说明自己“学”得还不够好,需要调整一下自己的“内部参数”。这个调整的过程,就叫做“反向传播”。具体来说:

  1. 1. 计算预测结果和实际结果之间的差距(损失函数)。

  2. 2. 根据损失函数的值,计算每个参数对误差的贡献(梯度)。

  3. 3. 按照梯度的反方向,微调每个参数的值(梯度下降)。

  4. 4. 重复以上步骤,直到模型的预测结果足够准确。

神经网络内部结构:Transformer (Neural Network Internals)

LLMs 的“大脑”叫做 Transformer。它是一种很厉害的神经网络结构,特别擅长处理像文本这样的“序列数据”。

  • • 参数、权重、数学表达式:Transformer 里面有很多“参数”,这些参数决定了 LLMs 的“思考方式”。这些参数通过一套复杂的数学公式,把输入的 token 序列变成输出的概率分布。这些公式主要包括:

  • • 注意力机制(Attention Mechanism):让模型关注到输入序列中最重要的部分。

    • 多头注意力(Multi-Head Attention):从多个角度关注输入序列,捕捉更丰富的信息。

    • 前馈神经网络(Feed-Forward Network):对每个 token 进行非线性变换,增强模型的表达能力。

    • 残差连接(Residual Connection):缓解梯度消失问题,让模型更容易训练。

    • 层归一化(Layer Normalization):加速模型收敛,提高模型稳定性。

    • Transformer 神经网络 3D 可视化工具:https://bbycroft.net/llm 这个工具可以让你直观地看到 Transformer 内部是怎么工作的。你可以看到 token 是怎么一层一层地被处理的,以及每一层都发生了什么变化。

推理(Inference):生成文本

训练好的 LLMs 就可以用来生成文本了。这个过程叫做推理

  • • 采样:LLMs 会根据自己预测的概率分布,随机“挑”一个 token 出来。这个“挑”的过程,就叫做“采样”。

  • • 概率分布:LLMs 会给词汇表里的每个 token 都打个分(计算一个概率值),这个分数就代表了它觉得这个 token 有多大的可能性是下一个。

  • • 随机性:因为是随机“挑”的,所以即使输入同样的句子,LLMs 每次生成的文本也可能不一样。这种随机性让 LLMs 能够生成多样化的文本,而不是千篇一律。

  • • 温度系数 (Temperature): 可以通过调整一个叫做“温度系数”的参数,来控制生成文本的“创造性”。温度系数越高,生成的文本越随机、越有创意;温度系数越低,生成的文本越保守、越可预测。

GPT-2 案例分析:训练与推理 (GPT-2: Training and Inference)

GPT-2 是 OpenAI 在 2019 年发布的一个 LLM。它有 15 亿个“参数”,在 1000 亿个 token 的数据集上“读”了很多书。

  • • llm.c 项目:https://github.com/karpathy/llm.c/discussions/50 这个项目可以让你自己动手,体验一下训练 GPT-2 的过程。你可以看到模型的“损失函数”是怎么一步一步下降的,以及模型生成的文本是怎么一点一点变得更好的。

  • • 训练过程:LLMs 通过不断地调整自己的“参数”,让自己预测下一个 token 的能力越来越强。这个过程就像“磨刀”,刀磨得越锋利,切东西就越快。

  • • 计算资源:训练 LLMs 需要很多很多的计算资源,通常要用很多块 GPU 一起算。这就像“烧钱”,烧的钱越多,模型就越厉害。

Llama 3.1 案例分析:基础模型推理 (Llama 3.1 Base Model Inference)

Llama 3 是 Meta 发布的一个开源 LLM,其中 Llama 3.1 有 4050 亿个“参数”,在 15 万亿个 token 的数据集上“读”了更多的书。

  • • Llama 3 论文:https://arxiv.org/abs/2407.21783

  • • Hyperbolic 工具:https://app.hyperbolic.xyz/ 这个工具可以让你在线体验一下 Llama 3.1 的能力。你可以给它输入一段话,看看它会怎么接下去。

  • • 基础模型的特性

    • • token 补全:你给 LLMs 一句话,它能接着往下写。就像玩“成语接龙”一样。

    • • 随机性:每次生成的文本可能不一样。就像“掷骰子”,每次掷出的点数都不一样。

    • • 知识压缩:LLMs 把自己“读”过的书都“记”在了自己的“参数”里。你可以通过“提示”(prompt)来引导它回忆起这些知识。就像一个“记忆大师”,你问他什么,他都能答上来。

  • • 基础模型的应用

    • • 提示工程:你可以通过设计巧妙的“提示”,让 LLMs 生成你想要的文本。就像给 LLMs 出一道“命题作文”,让它按照你的要求来写。

    • • 上下文学习:你可以在“提示”里给 LLMs 一些例子,它就能“学”会你想要它做什么。就像“举一反三”,你给它一个例子,它就能自己推导出其他的例子。

从“鹦鹉”到“助手”:后训练 (Pretraining to Post-training)

预训练出来的 LLMs,虽然能写出像模像样的句子,但它更像是一只“鹦鹉”,只会模仿它“读”过的东西。要想让它变成一个真正的“助手”,我们还需要对它进行“调教”,这个过程叫做后训练。如果说预训练是“通识教育”,那么后训练就是“专业教育”。

对话数据的收集与处理 (Post-training Data: Conversations)

后训练的第一步,是收集和处理“对话数据”。这些数据就像“教科书”,教 LLMs 怎么跟人对话。

  • • 对话的结构:对话通常是你一句我一句,有很多轮。每一轮都包括“用户”说的话和“助手”说的话。

  • • 数据来源

    • • 人类标注员:我们会请一些人来,按照我们制定的“规矩”,写一些对话数据。这些人就像“老师”,专门负责编写“教材”。

    • • 标注指南:这些“规矩”就是“标注指南”,它会告诉标注员,什么样的回答是好的,什么样的回答是不好的。标注指南通常会强调“有用性”、“真实性”、“无害性”等原则。

  • • InstructGPT 论文:https://arxiv.org/abs/2203.02155 这篇论文讲了 OpenAI 是怎么通过人和“规矩”来构建高质量的对话数据的。OpenAI 雇佣了 40 多名标注员,让他们根据标注指南编写对话数据。

  • • Open Assistant 数据集:这是一个开源的对话数据集,是大家一起贡献的。每个人都可以参与到对话数据的编写中来。

  • • UltraChat 数据集:这是一个很大的对话数据集,主要是通过 LLMs 自己生成的,然后人工筛选和修改。这就像“学生”自己出题自己做,然后“老师”再批改。

  • • 对话的 tokenization

    • • 特殊 token:为了区分对话里的不同角色(比如你和 LLMs),我们会在对话里加一些特殊的 token。例如,可以用 <|user|> 表示用户说的话,用 <|assistant|> 表示助手说的话。

    • • 编码协议:不同的 LLMs 加的特殊 token 可能不一样。这就像不同的国家有不同的语言一样。

幻觉、工具使用、知识/工作记忆 (Hallucinations, Tool Use, Knowledge/Working Memory)

LLMs 有时候会“胡说八道”,这叫做“幻觉”。这就像一个人“信口开河”,说一些不靠谱的话。

  • • 幻觉的来源

    • • 概率性模仿:LLMs 只是在模仿它“读”过的东西,它并不真的懂自己在说什么。就像“鹦鹉学舌”,鹦鹉只是在模仿人说话,但它并不理解自己说的话是什么意思。

    • • 缺乏事实核查:LLMs 没办法自己去查证自己说的是不是真的。就像一个人“道听途说”,听到了什么就说什么,也不管真假。

    • • 举例:早期的 LLMs 经常会一本正经地“胡说八道”,比如,你问它一个不存在的人“张三”,它可能会编造出“张三”是干什么的,活了多少岁,让人哭笑不得。

  • • 幻觉的缓解

    • • 知识边界探测:我们可以通过提问和测试,看看 LLMs 到底知道些什么,不知道些什么。这就像“摸底考试”,看看学生的真实水平。

    • • 工具使用:我们可以让 LLMs 使用一些外部工具,比如搜索引擎、计算器,来获取更准确的信息。这就像让学生“查资料”、“用计算器”,帮助他们更好地完成作业。

      • • Web Search (网络搜索): 当 LLM 不确定答案时,可以让它去网上搜索一下。

      • • Code Interpreter (代码解释器): 当 LLM 需要进行数学计算或者逻辑推理时,可以让它写一段代码,然后运行这段代码,得到结果。

  • • 知识与工作记忆

    • • 参数中的“模糊记忆”:LLMs 把自己“读”过的书都“记”在了自己的“参数”里,但这种记忆是“模糊”的。就像一个人“囫囵吞枣”地读书,虽然读了很多,但记住的却不多。

    • • 上下文中的“清晰记忆”:LLMs 可以“记住”当前对话里的信息,这种记忆是“清晰”的。就像一个人“临时抱佛脚”,虽然记得快,但忘得也快。

  • • HuggingFace 推理演示:https://huggingface.co/spaces/huggingface-projects/llama-3-70b-chat

自我认知 (Knowledge of Self)

LLMs 有没有“自我意识”?这是一个很有争议的问题。

  • • 模型的“自我认知”并非内在属性,而是通过训练数据或系统提示来塑造的。我们可以通过在训练数据里加一些关于 LLMs 自己的信息,或者在对话开始的时候告诉 LLMs“你是谁”,来让它“知道”自己是谁。但这就像给一个机器人“设定程序”,让它按照程序说的去做,而不是让它真正地“认识自己”。

  • • Allo 模型案例分析 Allot to hardcoded: 有240个关于模型自身的硬编码对话,这些对话被用于训练模型。

模型需要 token 来思考 (Models Need Tokens to Think)

LLMs 的“思考”方式和我们人类不太一样。我们人类的思考是连续的、复杂的,而 LLMs 的“思考”是离散的、一步一步的。

  • • 计算分布在 token 序列上:LLMs 的“思考”能力是分散在每一个 token 上的。每个 token 就像一个“小脑袋”,负责处理一部分信息。

  • • 每个 token 的计算量有限:每个 token 上能做的“思考”是有限的。这就像一个“小脑袋”的“脑容量”有限,不能一下子处理太多的信息。

  • • 数学问题案例分析:如果让 LLMs 一步就算出一个很难的数学题,它可能会算错。但如果让它一步一步地算,把每一步的计算结果都写出来,它就更容易算对。这就像我们做数学题时,需要一步一步地写出计算过程,才能保证不出错。

分词再探讨:模型在拼写方面的困难 (Tokenization Revisited: Models Struggle with Spelling)

LLMs “看”到的不是“字”,而是“token”。这就像我们看一幅“马赛克”画,只能看到一个个的小方块,而看不到整幅画的内容。

  • • 模型“看到”的是 token,而不是字符:LLMs 没办法直接看到每个字长什么样。它只能看到一个个的 token,而不知道每个 token 里面包含了哪些字。

  • • 拼写任务案例分析:如果你让 LLMs 把一个单词的每个字母都写出来,或者数一数一个单词里有几个字母,它可能会搞错。因为它“看”不到字母,只能“看”到 token。

参差不齐的智能 (Jagged Intelligence)

LLMs 的“智力”是“参差不齐”的,有时候很聪明,有时候又很笨。这就像一个“偏科”的学生,有的科目考得很好,有的科目考得很差。

  • • “Swiss Cheese”模型:LLMs 在某些方面很厉害,但在另一些方面又很差劲。就像一块瑞士奶酪,上面有很多洞。

  • • 举例:LLMs 可能能回答很难的历史问题,但却算不对简单的加减法;可能能写出很优美的诗句,但却分不清“你”和“妳”。

超越模仿:微调与强化学习 (Supervised Finetuning to Reinforcement Learning)

“调教”LLMs 的方法有很多种,其中两种很重要的方法是“微调”和“强化学习”。如果说预训练是“通识教育”,后训练是“专业教育”,那么微调和强化学习就是“进阶教育”。

监督微调 (Supervised Finetuning)

  • • 继续使用预训练模型,但在新数据集上进行训练:我们可以用新的“书”继续“教”LLMs。这些新的“书”通常是针对特定任务的,比如对话、翻译、摘要等。

  • • 数据集:对话数据:微调阶段使用的数据集通常是对话数据,这些数据可以由人类标注员编写,也可以通过 LLMs 自动生成。

强化学习 (Reinforcement Learning)

  • • 试错、奖励、策略:强化学习就像“训练小狗”。我们让 LLMs 不断地尝试,如果它做得好,就给它“奖励”;如果它做得不好,就“惩罚”它。这样,LLMs 就能慢慢学会怎么做才能得到更多的“奖励”。强化学习的关键在于设计一个好的“奖励函数”,告诉 LLMs 什么样的行为是好的,什么样的行为是不好的。

DeepSeek-R1

• DeepSeek-R1 案例分析 (https://arxiv.org/abs/2501.12948):DeepSeek-R1 就是一个通过强化学习“训练”出来的 LLM,它特别擅长做数学题和写代码。

    • • TogetherAI Playground 演示 (https://api.together.xyz/playground):你可以在这个网站上体验一下 DeepSeek-R1 的能力。你可以给它出一道数学题,看看它是怎么一步一步解出来的。

    • • 思维链、认知策略:DeepSeek-R1 在解决问题的时候,会把自己的“思考过程”一步一步地写出来,这叫做“思维链”。通过分析思维链,我们可以了解 LLMs 是怎么“思考”问题的,以及它们使用了什么样的“解题技巧”。

AlphaGo

• AlphaGo 案例分析 (https://discovery.ucl.ac.uk/id/eprint/1484311/1/agzpreprint.pdf):AlphaGo 是一个下围棋的 AI,它也用了强化学习。AlphaGo 打败了人类的世界冠军,这说明强化学习可以让 AI 变得比人类还厉害。AlphaGo 的成功,证明了强化学习在解决复杂问题方面的巨大潜力。

从人类反馈中进行强化学习(RLHF)(Reinforcement Learning from Human Feedback)

  • • RLHF 的原理:有些事情很难说清楚什么是“好”,什么是“不好”,比如写诗、写笑话。这时候,我们就可以让人来给 LLMs 生成的诗或者笑话打分,然后用这些分数来“训练”LLMs。这就像“选美比赛”,评委们根据自己的喜好给选手打分,然后选出最漂亮的选手。

  • • RLHF 的优缺点

    • • 优点:我们可以用比较少的人力,来“训练”出一个很厉害的 LLM。这就像“站在巨人的肩膀上”,我们可以利用人类的智慧,来加速 LLMs 的学习。

    • • 缺点:“奖励模型”可能会被“玩坏”。LLMs 可能会“钻空子”,生成一些看起来“好”但实际上不好的东西。就像“应试教育”,学生们可能会为了考试而学习,而不是为了真正掌握知识。

LLM 的未来 (Preview of Things to Come)

LLMs 会继续发展,变得越来越强大。我们可以想象一下,未来的 LLMs 会是什么样子:

  • • 多模态:未来的 LLMs 不仅能处理文字,还能处理图片、声音、视频等等。这就像一个人不仅能“读书”,还能“看电影”、“听音乐”。

    • • 举例:你可以上传一张照片,让 LLMs 给你讲一个关于这张照片的故事;或者你可以对着 LLMs 说话,让它帮你把语音转换成文字。

  • • 智能体:LLMs 将不仅仅是“助手”,还能自己完成一些复杂的任务。这就像一个人不仅能“听你指挥”,还能“独立思考”、“自主行动”。

    • • 举例:你可以让 LLMs 帮你写一份商业计划书,或者让它帮你设计一个网站。

  • • 普适性:LLMs 将会融入到我们生活的方方面面。这就像“水”和“电”一样,成为我们生活中不可或缺的一部分。

    • • 举例: 智能家居,自动驾驶。

  • • 计算使用:LLM能够代表用户执行操作,例如键盘和鼠标操作。

    • • 举例: 自动回复邮件,填写表格。

  • • 测试时间训练: 新的想法,更长的上下文,以及根据测试时的操作来优化模型。

  • • 举例: 在线学习新知识。

跟踪 LLMs 的进展 (Keeping Track of LLMs)

  • • LM Arena 排行榜 (https://lmarena.ai/):这个排行榜会告诉你哪些 LLMs 最厉害。它会让人类来比较不同 LLMs 生成的文本,然后根据人类的喜好来给 LLMs 排名。

  • • AI News Newsletter (https://buttondown.com/ainews):这个新闻简报会告诉你 LLMs 的最新进展。它会总结最新的研究论文、新闻报道、以及行业动态。

在哪里可以找到 LLMs (Where to Find LLMs)

  • • ChatGPT (https://chatgpt.com/):OpenAI 的 ChatGPT,大家都知道。它是目前最流行的 LLM 应用之一。

  • • LMStudio (https://lmstudio.ai/):你可以在自己的电脑上运行 LLMs。它可以让你在没有网络的情况下也能使用 LLMs,而且还能保护你的隐私。


在这篇文章里,我们一起揭开了 LLM 的神秘面纱。我们知道了 LLMs 是怎么“学习”的,它们是怎么“思考”的,以及它们的未来会是什么样子。我们也认识到,LLMs 并不是真的有“智能”,它们只是在模仿人类。LLMs 很厉害,但也有很多不足。

LLMs 的未来很光明,但我们也需要小心。我们要充分利用 LLMs 的优点,同时也要注意它的缺点,不要过度依赖它。LLMs 不是魔法,而是人类智慧和工程技术的结晶。我们要理性看待 LLMs,用好 LLMs,让它们为我们服务,而不是被它们所控制。

推荐阅读

关键词

LLM, ChatGPT, 深度学习, 人工智能, Transformer, Andrej Karpathy

 


子非AI
子非AI,亦解AI之妙:一站式AI情报站,助你开启智能未来之门。
 最新文章