一堂课搞懂生成式人工智能原理:从“文字接龙”理解 ChatGPT 背后的核心逻辑

先叠甲,这篇文章内容来自对于国立台湾大学李宏毅老师开设的【生成式人工智慧與機器學習導論2025】这门课。笔者认为老师讲的十分生动有趣,所以想把自己所学到的东西在这里分享给大家。

如果各位想更进一步进行学习,可以去看李宏毅老师的原视频,链接已经给你们附在下面了

课程视频网址:https://youtu.be/TigfpYPJk1s?si=0Ntc1xMS-arLSHsG
课程网站网址:https://speech.ee.ntu.edu.tw/~hylee/GenAI-ML/2025-fall.php

前言

现在大家每天都在用 ChatGPT、Gemini、Claude 这类生成式 AI 工具。

你问它一个问题,它可以写文章、写代码、翻译、总结、聊天,甚至还可以生成图片、声音和视频。
这时候我们很自然会有一个疑问:

这些生成式 AI 到底是怎么做到的?

它是真的“理解”了我的问题吗?
它是在查资料库吗?
它为什么有时候会一本正经地胡说八道?
它为什么同一个问题问两次,回答可能不一样?
它又是怎么记住前面聊天内容的?

这篇文章就用比较通俗的方式,梳理李宏毅老师《生成式人工智慧與機器學習導論2025》第 1 讲的内容。

如果只用一句话概括这节课:

生成式 AI 的核心,其实就是让机器学会“接下去生成”。

对于语言模型来说,这件事可以更具体地说成:

语言模型本质上就是在做“文字接龙”。

听起来好像很简单,对不对?
但厉害的地方就在于:它不是随便接,而是根据大量资料训练出来的统计规律,一步一步接出看起来非常合理、甚至非常聪明的答案。


一、先不要把生成式 AI 想得太神秘

我们平常看到生成式 AI,可能会觉得它很神奇:

  • 可以回答问题
  • 可以写作文
  • 可以写程序
  • 可以做摘要
  • 可以生成图片
  • 可以生成语音
  • 可以生成视频

于是很多人会想:

AI 是不是脑袋里真的有一个知识库?
它是不是先理解问题,然后从数据库里面找答案?
它是不是像人一样在思考?

这时候我们先把这些想象放一边。

从语言模型的技术角度来看,它做的事情可以先简化成一个非常朴素的任务:

给它一段文字,它预测下一个最有可能出现的文字单位。

这个“文字单位”就是我们后面要讲的 Token

比如给模型一句话:

今天的天气很

模型可能会预测下一个 Token 是:

于是句子变成:

今天的天气很好

然后模型继续预测下一个 Token。
这样一直预测、一直接下去,就形成了一整段回答。

所以,语言模型最底层的运行方式,可以理解成:

输入一段文字 → 预测下一个 Token → 接回去 → 再预测下一个 Token → 不断重复

这就是所谓的:

Auto-Regressive Generation

也就是自回归生成


二、语言模型其实是在做“文字接龙”

我们小时候可能玩过文字接龙。

比如:

我今天去学校

接下来你可能会接:

上课

然后变成:

我今天去学校上课

再接下去可能是:

,老师讲了人工智能

语言模型做的事情,其实就很像这个过程。

不同的是,人类接龙靠的是自己的语言经验和常识;
语言模型接龙靠的是训练过程中学到的大量统计规律。

我们可以把语言模型想成一个函数:

输入:前面已经出现的文字
输出:下一个 Token 的概率分布

比如输入:

人工智能的核心是

模型不是直接只给出一个答案,而是会给出很多候选 Token 的概率。

例如:

学习        0.35
数据        0.20
模型        0.18
算法        0.12
...

也就是说,模型真正做的不是“直接吐出答案”,而是:

计算下一个位置上,每个 Token 出现的可能性。

然后系统再从这些候选结果里选一个 Token 出来,接到原来的文字后面。

这一步就是生成。


三、什么是 Token

要理解语言模型,一定要先理解 Token。

很多人以为模型是一个字一个字,或者一个词一个词地处理语言。
但实际上,模型处理的是 Token。

Token 可以粗略理解成:

模型眼中的最小文字单位。

它有时候可能是一个字,有时候可能是一个词,有时候也可能是半个词,甚至是一个标点符号。

比如一句话:

I love machine learning.

在模型眼中,可能会被切成类似这样的单位:

I
love
machine
learning
.

中文也会被切成 Token,比如:

我喜欢人工智能

可能会被切成:

我
喜欢
人工
智能

不同模型的 Tokenizer 不一样,所以切法也可能不同。


四、Tokenizer:文字和数字之间的翻译器

模型本身并不直接认识文字。

对于计算机来说,真正能处理的是数字。
所以在文字进入模型之前,需要先经过一个转换过程。

这个过程就叫:

Tokenization

负责做这件事的工具叫:

Tokenizer

Tokenizer 主要做两件事:

1. Encode:文字转 Token 编号

文字 → Token → Token ID

例如:

"hello" → 15339

这里的 15339 只是举例,不同模型会不同。

2. Decode:Token 编号转回文字

Token ID → Token → 文字

例如:

15339 → "hello"

所以完整过程可以理解成:

人类输入文字
↓
Tokenizer 把文字变成数字
↓
模型处理数字
↓
模型输出新的 Token 编号
↓
Tokenizer 再把编号变回文字

这就是为什么我们看到的是自然语言,但模型里面实际在处理的是一串数字。


五、模型输出的不是答案,而是概率分布

很多人以为模型看到问题以后,会直接算出一个标准答案。

其实不是。

模型每一步输出的都是:

下一个 Token 的概率分布。

比如你输入:

中国的首都是

模型可能会给出:

北京      0.90
上海      0.03
南京      0.02
城市      0.01
...

概率最高的是“北京”,所以模型大概率会接出:

中国的首都是北京

但是注意,模型不是查了一个叫“首都表”的数据库才知道这个答案。
它是根据训练时学到的语言和知识模式,预测“北京”这个 Token 在这里最可能出现。

这也是为什么语言模型看起来很像在回答问题,但从底层机制看,它其实是在做:

条件概率预测

也就是:

在前文已经给定的情况下,下一个 Token 最可能是什么?

六、为什么同一个问题问两次,答案可能不一样

很多人用 ChatGPT 的时候会发现:

同一个问题,问两次,答案可能不完全一样。

这是为什么?

因为模型在生成时,通常不是永远选择概率最高的 Token。
它可能会进行一个动作,叫:

Sampling

也就是抽样。

你可以把它想成:

模型先给每个候选 Token 一个概率,然后根据概率“掷骰子”。

概率高的 Token 更容易被抽到,概率低的 Token 也不是完全没机会。

所以同一个 Prompt,模型每次生成时,可能会抽到不同的 Token。
第一个 Token 不同,后面的生成路径也会跟着不同。

这就解释了为什么:

  • 同一个问题多问几次,回答会有差异
  • 有时候回答更保守
  • 有时候回答更有创意
  • 有时候甚至会开始跑偏

如果完全不抽样,每次都选概率最高的 Token,回答会更稳定,但可能比较死板。
如果随机性太高,回答会更有变化,但也更容易乱讲。


七、Top-K Sampling:不要让模型乱抽

如果模型完全按照概率分布随机抽,有可能抽到一些概率非常低、很奇怪的 Token。

比如某个 Token 的概率只有:

0.00001

但它还是理论上可能被抽到。

如果真的抽到了,后面的句子就可能越来越怪。

所以实际生成时,经常会使用一些限制方法,比如:

Top-K Sampling

它的想法很简单:

只从概率最高的前 K 个 Token 里面抽样。

比如 K = 5,那模型只考虑概率最高的 5 个候选 Token,其他全部排除。

这样可以兼顾两个目标:

  • 保留一定随机性
  • 避免抽到太离谱的 Token

你可以把它理解成:

不是什么都可以接,至少要在比较合理的候选范围里面接。

这也是生成式 AI 能控制输出质量的重要方法之一。


八、语言模型要学会什么

如果语言模型只是做文字接龙,那为什么它能回答那么多复杂问题?

因为要做好文字接龙,并没有我们想象中那么简单。

比如输入:

水在标准大气压下的沸点是

如果模型要正确接出:

100 摄氏度

它至少需要两类能力。


1. 语言知识

它要知道一句话怎么接才通顺。

比如:

我今天吃了一个

后面比较可能是:

苹果

而不是:

跑步

这种能力来自语言规律,比如:

  • 语法
  • 搭配
  • 句子结构
  • 上下文关系

2. 世界知识

它还要知道现实世界中的事实。

比如:

太阳从东方

更合理的接法是:

升起

而不是:

睡觉

这种能力就涉及世界知识,比如:

  • 科学常识
  • 历史事实
  • 地理知识
  • 人物关系
  • 生活经验

所以,表面上模型只是在做文字接龙,但为了接得好,它必须从大量数据中学到语言知识和世界知识。


九、这些知识是怎么来的

模型不是程序员一条一条写规则教出来的。

不是有人手动写:

如果用户问“中国首都是哪里”,就回答“北京”

也不是有人把所有问题答案都整理成数据库。

语言模型主要是通过大量文本训练出来的。

训练过程大致可以理解为:

  1. 给模型看大量文字
  2. 遮住后面的部分,让模型预测下一个 Token
  3. 如果预测错了,就调整参数
  4. 重复很多很多次

模型里面有大量参数。
这些参数一开始是随机的,训练过程中不断被调整。

最后模型就学会了:

在什么样的上下文后面,应该接什么样的 Token。

这就是语言模型能力的来源。


十、AI 幻觉是怎么来的

了解完上面的机制后,我们就能理解一个非常重要的问题:

为什么 AI 会幻觉?

所谓 AI 幻觉,就是模型生成了看起来很合理,但实际上是错误的内容。

比如:

  • 编造不存在的论文
  • 编造不存在的人名
  • 编造错误的代码 API
  • 编造错误的历史事实
  • 一本正经地给出错误解释

为什么会这样?

因为语言模型本质上不是在查数据库。
它是在根据上下文预测下一个 Token。

如果某个错误答案在语言形式上很合理,模型就有可能把它接出来。

换句话说:

模型擅长生成“看起来像答案的文字”,但这不保证它一定是真实答案。

这句话非常关键。

语言模型不是事实校验器。
它的生成目标不是“保证每句话都真实”,而是“在当前上下文中生成最可能的后续文字”。

所以我们使用 AI 时一定要记得:

AI 的回答需要验证,尤其是涉及医学、法律、金融、论文、代码 API 等高风险内容时。


十一、ChatGPT 为什么能聊天

普通语言模型只是接文字。
那为什么 ChatGPT 可以像聊天机器人一样对话?

这里就要讲到两个概念:

  • Chat Template
  • System Prompt

十二、Chat Template:把聊天格式包装起来

我们平常输入一句话:

请帮我解释一下什么是机器学习

系统不一定是原封不动地把这句话交给模型。

它可能会包装成一种特定格式,比如:

User: 请帮我解释一下什么是机器学习
Assistant:

模型看到这种格式,就知道接下来应该生成 Assistant 的回答。

这就是 Chat Template 的作用。

它把普通文本变成一种对话格式,让模型更容易按照“聊天”的方式来生成。


十三、System Prompt:给模型一个隐藏设定

除了用户输入,系统还可能在前面加上一段指令。

比如:

你是一个有帮助的 AI 助手。
请用简洁、准确、友善的方式回答用户问题。

这类内容一般用户看不到,但模型看得到。

它会影响模型的回答方式。

比如:

  • 用什么语气回答
  • 是否要拒绝某些请求
  • 是否要保持安全
  • 是否要遵循特定格式
  • 是否要扮演某种角色

这就是 System Prompt。

所以 ChatGPT 并不只是一个裸语言模型。
它是在语言模型外面又加了很多对话系统设计。


十四、多轮对话是怎么实现的

还有一个很常见的问题:

ChatGPT 是不是记得我们刚刚聊过什么?

从底层机制看,它不是像人一样“记得”。
更准确地说:

系统把前面的对话历史一起放进新的 Prompt 里。

比如第一轮:

User: 我叫小明
Assistant: 好的,小明,很高兴认识你。

第二轮你问:

User: 我叫什么?

系统实际给模型看的可能是:

User: 我叫小明
Assistant: 好的,小明,很高兴认识你。
User: 我叫什么?
Assistant:

模型看到前文里面有“我叫小明”,所以就能回答:

你叫小明。

所以,多轮对话的本质是:

把历史记录拼到 Prompt 里面,让模型基于完整上下文继续生成。

这也是为什么上下文长度很重要。
如果对话太长,前面的内容可能放不进去,模型就可能“忘记”。
这也就是所谓的上下文窗口的限制,你可以理解为一次性你输入给模型的上下文窗口大小是有限
如果你的对话太长的话会导致最前面的内容没有纳入这个上下文窗口中

从而导致了遗忘的现象

ps:不过目前来讲国外主流大模型的上下文token大概在100w左右,相当于三部《三体》的长度。
所以各位不需要太担心在正常对话中出现token用超了的情况。


十五、RAG:减少幻觉的重要方法

既然语言模型会幻觉,那有没有办法减少?

有一个非常重要的方法叫:

RAG

全称是:

Retrieval Augmented Generation

中文可以翻译成:

检索增强生成

它的想法也很直观:

先去外部资料库找相关资料,再把资料塞给模型,让模型根据资料回答。

比如你问:

请总结公司最新的报销制度

如果模型只靠自己参数里的知识,它可能根本不知道你公司的最新制度。

但如果我们先从公司知识库检索出相关文档,再把文档内容放进 Prompt,模型就可以基于这些资料回答。

RAG 的流程大概是:

用户提问
↓
系统去资料库搜索相关内容
↓
把检索到的内容和问题一起交给模型
↓
模型根据资料生成答案

这样做的好处是:

  • 减少模型乱编
  • 可以回答模型训练后才出现的新知识
  • 可以接入企业内部资料
  • 回答更容易追溯来源

所以 RAG 可以理解为:

给语言模型外挂一个资料查找系统。


十六、生成式 AI 不只是生成文字

到目前为止,我们主要在讲语言模型。

但生成式 AI 不只可以生成文字,还可以生成:

  • 图片
  • 音乐
  • 声音
  • 视频
  • 3D 物体
  • 程序代码

那这些东西和语言模型有什么关系?

老师讲了一个很重要的统一视角:

万物皆 Token。

这句话听起来有点夸张,但非常有帮助。


十七、图片也可以变成 Token

一张图片看起来是二维像素矩阵。
但是我们可以通过某种编码器,把它压缩成一串离散的表示。

这些表示也可以看成视觉 Token。

于是生成图片,也可以变成类似的问题:

前面已经有这些视觉 Token,接下来应该生成哪个视觉 Token?

当然,实际图像生成模型有很多不同技术路线,比如扩散模型等。
但从高层抽象看,很多生成任务都可以被理解成:

生成一串有结构的 Token。


十八、声音也可以变成 Token

声音本来是连续波形。

但我们也可以把声音经过编码,转换成一串音频 Token。

然后模型就可以生成这些 Token,再把它们解码回声音。

所以语音生成也可以理解为:

生成音频 Token → 解码成声音

这样一来,文字、图片、声音、视频这些任务就可以放在一个统一框架下理解。


十九、生成式 AI 的统一理解

不管是生成文字、图像还是声音,本质上都可以抽象成:

给定条件
↓
生成下一个 Token
↓
不断重复
↓
得到完整作品

所以生成式 AI 的核心不是“复制已有内容”,而是:

根据训练学到的规律,在给定条件下生成新的复杂对象。

这个对象可以是一篇文章,也可以是一张图片,也可以是一段语音。


二十、开源模型实作:Hugging Face、Transformers 和 Colab

课程后半部分还进入了实作。

如果我们想实际操作语言模型,常见工具包括:

  • Hugging Face
  • Transformers
  • Colab
  • Tokenizer
  • 开源语言模型,例如 Llama 系列

二十一、Hugging Face 是什么

Hugging Face 可以理解成一个模型平台。

你可以在上面找到很多开源模型,比如:

  • 语言模型
  • 图像模型
  • 语音模型
  • 多模态模型

它有点像 AI 模型界的 GitHub。

别人训练好的模型可以放在上面,你也可以下载下来使用。


二十二、Transformers 是什么

Transformers 是 Hugging Face 提供的一个非常常用的 Python 套件。

它可以帮助我们:

  • 下载模型
  • 下载 Tokenizer
  • 输入文字
  • 生成输出
  • 调用模型推理

如果不用这些工具,我们要自己处理模型文件、Tokenizer、生成流程,会非常麻烦。


二十三、Colab 是什么

Colab 是 Google 提供的在线 Python 环境。

它的好处是:

  • 不用本地安装复杂环境
  • 可以直接写 Python
  • 有时可以使用免费 GPU
  • 适合初学者做 AI 实验

所以对于刚开始学习生成式 AI 的同学来说,Colab 是一个比较友好的起点。


二十四、手动做一次文字接龙

为了真正理解语言模型,我们可以想象手动做一次生成。

流程大概是:

1. 输入一句 Prompt
2. Tokenizer 把它转成 Token ID
3. 模型输出下一个 Token 的概率分布
4. 根据概率选择一个 Token
5. 把这个 Token 接回去
6. 重复前面的步骤

伪代码可以写成:

prompt = "人工智能的未来是"

for step in range(20):
    token_ids = tokenizer.encode(prompt)
    next_token_distribution = model(token_ids)
    next_token = sample(next_token_distribution)
    prompt = prompt + tokenizer.decode(next_token)

print(prompt)

当然真实代码会更复杂,但核心思路就是这样。

这一步做完,你会发现:

原来模型不是一次生成整篇文章,而是一个 Token 一个 Token 接出来的。


二十五、为什么 Prompt 很重要

既然模型是根据前文预测下一个 Token,那前文写得怎么样就非常关键。

Prompt 不只是“提问”,它其实是在给模型提供上下文。

不同 Prompt 会让模型进入不同的生成轨道。

比如:

解释什么是机器学习。

和:

请用适合大一学生理解的方式,举生活例子解释什么是机器学习。

这两个 Prompt 会产生完全不同的回答。

前者比较宽泛,模型可能回答得比较抽象。
后者给出了更明确的要求,所以模型更容易生成符合需求的内容。

所以 Prompt Engineering 的核心不是“咒语”,而是:

给模型足够清楚的上下文和任务约束。


二十六、为什么模型有时候看起来很聪明

看到这里你可能会想:

如果模型只是接龙,那为什么它看起来会推理、会写代码、会解释复杂概念?

关键在于:

当模型在海量数据中学会了足够复杂的模式后,“接下去生成”这件事就可能表现出很强的能力。

比如它见过很多数学解题过程。
当你给它一道类似题目时,它可能会接出类似的推导步骤。

它见过很多代码和解释。
当你让它写程序时,它可能会接出符合语法和逻辑的代码。

所以模型表现出的智能,很大程度上来自:

  • 大量数据
  • 大模型参数
  • 训练目标
  • 对上下文的利用
  • 后续对齐和优化

但我们也要记得:

看起来像会推理,不等于每次都真的可靠。

这就是为什么模型既强大,又需要验证。


二十七、这节课真正想让我们理解什么

这节课不是单纯教你怎么使用 ChatGPT。
更重要的是让我们理解:

生成式 AI 背后的基本原理并不是魔法。

你不需要一开始就懂所有数学公式,也不需要一开始就能训练大模型。
但你至少应该建立一个清楚的直觉:

生成式 AI = 根据输入条件,不断生成下一个 Token

语言模型是这样。
很多图像、语音生成任务也可以从类似角度理解。

理解了这个直觉后,你再去看:

  • Prompt
  • Tokenizer
  • Sampling
  • Hallucination
  • RAG
  • Chat Template
  • 多轮对话
  • 开源模型实作

这些概念就不会是零散的名词,而是能串成一条线。


二十八、全文总结

最后我们再总结一下这堂课的内容

1. 语言模型本质上是在做文字接龙

它根据前面的文字,不断预测下一个 Token。


2. 模型输出的是概率分布

模型不是直接给一个固定答案,而是给出下一个 Token 的概率分布。


3. Sampling 让回答有随机性

同一个问题问多次,答案可能不同,是因为生成过程中可能有抽样。


4. Token 是模型处理文字的基本单位

模型不是直接理解人类文字,而是通过 Tokenizer 把文字转成 Token ID。


5. AI 幻觉来自生成机制

模型是在生成“合理的后续文字”,不保证每句话都真实。


6. ChatGPT 的对话能力依赖模板和上下文

Chat Template、System Prompt、多轮历史记录,都会影响模型回答。


7. RAG 可以减少幻觉

RAG 先检索外部资料,再让模型基于资料回答,可以提高可靠性。


8. 生成式 AI 不只是文字

图片、声音、视频也可以被表示成 Token 或类似结构,进而被模型生成。


9. Hugging Face 和 Transformers 可以帮助我们实作模型

通过开源工具,我们可以真正观察 Tokenizer、模型生成和文字接龙过程。


如果你只记住一句话,那就是:

生成式 AI 并不是凭空变魔术,它是在给定上下文后,一步一步预测并生成下一个 Token。

当你理解了这句话,再回头看 ChatGPT,你会发现它既没有那么神秘,也没有那么简单。

它像是在玩文字接龙,
但它玩的是一个超级复杂、超级大规模、从全世界资料里学来的文字接龙。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐