用Python来模拟Token预测过程

系列文章见: 《回忆AI时代-从图灵机到人工智能》

完整预测过程。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
用户输入

"什么是机器学习"



① Tokenizer
─────────────────────
["什么","是","机器","学习"]



② Token ID
─────────────────────
[3,5,7,9]



③ Embedding
─────────────────────
[[0.2,0.5,...],
[0.8,0.1,...],
...]



④ Transformer
─────────────────────
Attention
MLP
LayerNorm
...
得到新的隐藏状态



⑤ Linear
─────────────────────
变成 vocab_size 个分数(Logits)



⑥ Softmax
─────────────────────
每个Token一个概率

"一种" 0.42
"人工智能"0.31
"模型"0.15
...



⑦ 选择概率最大的Token

输出:
"一种"



加入输入

"什么 是 机器 学习 一种"

继续预测...

Read More

DeepSeek深度求索

系列文章见: 《回忆AI时代-从图灵机到人工智能》

DeepSeek

深度求索(DeepSeek)成立于2023年,专注于研究世界领先的通用人工智能底层模型与技术,挑战人工智能前沿性难题。在2025年初DeepSeek发布了高性价比的DeepSeek-R1模型,同时英伟达股价在2025年1月27日单日暴跌近17%,市值蒸发约6000亿美元。

DeepSeek有种后来者居上的的趋势,它的核心竞争力包括:

  • 同等效果下,成本更低:DeepSeek最受关注的是其论文和技术报告中提到,它在训练和推理成本方面做了大量优化,在相对较低的成本下,取得了接近甚至在部分任务上超过国际领先模型的表现。
  • 开源:DeepSeek将多个模型权重开源,任何企业或个人都可以下载部署、研究和二次开发。
  • 推理能力强:特别是DeepSeek的R1推理模型,在数学、编程、逻辑推理等任务上表现突出。

成本更低

下面是OpenAI GPT API(GPT-5.5与DeepSeek API(V4 系列)的官方价格对比(截至 2026年8月)

模型 输入价格(1M Tokens) 缓存输入(1M Tokens) 输出价格(1M Tokens) 上下文长度
GPT-5.5 $5.00 $0.50 $30.00 1.05M Tokens ([OpenAI Developers][1])
DeepSeek V4 Pro $0.435 约 $0.0036 $0.87 1M Tokens ([Solvimon][2])
DeepSeek V4 Flash $0.14 约 $0.0028 $0.28 1M Tokens ([Reuters][3])
对比 GPT-5.5 DeepSeek V4 Pro DeepSeek V4 Flash
输入价格 $5.00 便宜约 11.5 倍 便宜约 35.7 倍
输出价格 $30.00 便宜约 34.5 倍 便宜约 107 倍
缓存输入 $0.50 便宜约 138 倍 便宜约 179 倍

可以看出,在大规模文本生成场景下,DeepSeek的API成本优势非常明显。

开源

开源是DeepSeek相比ChatGPT(OpenAI 旗舰模型)的核心优势之一,但它的价值主要体现在企业和开发者。

优势 DeepSeek(开源) ChatGPT(闭源)
模型权重 可下载 不提供
私有化部署 可以 不支持旗舰模型
离线运行 可以 不可以
模型微调 可以 无法微调模型权重
查看模型结构 可以 不公开
自定义修改 可以 不可以
数据完全本地 可以 需使用云服务(除特定企业方案)
社区贡献 全球开发者参与 官方维护

举一个具体的应用场景,譬如银行对数据非常重视,可以将模型下载到银行内网,这样不会向公网发送信息更安全可靠。

乌敏岛20公里🚴🏻‍♀️骑行

新加坡🇸🇬工作与生活指南: 系列文章概览

2026.8.2日(周日)一行6人,🚴🏻‍♂️骑行乌敏岛(Pulau Ubin):

  • 位置:新加坡东北,隔着柔佛海峡靠近马来西亚,毗邻德光岛
  • 面积:10.2平方公里,曾是花岗岩采石场,废弃矿坑积水形成网红翡翠矿湖
  • 特色:没有高楼、红绿灯,以丛林、橡胶园、红树林湿地为主;常住居民仅数十人
  • 定位:适合骑行、自然徒步、观鸟、看原始红树林
乌敏岛

上岛可以到地址Changi Point Ferry Terminal(邮编:499172),然后坐渔民的船去乌敏岛,如果自己带车可以放在船尾,单程到岛上4新币,自己带车外加2新币,全程来回12新币,需要自备现金。如果不想带自己的自行车也可以到岛上租车,大约8-20新币间可以租大概12小时。另外,还要自备一些水和吃的,我带了两瓶水和一瓶罐装咖啡,并做好防晒、防蚊(岛上蚊虫比较多)。

切记上岛前一定要备现金,因为岛上信号不好,多数情况下无法移动支付。

我是自己带的车,因为自己车骑起来更舒服一些。
骑行照片

📍乌敏岛是新加坡第三大岛,按面积排序:

排名 岛屿 面积(约) 是否可自由前往
1 新加坡本岛(Singapore Island) 730+ 平方公里
2 德光岛(Pulau Tekong) 24.4 平方公里 主要为军事训练区
3 乌敏岛(Pulau Ubin) 10.2 平方公里
4 圣淘沙(Sentosa) 约5 平方公里

岛上人少景美,非常适合骑行和徒步。
自然风光

BP神经网络

系列文章见: 《回忆AI时代-从图灵机到人工智能》

假设你每天都会根据一些因素决定是否骑车,我们希望训练一个BP神经网络来学习你的决策习惯。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
import numpy as np

# ==========================================================
# 1. Sigmoid 激活函数
# ==========================================================
# 神经元输出不能直接使用加权和
# 而是需要经过激活函数
#
# Sigmoid 可以把任意数字压缩到 0~1
#
# 输入:-10 -1 0 1 10
# 输出:0.00 0.27 0.50 0.73 1.00
#
def sigmoid(x):
return 1 / (1 + np.exp(-x))


# ==========================================================
# Sigmoid 导数
# ==========================================================
# BP反向传播需要计算梯度
#
# Sigmoid'(x)=Sigmoid(x)*(1-Sigmoid(x))
#
def sigmoid_derivative(y):
return y * (1 - y)


# ==========================================================
# 2. 训练数据
# ==========================================================
#
# 输入:
# 天气(晴=1 雨=0)
# 是否周末(周末=1 工作日=0)
# 身体状态(好=1 差=0)
#
# 输出:
# 是否去骑车
#
X = np.array([
[1, 1, 1], # 晴天 周末 身体好
[1, 0, 1], # 晴天 工作日 身体好
[0, 1, 1], # 雨天 周末 身体好
[1, 1, 0], # 晴天 周末 身体差
[0, 0, 1], # 雨天 工作日 身体好
[0, 1, 0], # 雨天 周末 身体差
[1, 0, 0], # 晴天 工作日 身体差
[0, 0, 0] # 雨天 工作日 身体差
])

# 标签(真实答案)
Y = np.array([
[1],
[1],
[0],
[0],
[0],
[0],
[0],
[0]
])


# ==========================================================
# 3. 初始化网络参数
# ==========================================================

np.random.seed(0)

# 输入层(3) ------> 隐藏层(4)
#
# W1 大小:
#
# 隐藏1 隐藏2 隐藏3 隐藏4
# 天气
# 周末
# 身体
#
W1 = np.random.randn(3, 4)

# 隐藏层偏置
b1 = np.zeros((1, 4))

# 隐藏层(4) ------> 输出层(1)
W2 = np.random.randn(4, 1)

# 输出层偏置
b2 = np.zeros((1, 1))

# 学习率
learning_rate = 0.5


# ==========================================================
# 4. 开始训练
# ==========================================================
#
# BP神经网络训练流程:
#
# 前向传播
# ↓
# 得到预测值
# ↓
# 计算误差
# ↓
# 反向传播
# ↓
# 更新权重
#
for epoch in range(10000):

# ======================================================
# 第一步:前向传播(Forward)
# ======================================================

# 输入层 -> 隐藏层
#
# hidden_input =
# X × W1 + b1
#
hidden_input = np.dot(X, W1) + b1

# 隐藏层经过激活函数
hidden_output = sigmoid(hidden_input)

# 隐藏层 -> 输出层
final_input = np.dot(hidden_output, W2) + b2

# 输出层激活
prediction = sigmoid(final_input)

# ======================================================
# 第二步:计算误差
# ======================================================
#
# prediction:AI预测
# Y:真实答案
#
error = Y - prediction

# 均方误差(MSE)
loss = np.mean(error ** 2)

# ======================================================
# 第三步:反向传播(Back Propagation)
# ======================================================

# -----------------------------
# 输出层梯度
# -----------------------------
#
# 告诉输出层:
# "你应该修改多少"
#
d_output = error * sigmoid_derivative(prediction)

# -----------------------------
# 隐藏层误差
# -----------------------------
#
# 输出层误差
# ↓
# 传播回隐藏层
#
hidden_error = np.dot(d_output, W2.T)

# 隐藏层梯度
d_hidden = hidden_error * sigmoid_derivative(hidden_output)

# ======================================================
# 第四步:更新权重
# ======================================================

# 更新隐藏层 -> 输出层权重
W2 += learning_rate * np.dot(hidden_output.T, d_output)

# 更新输出层偏置
b2 += learning_rate * np.sum(d_output, axis=0, keepdims=True)

# 更新输入层 -> 隐藏层权重
W1 += learning_rate * np.dot(X.T, d_hidden)

# 更新隐藏层偏置
b1 += learning_rate * np.sum(d_hidden, axis=0, keepdims=True)

# 每1000轮打印一次Loss
if epoch % 1000 == 0:
print(f"Epoch {epoch:5d} Loss={loss:.6f}")


# ==========================================================
# 5. 测试
# ==========================================================

print("\n============== 测试结果 ==============\n")

tests = {
"晴天 周末 身体好": [1, 1, 1],
"晴天 周末 身体差": [1, 1, 0],
"雨天 周末 身体好": [0, 1, 1],
"晴天 工作日 身体好": [1, 0, 1],
}

for name, sample in tests.items():

x = np.array([sample])

# 前向传播
hidden = sigmoid(np.dot(x, W1) + b1)
output = sigmoid(np.dot(hidden, W2) + b2)

print(f"{name:<15} -> 去骑车概率:{output[0,0]:.3f}")

整个训练过程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
       训练开始


输入训练数据(X)


初始化权重(W1、W2)


┌─────────────┐
│ 前向传播 │
│ Input → Hidden → Output │
└─────────────┘


得到预测值 Prediction


与真实值 Y 比较计算 Loss


┌─────────────┐
│ 反向传播 BP │
│ Output → Hidden │
└─────────────┘


更新权重 W1、W2 和偏置 b1、b2


Loss 是否足够小?
│ │
否 是
│ │
└────继续训练┘

输出训练好的模型

2023年,进入多模态时代!

系列文章见: 《回忆AI时代-从图灵机到人工智能》

2023年发生了两件足以改变AI历史的大事“大模型进入多模态时代”和“图片生成进入全民时代”

大模型进入多模态时代

什么是多模态

多模态(Multimodality)顾名思义就是让人工智能能够理解和处理多种类型的数据,包括但不限于文本、图像、音频、视频等。换句话说,人类通过眼睛看图像、耳朵听声音、语言进行交流来获取信息,而AI也开始逐步具备类似的感知与理解能力,不再局限于处理单一的文本数据。

模态的演进

2023年被普遍认为是“大模型多模态时代”的起点,在2023年之前大多数大模型还是单模态,如:

  • GPT-3:只能处理文本
  • ChatGPT(2022年11月发布):主要也是文本对话
  • Stable Diffusion(2022):只能生成图片

2023年3月OpenAI发布了GPT-4,首次赋予大模型强大的视觉理解能力,使其能够同时处理文本与图像,标志着多模态能力正式进入大众视野。

同年Google发布了Gemini,从设计之初便采用原生多模态(Native Multimodal)架构,在训练阶段就将文本、图像、音频、视频等多种数据统一融合,而不是将多个单一模型简单拼接。这意味着AI开始能够像人类一样,对来自不同感官的信息进行综合理解与推理。

多模态应用场景

我们在使用大模型时,不只可以文本聊天,还可以与他语音对话、上传一些图片识别内容,这也带来了很多的应用场景,譬如:

  • 语音: 语音陪聊提供情绪价值、英语口语对话提升英语能力
  • 图片生成: 生成创益的广告图片与文案、个人照片优化
  • OCR: 识别发票、身份证、合同等信息
  • 生成视频:生成视频应用在广告、短视频、个人宣传片和动画等领域

2022年,AI进入了大众时代!

系列文章见: 《回忆AI时代-从图灵机到人工智能》

ChatGPT

2022年11月,一个名叫ChatGPT的产品上线,短短两个月,它突破一亿用户,成为互联网历史上增长最快的应用。许多人第一次感受到机器似乎真的开始“思考”了。

ChatGPT(GPT的全称是Generative Pre-trained Transformer,生成式预训练Transformer模型)是OpenAI公司的产品,目前ChatGPT迭代的版本:

时间 模型 主要突破
2018 GPT-1 提出预训练 + 微调范式
2019 GPT-2 参数大幅增长,生成能力显著提升
2020 GPT-3 1750 亿参数,Few-shot Learning
2022 InstructGPT 引入 RLHF,更好遵循人类指令
2022 ChatGPT 将大语言模型以对话形式带给大众
2023 GPT-4 推理能力增强,支持图像理解
2024 GPT-4o 原生多模态,实时语音与视觉交互
2025 GPT-4.1 提升编程、长上下文和开发者体验
2025 GPT-5 综合推理、工具调用和多模态能力进一步提升

OpenAI成立于2015年总部位于美国旧金山,最初是一家人工智能研究机构,目标是推动人工智能技术的发展并让人工智能能够造福全人类

Read More