本文是《Karpathy神经网络零基础课程》系列文章
← 上一篇:Karpathy神经网络06:WaveNet - 神经网络大升级 | → 下一篇:Karpathy神经网络08:Tokenizer - 为什么AI不识数
这是一篇为你准备的、关于如何从零开始构建一个“迷你版ChatGPT”的学习笔记。这篇文章假设你是一个对人工智能充满好奇的初中生,我们将一起跟随 Andrej Karpathy 老师(前特斯拉AI总监),揭开现在最火的 AI——ChatGPT 背后的神秘面纱。
【AI 揭秘】手把手带你造一个迷你版 ChatGPT:从零读懂 Transformer
你好!你一定用过 ChatGPT 吧?它能写诗、写代码、甚至讲笑话。但你有没有想过,在这个看似聪明的对话框背后,到底藏着什么秘密?
是因为它背诵了整个互联网吗?还是因为它真的有“大脑”?
在这堂硬核课程中,Karpathy 老师带我们做了一件很酷的事情:不依赖现成的复杂工具,用最基础的代码(Python 和 PyTorch),从零开始搭建一个“迷你版 ChatGPT”。我们不仅要让它跑起来,还要用它来模仿莎士比亚写剧本!
准备好了吗?让我们开始这场 AI 探险!
第一步:机器怎么“读书”?(Tokenization)
首先,我们要解决一个大问题:电脑是不认识“字”的,它只认识数字。
要把《莎士比亚全集》喂给 AI,我们需要做一个翻译工作:
- 建立字典:把所有出现的字母(a, b, c...)、标点符号都列出来。
- 数字化:给每个字符分配一个身份证号。比如 'a' 是 1,'b' 是 2。
- 结果:一句“Hi there”在电脑眼里,就变成了一串数字列表,比如
[46, 47, 12, ...]。
知识点:这个过程叫 Tokenization(分词)。ChatGPT 用的是更高级的单词片段(Token),但为了简单,我们今天只用字符(Character)。
第二步:核心魔法——注意力机制(Self-Attention)
这是整个 GPT 最最最核心的部分!也是 AI 能理解“语境”的关键。
1. 为什么以前的 AI 很笨?
以前的模型(比如 Bigram)就像金鱼,记忆力只有 7 秒。它看到“I love apple”,只知道“love”后面常接“apple”,但它不知道前面是谁在 love,也不知道 apple 是指手机还是水果。
2. 让文字“互相交流”
GPT 的核心叫 Transformer,它的绝招是自注意力机制(Self-Attention)。
想象一下,句子里的每个字都是一个学生。为了理解整句话的意思,他们需要互相“传纸条”。
但在传纸条时,有一套严格的规则,我们称之为 Q、K、V:
- Query (Q - 询问):你在找什么?(比如单词“Bank”会问:前面的词是“River”吗?如果是,那我就是“河岸”的意思。)
- Key (K - 标签):我是什么?(比如单词“River”举手说:我是一个关于水的词!)
- Value (V - 内容):我有什信息?(如果 Q 和 K 配对成功,我就把我的信息 V 传给你。)
就像约会软件配对一样:如果 A 的 Query 和 B 的 Key 匹配度很高,他们之间的“注意力”就很强,信息就会流动过去。
3. 不能偷看答案(Masking)
因为我们是在训练 AI 预测下一个字,所以第 5 个字只能看前 4 个字的信息,绝对不能偷看第 6 个字!
这在数学上叫 Masking(掩码)——把未来的信息全部遮住(设为负无穷大),确保 AI 只能从过去学习。
第三步:三个诸葛亮,顶个诸葛亮(Multi-Head Attention)
如果只有一组 Q、K、V,可能只能关注到一种关系(比如语法)。但语言很复杂!
所以,我们设计了 多头注意力(Multi-Head Attention)。
- 头 1 负责关注语法(主谓宾搭配)。
- 头 2 负责关注情感(是开心还是生气)。
- 头 3 负责关注韵律。
- ......
最后,把所有“头”收集到的信息拼在一起,AI 就对这句话有了全方位的理解。这就好比用多路摄像头从不同角度观察同一个物体。
第四步:给 AI 装上“大脑”和“高速公路”
光有“交流”还不够,AI 还需要“思考”。
- 前馈网络(Feed Forward):
在每一次“注意力交流”之后,每个字都会把收集到的信息拿回去,经过一个简单的神经网络进行处理。这就好比学生们讨论完题目后,自己再独立思考消化一下。 - 残差连接(Residual Connections)——高速公路:
随着网络越来越深(很多层),数据传着传着可能会丢失(迷路)。
我们在每一层旁边修了一条“高速公路”,让数据可以直接跳过处理层,传到下一层。这让即使是几百层深的 GPT-3 也能顺利训练。 - 位置编码(Positional Encoding):
注意力机制有个缺点:它不知道“我爱你”和“你爱我”的区别,因为它不看顺序。所以,我们必须给每个字贴上一个位置标签(我是第1个字,你是第2个字),这样 AI 就能分清语序了。
第五步:实战演练——训练我们的小莎士比亚
我们将所有这些组件拼装在一起,就得到了一个 Decoder-only Transformer(只有解码器的 Transformer),这正是 GPT 的架构。
- 训练前:AI 像个乱按键盘的猴子,输出全是乱码。
- 训练中:它开始学会拼写单词,学会加标点,学会换行。
- 训练后:它能写出这样的句子:
KING: My lord, stand by me!
OLIVIA: I will, my liege.
虽然逻辑有点不通,但看起来真的像莎士比亚写的剧本!这仅仅是因为它通过数学公式,学会了字符之间的概率关系。
总结:从“鹦鹉学舌”到“智能助手”
我们在视频里做出来的模型叫 nanoGPT(只有约 1000 万个参数)。
而真正的 GPT-3 是这个架构的放大版:
- 我们的模型看了 1MB 的莎士比亚。
- GPT-3 看了 整个互联网的文字。
- 我们的模型只有几层高。
- GPT-3 有 96 层高,1750 亿个参数。
最后的彩蛋:
现在的 ChatGPT 之所以能回答问题,不仅仅是因为它读了很多书(预训练 Pre-training),还因为它经过了人类老师的专门辅导(微调 Fine-tuning),学会了如何做一个有礼貌、有帮助的助手,而不是仅仅像我们的模型一样只会续写剧本。
给初中生的建议:
不要被复杂的名词吓倒!每一个复杂的 AI,本质上都是由简单的加法、乘法和这些精巧的结构(像乐高积木一样)搭建起来的。如果你对编程感兴趣,Python 和 PyTorch 就是你手中的乐高积木。
去试试看 Karpathy 老师的开源项目 nanoGPT 吧,也许下一个改变世界的 AI 架构师就是你!