【AI】大语言模型基础知识详解 - 详解

大语言模型基础知识详解

前言

ChatGPT 火了之后,"大模型"这个词天天出现在各种新闻里。但很多人其实不太清楚:大模型到底是什么?它是怎么"理解"我们说的话的?为什么有时候它会胡说八道?这篇文章用最通俗的方式,带你搞懂大语言模型的核心原理。

个人主页:你的主页


文章目录


一、什么是大语言模型

1.1 一句话定义

大语言模型(Large Language Model,简称 LLM) 就是一个用海量文本数据训练出来的"超级文字接龙机器"。

你给它一段话的开头,它就能接着往下写。

1.2 它能干什么

打个比方:大模型就像一个读过几乎所有书、看过几乎所有网页的"学霸"。你问它任何问题,它都能根据自己"读过的内容"给你一个回答。

任务类型举例
文本生成你说"帮我写一封请假邮件",它就能写出来
问答你问"Python 怎么读取文件",它告诉你代码
翻译你说"把这段话翻译成英文",它就翻译
总结你给它一篇长文章,它帮你提炼要点
代码生成你描述需求,它帮你写代码

1.3 它的本质是什么

核心原理只有一句话

大模型本质上就是在不断预测"下一个词是什么"

你输入"今天天气",它预测下一个词可能是"真好"、“不错”、“很热”…然后选一个概率最高的输出。

输出"真好"之后,它再预测"今天天气真好"后面应该接什么,可能是"适合"、“出去”…

就这样一个词一个词地往下接,直到它觉得该结束了。

所以:ChatGPT 并不是真的"理解"你说的话,它只是在做一个超级复杂的"文字接龙"游戏。


二、大模型的大体现在哪里

"大"语言模型,到底大在哪?主要体现在两个方面。

2.1 训练数据大

大模型需要"读"海量的文本才能变得"聪明"。

以 GPT-3 为例,它的训练数据来源

数据来源占比说明
网络爬虫数据60%从高质量网站爬取的内容
论坛帖子22%Reddit 等论坛的讨论
电子书16%各种书籍的电子版
维基百科3%英文维基百科全部内容

总量:大约 3000 亿个 Token(后面会解释什么是 Token)。

打个比方:如果一本书有 10 万字,3000 亿 Token 相当于 300 万本书。一个人一辈子也读不完这么多书,但大模型在训练时全部"读"过了。

2.2 参数量大

参数是大模型的"大脑神经元",参数越多,模型越"聪明"(理论上)。

OpenAI 各代模型的参数量

模型参数量类比
GPT-1(2018)1.17 亿一个小镇的人口
GPT-2(2019)15 亿一个大城市的人口
GPT-3(2020)1750 亿全球人口的 20 倍
GPT-4(2023)估计上万亿难以想象

参数到底是什么?

参数就是一堆浮点数(小数),比如 0.123456-0.789012

这些数字存储了模型从训练数据中"学到的知识"。

参数和模型大小的关系

  • 每个参数通常占 4 字节(32位浮点数)
  • 7B 模型 = 70 亿参数 ≈ 70亿 × 4 字节 ≈ 28GB
  • 这就是为什么大模型需要高端显卡才能运行

常见模型大小标记

标记含义参数量
7B7 Billion70 亿
13B13 Billion130 亿
70B70 Billion700 亿
175B175 Billion1750 亿

2.3 大数据 + 大参数 = 通用能力

以前的 AI 模型都是"专才":

  • 翻译模型只能翻译
  • 情感分析模型只能分析情感
  • 问答模型只能问答

但大模型是"通才",一个模型能干所有事情。这就是涌现能力(Emergent Abilities)——当模型足够大时,会突然"涌现"出一些小模型没有的能力。

打个比方:小模型像是只会一道菜的厨师,大模型像是什么菜都会做的大厨。


三、Token是什么

3.1 Token 的定义

Token 是大模型处理文本的基本单位,可以理解为"文本碎片"。

它不是"字",也不是"词",而是模型自己定义的一种切分方式。

3.2 Token 的例子

英文的 Token 切分

"Hello, how are you?"
↓ 切分成 Token
["Hello", ",", " how", " are", " you", "?"]

注意:空格也可能是 Token 的一部分。

中文的 Token 切分

"今天天气真好"
↓ 切分成 Token(不同模型切法不同)
["今天", "天气", "真", "好"]  # 可能这样
["今", "天", "天", "气", "真", "好"]  # 也可能这样

3.3 为什么要用 Token

问题:为什么不直接用"字"或"词"作为单位?

答案:因为语言太复杂了。

  • 如果用"字":英文 26 个字母太少,表达不了复杂语义
  • 如果用"词":词的数量太多(几十万个),而且新词不断出现

Token 是一种折中方案,通过算法(如 BPE)自动学习出一套切分规则,既不会太细,也不会太粗。

3.4 Token 和计费的关系

大模型 API 通常按 Token 数量计费:

模型输入价格输出价格
GPT-4$0.03 / 1K tokens$0.06 / 1K tokens
GPT-3.5$0.0015 / 1K tokens$0.002 / 1K tokens
Claude 3$0.015 / 1K tokens$0.075 / 1K tokens

估算规则

  • 英文:1 个 Token ≈ 4 个字符 ≈ 0.75 个单词
  • 中文:1 个 Token ≈ 1-2 个汉字

3.5 上下文长度

上下文长度(Context Length) 是模型能处理的最大 Token 数量。

模型上下文长度
GPT-3.54K / 16K
GPT-48K / 32K / 128K
Claude 3200K
Gemini 1.51M(100万)

打个比方:上下文长度就像模型的"短期记忆"。16K 的模型只能"记住"最近 16000 个 Token 的内容,超过的部分就"忘了"。

这就是为什么和 ChatGPT 聊太久,它会"忘记"之前说过的话。


四、词表是什么

4.1 词表的定义

词表(Vocabulary) 是模型认识的所有 Token 的"字典"。

每个 Token 都有一个唯一的 ID(编号),模型内部只认 ID,不认文字。

4.2 词表长什么样

{
"<|endoftext|>": 0,      // 特殊符号:文本结束
  "<|startoftext|>": 1,    // 特殊符号:文本开始
    "!": 2,
    "\"": 3,
    "#": 4,
    ...
    "hello": 15339,
    "world": 14957,
    ...
    "今天": 38014,
    "天气": 45892,
    "程序员": 52341,
    ...
    }

4.3 词表大小

不同模型的词表大小差异很大:

模型词表大小
GPT-250,257
GPT-3/4100,000+
LLaMA32,000
ChatGLM130,000+
Qwen150,000+

词表大小的影响

  • 词表太小:很多词需要拆成多个 Token,效率低
  • 词表太大:模型参数增加,训练和推理变慢

4.4 特殊 Token

词表中有一些特殊的 Token,用于控制模型行为:

Token作用
`<endoftext
`<startoftext
`<pad
`<unk
`<im_start
`<im_end

五、大模型是怎么工作的

5.1 完整工作流程

当你输入"北京的天气"时,大模型内部发生了什么?

步骤1:分词(Tokenization)
"北京的天气" → ["北京", "的", "天气"]
步骤2:转换为 Token ID
["北京", "的", "天气"] → [38014, 8024, 45892]
步骤3:输入模型,计算概率
模型输出词表中每个 Token 的概率:
{
  "怎么样": 0.35,
  "很好": 0.25,
  "预报": 0.15,
  "是": 0.08,
  ...
}
所有概率加起来 = 1
步骤4:选择概率最高的 Token
选中 "怎么样"(概率 0.35 最高)
步骤5:拼接到输入后面
"北京的天气" + "怎么样" = "北京的天气怎么样"
步骤6:重复步骤 3-5
输入 "北京的天气怎么样",预测下一个词...
继续循环,直到输出结束符或达到最大长度
步骤7:得到最终结果
"北京的天气怎么样?今天北京晴,气温 15-25 度..."

5.2 图解工作流程

┌─────────────────────────────────────────────────────────────┐
│                    大模型工作流程                            │
└─────────────────────────────────────────────────────────────┘
用户输入: "写一首关于春天的诗"
              │
              ▼
┌─────────────────────────────────────────┐
│           分词器(Tokenizer)            │
│  "写一首关于春天的诗" → [ID1, ID2, ...]  │
└─────────────────────────────────────────┘
              │
              ▼
┌─────────────────────────────────────────┐
│           大语言模型(LLM)              │
│                                         │
│  输入: [ID1, ID2, ID3, ...]             │
│                 ↓                       │
│  计算词表中每个词的概率                  │
│                 ↓                       │
│  输出: "春" (概率最高)                   │
└─────────────────────────────────────────┘
              │
              ▼
┌─────────────────────────────────────────┐
│              循环预测                    │
│                                         │
│  "写一首关于春天的诗" + "春"             │
│           ↓ 继续预测                    │
│  "写一首关于春天的诗春" + "风"           │
│           ↓ 继续预测                    │
│  "写一首关于春天的诗春风" + "拂"         │
│           ↓ ...                         │
│  直到输出结束符                          │
└─────────────────────────────────────────┘
              │
              ▼
最终输出: "春风拂面暖阳照,万物复苏百花开..."

5.3 为什么每次回答不一样

你可能发现,同样的问题问 ChatGPT 两次,回答可能不一样。

原因:模型不是每次都选概率最高的词,而是有一定的"随机性"。

这个随机性由 Temperature(温度) 参数控制:

Temperature效果
0完全确定,每次选概率最高的词,回答固定
0.7适度随机,回答有变化但不会太离谱
1.0较高随机,回答更有创意但可能跑题
2.0非常随机,回答可能很奇怪

打个比方

  • Temperature = 0:像一个严谨的学者,每次都给标准答案
  • Temperature = 1:像一个有创意的作家,每次都有新想法

六、大模型是怎么预测下一个词的

6.1 方法一:基于统计(最朴素的想法)

原理:统计大量文本中,某个词后面最常出现什么词。

举个例子

假设我们统计了 100 万条句子,发现:

"我今天" 后面出现的词:
- "很开心" → 出现 5000 次
- "去上班" → 出现 3000 次
- "吃火锅" → 出现 2000 次
- "学习了" → 出现 1500 次
...

当用户输入"我今天"时,模型查表发现"很开心"出现次数最多,就输出"很开心"。

问题:如果用户输入的内容从来没出现过怎么办?

比如用户输入"我今天和外星人",统计表里根本没有这个组合,模型就懵了。

6.2 方法二:基于向量(现代大模型的做法)

核心思想:把文字变成数字(向量),用数学计算代替查表。

什么是向量?

向量就是一组数字,比如 [0.12, -0.34, 0.56, 0.78, ...]

在大模型中,每个 Token 都会被转换成一个几百到几千维的向量。

举个例子

"国王" → [0.82, 0.15, -0.43, 0.67, ...]  (假设 4 维)
"王后" → [0.79, 0.18, -0.41, 0.65, ...]
"男人" → [0.45, 0.32, -0.12, 0.28, ...]
"女人" → [0.42, 0.35, -0.10, 0.26, ...]

神奇的事情

向量之间可以做数学运算,而且结果有语义意义!

国王 - 男人 + 女人 ≈ 王后
[0.82, 0.15, -0.43, 0.67]   # 国王
- [0.45, 0.32, -0.12, 0.28]  # 男人
+ [0.42, 0.35, -0.10, 0.26]  # 女人
= [0.79, 0.18, -0.41, 0.65]  # ≈ 王后

这说明向量确实捕捉到了词语的语义关系。

预测下一个词的过程

1. 把输入 "我今天和外星人" 转换成向量
   → [0.23, -0.45, 0.67, ...]
2. 把词表中每个词也转换成向量
   "吃饭" → [0.12, -0.34, 0.56, ...]
   "聊天" → [0.21, -0.43, 0.65, ...]
   "打架" → [0.45, -0.12, 0.23, ...]
   ...
3. 计算输入向量和每个词向量的"距离"
   距离越近,说明这个词越可能是下一个词
4. 找到距离最近的词,输出
   假设 "聊天" 距离最近 → 输出 "聊天"

优势:即使"我今天和外星人"从来没出现过,模型也能通过向量计算找到合理的下一个词。

6.3 实际大模型更复杂

真正的大模型不只是简单的向量计算,还包括:

技术作用
Transformer 架构处理序列数据的神经网络结构
注意力机制(Attention)让模型关注输入中最重要的部分
多层堆叠GPT-3 有 96 层,每层都在提取更高级的特征
位置编码让模型知道每个词的位置

但核心思想不变:把文字变成向量,用数学计算预测下一个词


七、大模型是怎么训练出来的

7.1 训练的目标

训练的目标很简单:让模型能够准确预测下一个词

7.2 训练数据

现代大模型的训练数据通常在 2 万亿 Token 以上

数据来源包括:

  • 网页内容(Common Crawl)
  • 书籍(Books3、Gutenberg)
  • 代码(GitHub)
  • 论文(arXiv)
  • 维基百科
  • 社交媒体

7.3 训练流程(以训练"程序员写代码"为例)

┌─────────────────────────────────────────────────────────────┐
│                    大模型训练流程                            │
└─────────────────────────────────────────────────────────────┘
训练数据: "程序员写代码"
第1轮:
┌─────────────────────────────────────────┐
│ 输入: "程"                               │
│ 期望输出: "序"                           │
│ 模型输出: "hello"(随机初始化,瞎猜的)   │
│ 损失: 很大(差得远)                      │
│ 更新参数,让模型下次更可能输出 "序"       │
└─────────────────────────────────────────┘
第2轮:
┌─────────────────────────────────────────┐
│ 输入: "程序"                             │
│ 期望输出: "员"                           │
│ 模型输出: "设"(还是不对)               │
│ 损失: 较大                               │
│ 继续更新参数                             │
└─────────────────────────────────────────┘
第3轮:
┌─────────────────────────────────────────┐
│ 输入: "程序员"                           │
│ 期望输出: "写"                           │
│ 模型输出: "写"(对了!)                 │
│ 损失: 很小                               │
│ 参数微调                                 │
└─────────────────────────────────────────┘
... 重复几万亿次 ...
最终:模型学会了预测下一个词

7.4 关键概念

损失函数(Loss)

衡量模型预测和正确答案之间的差距。损失越小,模型越准确。

梯度下降(Gradient Descent)

一种优化算法,通过计算损失对参数的导数,找到让损失变小的参数更新方向。

打个比方

  • 损失函数就像考试分数(越高越差)
  • 梯度下降就像根据错题分析,找到提分的方法
  • 训练就是不断做题、分析、改进的过程

7.5 训练成本

训练大模型非常昂贵:

模型估计训练成本
GPT-3约 460 万美元
GPT-4约 1 亿美元
LLaMA 65B约 230 万美元

这还不包括研发人员工资、数据收集成本等。


八、为什么有些模型中文很差

8.1 根本原因:词表中中文 Token 太少

模型能处理什么语言,取决于词表里有什么 Token。

举个例子

假设一个模型的词表只有:

["hello", "world", "the", "a", "is", ...]  // 全是英文

当你输入中文"你好"时,模型根本不认识,只能把它当作 <unk>(未知词)处理。

8.2 中文 Token 少的后果

后果一:中文被拆得很碎

英文模型处理 "hello":
"hello" → 1 个 Token
英文模型处理 "你好":
"你好" → 可能被拆成 6 个字节 Token

同样的内容,中文需要更多 Token,导致:

  • 上下文长度被浪费
  • API 调用费用更高
  • 处理速度更慢

后果二:中文理解能力差

词表中中文 Token 少,意味着训练时中文数据也少,模型对中文的"理解"自然就差。

8.3 中文友好的模型

专门为中文优化的模型,词表中会包含大量中文 Token:

模型词表大小中文支持
GPT-3.5/4100K+一般
Claude100K+较好
ChatGLM130K+很好
Qwen(通义千问)150K+很好
Baichuan64K+很好

8.4 如何判断模型的中文能力

方法一:看 Token 数量

# 用 tiktoken 库测试
import tiktoken
enc = tiktoken.encoding_for_model("gpt-4")
text = "人工智能正在改变世界"
tokens = enc.encode(text)
print(f"Token 数量: {len(tokens)}")
print(f"Tokens: {tokens}")

如果一句简单的中文被拆成很多 Token,说明中文支持不好。

方法二:直接测试

问一些需要中文语言知识的问题:

  • 成语接龙
  • 古诗词补全
  • 中文谐音梗

九、大模型的局限性

了解大模型的原理后,我们就能理解它的局限性了。

9.1 幻觉(Hallucination)

现象:大模型会一本正经地胡说八道,编造不存在的事实。

原因:大模型只是在预测"下一个词最可能是什么",它并不知道自己说的是真是假。

举个例子

用户:鲁迅和周树人是什么关系?
ChatGPT(可能的回答):
鲁迅和周树人是同时代的两位著名作家,他们曾经有过一些学术交流...

实际上鲁迅就是周树人,但模型不"知道"这个事实,它只是根据概率在接龙。

9.2 知识截止日期

现象:大模型不知道训练数据之后发生的事情。

原因:模型的知识来自训练数据,训练完成后就"定格"了。

模型知识截止日期
GPT-3.52021 年 9 月
GPT-42023 年 4 月
Claude 32024 年初

9.3 数学计算能力差

现象:大模型经常算错数学题。

原因:大模型是"文科生",它是通过文本模式匹配来"算"数学的,而不是真的在计算。

用户:123456 × 789 = ?
大模型的思考过程:
"嗯,这个数字看起来像是...97406784?"
(实际答案是 97406784,但模型是"猜"的,不是算的)

对于复杂计算,大模型经常出错。

9.4 上下文长度限制

现象:聊天太久,模型会"忘记"之前说过的话。

原因:模型只能处理有限长度的 Token,超出部分会被截断。

解决方案

  • 使用更长上下文的模型(如 Claude 200K)
  • 使用 RAG(检索增强生成)技术
  • 定期总结对话内容

9.5 无法访问实时信息

现象:大模型不知道今天的天气、最新的新闻。

原因:大模型是离线训练的,不能上网。

解决方案

  • 使用联网插件(如 ChatGPT 的 Browse)
  • 使用 Function Calling 调用外部 API
  • 使用 RAG 检索最新文档

9.6 局限性总结

局限性原因解决方案
幻觉只是概率预测,不知真假人工核实、RAG
知识过时训练数据有截止日期联网搜索、RAG
数学差文本模式匹配,不是真计算调用计算器工具
忘记上文上下文长度限制长上下文模型、总结
无实时信息离线模型,不能上网联网插件、API

十、总结

10.1 核心概念速查表

术语含义
LLMLarge Language Model,大语言模型
Token文本片段,模型处理的基本单位
词表模型认识的所有 Token 的字典
参数模型的"大脑神经元",存储学到的知识
上下文长度模型能处理的最大 Token 数量
Temperature控制输出随机性的参数
幻觉模型编造不存在的事实
BBillion,10 亿(7B = 70 亿参数)

10.2 核心原理一句话

大模型本质上就是一个超级复杂的"文字接龙"机器,通过预测"下一个词最可能是什么"来生成文本。

10.3 大模型的能力来源

┌─────────────────────────────────────────────────────────────┐
│                    大模型能力三要素                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 海量训练数据(几万亿 Token)                             │
│     → 让模型"见多识广"                                      │
│                                                             │
│  2. 巨大参数量(几百亿到上万亿)                             │
│     → 让模型能"记住"更多模式                                │
│                                                             │
│  3. 先进的模型架构(Transformer + 注意力机制)               │
│     → 让模型能"理解"上下文关系                              │
│                                                             │
│  三者缺一不可,共同造就了大模型的强大能力                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

10.4 常见模型对比

模型公司参数量特点
GPT-4OpenAI万亿级综合能力最强
Claude 3Anthropic未公开长上下文、安全性好
GeminiGoogle未公开多模态能力强
LLaMA 3Meta8B/70B开源、可本地部署
Qwen阿里7B-72B中文能力强、开源
ChatGLM智谱6B-130B中文能力强、开源

10.5 学习建议

  1. 先会用,再理解原理:先用 ChatGPT 等产品,感受大模型能做什么
  2. 理解 Token 概念:这是理解大模型的基础
  3. 了解局限性:知道大模型不能做什么,避免踩坑
  4. 关注 Agent 和 RAG:这是大模型落地应用的关键技术

热门专栏推荐

等等等还有许多优秀的合集在主页等着大家的光顾,感谢大家的支持

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力

posted on 2026-01-15 19:09  ljbguanli  阅读(0)  评论(0)    收藏  举报