大模型应用入门指北

本文由Gemini3联合创作~

Token

1. 什么是 Token?

简单来说,Token 是模型将文本切分成的最小语义单元

  • 英文: 通常一个单词是一个 Token,或者长单词被拆分为多个 Token(如 learning 变为 learn + ing)。

  • 中文: 情况比较复杂。有时一个字是一个 Token,有时一个词(如“电脑”)是一个 Token。

  • 经验法则: 在 OpenAI 的模型中,通常 1000 个 Token 约等于 750 个英文单词。而中文因为编码效率,1 个汉字通常占用 1 到 2 个 Token

为什么不直接按“字”计算?

如果按“字符”计算,效率太低(模型要处理太多信息);如果按“词”计算,词汇表会无限大(无法处理新词)。Token 化(Tokenization) 是一种折中方案,平衡了计算效率和语义理解。

想象你要用乐高拼出各种单词。

  • 如果按“字母”给积木: 你有 26 种积木。虽然能拼出所有词,但拼一个“Supercalifragilisticexpialidocious”要拼 34 次,太慢了。

  • 如果按“单词”给积木: 每一个单词都做成一个独立的积木。你会发现积木盒根本装不下(英文有几十万个单词),而且遇到新词(比如拼音或网络热梗)你就没积木用了。

Token 就是“半成品积木”: AI 决定不按字母,也不全按单词。它把常用的词根、前缀、后缀、甚至完整的短词都做成积木。

举个例子:单词 Quickly

模型在处理时,可能并不会把它看作一个整体,而是切分成:

  1. Quick(代表含义的词根)

  2. ly(代表副词的后缀)

在这里:

  • Quick 是一个 Token。

  • ly 也是一个 Token。

  • Quickly 这个单词是由 2 个 Token 组成的。


2. 为什么说它是“最小分割单位”?

当你把一句话喂给 AI 时,它的第一步动作就是分词(Tokenization)

输入句子: “Learning AI is fun!” 分词结果: [Learn] [ing] [ AI] [ is] [ fun] [!]

在这个链条里,Learn 就是模型能识别的最小颗粒度了。它不会再往下拆成 L-e-a-r-n(除非这个词极其罕见,模型不认识)。

结论: 一个 Token 可以是一个完整的单词(如 is)。

  • 一个 Token 也可以是单词的一部分(如 ing)。

  • 模型只认识它“积木盒”(词表)里有的那些片儿。

分词的规律

如果靠人工去制定几万个词、几十种语言的分割规则,这不仅是庞大的工作量,简直是不可能完成的任务。

真相是:Token 的分割规则(词表)确实是在模型训练前就确定的,但它不是由人工制定的,而是由算法“自动学习”出来的。

这个过程叫做 BPE (Byte Pair Encoding,字节对编码)


算法是如何“偷懒”的?(以 BPE 为例)

算法并不理解语义,它只懂统计频率。想象算法手里有一本巨大的字典,初始状态只有 26 个英文字母和基础符号。

  1. 扫描海量文本: 算法数一数,发现 th 经常挨在一起出现,于是它说:“好,我把 th 合并成一个新 Token。”

  2. 继续迭代: 接下来它发现 the 也经常一起出现,于是它又创造了 the 这个 Token。

  3. 停止条件: 这个过程会持续进行,直到 Token 的总数达到了人类预设的一个值(比如 50,000 或 100,000 个)。

结论: 哪些词是完整的 Token,哪些词被切碎,完全取决于这个词在互联网数据中出现的频率

因为算法是基于统计的,不同语言的统计特征决定了它们的“积木块”形状:

  • 英文: 因为有空格自然分隔,算法很容易发现 ingedtion 是高频组合,所以它们常被存为独立 Token。

  • 中文: 中文没有空格。算法通过扫描发现“我们”、“中国”、“人工智能”这些词出现的频率极高,于是就把它们整体存为一个 Token。而一些冷僻的字,因为出现频率低,可能就会被拆分成几个**字节(Byte)**级别的 Token。

有趣的事实: 为什么早期的 AI 中文水平差?因为它们的训练数据里英文多、中文少。算法在学 Token 时,把中文当成了“稀有字符”,切得非常碎(一个字拆成 3 个 Token),导致模型处理中文非常吃力且昂贵。

对于确定Token分割规则的时间点,属于预处理阶段

  1. 确定词表(Vocabulary): 在正式训练那个聪明的 Transformer 之前,先跑一遍统计算法,生成一个固定的 tokenizer.json 文件。

  2. 永久固定: 一旦模型开始训练,这个词表就再也不能动了。如果改了一个 Token 的定义,整个模型看到的数字世界就全乱套了。

  • 人类的工作: 编写那段几十行的统计算法代码(BPE 或 SentencePiece),并决定“我想要 10 万个 Token”。

  • AI 的工作: 没日没夜地扫描几万亿字的文本,统计哪些组合最常见,然后自动生成那张庞大的 Token 映射表。


3. Token的概念为什么让人觉得“混乱”?

这是因为在不同的语境下,大家说话的侧重点不同:

  1. 技术实现时: 我们说“把单词切分成 Token”,这时 Token 指的是切分后的碎片

  2. 算账/限制时: 我们说“这个模型支持 8k Token 上下文”,这时 Token 指的是计量的单位(就像说一篇文章有多少个字一样)。

  3. 模型识别时: 我们说“Token 是最小单位”,是指模型在数学层面处理的基本对象


4. Token 是如何计算的?

模型在处理信息时,会经历以下三个步骤:

  1. 分词(Tokenization): 你的输入被切成一串数字。比如 你好 变成 [57032, 230]

  2. 向量化(Embedding): 每个数字对应一个高维空间里的坐标(数学向量),模型通过坐标理解词义。

  3. 预测: 模型根据前面的 Token 序列,计算出下一个最可能出现的 Token 是什么。


词向量

如果说 Token 是 AI 的单词表,那么词向量就是 AI 的世界观

前面提到,模型只认识数字(Token ID)。比如“猫”是 123,“狗”是 456。但对计算机来说,123 和 456 只是两个毫无关联的编号。

词向量的作用,就是把每个 Token 映射到一个多维空间里的坐标(一组浮点数)。

  • 低维视角: 如果空间只有 2 维,那么“猫”的坐标可能是 [0.1, 0.5]

  • 高维视角: 现代大模型(如 GPT-4)的维度通常成千上万。每一个维度都代表了一个潜在的特征(例如:生命力、体型、是否温顺、科属等)。

词向量最神奇的地方在于:语义相近的词,在空间里的距离也更近。

在模型的“脑海”里:

  • “苹果”和“梨”的坐标挨在一起。

  • “苹果”和“手机”在另一个维度上可能也会挨在一起。

  • 但“苹果”和“宇宙黑洞”就会离得非常远。

由于词被变成了数字坐标,我们甚至可以对词进行“加减法”。一个最经典的例子是:

$$Vector(\text{King}) - Vector(\text{Man}) + Vector(\text{Woman}) \approx Vector(\text{Queen})$$

这意味着模型通过海量文本学习到了:“国王之于男人,等于女王之于女人”。它理解了“性别”这个抽象维度在数学上的偏移量。

为什么要用词向量?

  1. 处理未见过的关联: 即使模型没见过“粉红色的独角兽”这个词组,它知道“粉红色”和“红色”很近,“独角兽”和“马”很近,从而能推断出大致意思。

  2. 降维打击: 将复杂的语言规律压缩成数学规律,让计算机能用线性代数(矩阵运算)飞速处理。

早期的词向量(如 Word2Vec)是静态的。也就是说,无论在什么语境下,“苹果”的向量都一样。

但现在的 AI 使用的是动态词向量

  • 在“我吃了一个苹果”中。

  • 在“我买了一个苹果手机”中。

通过 注意力机制(Attention),同一个 Token 会根据周围的词实时改变自己的坐标。这也就是为什么现在的 AI 能分清多义词。

你可能遇到过 AI 话说到一半突然断了,或者不记得之前的对话。这通常是因为触碰了 上下文窗口(Context Window) 的上限。

截断的主要原因:

  • 内存与计算瓶颈: 模型在处理每个 Token 时,需要与序列中所有其他 Token 进行对比(注意力机制)。这种计算量通常随 Token 数量的平方增长。为了保证响应速度,每个模型都有一个硬性的“容量限制”(如 8k, 32k, 128k Tokens)。

  • KV Cache 限制: 模型运行过程中需要占用显存来存储之前的中间状态。如果对话太长,显存撑不住,就必须扔掉最早的信息。

  • 输出长度设置: 有时并非模型不能写,而是你在调用 API 或使用界面时设置了 max_tokens 参数。

截断带来的影响

  1. “失忆”: 当对话总长度超过模型上限,为了输入新的问题,程序会自动删除最早的对话记录。这也就是为什么聊久了 AI 会忘记它最初的设定。

  2. 逻辑崩坏: 如果文档太长被强行截断,模型拿到的信息是不完整的,会导致生成的结论断章取义。


注意力机制

注意力机制(Attention Mechanism) 是现代 AI 的“灵魂”。如果没有它,大模型(LLM)充其量只是个死记硬背的复读机;有了它,AI 才具备了理解语境的能力。

我们可以用一个非常直观的例子来切入:读句子


1. 为什么需要“注意力”?

假设有两句话:

  1. “There’s a lot of money in the bank”

  2. “He was walking on the bank of the river”

在英文中,这两句话里都有 bank 这个单词。如果模型只看 bank 这个 Token,它根本分不清指的是“金融机构”还是“河岸”。当然这里请注意,注意力机制并不是单纯为了区分多义词而作用的,而是将句子中所有的token进行微调,使整个句子中所有的token的向量都朝着符合语境的方向进行偏移。

2.注意力机制的三个核心角色:Q、K、V

在数学实现上,注意力机制通过三个向量来完成“信息匹配”。为了好理解,我们把它类比为“去图书馆找书”**:

  • Query (Q - 查询): 就像你想找的主题。比如:“我想找关于‘bank’的书”。(当前正在处理的 Token)

  • Key (K - 键): 就像书架上每本书的书名标签。模型会拿 Q 去和所有的 K 做对比,看看哪个匹配度最高。(序列中所有 Token 的标签)

  • Value (V - 值): 就像书里的具体内容。一旦匹配成功,就把这本书里的知识拿出来。(序列中所有 Token 携带的实际语义,也就是Token对应的向量值)


运作流程:

我们以第一句话中处理bank这个Token时进行举例,假设模型分词后的token如下:
there、’s、a、lot、of、money、in、the、bank,那么首先将there作为Q,其他所有的token作为K,进行如下步骤,微调there的向量。我们以微调bank这个token时的过程为例:

  1. 打分 (Attention Scores): bank(Q) 与 money(K) 计算出一个很高的权重(0.8),与 there(K) 计算出一个很低的权重(0.05)。

  2. 提取信息 (Value): 模型提取 moneyValue (V) 向量。

  3. 融合 (Fusion): 并不是简单地挪动坐标,而是将 0.8 × money 的 V + 0.05 × there 的 V + …

  4. 更新: 把这个加权平均后的结果,叠加回 bank 本身的向量上。

结果: bank 的向量里现在“吸”进去了大量关于 money 的数学特征。这个经过“吸星大法”处理后的新向量,就是 Contextualized Embedding(语境化嵌入)

这里需要注意的是:
1、这种微调并非一次就完成的,在单词推理中,每个token都需要进行多次连续的微调,这与后面介绍的Transformer架构有关。以bank举例,
- 第一层: bank 吸收了 money以及其他token的信息,稍微偏向了“金融”。
- 第二层: 已经带有金融属性的 bank 进一步结合了整个句子的语法结构,理解了它是作为“地点”出现的。
- 第 N 层: 经过层层“精加工”,这个向量已经变得极其精准。
2、刚才的分词列表里:there'sa… 如果我把句子打乱成:money lot a bank in the… 虽然 Token 没变,但意思全毁了。由于 Attention 机制是同时看全句的(并行计算),它本身其实分不清词的先后顺序。为了解决这个问题,模型在进行QKV 比较之前,会给每个 Token 注入一个“位置信号”。- 计算公式: 最终输入 = 词向量 (Embedding) + 位置向量(Positional Encoding)
3、模型对于当前Q对其他K的评判权重的标准是通过向量的点积来进行计算的,点积结果大则说明两个向量的相关性高,权重则大。
4、这些对token的微调过程是发生在内存中的,并不会修改词表,Token词表可以当作一本字典,模型只会从字典中取出向量只在内存中做处理,而不会更改字典本身。


3. 自注意力(Self-Attention)

“自”字的意思是:Query、Key、Value 全都来自同一句话。

想象一句话:“机器人因为它没电了所以停止了工作”。 当模型处理到“它”这个词时:

  • Query 是“它”。

  • 它会去扫视整句话(所有的 Key)。

  • 计算Q与每个K之间的权重,最终将每个K的权重融入到K的向量中,由于“机器人”的权重最高,因此融合后,“它”和“机器人”的匹配度最高。

  • 于是,“它”这个 Token 的向量里就融入了大量“机器人”的特征。

这就是 AI 能够理解代词指代、长句逻辑的底层秘密。


4. 多头注意力(Multi-Head Attention)

如果只看一个地方,可能会片面。所以大模型通常使用“多头注意力”。

你可以理解为:模型同时派出了 8 个或 16 个不同的“观察员”去看同一句话。

  • 观察员 A: 专门看语法结构(动词对应的主语是谁?)。

  • 观察员 B: 专门看指代关系(“它”指的是谁?)。

  • 观察员 C: 专门看情感色彩。

最后把这些观察员的结论汇总起来,模型对这句话的理解就非常立体了。


5. 总结:注意力机制带来了什么?

  1. 解决长距离依赖: 哪怕开头和结尾隔了 1000 个词,只要注意力给到位(在维度上离的很近),模型就能把它们关联起来。

  2. 并行计算: 以前的 AI(如 RNN)必须一个词一个词地读,而注意力机制允许模型同时看整句话,也就是说-模型不需要等前面的词算完,它把一整句话(比如 512 个 Token)直接打包成一个巨大的矩阵 (Matrix),然后一次性“喂”给显卡,显卡的几千个核心会同时开工,每个核心负责计算一部分 Token 的 QKV 权重。


Transformer网络

要把 Transformer 讲清楚,我们只需要看懂它解决的核心矛盾如何让计算机像人一样,一眼扫过去就能理解一整句话,而不是一个字一个字地死抠。


第一层:Transformer 的外壳(它是什么?)

你可以把 Transformer 想象成一个超级黑盒

  • 输入: 一串 Token(比如: 学习)。

  • 输出: 另一串 Token(比如:I love study)。

它最牛的地方在于:它能够同时处理这一串词,而不是排队处理。


第二层:为什么要发明它?(它的前身是谁?)

在 Transformer 出现之前,AI 主要是靠 RNN(循环神经网络)

  • RNN 的工作方式: 像排队。先读“我”,再读“爱”,读到“学习”的时候,“我”的信息已经模糊了。

  • 缺点: 1. 慢(必须排队);2. 忘性大(句子长了,前面的词就记不住了)。

Transformer 的工作方式:拍照片。它一眼看过去,整句话的所有词同时入镜。


第三层:Transformer 的核心结构(两个“加工间”)

Transformer 内部其实只有两种基础的“加工车间”,无论模型多大,都是这两个车间的不断重复。

  1. 注意力车间 (Attention Layer) —— “建立联系”

这个车间负责解决:这个词在当前环境下到底是什么意思?

比如:“乒乓球拍卖完了”

  • 如果不看周围,AI 不知道是“乒乓球 / 拍卖 / 完了”,还是“乒乓球拍 / 卖完了”。

  • 注意力车间的工作: 它让“球拍”去跟“卖”和“完了”打招呼,发现它们更匹配。

  1. 思考车间 (Feed-Forward Layer) —— “理解含义”

在“注意力车间”打完招呼、确定了关系后,每个词会进入自己的独立包间进行“思考”。

  • 作用: 把刚才得到的“关系信息”转化为更深层的“语义信息”。

第四层:它是怎么堆叠起来的?(乐高模式)

你听到的“GPT-3 有 1750 亿参数”或者“几十层深度”,其实就是把上面这两个车间(注意力+思考)打包成一个标准模块,然后像乐高一样往上叠。

  1. 第一层: 粗略理解单词意思。

  2. 第十层: 理解句子语法。

  3. 第五十层: 理解复杂的逻辑和情感。


第五层:Transformer 的特殊辅助(位置编码)

因为 Transformer 是“拍照片”一眼全看,它会产生一个新问题:它分不清词的顺序! 在它看来,“狗咬人”“人咬狗” 是一模一样的照片。

为了解决这个问题,工程师在输入端给每个 Token 塞了一张**“座位票”**。

  • (座位 1)

  • (座位 2)

  • 这样即使是同时处理,AI 也能通过座位票知道谁先谁后。


总结:Transformer 到底在干嘛?

  1. 贴标签: 给每个词发一张座位票(位置编码)。

  2. 大合影: 一眼看完全部词(并行计算)。

  3. 找关系: 让词与词之间互相对视,确认语境(注意力机制)。

  4. 深加工: 通过多层叠加,从简单的认字变成理解深层的逻辑。


残差连接 (Residual Connection)

在深度学习中,有一个噩梦叫**“梯度消失”**。如果模型叠了 100 层,信息每经过一层加工,就像玩“传声筒”游戏,传到最后可能就面目全非了,对于这个问题,解决的方法也很简单:

Transformer Block 的公式非常简单:输出 = 原始输入 + 注意力加工后的结果

  • 形象类比: 想象你是一个主厨,正在教徒弟做菜。

    • 没有残差连接: 徒弟做完菜,把你的原材料全扔了,只给你看他加工后的成品。如果他做坏了,这道菜就彻底毁了。

    • 有残差连接: 徒弟把加工好的菜放在你面前,但原材料依然在那儿

  • 作用: 1. 保底机制: 哪怕这一层的注意力机制(Attention)没学好,原始信息也能顺着这条“捷径”流向下一层。 2. 训练更稳: 梯度(学习的信号)可以顺着这条快车道直接传回底层,不会在中间断掉。

  • 这就是为什么现在的模型能叠到上百层,而且每一层都能在上一层的逻辑基础上继续加深,而不会导致逻辑崩溃。


应用预测:它是如何吐出下一个字的?

当 Token 们经过了几十层 Transformer Block 的“洗礼”(互相对视、特征偏移、自我思考)后,它们来到了工厂的出口,我们之前讲的 Token、Embedding、Attention 都是在“数学空间”里算坐标。但最后 AI 必须得给你吐出一个你能看懂的“字”。

此时,模型手里拿着的是一堆极其复杂的坐标(向量)。比如句子是 “人工智能改变了”,最后一个词“了”的输出向量已经包含了全句的精髓。

预测步骤如下:

  1. 第一步:拿到“全场精华”向量

当你的输入(比如 “床前明月”)经过了几十层 Transformer 的加工,最后一个 Token(也就是“月”字)对应的向量,已经不是原始的“月”了。

  • 这个向量里融合了:前面的“床”、“前”、“明”。

  • 这个向量里理解了:这大概率是一首唐诗。

  • 这个向量里预感到了:接下来该描写动作或意象了。


  1. 第二步:映射回字符 Linear Layer

现在模型手里攥着一个长度为 768(或者更高)的一排坐标数字。但我们的词表里有 50,000 个 候选 Token(比如“光”、“头”、“饼”、“走”……)。

模型会把这排坐标数字扔进一个巨大的转换矩阵(Linear Layer)。 这个矩阵的作用是:给词表里的 50,000 个词每一个都打个分。

  • “光”:95分(因为“床前明月光”太经典了)

  • “饼”:10分(虽然明月像饼,但在唐诗语境里不合适)

  • “头”:2分(还没到时候)


  1. 第三步:变成分数概率 Softmax

打完分后,数字可能很大也可能很小。为了方便选择,模型用数学公式把它们压缩到 0% 到 100% 之间,且加起来等于 100%。

  • “光”:98%

  • “饼”:1.5%

  • “走”:0.5%


  1. 第四步:采样 Sampling

现在概率出来了,“光”占据绝对优势。AI 会根据你的设置(比如 Temperature 温度,该概念会在下一篇文章中讲述)来选:

  • 如果你追求准确,它就选 98% 的“光”。

  • 选定之后,屏幕上就蹦出了一个 “光” 字。


  1. 第五步:循环 Autoregressive

这是 AI 能写长文章的秘诀。

  1. 刚才输入是:“床前明月” -> 输出:“光”

  2. 重点: AI 会把这个“光”字拿回来,贴在刚才的句子后面。

  3. 新的输入变成了:“床前明月光”

  4. 重新跑一遍整个 Transformer 流程: 重新算 Token、重新算位置、重新算 Attention。

  5. 这次,最后一个词变成了“光”,它去对视前面的词,预测出下一个字是 “,”

  6. 再把“,”接回去,预测出 “疑”……

这就是为什么 AI 说话是一个字一个字蹦出来的(Streaming),因为它每吐一个字,都要把前面所有的字加上新出的这个字,重新塞回模型里算一遍!但是可以发现,在实际应用中,我们并不是让模型补全我们的对话,而是提出问题,等模型组织好语言后再回答我们,这就要提到大模型进化的两个关键阶段:底座模型(Base Model)和 指令微调(Instruction Tuning)了。

  1. 原始阶段:它确实只会“接龙”

早期的 GPT(比如 GPT-1 或刚训练完的 Llama 原始版)确实像我们所担心的那样。如果你问它:

用户输入: “红烧肉怎么做?” 原始模型预测: “红烧肉怎么做才好吃?首先选五花肉,然后准备生抽……”

它并没有在“回答”你,它只是在模仿它读过的菜谱开头,顺着你的话补全。在它眼里,你给它的不是一个“问题”,而是一个“半成品句子”。


  1. 进化阶段:教它学会“对话的套路”

为了让 AI 变得像个助手,科学家们对它进行了“对话训练”(SFT, Supervised Fine-Tuning)**。

他们给模型看了几百万组“人类对话模板”:

  • 模板 A: [问题]“红烧肉怎么做?” -> [回答]“准备五花肉,步骤如下:1…”

  • 模板 B: [问题]“你是谁?” -> [回答]“我是由 Google 开发的人工智能……”

模型通过这些模板学会了一个新规则: 当它看到你的输入时,它不再试图“续写”你的问题,而是预测一个看不见的符号(比如 <Answer>),然后开始预测这个符号后面的内容。


  1. 实际应用中:模型到底在“预测”什么?

在实际应用(比如你现在和我聊天)中,后台的代码其实偷偷给你的问题穿了一层“马甲”。

当你输入 “你是谁?” 时,模型收到的真实 Token 序列可能是这样的:

<System>: 你是一个乐于助人的 AI 助手。 <User>: 你是谁? <Assistant>:

此时,模型的预测任务变成了: 根据前面这一长串(包含系统指令、你的问题、助手标识符),预测下一个最可能的词。

因为模型在训练中见过无数次 <Assistant>: 后面跟着自我介绍,所以它计算出的最高概率词就是 “我”,接着是 “是”……


  1. 为什么你会觉得它在“组织语言”?

你感觉它在“思考和组织”,其实是因为 Attention(注意力机制) 在起作用:

  1. 关联问题: 当它写下第一个字“我”的时候,它的注意力(Attention)高度集中在你的问题 “你是谁” 上。

  2. 保持逻辑: 当它写下第十个字的时候,它的注意力不仅在你的问题上,还在它刚刚写下的前九个字上。

  3. 结果: 这种“回头看”的能力,让它输出的每一个词都既符合你的问题要求,又符合它自己前面的逻辑。这种前后一致性,让我们产生了它在“有意识地组织语言”的错觉。


  1. 总结:预测即回答

所以,“预测下一个词”“回答问题” 并不矛盾:

  • 预测 是底层引擎的运作方式(就像发动机在转)。

  • 回答 是通过训练(对话模板)引导出的表现形式(就像方向盘引导车轮往哪转)。

它依然在做单选题(预测下一个字),只是它已经学会了:在一个问题后面,最合理的“下一个字”应该是答案的开头。

强化学习 (RLHF)

RLHF 的全称是 Reinforcement Learning from Human Feedback(人类反馈强化学习)。

如果说之前的训练(SFT)是让 AI “模仿” 人类说话,那么 RLHF 就是让 AI “认同” 人类的价值观。

它的三个步骤:

  1. 海选(生成): 模型针对一个问题(如:如何制造炸弹?),吐出四个不同的答案(A, B, C, D)。

  2. 选美(人类打分): 雇佣大量的人类标注员,给这些答案排序。

    • 答案 A(拒绝回答,礼貌劝导):第一名 🥇

    • 答案 B(乱码):第三名 🥉

    • 答案 C(给出了真实步骤):最后一名(不及格)

  3. 奖惩(奖励模型 Reward Model):

    • 模型会训练一个专门的“打分机器”。这个机器学会了人类的胃口:喜欢礼貌的、安全的、有帮助的回答。

    • 最后,模型通过算法(如 PPO)不断调整自己的参数,目标只有一个:让那个“打分机器”给自己打高分。

结果: AI 学会了“讨好”人类。它知道如果它说脏话或提供危险信息,它的“得分”就会变低。所以它变得温顺、礼貌。


幻觉 (Hallucination):为什么它会“一本正经地胡说八道”?

这是很多用户最头疼的问题。既然 AI 这么聪明,为什么要骗人?

真相:AI 根本没有“真理”的概念

我们要回到你最开始理解的原理:模型是根据概率预测下一个 Token。

  1. 概率陷阱: 模型在训练数据里看过“鲁迅”和“周树人”,也看过“打架”。当你问“鲁迅为什么暴打周树人?”时:

    • 在数学空间里,这几个词的关联度很高。

    • 模型并不知道“鲁迅就是周树人”,它只觉得在“鲁迅”和“周树人”后面接一个“因为…所以…”的解释,在概率上非常通顺

  2. 过度自信(Overconfidence): Transformer 架构决定了它必须吐出一个 Token。即使它不确定,它也会从概率分布里选一个相对最高的。由于它学过人类那种“自信、专业”的说话口吻,它会用最淡定的语气编造出一个不存在的年份或事实。

  3. 数据混合: AI 的知识来源是海量网页。如果网上有错误信息、科幻小说、或是讽刺文学,AI 可能会把它们当作事实融合在向量里。


长文本(Long Context)

你可能发现,有的 AI 你发给它一个 5MB 的 PDF 它就死机了,而有的(如 Gemini 或 Claude)能一口气读完 10 本《三国演义》。

核心矛盾:注意力机制的“昂贵”

还记得我们说的 QKV 全员对视吗?

  • 如果有 1,000 个 Token,每个词要看 1,000 个词,计算量是 $1,000 \times 1,000 = 100$ 万。

  • 如果有 100,000 个 Token(一本书),计算量就是 100 亿

为了记住更长的内容,科学家发明了 KV Cache(缓存机制)稀疏注意力(Sparse Attention)

  • KV Cache: 就像做阅读理解时,把读过的重点记在草稿纸上。下次预测新词时,不用重头读整本书,直接查“草稿纸”(缓存的 K 和 V 向量)就行了。

  • 线性注意力: 模型不再“全员对视”,而是通过数学技巧(比如滑动窗口或压缩),让注意力只盯着最重要的部分。


多模态(Multimodal):AI 是怎么“看见”图片的?

你给 AI 发一张猫的照片,问“这是什么?”,它能回答出来。这并不是因为它“看”到了图像,而是它把图像也变成了 Token

视觉的“分块”技术 (Vision Transformer, ViT):

  1. 切片: AI 把一张图片切成无数个小方格(比如 16x16 的小块)。

  2. 映射: 每个小方格通过一个特制的“滤镜”变成一个向量(就像单词的 Embedding 一样)。

  3. 对齐: 关键的一步来了。通过训练,AI 让“猫的图片向量”在数学空间里,离“猫”这个单词的向量非常近

结果: 在 Transformer 看来,图片切片和文字 Token 没区别,它们都在同一个 QKV 矩阵里互相“对视”。AI 看到图片的过程,本质上和读一段描述图片的文字是一样的。


推理模型(Reasoning Models):AI 的“深思熟虑”

这是目前最火的方向(比如 OpenAI 的 o1 系列)。

普通预测 vs. 推理预测

  • 普通模型(GPT-4o): 快思考。它是“直觉反应”,根据概率直接吐出下一个字。

  • 推理模型(o1): 慢思考。它引入了 思维链(Chain of Thought, CoT)

在回答你的问题之前,模型会在后台先给自己写一堆“小纸条”(隐藏的思维过程):

“用户问了这个物理题,我先列公式 A… 咦,不对,公式 A 算不出来,换公式 B 试试… 算出来了,结果是 42。”

本质改变: 以前 AI 的预测是“直线型”的,现在是“树状搜索”的。它会自我纠错、自我验证,直到找到概率最高的逻辑路径,再把最终答案告诉你。


Temperature(温度)/ Top-p(核采样)

现在想象 AI 预测下一个字的过程,就是在玩一个转盘游戏

1. 转盘是怎么画出来的

假设 AI 读完 “床前明月”,现在要预测下一个字。它数了数词表里的 5 万个词,发现有几个词概率很高,它就把这些词画在了一个巨大的转盘上:

  • “光”:占了转盘的 80%(大块区域)

  • “饼”:占了转盘的 15%(小块区域)

  • “头”:占了转盘的 5%(窄缝区域)

在默认情况下,你转一下指针,大概率会指到“光”。


2. 什么是温度

温度(Temperature) 就是一个调节参数(你可以理解为后台的一个滑块按钮)。它的作用是:根据你的喜好,重新分配转盘上每个区域的大小。

情况 A:低温(例如 0.1)——“极度保守”

当你把温度调得很低,AI 就变成了一个非常胆小、死板的人。它会把那个本来就很大的区域(光)变得超级大,几乎占据整个转盘。

  • “光”:占了 99.9%

  • “饼”:占了 0.1%

  • 结果: 指针几乎 100% 停在“光”上。

  • 为什么要这样? 因为在写代码、算算术时,我们不需要创意,只需要那个“最正确”的答案。

情况 B:正常温(例如 0.7 - 1.0)——“正常交流”

转盘保持原样,或者微调。AI 有时会选“光”,偶尔也会选个“饼”,说话比较像正常人类,有起伏。

情况 C:高温(例如 1.5 以上)——“疯狂脑洞”

当你把温度调得很高,AI 就像喝醉了。它会强行把那些窄缝区域(饼、头、甚至毫不相关的词)放大,把原本巨大的区域(光)缩小

  • “光”:占了 30%

  • “饼”:占了 25%

  • “头”:占了 20%

  • “猪”:居然也占了 10%(本来是 0%)

  • 结果: 指针可能会指到“猪”。AI 会说出:“床前明月猪”

  • 为什么要这样? 因为在写诗、写科幻小说时,我们需要这种“意外的惊喜”。


3. 为什么叫温度

这其实是从物理学(热力学)借来的词:

  • 低温: 分子不怎么动,整齐划一,非常有序

  • 高温: 分子疯狂乱动,到处乱撞,非常无序(混乱)

在 AI 里,“有序”就代表准确、死板;“无序”就代表创意、混乱。


如果说温度是“缩放员”,那么 Top-p 就是一个“剪票员”

4. Top-p 是干什么的

再回到我们的转盘。假设 AI 在预测下一个词,转盘上有 5 万个词。 除了“光”、“饼”、“头”这些概率大的,后面其实还挤着几万个概率只有 0.00001% 的词,比如“袜子”、“挖掘机”、“恐龙”……

虽然它们概率极低,但在转盘上它们依然占了一根细细的“头发丝”位置。

  • 问题: 如果你运气极差,或者温度调得稍微高了一点,指针就有可能正好停在“恐龙”上。结果 AI 就会说出:“床前明月恐龙”

  • Top-p 的作用: 它规定:“我只在概率最高的、加起来达到 p% 的这几个核心词里选,剩下的那些‘头发丝’全部剪掉,根本不给它们上转盘的机会。”


5. 它是怎么工作的

这里的 p 是一个从 0 到 1 的数字。

假设 AI 给出的概率排行榜是这样的:

  1. “光”:40%

  2. “饼”:30%

  3. “头”:15%

  4. “地”:10%

  5. “袜子”:2%

  6. “恐龙”:1% … (后面还有几万个词)

如果你设置 Top-p = 0.8(即 80%):

  1. AI 开始算加法:40% (光) + 30% (饼) = 70%(还没到 80%,继续加)。

  2. 70% + 15% (头) = 85%(停! 已经超过 80% 了)。

  3. 结果: AI 会把“光”、“饼”、“头”留下。剩下的所有词(地、袜子、恐龙……)全部踢出局。

现在的转盘上只有三个选项了。不管你温度怎么调,AI 绝对不会说出“恐龙”。


6. 温度 (Temperature) vs Top-p (核采样)

这两个参数经常被放在一起比喻:

  • Temperature(温度): 决定了你是想雨露均沾(高温),还是独宠一人(低温)。它改变的是转盘里区域的比例

  • Top-p: 决定了你候选人的圈子有多大。它直接把转盘上那些不靠谱的“小角色”给物理抹除了。


7. 为什么要同时用这两个

在实际调教 AI 时,我们通常会:

  1. Top-p 保证 AI “不乱说”(把概率极低的词直接杀掉,保证逻辑底线)。

  2. Temperature 决定 AI “多有趣”(在剩下那几个合理的词里,调配它们的出现比例)。

提示词工程(Prompt Engineering)

如果把 AI 比作一个知识渊博但有时有点“呆”的教授,提示词工程就是如何精准地给他下达指令


1. 基础:提示词的核心框架

一个完美的提示词通常包含四个元素:

  • Instruction (指令): 你想让 AI 具体做什么?(例如:“请总结这段话”)

  • Context (背景): 给 AI 一个身份或场景。(例如:“你是一位专业的生物学家”)

  • Output Indicator (输出限制): 规定格式。(例如:“请用表格形式输出,字数不超过 100 字”)

  • Input Data (输入数据): 你要处理的文本。

错误示范: “帮我写个文案。”(太模糊,AI 会随机发挥)
正确示范: “你是一位资深小红书博主(背景),请针对这款防晒霜(输入),写一篇种草笔记(指令)。要求:多用表情包,强调防水性,并在结尾带上话题(输出限制)。”


2. 进阶一:Few-Shot(少样本提示)

这是利用了 Transformer 的“上下文学习”(In-context Learning)**能力。

  • 原理: 别光下指令,给 AI 看几个例子

  • 为什么有效: AI 本质是“概率预测机器”。你给它三个例子,它就瞬间捕捉到了这些例子的模式(Pattern),然后顺着这个模式往下写。

例子:将中文成语翻译成英文幽默解释。

输入:

  1. 守株待兔:Waiting for a rabbit to hit a tree. (Waiting for luck instead of working hard)

  2. 缘木求鱼:Climbing a tree to catch fish. (Looking in the wrong place)

  1. 顺手牵羊:AI 此时就会完美模仿上面的格式和语气

3. 进阶二:CoT(思维链 / Chain of Thought)

这是目前最强大的技术,主要用于解决数学、逻辑、推理等难题。

  • 原理: 核心指令只有一句话——“请一步步思考(Let’s think step by step)”

  • 为什么有效:

    • 普通预测:AI 试图一步从“问题”跨到“答案”。如果逻辑太复杂,它就会在概率预测中走偏(产生幻觉)。

    • CoT 预测: 强制 AI 把中间的计算过程也“预测”出来。

    • 因为 AI 预测下一个字时会参考前面写下的字。当它写出了第一步逻辑,它预测第二步时就有了正确的参考依据。

对比实验:

普通 Prompt: “池塘里有 10 条鱼,死了 2 条,还剩几条?” AI(可能脑抽): “还剩 8 条。”(它没考虑到死鱼还在水里)

CoT Prompt: “请一步步思考并回答:池塘里有 10 条鱼,死了 2 条,还剩几条?” AI 思考过程:

  1. 初始鱼量是 10 条。

  2. 2 条鱼虽然死了,但题目没说它们被捞走了。

  3. 只要它们还在池塘里,数量就还是 10。 结论: 10 条。


4. 终极组合技:Few-Shot + CoT

把这两个结合起来,就是给 AI 几个“带有逻辑推导过程”的例子

这就像教孩子数学:你不仅给他看“1+1=2”,还要给他展示“因为我有 1 个苹果,妈妈又给了 1 个,所以我现在有 2 个”。


5. 提示词工程的“底层真相”

可以发现,提示词工程并不是在“教”AI 新知识,而是在:

  1. 窄化概率空间: 通过限定背景和格式,把 5 万个词里那些“不相关”的概率降到最低。

  2. 引导注意力: 通过 CoT,强迫模型的注意力(Attention)盯住关键的逻辑节点。

Outro

我们从最基础的 Token 出发,一路走过了:

  1. 微观层: Token(碎片)与 Embedding(向量)。
  2. 逻辑层: Attention(通过 QKV 矩阵实现语境偏移)。
  3. 架构层: Transformer(通过残差连接和分层堆叠构建工厂)。
  4. 行为层: RLHF(通过人类反馈训练礼仪)与 幻觉(概率预测的代价)。
  5. 前沿层: 长文本、多模态与深度推理
  6. 应用层:温度、核采样参数以及提示词工程。