第00章:AI基础与发展史
本章导读
欢迎来到AI学习的起点!本章将带你纵览人工智能从诞生到今天的完整发展历程,理解AI的核心概念和应用场景。无论你是完全的零基础学习者,还是希望系统了解AI全貌的开发者,这一章都将为你建立清晰的知识框架。
本章目标:
- 理解AI、机器学习、深度学习的关系
- 了解AI发展的关键里程碑
- 掌握机器学习的三大范式
- 认识深度学习的革命性突破
- 了解大模型时代的技术特点
- 理解AI在各领域的应用场景
学习时长:4-6小时 难度等级:☆☆☆☆
第一节:什么是人工智能
1.1 人工智能的定义
人工智能(Artificial Intelligence, AI)是指让计算机系统展现出类似人类智能的能力,包括学习、推理、感知、理解语言、解决问题等。
AI的三个层次:
人工智能(AI)
├── 机器学习(Machine Learning, ML)
│ ├── 深度学习(Deep Learning, DL)
│ │ ├── 卷积神经网络(CNN)
│ │ ├── 循环神经网络(RNN)
│ │ ├── Transformer
│ │ └── 大语言模型(LLM)
│ ├── 传统机器学习
│ │ ├── 决策树
│ │ ├── 支持向量机(SVM)
│ │ └── 随机森林
│ └── 强化学习
└── 符号主义AI(专家系统等)
核心概念:
- 人工智能:最广泛的概念,包含所有让机器智能化的技术
- 机器学习:AI的子集,通过数据自动学习规律
- 深度学习:机器学习的子集,使用神经网络模型
1.2 AI的分类
按能力分类:
弱人工智能(Narrow AI)
- 专注于特定任务
- 当前所有AI都属于此类
- 例如:语音助手、推荐系统、图像识别
强人工智能(General AI)
- 具备人类级别的通用智能
- 目前尚未实现
- 能够处理各种不同类型的任务
超人工智能(Super AI)
- 超越人类智能
- 理论概念
- 引发伦理和安全讨论
按技术路线分类:
符号主义
- 基于逻辑推理和知识表示
- 代表:专家系统
- 优点:可解释性强
- 缺点:难以处理不确定性
连接主义
- 基于神经网络
- 代表:深度学习
- 优点:强大的学习能力
- 缺点:需要大量数据
行为主义
- 基于智能行为的涌现
- 代表:强化学习
- 优点:适合决策问题
- 缺点:训练困难
第二节:AI发展历程
2.1 萌芽期(1950-1956):从图灵测试到达特茅斯会议
1950年:图灵测试
艾伦·图灵在论文《计算机器与智能》中提出了著名的"图灵测试":如果一台机器能够与人类对话而不被识破,那么这台机器就具有智能。
图灵测试的三个参与者:
- 测试者(人类)
- 机器
- 另一个人类
如果测试者无法区分机器和人类的回答,机器就通过了测试。
1956年:达特茅斯会议
约翰·麦卡锡、马文·明斯基等人在达特茅斯学院召开会议,首次提出"人工智能"这个术语,标志着AI作为一个独立学科的诞生。
会议的乐观预期:
"我们认为,如果一个精心挑选的科学家小组在一起工作一个夏天,就能在使机器使用语言、形成抽象概念方面取得重大进展。"
这个预测显然过于乐观,但开启了AI研究的序幕。
2.2 第一次繁荣期(1956-1974):早期成功与过度乐观
主要成就:
感知机(Perceptron, 1958)
- 弗兰克·罗森布拉特发明
- 最早的神经网络模型
- 能够进行简单的分类任务
专家系统(1960s-1970s)
- DENDRAL:化学分析专家系统
- MYCIN:医疗诊断专家系统
- 基于规则的推理系统
ELIZA(1966)
- 约瑟夫·魏泽鲍姆开发
- 早期的自然语言处理程序
- 模拟心理治疗师对话
第一次AI寒冬(1974-1980):
由于过度承诺和未能兑现,加上计算能力限制,AI研究遭遇第一次寒冬:
- 资金削减
- 研究停滞
- 公众失望
2.3 第二次繁荣期(1980-1987):专家系统的黄金时代
专家系统的商业成功:
- 企业开始大规模应用专家系统
- 日本启动"第五代计算机"项目
- 知识工程成为热门领域
反向传播算法(1986):
- Rumelhart、Hinton等人重新发现并推广
- 解决了多层神经网络的训练问题
- 为后来的深度学习奠定基础
第二次AI寒冬(1987-1993):
- 专家系统维护成本高昂
- 知识获取瓶颈
- 硬件发展放缓
2.4 复苏期(1993-2011):机器学习的崛起
统计学习方法的兴起:
支持向量机(SVM, 1995)
- Vladimir Vapnik提出
- 强大的分类能力
- 理论基础扎实
随机森林(2001)
- 集成学习方法
- 广泛应用于实际问题
深度信念网络(2006)
- Geoffrey Hinton提出
- 解决深度网络训练难题
- 深度学习的前奏
重要里程碑:
1997年:深蓝战胜国际象棋冠军
- IBM的深蓝战胜卡斯帕罗夫
- 基于暴力搜索和评估函数
- 不是真正的学习系统
2011年:Watson赢得Jeopardy!
- IBM Watson在智力竞赛中获胜
- 自然语言处理和知识图谱的结合
2.5 深度学习革命(2012-2017):神经网络的复兴
2012年:ImageNet突破
Alex Krizhevsky等人的AlexNet在ImageNet图像分类竞赛中取得突破性成绩:
- 错误率从26%降低到16%
- 使用深度卷积神经网络
- GPU加速训练
- 标志深度学习时代到来
ImageNet竞赛历年Top-5错误率:
2010: 28.2% (传统方法)
2011: 25.8% (传统方法)
2012: 16.4% (AlexNet, 深度学习)
2013: 11.7% (ZFNet)
2014: 6.7% (VGGNet, GoogLeNet)
2015: 3.6% (ResNet)
2017: 2.3% (SENet)
人类水平: ~5%
关键技术突破:
AlexNet(2012)
- 8层网络
- ReLU激活函数
- Dropout正则化
- 数据增强
VGGNet(2014)
- 更深的网络(16-19层)
- 3x3小卷积核
- 网络深度的重要性
GoogLeNet/Inception(2014)
- Inception模块
- 1x1卷积降维
- 计算效率提升
ResNet(2015)
- 残差连接
- 解决梯度消失问题
- 可训练超过100层
NLP领域的进展:
Word2Vec(2013)
- 词向量表示
- 捕捉词语语义关系
- "king - man + woman = queen"
Seq2Seq(2014)
- 序列到序列学习
- 机器翻译突破
- Encoder-Decoder架构
注意力机制(2015)
- Bahdanau Attention
- 解决长序列问题
- Transformer的前身
其他领域突破:
2016年:AlphaGo战胜李世石
- 深度学习+强化学习
- 蒙特卡洛树搜索
- 围棋AI的里程碑
2017年:Transformer架构
- "Attention is All You Need"论文
- 自注意力机制
- 并行计算优势
- 现代NLP的基础
2.6 大模型时代(2018-至今):从BERT到GPT-4
预训练语言模型的兴起:
2018年:BERT革命
- Google提出BERT(Bidirectional Encoder Representations from Transformers)
- 双向上下文理解
- 预训练+微调范式
- 刷新11项NLP任务记录
BERT的创新点:
- 掩码语言模型(Masked Language Model)
- 下一句预测(Next Sentence Prediction)
- 大规模无监督预训练
2018年:GPT-1
- OpenAI提出GPT(Generative Pre-trained Transformer)
- 单向语言模型
- 生成式预训练
- 117M参数
GPT系列演进:
GPT-1 (2018)
├── 参数量: 117M
├── 训练数据: BookCorpus
└── 能力: 基础文本生成
GPT-2 (2019)
├── 参数量: 1.5B
├── 训练数据: WebText
├── 能力: 零样本学习
└── 争议: 因担心滥用延迟发布
GPT-3 (2020)
├── 参数量: 175B
├── 训练数据: 45TB文本
├── 能力: 少样本学习(Few-shot Learning)
└── 涌现能力: 翻译、编程、推理
InstructGPT (2022)
├── 基于GPT-3
├── RLHF训练
└── 更好的指令遵循
ChatGPT (2022.11)
├── 基于GPT-3.5
├── 对话优化
└── 现象级应用(2个月1亿用户)
GPT-4 (2023.03)
├── 参数量: 未公开(估计1.76T)
├── 多模态: 支持图像输入
├── 更强推理能力
└── 更高安全性
Scaling Laws(规模定律):
2020年,OpenAI发现模型性能与三个因素呈幂律关系:
- 模型参数量
- 训练数据量
- 计算量
这一发现推动了大模型军备竞赛。
2022-2023:百模大战
全球范围内的大模型爆发:
国外模型:
- Google: PaLM(540B), Gemini
- Meta: LLaMA(7B-65B), LLaMA 2
- Anthropic: Claude, Claude 2
- Google: Bard
- Microsoft: 与OpenAI合作
国内模型:
- 百度: 文心一言
- 阿里: 通义千问
- 字节: 云雀
- 腾讯: 混元
- 清华: ChatGLM
- 上海AI Lab: 书生·浦语
多模态大模型:
DALL-E 2(2022)
- 文本生成图像
- 图像编辑和变化
Stable Diffusion(2022)
- 开源扩散模型
- 文生图、图生图
Midjourney(2022)
- 高质量图像生成
- 艺术创作工具
GPT-4V(2023)
- 图像理解
- 多模态对话
2.7 发展趋势总结
AI发展的四个阶段:
- 规则时代(1950-1980):专家系统,手工规则
- 统计时代(1980-2010):机器学习,特征工程
- 深度学习时代(2010-2020):端到端学习,表示学习
- 大模型时代(2020-至今):预训练+提示,涌现能力
技术演进趋势:
- 模型规模持续增大
- 多模态融合加速
- 应用场景不断拓展
- 开源生态日益繁荣
第三节:机器学习基础
3.1 什么是机器学习
传统编程 vs 机器学习:
传统编程:
输入数据 + 程序规则 → 输出结果
机器学习:
输入数据 + 输出结果 → 学习规则(模型)
机器学习的核心思想: 从数据中自动学习规律,而不是人工编写规则。
机器学习的要素:
- 数据(Data):学习的材料
- 模型(Model):学习的规律表示
- 算法(Algorithm):学习的方法
- 评估(Evaluation):效果的衡量
3.2 监督学习(Supervised Learning)
定义:从标注数据中学习输入到输出的映射关系。
数据形式:
训练数据 = {(x₁, y₁), (x₂, y₂), ..., (xₙ, yₙ)}
其中:
x: 输入特征(Feature)
y: 标签(Label)
两大类型:
分类(Classification)
- 输出是离散的类别
- 例如:垃圾邮件识别(垃圾/正常)
- 例如:图像分类(猫/狗/鸟...)
回归(Regression)
- 输出是连续的数值
- 例如:房价预测
- 例如:温度预测
经典算法:
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 生成示例数据
X, y = make_classification(n_samples=1000, n_features=20,
n_informative=15, n_redundant=5,
random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 创建和训练模型
model = LogisticRegression()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.4f}")
# 输出: 准确率: 0.9300
监督学习的流程:
1. 数据收集与标注
↓
2. 数据预处理
├── 数据清洗
├── 特征工程
└── 数据增强
↓
3. 模型选择与训练
├── 选择合适模型
├── 划分训练/验证/测试集
└── 训练模型
↓
4. 模型评估
├── 在验证集上调参
└── 在测试集上最终评估
↓
5. 模型部署
常见监督学习算法:
- 线性回归
- 逻辑回归
- 决策树
- 随机森林
- 支持向量机(SVM)
- K近邻(KNN)
- 神经网络
3.3 无监督学习(Unsupervised Learning)
定义:从未标注数据中发现隐藏的模式和结构。
数据形式:
训练数据 = {x₁, x₂, ..., xₙ}
只有输入,没有标签
主要任务:
- 聚类(Clustering)
- 将相似的数据分组
- 算法:K-Means、层次聚类、DBSCAN
- 应用:客户细分、图像分割
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
# 生成示例数据
X, y_true = make_blobs(n_samples=300, centers=4,
cluster_std=0.6, random_state=42)
# K-Means聚类
kmeans = KMeans(n_clusters=4, random_state=42)
y_pred = kmeans.fit_predict(X)
# 可视化结果(文字描述)
# 图表显示300个数据点被聚成4个簇
# 每个簇用不同颜色表示
# 聚类中心用大圆点标记
print(f"聚类中心数量: {len(kmeans.cluster_centers_)}")
print(f"每个簇的样本数: {np.bincount(y_pred)}")
# 输出: 聚类中心数量: 4
# 输出: 每个簇的样本数: [75 75 75 75]
- 降维(Dimensionality Reduction)
- 减少特征数量,保留主要信息
- 算法:PCA、t-SNE、UMAP
- 应用:数据可视化、特征提取
from sklearn.decomposition import PCA
from sklearn.datasets import load_digits
# 加载手写数字数据集(64维)
digits = load_digits()
X = digits.data # 形状: (1797, 64)
# PCA降到2维
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X) # 形状: (1797, 2)
# 查看保留的方差比例
print(f"保留的方差比例: {pca.explained_variance_ratio_.sum():.4f}")
# 输出: 保留的方差比例: 0.2858用2维保留了原始64维数据28.58%的信息
- 异常检测(Anomaly Detection)
- 识别不符合预期模式的数据
- 算法:Isolation Forest、One-Class SVM
- 应用:欺诈检测、设备故障预警
无监督学习的优势:
- 不需要昂贵的数据标注
- 可以发现未知的模式
- 适合探索性数据分析
无监督学习的挑战:
- 难以评估效果
- 结果解释性较差
- 需要领域知识辅助
3.4 强化学习(Reinforcement Learning)
定义:智能体(Agent)通过与环境交互,学习最优决策策略。
核心概念:
强化学习系统:
智能体(Agent) ←→ 环境(Environment)
↑ ↓ ↑ ↓
动作 状态 奖励
(Action) (State) (Reward)
马尔可夫决策过程(MDP):
- 状态(State) S
- 动作(Action) A
- 奖励(Reward) R
- 状态转移概率 P(s'|s,a)
- 策略(Policy) π(a|s)
学习目标: 最大化累积奖励(Cumulative Reward)
G_t = R_{t+1} + γR_{t+2} + γ²R_{t+3} + ...
其中 γ 是折扣因子(0 < γ < 1)
经典算法:
Q-Learning
- 基于值函数的方法
- 学习状态-动作价值函数Q(s,a)
- 更新规则:Q(s,a) ← Q(s,a) + α[r + γ max Q(s',a') - Q(s,a)]
DQN(Deep Q-Network)
- 深度学习 + Q-Learning
- 使用神经网络逼近Q函数
- 经验回放和目标网络
Policy Gradient
- 直接优化策略
- REINFORCE算法
- Actor-Critic方法
PPO(Proximal Policy Optimization)
- 现代强化学习主流算法
- 稳定性好
- ChatGPT的RLHF训练使用
应用场景:
- 游戏AI(AlphaGo、Dota 2)
- 机器人控制
- 自动驾驶
- 推荐系统
- 资源调度
示例:简单的Q-Learning
import numpy as np
class QLearningAgent:
def __init__(self, n_states, n_actions, learning_rate=0.1,
discount=0.95, epsilon=0.1):
self.q_table = np.zeros((n_states, n_actions))
self.lr = learning_rate
self.gamma = discount
self.epsilon = epsilon
def choose_action(self, state):
# ε-贪婪策略
if np.random.random() < self.epsilon:
return np.random.randint(len(self.q_table[state]))
else:
return np.argmax(self.q_table[state])
def update(self, state, action, reward, next_state):
# Q-Learning更新
current_q = self.q_table[state, action]
max_next_q = np.max(self.q_table[next_state])
new_q = current_q + self.lr * (
reward + self.gamma * max_next_q - current_q
)
self.q_table[state, action] = new_q
# 使用示例
# 假设有10个状态,4个动作(上下左右)
agent = QLearningAgent(n_states=10, n_actions=4)
# 训练过程(伪代码)
# for episode in range(1000):
# state = env.reset()
# while not done:
# action = agent.choose_action(state)
# next_state, reward, done = env.step(action)
# agent.update(state, action, reward, next_state)
# state = next_state
3.5 三种学习范式对比
| 特征 | 监督学习 | 无监督学习 | 强化学习 |
|---|---|---|---|
| 数据标注 | 需要标签 | 不需要标签 | 需要奖励信号 |
| 学习目标 | 预测准确性 | 发现模式 | 最大化累积奖励 |
| 反馈方式 | 直接反馈 | 无反馈 | 延迟反馈 |
| 典型应用 | 分类、回归 | 聚类、降维 | 决策、控制 |
| 数据需求 | 大量标注数据 | 大量无标注数据 | 交互经验 |
| 训练难度 | 中等 | 较低 | 较高 |
实际应用中的组合:
- 半监督学习:少量标注+大量无标注
- 自监督学习:从数据本身构造监督信号(如BERT的掩码预测)
- 迁移学习:在源任务上监督学习,迁移到目标任务
第四节:深度学习革命
4.1 为什么需要深度学习
传统机器学习的局限:
特征工程依赖人工
- 需要领域专家设计特征
- 费时费力
- 难以处理原始数据
表达能力有限
- 难以捕捉复杂模式
- 线性模型表达力不足
难以处理高维数据
- 图像、语音、文本等
- 维度灾难
深度学习的优势:
端到端学习
- 直接从原始数据到输出
- 自动学习特征表示
强大的表达能力
- 多层非线性变换
- 可以逼近任意函数(通用逼近定理)
可扩展性
- 数据越多,效果越好
- 模型越大,能力越强
4.2 神经网络基础
生物神经元 vs 人工神经元:
人工神经元(感知机):
输入: x₁, x₂, ..., xₙ
权重: w₁, w₂, ..., wₙ
偏置: b
输出: y = f(Σ(wᵢxᵢ) + b)
其中 f 是激活函数
多层神经网络结构:
输入层 → 隐藏层1 → 隐藏层2 → ... → 输出层
特征提取 ← 逐层抽象 → 任务输出
前向传播示例:
import numpy as np
def sigmoid(x):
"""Sigmoid激活函数"""
return 1 / (1 + np.exp(-x))
def forward_pass(X, W1, b1, W2, b2):
"""
前向传播
X: 输入数据 (n_samples, n_features)
W1: 第一层权重 (n_features, n_hidden)
b1: 第一层偏置 (n_hidden,)
W2: 第二层权重 (n_hidden, n_outputs)
b2: 第二层偏置 (n_outputs,)
"""
# 第一层
z1 = X @ W1 + b1 # 线性变换
a1 = sigmoid(z1) # 激活
# 第二层
z2 = a1 @ W2 + b2 # 线性变换
a2 = sigmoid(z2) # 激活
return a2
# 示例数据
X = np.random.randn(5, 3) # 5个样本,3个特征
W1 = np.random.randn(3, 4) # 隐藏层4个神经元
b1 = np.zeros(4)
W2 = np.random.randn(4, 2) # 输出层2个神经元
b2 = np.zeros(2)
# 前向传播
output = forward_pass(X, W1, b1, W2, b2)
print(f"输出形状: {output.shape}") # (5, 2)
print(f"第一个样本的输出: {output[0]}")
反向传播算法:
通过链式法则计算梯度,更新权重:
1. 前向传播: 计算输出
2. 计算损失: L = loss(y_pred, y_true)
3. 反向传播: 计算梯度 ∂L/∂W
4. 更新权重: W ← W - η∂L/∂W
4.3 ImageNet竞赛与深度学习突破
ImageNet数据集:
- 1400万张图像
- 1000个类别
- 训练集120万张
2012年的突破:
AlexNet网络结构:
输入图像 (224×224×3)
↓
Conv1 (96个11×11卷积核, stride=4)
↓
MaxPool + LRN
↓
Conv2 (256个5×5卷积核)
↓
MaxPool + LRN
↓
Conv3-5 (三层3×3卷积)
↓
全连接层 (4096维)
↓
Dropout (0.5)
↓
全连接层 (4096维)
↓
Dropout (0.5)
↓
输出层 (1000类)
AlexNet的创新点:
ReLU激活函数
# ReLU vs Sigmoid def relu(x): return np.maximum(0, x) # ReLU优点: # - 缓解梯度消失 # - 计算简单 # - 稀疏激活Dropout正则化
# Dropout实现 def dropout(x, drop_prob=0.5, training=True): if not training: return x mask = np.random.binomial(1, 1-drop_prob, x.shape) return x * mask / (1 - drop_prob) # 训练时随机丢弃神经元 # 测试时使用全部神经元 # 防止过拟合数据增强
- 随机裁剪
- 水平翻转
- 颜色抖动
GPU训练
- 使用两块GTX 580
- 训练时间从数周缩短到数天
深度学习成功的三大要素:
大数据 + 大算力 + 优秀算法 = 深度学习成功
大数据:
- ImageNet等大规模数据集
- 互联网数据爆炸
大算力:
- GPU并行计算
- 分布式训练
- TPU等专用芯片
优秀算法:
- ReLU激活函数
- Dropout正则化
- Batch Normalization
- 残差连接
4.4 CNN的发展历程
LeNet-5(1998)
- Yann LeCun提出
- 手写数字识别
- 7层网络
- 早期探索,但当时算力不足
AlexNet(2012)
- ImageNet突破
- 8层网络
- 6000万参数
VGGNet(2014)
- 更深的网络(16-19层)
- 统一使用3×3卷积
- 证明深度的重要性
GoogLeNet/Inception(2014)
- 22层网络
- Inception模块(多尺度特征)
- 参数更少(500万)
ResNet(2015)
- 残差连接突破
- 可训练超深网络(152层甚至1000层)
- ImageNet错误率降到3.6%
import torch
import torch.nn as nn
class ResidualBlock(nn.Module):
def __init__(self, in_channels, out_channels, stride=1):
super().__init__()
# 主路径
self.conv1 = nn.Conv2d(in_channels, out_channels,
kernel_size=3, stride=stride, padding=1)
self.bn1 = nn.BatchNorm2d(out_channels)
self.relu = nn.ReLU(inplace=True)
self.conv2 = nn.Conv2d(out_channels, out_channels,
kernel_size=3, stride=1, padding=1)
self.bn2 = nn.BatchNorm2d(out_channels)
# 捷径连接
self.shortcut = nn.Sequential()
if stride != 1 or in_channels != out_channels:
self.shortcut = nn.Sequential(
nn.Conv2d(in_channels, out_channels,
kernel_size=1, stride=stride),
nn.BatchNorm2d(out_channels)
)
def forward(self, x):
# 主路径
out = self.relu(self.bn1(self.conv1(x)))
out = self.bn2(self.conv2(out))
# 残差连接: out = F(x) + x
out += self.shortcut(x)
out = self.relu(out)
return out
# 使用示例
block = ResidualBlock(64, 128, stride=2)
x = torch.randn(1, 64, 32, 32)
output = block(x)
print(f"输入形状: {x.shape}") # [1, 64, 32, 32]
print(f"输出形状: {output.shape}") # [1, 128, 16, 16]
残差连接的意义:
- 缓解梯度消失
- 允许训练超深网络
- 模型退化问题的解决
- 更容易优化
4.5 NLP领域的深度学习
从RNN到Transformer的演进:
RNN的问题:
- 难以捕捉长距离依赖
- 梯度消失/爆炸
- 串行计算,无法并行
LSTM的改进:
- 引入门控机制
- 缓解梯度消失
- 仍然是串行计算
Attention机制:
- 直接关注相关信息
- 解决长距离依赖
- 为Transformer铺路
Transformer革命(2017):
"Attention is All You Need"论文提出的革命性架构:
Transformer架构:
输入
↓
输入嵌入 + 位置编码
↓
┌─────────────────┐
│ Encoder (×N) │
│ - Multi-Head │
│ Attention │
│ - Feed Forward │
│ - Layer Norm │
└─────────────────┘
↓
┌─────────────────┐
│ Decoder (×N) │
│ - Masked │
│ Self-Attn │
│ - Cross-Attn │
│ - Feed Forward │
└─────────────────┘
↓
输出
自注意力机制:
# 简化的自注意力实现
import torch
import torch.nn.functional as F
def self_attention(Q, K, V):
"""
Q, K, V: (batch_size, seq_len, d_model)
"""
d_k = Q.size(-1)
# 计算注意力分数
scores = Q @ K.transpose(-2, -1) / (d_k ** 0.5)
# Softmax归一化
attn_weights = F.softmax(scores, dim=-1)
# 加权求和
output = attn_weights @ V
return output, attn_weights
# 示例
seq_len, d_model = 10, 512
Q = K = V = torch.randn(1, seq_len, d_model)
output, weights = self_attention(Q, K, V)
print(f"输出形状: {output.shape}") # [1, 10, 512]
print(f"注意力权重形状: {weights.shape}") # [1, 10, 10]
Transformer的优势:
- 并行计算
- 长距离依赖建模
- 可扩展性强
- 多头注意力机制
第五节:大模型时代
5.1 预训练语言模型范式
预训练+微调范式:
第一阶段: 预训练 (Pre-training)
├── 大规模无标注数据
├── 自监督学习任务
└── 学习通用语言表示
第二阶段: 微调 (Fine-tuning)
├── 特定任务的少量标注数据
├── 有监督学习
└── 适应下游任务
预训练任务:
掩码语言模型(MLM) - BERT使用
输入: "我爱[MASK]学习" 目标: 预测"AI"下一句预测(NSP) - BERT使用
句子A: "今天天气很好" 句子B: "我们去公园吧" 目标: 判断B是否是A的下一句自回归语言模型 - GPT使用
输入: "我爱AI" 目标: 预测下一个词"学习"
5.2 BERT的双向理解
BERT架构:
- Bidirectional Encoder Representations from Transformers
- 只使用Transformer的Encoder部分
- 双向上下文建模
BERT的创新:
# BERT的输入表示
# Token Embeddings: 词嵌入
# Segment Embeddings: 句子A/B标识
# Position Embeddings: 位置信息
# 输入 = Token Emb + Segment Emb + Position Emb
# 示例(伪代码):
input_text = "[CLS] 我爱AI学习 [SEP] 效果很好 [SEP]"
token_ids = tokenizer.encode(input_text)
segment_ids = [0, 0, 0, 0, 0, 1, 1, 1, 1]
position_ids = [0, 1, 2, 3, 4, 5, 6, 7, 8]
# 组合得到最终输入
BERT的变种:
- RoBERTa:去除NSP,更大数据
- ALBERT:参数共享,更小模型
- ELECTRA:判别式预训练
- DistilBERT:知识蒸馏,更快
5.3 GPT系列的生成能力
GPT的关键特点:
单向自回归
- 从左到右生成
- 适合文本生成任务
规模效应
- GPT-1: 117M参数
- GPT-2: 1.5B参数
- GPT-3: 175B参数
- 参数量提升带来能力跃迁
涌现能力
- Few-shot Learning
- Zero-shot Learning
- 思维链推理
GPT-3的少样本学习:
Zero-shot (零样本):
翻译这句话: "Hello" →
Few-shot (少样本):
英译中:
"Hello" → "你好"
"Thank you" → "谢谢"
"Goodbye" → "再见"
"How are you" → ?
模型输出: "你好吗"
In-Context Learning:
- 不需要梯度更新
- 通过上下文示例学习
- 参数量大时效果显著
5.4 ChatGPT的突破
InstructGPT训练流程:
步骤1: 监督微调 (SFT)
├── 人工标注高质量对话
└── 微调GPT-3
步骤2: 奖励模型训练 (RM)
├── 对同一prompt生成多个回答
├── 人工排序
└── 训练奖励模型
步骤3: PPO强化学习
├── 使用奖励模型作为反馈
├── PPO算法优化策略
└── 得到最终模型
RLHF(人类反馈强化学习):
# RLHF训练流程伪代码
# 1. 收集对比数据
prompts = ["如何学习AI?", "什么是深度学习?", ...]
responses_A = model.generate(prompts)
responses_B = model.generate(prompts)
# 人工标注: A > B 或 B > A
# 2. 训练奖励模型
reward_model = train_reward_model(prompts, comparisons)
# 3. PPO优化
for prompt in prompts:
response = policy_model.generate(prompt)
reward = reward_model(prompt, response)
# 使用PPO更新policy_model以最大化reward
ChatGPT的成功因素:
- 强大的基座模型(GPT-3.5)
- 有效的对齐技术(RLHF)
- 优秀的产品体验
- 持续的人工反馈迭代
5.5 大模型的关键技术
1. 提示工程(Prompt Engineering)
角色设定 + 任务描述 + 格式要求 + 示例
示例提示:
你是一个Python编程专家。请帮我写一个函数,实现以下功能:
- 输入: 整数列表
- 输出: 列表中所有偶数的和
- 要求: 使用列表推导式
格式:
```python
def sum_even(numbers):
# 你的代码
**2. 思维链(Chain-of-Thought)**
普通提示: Q: 23 + 47 = ? A: 70
CoT提示: Q: 23 + 47 = ? A: 让我们一步步思考:
- 个位: 3 + 7 = 10, 写0进1
- 十位: 2 + 4 + 1 = 7
- 结果: 70
**3. 参数高效微调(PEFT)**
LoRA (Low-Rank Adaptation):
原始权重矩阵: W (d×d) 冻结W, 训练: W' = W + AB 其中 A (d×r), B (r×d), r << d
只训练0.1%-1%的参数 达到全量微调90%+的效果
**4. 模型量化**
量化方式: FP32 (32位浮点) → FP16 (16位) FP16 → INT8 (8位整数) INT8 → INT4 (4位整数)
效果:
- 模型大小减少75%-90%
- 推理速度提升2-4倍
- 精度损失<5%
## 第六节:AI应用场景
### 6.1 计算机视觉(Computer Vision)
**图像分类**:
- 应用:医疗影像诊断、质量检测
- 模型:ResNet、EfficientNet、Vision Transformer
**目标检测**:
- 应用:自动驾驶、安防监控
- 模型:YOLO、Faster R-CNN、DETR
**图像分割**:
- 应用:医疗分割、遥感分析
- 模型:U-Net、Mask R-CNN、Segment Anything
**人脸识别**:
- 应用:身份认证、考勤系统
- 技术:FaceNet、ArcFace
**图像生成**:
- 应用:艺术创作、图像编辑
- 模型:DALL-E 2、Stable Diffusion、Midjourney
### 6.2 自然语言处理(NLP)
**文本分类**:
- 应用:情感分析、垃圾邮件过滤
- 模型:BERT、RoBERTa
**命名实体识别**:
- 应用:信息抽取、知识图谱
- 模型:BERT-CRF、SpaCy
**机器翻译**:
- 应用:跨语言交流
- 模型:Transformer、OPUS-MT
**问答系统**:
- 应用:智能客服、搜索引擎
- 模型:BERT、GPT、RAG
**文本生成**:
- 应用:内容创作、代码生成
- 模型:GPT-3/4、Claude、文心一言
### 6.3 语音技术
**语音识别(ASR)**:
- 应用:语音输入、会议转写
- 模型:Whisper、DeepSpeech
**语音合成(TTS)**:
- 应用:有声读物、语音助手
- 模型:Tacotron、VALL-E
**声纹识别**:
- 应用:身份认证
- 技术:X-vector、ECAPA-TDNN
### 6.4 推荐系统
**协同过滤**:
- 基于用户行为
- 发现相似用户/物品
**深度学习推荐**:
- 模型:Wide & Deep、DeepFM、DIN
- 应用:电商、视频、新闻推荐
**多模态推荐**:
- 结合文本、图像、视频
- 更精准的个性化
### 6.5 其他应用
**自动驾驶**:
- 感知:目标检测、语义分割
- 决策:强化学习
- 公司:Tesla、Waymo、百度Apollo
**医疗健康**:
- 疾病诊断:影像分析
- 药物发现:分子生成
- 个性化医疗
**金融科技**:
- 风险控制:欺诈检测
- 量化交易:预测模型
- 智能投顾
**智能制造**:
- 质量检测:视觉检测
- 预测性维护:时序预测
- 工艺优化
## 第七节:学习路径建议
### 7.1 初学者路径(0-6个月)
**第1-2个月:基础准备**
- 学习Python编程
- 掌握NumPy、Pandas
- 了解基本数学(线性代数、微积分)
- 运行简单的机器学习例子
**第3-4个月:机器学习**
- 学习监督学习算法
- 理解模型评估方法
- 实践Kaggle入门竞赛
- 使用scikit-learn
**第5-6个月:深度学习入门**
- 学习神经网络基础
- 掌握PyTorch/TensorFlow
- 实现简单的CNN、RNN
- 完成图像分类、文本分类项目
**学习资源**:
- 课程:Andrew Ng机器学习、Fast.ai
- 书籍:《Python机器学习》、《动手学深度学习》
- 实践:Kaggle、GitHub项目
### 7.2 进阶路径(6-12个月)
**第7-8个月:深度学习进阶**
- 理解Transformer架构
- 学习预训练模型使用
- 实践迁移学习
- 阅读经典论文
**第9-10个月:专项深入**
- 选择方向:NLP/CV/推荐系统
- 学习领域专业知识
- 复现经典论文
- 参加Kaggle竞赛
**第11-12个月:大模型应用**
- 学习LangChain、LlamaIndex
- 构建RAG系统
- 开发AI Agent
- 完成完整项目
**学习资源**:
- 课程:CS231n、CS224n
- 论文:arXiv、Papers with Code
- 实践:开源项目贡献
### 7.3 专家路径(12个月+)
**研究方向**:
- 模型架构创新
- 训练方法改进
- 应用领域突破
**技能要求**:
- 深厚的数学基础
- 强大的编程能力
- 论文阅读与写作
- 实验设计与分析
**发展方向**:
- 学术研究:发表顶会论文
- 工程应用:大厂AI工程师
- 创业创新:AI产品开发
### 7.4 学习建议
**保持实践**:
- 每天写代码
- 从小项目开始
- 逐步增加复杂度
**理论与实践结合**:
- 不要只看视频
- 理解原理后立即实现
- 修改参数观察效果
**建立知识体系**:
- 做笔记整理
- 画思维导图
- 写技术博客
**加入社区**:
- GitHub参与开源
- 论坛提问交流
- 参加线下活动
**持续学习**:
- AI发展迅速
- 关注最新进展
- 保持学习热情
## 第八节:本章总结
### 8.1 核心要点回顾
**AI发展历程**:
1950s: 图灵测试、达特茅斯会议 (AI诞生) ↓ 1980s: 专家系统黄金时代 ↓ 2006: 深度学习前奏 ↓ 2012: ImageNet突破 (深度学习革命) ↓ 2017: Transformer架构 ↓ 2018: BERT、GPT (预训练语言模型) ↓ 2022: ChatGPT (大模型时代) ↓ 2023-至今: 百模大战、多模态融合
**机器学习三大范式**:
- 监督学习:有标签,预测任务
- 无监督学习:无标签,模式发现
- 强化学习:奖励信号,决策优化
**深度学习关键突破**:
- CNN:计算机视觉革命
- RNN/LSTM:序列建模
- Transformer:NLP革命
- 大模型:涌现能力
**大模型关键技术**:
- 预训练+微调
- 提示工程
- RLHF对齐
- 参数高效微调
### 8.2 重要概念清单
- [ ] 人工智能、机器学习、深度学习的关系
- [ ] 监督学习、无监督学习、强化学习
- [ ] 神经网络、前向传播、反向传播
- [ ] CNN、RNN、Transformer架构
- [ ] 预训练语言模型(BERT、GPT)
- [ ] 大模型的涌现能力
- [ ] RLHF和模型对齐
- [ ] AI主要应用领域
### 8.3 思考题
1. 为什么2012年是深度学习的转折点?
2. Transformer相比RNN有哪些优势?
3. GPT和BERT的主要区别是什么?
4. 为什么大模型会出现涌现能力?
5. RLHF在ChatGPT训练中起什么作用?
### 8.4 实践任务
**任务1:运行第一个深度学习模型**
```python
# 使用PyTorch训练MNIST手写数字识别
# 要求:
# 1. 搭建简单的全连接网络
# 2. 训练并评估模型
# 3. 可视化训练过程
任务2:体验大模型能力
- 使用ChatGPT或其他大模型
- 尝试不同的提示词
- 观察零样本和少样本学习
- 测试思维链推理
任务3:阅读经典论文
- "Attention is All You Need" (Transformer)
- "BERT: Pre-training of Deep Bidirectional Transformers"
- "Language Models are Few-Shot Learners" (GPT-3)
下一章预告
恭喜你完成了AI基础与发展史的学习!现在你对AI的全貌有了清晰的认识。
下一章《Python与AI开发环境》将学习:
- Python核心库的使用(NumPy、Pandas、Matplotlib)
- PyTorch深度学习框架
- 开发环境搭建(Conda、CUDA、Docker)
- GPU环境配置
- 常用AI工具库
这些是你进行AI开发的基础工具,让我们继续前进!
学习记录:
- 阅读时间:____小时
- 理解程度:
- 实践完成:□ 任务1 □ 任务2 □ 任务3
- 笔记整理:□ 已完成
下次学习计划:
- 时间:________
- 章节:第01章 Python与AI开发环境
- 目标:掌握AI开发工具链