置顶

勘误反馈
如果对本博客文章有任何问题(如探讨、建议、文字或逻辑错误等)都可以给我发邮件:

  • 邮件标题:[wds博客问题反馈] - 希望在XXX文章增加一些细节的补充
  • 邮件地址:8851970@qq.com

Read More

为什么大模型最小单位Token?它是怎么计算的?

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

什么是Token

在人工智能领域Token被翻译为词元,它是AI模型理解和处理文本的最小基础单位。 模型不能直接阅读人类的文字,它只能理解数字,因此输入给模型的提示词和模型输出的文字,都会先被拆解成一个个 Token,然后再转换成数字进行运算。

大模型如何计算Token

我们通过一个案例来介绍大模型Token的统计方式,一共分为三步:

  • 用户输入问题
  • 模型理解整个问题
  • 开始生成答案

1.用户输入问题

譬如,你问大模型:

1
“什么是机器学习?”

对于模型来说,第一步不是理解文字而是通过Tokenizer(分词器)先把它转换成Token ID,譬如:

文本 Token Token ID
什么 什么 1523
87
机器学习 机器学习 9361
34

按照以上表格对应关系,模型会收到 “[1523, 87, 9361, 34]”,模型会再把Token ID转成向量,如下:

Token ID 向量
1523 [0.12, -0.55, 1.03, …]
87 [-0.31, 0.98, …]
9361 [0.42, -0.67, …]

这也就是说模型不能直接阅读人类的文字,它只能理解数字。到目前已经完整了文字与计算机理解的数字转换。

Read More

1980年的专家系统

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

什么是专家系统

1980年,被称为专家系统(Expert Systems)时代,也是第一波AI商业化浪潮,这一时期AI的核心思想属于符号主义(Symbolic AI)或规则驱动 AI(Rule-based AI)。1970年代末研究人员发现与其让计算机像人一样学习,不如先把专家的知识直接写进去,譬如:

  • 医生如何诊断疾病
  • 地质学家如何寻找矿藏
  • 工程师如何维修设备

如果把这些经验写成IF条件THEN结论,计算机就能够像专家一样推理。

1
2
3
4
5
6
IF
发烧
AND 咳嗽
AND 白细胞高
THEN
可能是细菌感染

专家系统的组成,通常分为四个部分:

  • 知识库(Knowledge Base)
  • 推理机(Inference Engine)
  • 事实库(Working Memory)
  • 用户界面(User Interface)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
             用户

┌─────────────┐
│ 用户界面 │
└─────────────┘

┌─────────────┐
│ 推理机 │
└─────────────┘
│ │
│ │
┌────────────┐ ┌────────────┐
│ 知识库 │ │ 事实库 │
│ Rules │ │ 当前数据 │
└────────────┘ └────────────┘

Read More

1966年的人机对话程序ELIZA

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

ELIZA是规则驱动的对话程序,由Joseph Weizenbaum在1964–1966年开发,ELIZA是人工智能发展史上的一个重要里程碑是最早展示人机自然语言对话可能性的程序之一,它代表了符号主义(规则驱动 AI)的早期成果,虽然它没有真正的语言理解能力,但证明了人机自然语言对话是可行的,也启发了后来的聊天机器人研究。

ELIZA主要的工作原理:

  • 关键词匹配(Keyword Matching)
  • 模式匹配(Pattern Matching)
  • 模板回复(Template Response)

用一个Python来解释它的工作原理:

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
import re

rules = [
(r"I feel (.*)",
"Why do you feel {}?"),

(r"I need (.*)",
"Why do you need {}?"),

(r"My (.*)",
"Tell me more about your {}."),

(r".*",
"Please go on.")
]

while True:
text = input("You: ")

if text == "quit":
break

for pattern, reply in rules:
m = re.match(pattern, text, re.I)
if m:
if m.groups():
print("ELIZA:", reply.format(m.group(1)))
else:
print("ELIZA:", reply)
break

运行效果:

1
2
3
4
5
6
7
8
You: I feel tired
ELIZA: Why do you feel tired?

You: My father is strict
ELIZA: Tell me more about your father is strict.

You: Hello
ELIZA: Please go on.

如何与大模型交互-Prompt

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

Prompt的来源

大模型目前主要的交互方式是Prompt(提示词,下文统称”提示词“),因为大模型本质上是一个根据已有内容继续预测下一个Token的模型,假设模型内部其实一直在做这样的事情:

1
2
3
今天的天气很好,
↓↓↓
预测下一个 Token

如果你什么都不给它,它不知道应该生成什么。所以你必须给它一个开头如”请介绍一下机器学习”,告知大模型朝哪个方向继续生成,这就是”提示词“这个词的来源。

如何与大模型交互

为什么不是问题

那大模型什么输入的不叫问题? 来看一下问题与提示词差别:

Question(问题) Prompt(提示)
一定是疑问句 不一定是问题
主要用于提问 可以是任何输入
例如:”什么是 AI?” 可以是一篇文章、一段代码、一张表格、一段角色设定等

我们聊天也叫Prompt、让模型生成一张图片也是prompt。

如何写好一个提示词

在日常应用大模型过程中写好一个提示词至关重要,它能帮你解决问题的同时还可以帮您节约Token的输出量,而Token量的节约也就是为你节约成本,因为目前大模型主要的计费方式就是Toekn。这里推荐一个实用的框架:

项目 含义 示例
C(Context) 背景 我正在学习大模型
O(Objective) 目标 帮我理解 Token
S(Style) 风格 通俗易懂
T(Tone) 语气 像老师讲课
A(Audience) 受众 零基础程序员
R(Response) 输出格式 Markdown,包含流程图和示例

提示词示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
角色:
你是一位人工智能领域的大学教授。

任务:
请讲解什么是 Transformer。

背景:
我是一个刚学习深度学习的人,
已经掌握Python和神经网络,
但没有学习过Attention。

要求:
1. 从为什么需要Transformer开始
2. 再讲Self-Attention
3. 最后讲Encoder和Decoder
4. 使用生活中的例子
5. 尽量不要使用复杂数学公式

输出:
使用Markdown,
包含流程图,
最后给出一个PyTorch示例。

一个好的Prompt并不是越长越好,而是目标明确、上下文充分、要求具体、输出格式清晰。当你把模型当作一位专业人士,清楚地说明”你是谁、要做什么、为什么做、希望如何输出”,回答质量通常会明显提升!

深度学习为什么强大?神经网络的发展与突破!

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

什么是深度学习

深度学习是一种机器学习方法,采用多层神经网络(称为深度神经网络)模拟人脑的决策机制。深度学习为大多数人工智能 (AI) 应用提供动力,广泛应用于图像识别、语音识别和自然语言处理 (NLP)等领域。 这里的“深度”是:

1
2
3
4
5
6
7
8
9
10
11
输入层(图片像素)

隐藏层1(识别边缘)

隐藏层2(识别纹理)

隐藏层3(识别眼睛、耳朵)

隐藏层4(组合成猫的特征)

输出层(判断是否为猫)

层数越多,网络就越“深”。

深度学习的演变

2006年,通常被认为是现代深度学习的起点,Geoffrey Hinton发表论文《A Fast Learning Algorithm for Deep Belief Nets》提出逐层预训练方法,解决深层网络训练困难的问题。

2012年,图像识别竞赛中(ImageNet Large Scale Visual Recognition Challenge),Geoffrey Hinton团队开发的AlexNet取得压倒性胜利,错误率传统方法26%,AlexNet15%。从此业界开始关注并投入深度学习,深度学习进入了黄金时代。

案例

Scikit-learn(简称 sklearn)是Python最流行的传统机器学习库之一,适合学习机器学习和神经网络基础。业界有两种常见框架Sklearn和TensorFlow,它们区别:

项目 scikit-learn TensorFlow
学习难度 简单 较复杂
聚类 支持 不擅长
分类 支持 支持
神经网络 简单版 专业版
深度学习 不支持 支持
GPU训练 不支持 支持
入门推荐 ⭐⭐⭐⭐⭐ ⭐⭐⭐

所以推荐用Scikit-learn。

案例
假设:

1
2
3
4
5
输入 x
输出 y

规律:
y = 2x

数据规律:

x y
1 2
2 4
3 6
4 8

安装Scikit-learn。

1
pip install scikit-learn

Python代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from sklearn.neural_network import MLPRegressor
import numpy as np

# 训练数据
X = np.array([[1], [2], [3], [4]])
y = np.array([2, 4, 6, 8])

# 神经网络
model = MLPRegressor(
hidden_layer_sizes=(5,), # 隐藏层5个神经元
activation='relu',
max_iter=5000,
random_state=42
)

# 训练
model.fit(X, y)

# 预测
print(model.predict([[5]]))

它的网络结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
输入层
x



隐藏层
○ ○ ○ ○ ○




输出层
y

实际上神经网络在不断调整:

1
2
权重(w)
偏置(b)

让预测值越来越接近真实值。

五步工作法

马斯克常被总结的“五步工作法”(也有人叫“工程/效率五步法”)核心思想是:不断删减复杂度,把事情推到极简,然后再自动化。

  • 1.质疑需求:不要一开始就接受“别人说必须这样做”。

    • 这个功能真的必要吗?
    • 有没有人只是“习惯性加上去”的?
    • 如果从零开始设计,还需要它吗?
  • 2.删除:如果某个东西“不必要”,直接删掉。

    • “如果你不需要添加回去,那就应该删除它。”
  • 3.简化:在已经简化的基础上再提速。

    • 流程从10步变3步
    • 结构从多层变一层
    • UI 从复杂变直觉
  • 4.加速:在已经简化的基础上再提速。

    • 并行执行
    • 缩短反馈周期
    • 提前验证关键假设
  • 5.自动化:马斯克非常反感“过早自动化”,因为:“如果流程还没稳定,自动化只会放大错误。”只有在:

    • 流程稳定
    • 已经简化
    • 提前验证关键假设

才值得自动化。