Files
2026_DesignAI/officefile/latex/chapters/ch08-rl.tex
T
pengxiao c81cf83c13 feat(latex): 新增 LaTeX 排版系统,从 Markdown 生成 ctexbook
- 新增 officefile/latex/ 目录,包含 main.tex、preamble.tex 及 14 个章节 + 10 个附录 tex 文件
- md→tex 转换流程:pandoc 转换 + _postprocess.py 后处理(去编号、修破折号、清标签)
- 修复 5 个 md 源文件的标题层级(H1→H2 降级,统一层级结构)
- 配置 VS Code LaTeX Workshop(xelatex + ctexbook 编译链)
- 新增 VS Code workspace 和 .gitignore(排除 LaTeX 编译产物)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 12:21:15 +08:00

1038 lines
42 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\chapter{强化学习——从决策到对齐}
\section{篇章导读}
强化学习(Reinforcement Learning, RL)是一种通过与环境交互、从反馈中学习的范式。与监督学习从标注数据中学习不同,强化学习的智能体(Agent)通过不断尝试行动、接收奖励或惩罚信号来优化自身行为策略。
2016年,AlphaGo击败围棋世界冠军李世石,让强化学习走入公众视野。此后,从蛋白质结构预测(AlphaFold)到大语言模型的人类对齐(RLHF),强化学习已深入AI的各个核心领域,成为现代人工智能不可或缺的基石。
本章将系统介绍强化学习的基础原理、核心算法、里程碑突破,以及它在大模型对齐和设计领域的应用。我们将看到,强化学习不仅是一种算法工具,更是理解''智能体如何在复杂世界中做出决策''的关键框架。
\section{学习目标}
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
理解强化学习的基本框架:智能体-环境交互循环
\item
掌握从Q-Learning到PPO的核心算法演进
\item
了解Alpha系列的技术突破及其意义
\item
理解RLHF如何将大语言模型与人类偏好对齐
\item
认识具身智能(Embodied AI)与强化学习的关联
\item
思考强化学习在设计领域的应用场景
\end{enumerate}
\section{RL基础}
\section{核心框架:智能体与环境的交互}
强化学习的核心是一个\textbf{智能体(Agent)与环境(Environment)的交互循环}
\begin{lstlisting}
┌─────────────────────────────────────────┐
│ │
│ ┌──────────┐ 动作 (Action) ┌──────────┐ │
│ │ │ ──────────────────> │ │ │
│ │ 智能体 │ │ 环境 │ │
│ │ (Agent) │ <────────────────── │(Environ.)│ │
│ │ │ 状态 (State) │ │ │
│ │ │ 奖励 (Reward) │ │ │
│ └──────────┘ └──────────┘ │
│ │
└─────────────────────────────────────────┘
\end{lstlisting}
在每一个时间步 t,交互过程如下:
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
智能体观察环境的\textbf{状态(State} s\_t
\item
智能体根据策略选择一个\textbf{动作(Action} a\_t
\item
环境返回\textbf{奖励(Reward} r\_t 和新的状态 s\_\{t+1\}
\item
智能体根据反馈更新策略,目标是最大化\textbf{累积奖励}
\end{enumerate}
这个过程就像一个学生做练习题:做题(选择动作),对答案(接收反馈),总结经验(更新策略),最终提高成绩(最大化累积奖励)。
\section{马尔可夫决策过程}
强化学习的数学基础是\textbf{马尔可夫决策过程(Markov Decision Process, MDP}。一个MDP由五元组 (S, A, P, R, γ) 定义:
{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3333}}
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3333}}
>{\raggedright\arraybackslash}p{(\linewidth - 4\tabcolsep) * \real{0.3333}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
符号
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
含义
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
说明
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
S & 状态空间(State Space & 环境所有可能的状态集合 \\
A & 动作空间(Action Space & 智能体可采取的所有动作集合 \\
P & 状态转移概率(Transition Probability & P(s' \\
R & 奖励函数(Reward Function & R(s,a),在状态s采取动作a获得的即时奖励 \\
γ & 折扣因子(Discount Factor & 0 ≤ γ ≤ 1,衡量未来奖励的重要性 \\
\end{longtable}
}
\textbf{马尔可夫性质(Markov Property} 是MDP的核心假设:未来只取决于当前状态,与过去无关。这就像下棋时,当前的棋盘状态已经包含了所有必要信息,不需要知道之前的每一步走法。
\section{价值函数}
智能体的目标是最大化累积折扣奖励:
\[G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + ... = \sum_{k=0}^{\infty} \gamma^k r_{t+k}\]
为了评估''处于某个状态有多好'',我们定义两种价值函数:
\textbf{状态价值函数(State Value FunctionV(s)}:在状态s下,遵循策略π所能获得的期望累积奖励。
\[V^\pi(s) = \mathbb{E}_\pi [G_t | S_t = s]\]
\textbf{动作价值函数(Action Value FunctionQ(s,a)}:在状态s下采取动作a,之后遵循策略π所能获得的期望累积奖励。
\[Q^\pi(s, a) = \mathbb{E}_\pi [G_t | S_t = s, A_t = a]\]
两者的关系是:V(s) 是对所有可能动作的Q值的加权平均。Q函数更为实用,因为它直接告诉我们在某个状态下''哪个动作最好''。
\section{Q-Learning}\label{q-learning}
\textbf{Q-Learning} 是一种经典的免策略(Off-policy)时序差分算法,它直接学习最优Q函数,而不需要知道环境的具体模型。
其更新规则为:
\[Q(s, a) \leftarrow Q(s, a) + \alpha [r + \gamma \max_{a'} Q(s', a') - Q(s, a)]\]
其中: - α 是学习率(Learning Rate),控制每次更新的步长 - r + γ max Q(s', a') 是\textbf{目标值},即当前奖励加上下一状态的最大Q值 - Q(s, a) 是\textbf{当前估计值} - 方括号内的差值称为\textbf{时序差分误差(TD Error}
这就像考试估分:你先估计自己能得多少分(当前Q值),对答案后发现实际得分(目标值),然后修正你的估计。
\textbf{探索与利用的平衡(Exploration vs.~Exploitation} 是Q-Learning的关键问题。ε-greedy策略是最简单的解决方案:以概率ε随机选择动作(探索),以概率1-ε选择当前最优动作(利用)。
\section{DQN:深度Q网络}
当状态空间很大时(如像素级游戏画面),用表格存储所有Q值不再可行。2015年,DeepMind提出的\textbf{DQNDeep Q-Network}用神经网络来近似Q函数,实现了从感知到决策的端到端学习。
DQN的两个关键创新:
\textbf{经验回放(Experience Replay}:将智能体的经历 (s, a, r, s') 存储在回放缓冲区中,训练时随机采样小批量数据。这打破了数据之间的时间相关性,提高了训练稳定性。
\textbf{目标网络(Target Network}:使用一个独立的目标网络来计算目标值,每隔一定步数才更新。这避免了''追逐移动目标''的不稳定性。
\begin{lstlisting}[language=Python]
# DQN核心思路伪代码
import torch
import torch.nn as nn
import random
from collections import deque
class DQN(nn.Module):
def __init__(self, state_dim, action_dim):
super().__init__()
self.net = nn.Sequential(
nn.Linear(state_dim, 128),
nn.ReLU(),
nn.Linear(128, 128),
nn.ReLU(),
nn.Linear(128, action_dim)
)
def forward(self, x):
return self.net(x) # 输出每个动作的Q值
# 经验回放缓冲区
replay_buffer = deque(maxlen=10000)
# 训练循环(简化版)
for episode in range(num_episodes):
state = env.reset()
for step in range(max_steps):
# ε-greedy选择动作
if random.random() < epsilon:
action = env.action_space.sample() # 探索
else:
with torch.no_grad():
action = q_network(state).argmax() # 利用
next_state, reward, done, _ = env.step(action)
replay_buffer.append((state, action, reward, next_state))
# 从回放缓冲区采样并训练
if len(replay_buffer) >= batch_size:
batch = random.sample(replay_buffer, batch_size)
# 计算损失并更新网络
# loss = MSE(Q(s,a), r + γ * max Q_target(s', a'))
...
if done:
break
\end{lstlisting}
\textbf{突破性成果}:DQN在49款Atari游戏上达到了人类水平的性能,仅从游戏画面的像素输入和分数反馈就能学会各种不同的游戏策略。这一成果标志着深度强化学习时代的开启。
\section{代码示例:网格世界中的Q-Learning}
下面是一个简化的Q-Learning完整示例,智能体在4×4网格中学习从起点走到终点:
\begin{lstlisting}[language=Python]
import numpy as np
# 定义4×4网格世界
# 状态:0-15(网格中的每个格子)
# 动作:0=上, 1=右, 2=下, 3=左
grid_size = 4
n_states = grid_size * grid_size
n_actions = 4
goal = 15 # 目标状态:右下角
# 初始化Q表(所有值设为0
Q = np.zeros((n_states, n_actions))
# 超参数
alpha = 0.1 # 学习率
gamma = 0.95 # 折扣因子
epsilon = 0.1 # 探索率
episodes = 500
# 动作对应的位移
action_map = {
0: -grid_size, # 上
1: 1, # 右
2: grid_size, # 下
3: -1 # 左
}
def get_next_state(state, action):
"""执行动作后的下一个状态"""
next_state = state + action_map[action]
# 边界检查
if next_state < 0 or next_state >= n_states:
return state # 撞墙,留在原地
# 左右边界检查
if action == 1 and state % grid_size == grid_size - 1:
return state
if action == 3 and state % grid_size == 0:
return state
return next_state
# Q-Learning训练
for ep in range(episodes):
state = 0 # 起点:左上角
while state != goal:
# ε-greedy选择动作
if np.random.random() < epsilon:
action = np.random.randint(n_actions)
else:
action = np.argmax(Q[state])
next_state = get_next_state(state, action)
# 奖励设计:到达目标+10,每步-1(鼓励快速到达)
reward = 10 if next_state == goal else -1
# Q-Learning更新
Q[state, action] += alpha * (
reward + gamma * np.max(Q[next_state]) - Q[state, action]
)
state = next_state
# 输出学到的策略
directions = ['↑', '→', '↓', '←']
print("学到的最优策略:")
for s in range(n_states):
if s == goal:
print('🎯', end=' ')
else:
print(directions[np.argmax(Q[s])], end=' ')
if (s + 1) % grid_size == 0:
print()
# 输出示例:
# → → ↓ ↓
# ↓ → ↓ ↓
# → ↓ ↓ ↓
# ↓ → → 🎯
\end{lstlisting}
\begin{quote}
\textbf{小贴士}:这个简单示例展示了强化学习的核心思想——智能体不需要任何人告诉它''该怎么走'',它只通过不断尝试和接收奖励反馈,就自己发现了最优路径。这正是强化学习区别于监督学习的本质。
\end{quote}
\section{策略优化}
Q-Learning和DQN属于\textbf{基于价值(Value-Based} 的方法:先学习价值函数,再间接推导策略。另一类方法是\textbf{基于策略(Policy-Based} 的方法,直接优化策略本身。
\section{策略梯度(Policy Gradient}
策略梯度方法直接参数化策略 π\_θ(a\textbar s),通过梯度上升最大化期望累积奖励:
\[\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} \left[ \sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t \right]\]
直觉理解:如果某条轨迹的总回报G\_t很高,就增大产生该轨迹的概率;反之则降低。这就像鼓励好的行为、惩罚坏的行为。
\textbf{REINFORCE算法}是最基本的策略梯度方法:
\begin{lstlisting}[language=Python]
# REINFORCE算法核心思路
import torch
import torch.nn as nn
import torch.optim as optim
class PolicyNetwork(nn.Module):
def __init__(self, state_dim, action_dim):
super().__init__()
self.net = nn.Sequential(
nn.Linear(state_dim, 128),
nn.ReLU(),
nn.Linear(128, action_dim),
nn.Softmax(dim=-1)
)
def forward(self, x):
return self.net(x) # 输出动作概率分布
policy = PolicyNetwork(state_dim, action_dim)
optimizer = optim.Adam(policy.parameters(), lr=0.01)
for episode in range(num_episodes):
log_probs = [] # 存储每步的log概率
rewards = [] # 存储每步的奖励
state = env.reset()
while not done:
action_probs = policy(state)
action = torch.distributions.Categorical(action_probs).sample()
log_probs.append(torch.log(action_probs[action]))
state, reward, done, _ = env.step(action)
rewards.append(reward)
# 计算折扣累积奖励
returns = compute_returns(rewards, gamma)
# 策略梯度更新
loss = -sum(lp * G for lp, G in zip(log_probs, returns))
optimizer.zero_grad()
loss.backward()
optimizer.step()
\end{lstlisting}
REINFORCE的问题在于\textbf{方差大}:由于每条轨迹的回报波动很大,梯度估计不稳定,训练效率低。
\section{Actor-Critic方法}
\textbf{Actor-Critic} 方法结合了基于价值和基于策略的优势:
\begin{lstlisting}
┌─────────────────────────────────┐
│ Actor-Critic 架构 │
│ │
│ ┌─────────┐ ┌───────────┐ │
│ │ Actor │ │ Critic │ │
│ │ (策略网络)│ │(价值网络) │ │
│ │ │ │ │ │
│ │ 输入:状态│ │ 输入:状态│ │
│ │ 输出:动作│ │ 输出:V(s)│ │
│ └─────────┘ └───────────┘ │
│ │
│ Actor根据Critic的评估改进策略 │
│ Critic学习更准确地评估状态价值 │
└─────────────────────────────────┘
\end{lstlisting}
\begin{itemize}
\tightlist
\item
\textbf{Actor(演员)}:策略网络,负责选择动作
\item
\textbf{Critic(评论家)}:价值网络,负责评估当前状态的好坏
\end{itemize}
Critic提供一个\textbf{基线(Baseline},使得梯度估计的方差大大降低。具体来说,使用\textbf{优势函数(Advantage Function}
\[A(s, a) = Q(s, a) - V(s)\]
优势函数衡量的是''采取动作a比平均水平好多少''。如果A \textgreater{} 0,说明这个动作比期望的好,应该增加其概率;反之则降低。
\section{PPO:近端策略优化}
\textbf{PPOProximal Policy Optimization, 2017} 是由OpenAI提出的一种策略优化算法,它通过限制策略更新的幅度来保证训练稳定性,成为当前最广泛使用的强化学习算法之一。
PPO的核心思想:每次更新策略时,新策略与旧策略不能相差太大。这通过\textbf{裁剪目标函数(Clipped Objective} 实现:
\[L^{CLIP}(\theta) = \mathbb{E}_t \left[ \min \left( r_t(\theta) \hat{A}_t, \; \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t \right) \right]\]
其中 r\_t(θ) = π\_θ(a\_t\textbar s\_t) / π\_θ\_old(a\_t\textbar s\_t) 是新旧策略的概率比。
\begin{lstlisting}[language=Python]
# PPO核心思路(简化版)
def ppo_update(states, actions, old_log_probs, returns, advantages):
for epoch in range(ppo_epochs):
# 计算新的log概率
new_log_probs = policy.get_log_prob(states, actions)
ratio = torch.exp(new_log_probs - old_log_probs)
# PPO裁剪目标
surr1 = ratio * advantages
surr2 = torch.clamp(ratio, 1 - clip_epsilon, 1 + clip_epsilon) * advantages
actor_loss = -torch.min(surr1, surr2).mean()
# Critic损失
values = critic(states)
critic_loss = nn.MSELoss()(values, returns)
# 总损失
loss = actor_loss + 0.5 * critic_loss
optimizer.zero_grad()
loss.backward()
optimizer.step()
\end{lstlisting}
\textbf{为什么PPO成为标准?}
{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}ll@{}}
\toprule\noalign{}
特性 & 说明 \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
稳定性 & 裁剪机制防止策略突变,训练过程平稳 \\
简洁性 & 相比TRPO等算法,实现简单,超参数少 \\
性能 & 在多种任务上表现优异 \\
通用性 & 适用于连续和离散动作空间 \\
可扩展性 & 是RLHF训练大语言模型的核心算法 \\
\end{longtable}
}
\begin{quote}
\textbf{关键连接}:PPO正是ChatGPT等大语言模型在RLHF(人类反馈强化学习)阶段使用的核心算法。我们在6.4节将详细讨论这一过程。
\end{quote}
\section{A3C / A2C}\label{a3c-a2c}
\textbf{A3CAsynchronous Advantage Actor-Critic, 2016} 是DeepMind提出的并行训练框架:
\begin{itemize}
\tightlist
\item
多个Actor-Critic智能体同时在不同的环境副本中运行
\item
异步更新全局网络参数
\item
大幅提升训练速度和样本效率
\end{itemize}
\textbf{A2CAdvantage Actor-Critic} 是A3C的同步版本,去掉了异步机制,实现更简洁,性能相当:
\begin{lstlisting}
A3C: 多个Worker异步更新 → 参数可能冲突,但整体有效
A2C: 多个Worker同步更新 → 等待所有Worker完成,再统一更新
\end{lstlisting}
\section{Alpha系列}
从2016年开始,DeepMind的Alpha系列成果不断刷新人们对AI能力的认知。这些突破展示了一个共同的技术范式:\textbf{搜索 + 深度学习 + 海量计算}
\section{AlphaGo2016}\label{alphago2016}
2016年3月,AlphaGo以4:1击败围棋世界冠军李世石,这是AI发展史上的里程碑事件。围棋的状态空间约为10\textsuperscript{170,远超国际象棋(10}47),被普遍认为在短期内不可能被机器攻克。
AlphaGo的核心技术组合:
\textbf{策略网络(Policy Network}:学习''下一步应该下在哪里'',输入棋盘状态,输出每个位置落子的概率分布。
\textbf{价值网络(Value Network}:学习''当前局面谁更可能赢'',输入棋盘状态,输出一个-1到1之间的胜率评估。
\textbf{蒙特卡洛树搜索(Monte Carlo Tree Search, MCTS}:在策略网络的指导下进行前瞻搜索,通过模拟大量对局来评估每个候选落子点的价值。
\begin{lstlisting}
AlphaGo的训练流程:
第一步:监督学习
← 人类专家棋谱 → 训练策略网络(预测人类落子)
第二步:强化学习
← 策略网络自我对弈 → 提升策略网络
第三步:强化学习
← 自我对弈数据 → 训练价值网络(评估局面)
第四步:实战
← 策略网络 + 价值网络 + MCTS → 与人类对弈
\end{lstlisting}
AlphaGo的意义远超围棋本身。它证明了:\textbf{在极其复杂的决策空间中,深度学习与搜索的结合可以超越人类数千年的知识积累}
\section{AlphaZero2017}\label{alphazero2017}
如果说AlphaGo还需要人类棋谱作为起点,那么\textbf{AlphaZero}则完全抛弃了人类知识,仅通过\textbf{自我对弈(Self-Play} 从零开始学习。
\begin{lstlisting}
AlphaGo : 人类棋谱 → 监督学习 → 强化学习 → MCTS
AlphaZero : 随机下棋 → 自我对弈 → 不断改进 → MCTS
\end{lstlisting}
AlphaZero用同一个框架掌握了三种完全不同的棋类:
{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}lll@{}}
\toprule\noalign{}
游戏 & 训练时间 & 成果 \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
围棋(Go & 21天 & 击败此前的AlphaGo版本 \\
国际象棋(Chess & 4小时 & 击败Stockfish(世界冠军级引擎) \\
将棋(Shogi & 2小时 & 击败Elmo(日本将棋冠军程序) \\
\end{longtable}
}
AlphaZero的启示:\textbf{当我们摆脱对人类数据的依赖,让AI完全通过自我探索来学习时,它可能发现人类从未想到过的策略}。在对弈中,AlphaZero经常下出人类专家认为''错误''的棋,最终却证明是更优的选择。
\section{AlphaFold2020}\label{alphafold2020}
\textbf{AlphaFold} 将强化学习的思想拓展到科学发现领域。它解决了困扰生物学界50年的\textbf{蛋白质结构预测}问题——根据氨基酸序列预测蛋白质的三维结构。
\begin{lstlisting}
蛋白质折叠问题:
氨基酸序列(一维)→ ? → 蛋白质结构(三维)
AlphaFold的思路:
- 将结构预测转化为"空间约束满足"问题
- 利用注意力机制捕捉氨基酸之间的长程相互作用
- 迭代优化,逐步精化结构预测
\end{lstlisting}
AlphaFold的意义对设计领域尤其深远:
\begin{itemize}
\tightlist
\item
\textbf{分子/空间推理}:蛋白质折叠本质上是一个三维空间优化问题,与设计中的空间布局、形态优化有深刻的相似性
\item
\textbf{从规则到预测}:从传统的物理实验方法转向数据驱动的预测方法,这与设计领域从经验到数据驱动的发展方向一致
\item
\textbf{科学发现的范式}:展示了AI如何加速科学发现,为设计领域的创新提供了新思路
\end{itemize}
\section{Alpha系列的技术范式}
总结Alpha系列的成功模式:
\begin{lstlisting}
┌──────────────────────────────────────────┐
│ Alpha系列技术范式 │
│ │
│ ┌─────────┐ ┌──────────┐ ┌───────┐ │
│ │ 搜索 │+│ 深度学习 │+│ 大计算 │ │
│ │ (Search)│ │(Deep L.) │ │(Scale)│ │
│ └─────────┘ └──────────┘ └───────┘ │
│ │
│ AlphaGo : MCTS + CNN + GPU集群 │
│ AlphaZero : MCTS + ResNet + TPU集群 │
│ AlphaFold : 优化器 + Transformer + TPU│
└──────────────────────────────────────────┘
\end{lstlisting}
这一范式对设计领域的启示:复杂的设计问题(如城市规划、建筑布局)也可能通过''搜索 + 深度学习 + 计算''的组合来获得突破。
\begin{quote}
\textbf{从游戏AI到科学发现}:Alpha系列的演进轨迹——从游戏(封闭规则、明确目标)到蛋白质折叠(开放规则、复杂约束)——暗示了强化学习从''玩具问题''走向''真实世界问题''的趋势。设计领域正是这种真实世界问题的重要阵地。
\end{quote}
\section{人类对齐}
\section{为什么需要对齐?}
经过预训练的大语言模型(如第3章所述)虽然拥有强大的文本生成能力,但它本质上是在模仿训练数据中的模式。这导致几个严重问题:
\begin{itemize}
\tightlist
\item
\textbf{有害内容}:可能生成歧视、暴力、虚假信息等有害内容
\item
\textbf{不一致性}:对同一问题可能给出互相矛盾的答案
\item
\textbf{不服从指令}:可能忽略用户的明确要求
\item
\textbf{价值观偏差}:可能反映训练数据中的偏见
\end{itemize}
\textbf{对齐(Alignment} 的目标是让AI模型的行为符合人类的价值观和期望,使其成为安全、有用、诚实的助手。而\textbf{RLHFReinforcement Learning from Human Feedback} 是目前最成功的对齐方法。
\begin{quote}
\textbf{回顾第3章}:在第3章中我们了解了Transformer架构和语言模型的预训练过程。预训练赋予模型''能力'',而RLHF赋予模型''方向''——让能力服务于人类的目标。
\end{quote}
\section{RLHF:从人类反馈中学习}
RLHF分为三个阶段:
\textbf{阶段一:监督微调(Supervised Fine-Tuning, SFT}
\begin{lstlisting}
输入-输出对示例:
用户:请解释什么是气候变化
助手:气候变化是指全球气温长期上升的现象...
用户:帮我写一封请假邮件
助手:尊敬的领导,您好!因...
\end{lstlisting}
用高质量的人工编写对话数据对预训练模型进行微调,让模型学会以对话的形式回应指令。
\textbf{阶段二:奖励模型训练(Reward Model Training}
\begin{lstlisting}
对于同一个问题,模型生成多个回答:
问题:推荐一本适合初学者的设计书
回答A:《设计中的设计》——原研哉 ← 标注者排序:第1
回答B:我推荐你看一些设计类的书... ← 标注者排序:第3
回答C:原研哉的《设计中的设计》是... ← 标注者排序:第2
根据人类的排序偏好训练奖励模型:
输入:(问题, 回答) → 输出:标量奖励分数
\end{lstlisting}
奖励模型学习人类的偏好判断:给定一个问题和多个回答,它能预测人类更偏好哪个回答,并给出一个数值分数。
\textbf{阶段三:PPO强化学习优化}
\begin{lstlisting}
┌─────────────────────────────────────────────────┐
│ RLHF 第三阶段:PPO训练 │
│ │
│ ┌──────────┐ 生成回答 ┌──────────┐ │
│ │ SFT模型 │ ────────> │ 奖励模型 │ → 奖励分 │
│ │(待优化) │ │ │ │
│ └──────────┘ └──────────┘ │
│ ↑ │
│ │ 更新策略(PPO) │
│ │ 目标:最大化奖励模型给出的分数 │
│ ┌──────────┐ │
│ │ KL散度约束│ → 防止偏离SFT模型太远 │
│ └──────────┘ │
└─────────────────────────────────────────────────┘
\end{lstlisting}
在这个阶段,SFT模型成为RL的智能体: - \textbf{状态}:用户的问题 - \textbf{动作}:生成的回答 - \textbf{奖励}:奖励模型给出的分数 - \textbf{算法}PPO,保证训练的稳定性
同时,通过\textbf{KL散度惩罚(KL Divergence Penalty} 约束模型不要偏离原始SFT模型太远,防止''奖励黑客(Reward Hacking)``——模型学会生成奖励模型给高分但实际无意义的内容。
\begin{lstlisting}[language=Python]
# RLHF第三阶段伪代码
for step in range(training_steps):
# 1. 用当前策略(SFT模型)生成回答
prompt = sample_prompt()
response = policy.generate(prompt)
# 2. 奖励模型打分
reward = reward_model(prompt, response)
# 3. KL散度惩罚(防止偏离太远)
kl_penalty = compute_kl_divergence(policy, reference_model)
adjusted_reward = reward - kl_coef * kl_penalty
# 4. PPO更新
ppo_update(prompt, response, adjusted_reward)
\end{lstlisting}
\section{RLAIF与Constitutional AI}
RLHF需要大量人工标注,成本高昂。\textbf{RLAIFReinforcement Learning from AI Feedback} 用AI替代人类标注者来提供反馈:
\textbf{Constitutional AI(宪法AI} 由Anthropic提出,其核心思想是让AI通过一组''宪法原则''进行自我纠正:
\begin{lstlisting}
Constitutional AI 流程:
1. AI生成回答(可能包含有害内容)
2. AI根据宪法原则自我批评:
"这个回答是否尊重了所有人?"
"这个回答是否准确?"
3. AI根据批评修改回答
4. 用(问题, 修改后回答)对训练偏好模型
5. 用RL优化策略
宪法原则示例:
- 选择最无害且最有帮助的回答
- 选择最准确和真实的回答
- 选择最尊重所有群体的回答
\end{lstlisting}
这种方法的优势在于:反馈的规模不再受限于人工标注的速度,可以大规模、高效率地进行对齐训练。
\begin{quote}
\textbf{思考}:从RLHF到RLAIF,我们看到一个有趣的趋势——AI越来越多地参与自身的训练和改进。这在提高效率的同时也带来了新的安全问题:如何确保AI的自我评估是可靠的?
\end{quote}
\section{具身智能}
\section{什么是具身智能?}
\textbf{具身智能(Embodied AI} 是指拥有物理或虚拟''身体''的AI系统,它通过与真实或模拟环境的物理交互来学习和完成任务。
传统AI(如大语言模型)是一个''缸中之脑''——只有信息处理能力,没有物理交互。具身智能则强调\textbf{感知-决策-行动}的闭环:
\begin{lstlisting}
┌───────────────────────────────────────────┐
│ 具身智能闭环 │
│ │
│ 感知 (Perception) → 理解物理世界 │
│ ↓ │
│ 决策 (Decision) → 规划行动方案 │
│ ↓ │
│ 行动 (Action) → 执行物理操作 │
│ ↓ │
│ 反馈 (Feedback) → 观察行动结果 │
│ ↓ │
│ 感知 (Perception) → 更新世界模型 ... │
└───────────────────────────────────────────┘
\end{lstlisting}
强化学习是训练具身智能的核心方法:智能体通过在环境中不断尝试、接收奖励反馈来学习最优行为策略。
\section{数字孪生}
\textbf{数字孪生(Digital Twin} 是连接物理世界和数字世界的桥梁:
\begin{lstlisting}
物理世界 数字世界
┌─────────┐ ┌─────────┐
│ 真实建筑 │ ←映射→ │ 数字模型 │
│ 真实城市 │ │ 仿真环境 │
│ 真实设备 │ │ 虚拟副本 │
└─────────┘ └─────────┘
强化学习训练
↓ 控制指令 ↓
┌─────────┐
│ 物理世界 │
│ 执行控制 │
└─────────┘
\end{lstlisting}
数字孪生为强化学习提供了安全、高效的训练环境。设计师可以在虚拟环境中测试各种方案,然后用最优方案指导物理世界的实施。
\section{Gymnasium环境}
\textbf{Gymnasium}(原OpenAI Gym)是强化学习的标准环境库,提供了丰富的测试环境:
\begin{lstlisting}[language=Python]
import gymnasium as gym
# 创建CartPole环境(经典平衡控制问题)
env = gym.make("CartPole-v1")
# 基本交互循环
observation, info = env.reset()
for step in range(1000):
# 选择动作(这里用随机策略)
action = env.action_space.sample()
# 与环境交互
observation, reward, terminated, truncated, info = env.step(action)
# observation: [小车位置, 小车速度, 杆子角度, 杆子角速度]
# action: 0=向左推, 1=向右推
# reward: 杆子保持直立的每一步得+1分
if terminated or truncated:
observation, info = env.reset()
env.close()
\end{lstlisting}
Gymnasium中与设计相关的环境包括:
{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}lll@{}}
\toprule\noalign{}
环境 & 说明 & 设计关联 \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
CartPole-v1 & 平衡控制 & 结构稳定性 \\
LunarLander-v2 & 月球着陆 & 着陆规划 \\
Ant/Humanoid & 机器人运动 & 人体工程学 \\
MuJoCo系列 & 物理仿真 & 材料与结构 \\
\end{longtable}
}
\section{Sim2Real:从仿真到现实}
强化学习在仿真环境中训练智能体,但仿真与真实世界之间存在\textbf{Sim2Real差距(Sim2Real Gap}
\begin{lstlisting}
仿真环境 (Sim) 真实世界 (Real)
┌──────────────┐ ┌──────────────┐
│ 完美的物理模型│ │ 复杂的摩擦力 │
│ 确定的传感器 │ │ 噪声和延迟 │
│ 可控的环境 │ │ 不可预测的变化 │
│ 无限试错 │ │ 安全限制 │
└──────────────┘ └──────────────┘
↕ Sim2Real Gap ↕
\end{lstlisting}
缩小Sim2Real差距的主要方法:
\begin{itemize}
\tightlist
\item
\textbf{域随机化(Domain Randomization}:在训练时随机改变仿真参数(摩擦力、光照、传感器噪声等),使策略对不同环境条件具有鲁棒性
\item
\textbf{系统辨识(System Identification}:从真实世界数据中学习更准确的仿真参数
\item
\textbf{渐进迁移(Progressive Transfer}:先在仿真中训练,再在真实环境中微调
\end{itemize}
\section{具身智能的挑战与前景}
当前面临的挑战:
\begin{itemize}
\tightlist
\item
\textbf{安全约束}:真实世界的错误可能导致物理损坏或人员伤害
\item
\textbf{泛化能力}:训练环境中学会的策略能否适应未知的新环境
\item
\textbf{样本效率}:机器人交互数据获取成本高,需要更高效的算法
\item
\textbf{多模态融合}:整合视觉、触觉、听觉等多种感知信息
\end{itemize}
设计领域的应用前景:
\begin{itemize}
\tightlist
\item
\textbf{建筑施工机器人}:自动砌砖、3D打印建筑、无人驾驶施工车辆
\item
\textbf{自主测量无人机}:自动巡检建筑工地、生成地形测绘
\item
\textbf{智能材料实验}:机器人自动进行材料性能测试
\item
\textbf{交互式设计原型}:具身智能体与设计方案的物理验证
\end{itemize}
\section{设计应用}
强化学习为设计领域提供了从''被动工具''到''主动智能体''的范式转变。以下是一些具有代表性的应用场景。
\section{空间布局优化}
将家具/房间布局问题建模为强化学习问题:
\begin{lstlisting}
状态 (State):当前布局方案
- 家具的位置、朝向
- 空间的几何约束
- 功能区域划分
动作 (Action):调整布局
- 移动某件家具
- 旋转某件家具
- 交换两件家具的位置
奖励 (Reward):布局质量评估
+ 功能合理性(动线通畅度)
+ 美学指标(对称性、比例)
+ 规范满足(消防通道、日照要求)
- 碰撞惩罚
- 空间浪费惩罚
\end{lstlisting}
与传统优化算法相比,强化学习方法的优势在于能够学习到布局的''风格''和''策略'',而不仅是找到单一最优解。
\section{路径规划与导航}
强化学习在自主导航中已有广泛应用,同样适用于设计空间中的路径规划:
\begin{itemize}
\tightlist
\item
\textbf{建筑内部导航}:优化紧急疏散路径
\item
\textbf{景观游览路径}:自动生成最优游览路线
\item
\textbf{施工物流规划}:建筑材料的自动运输路径
\item
\textbf{城市交通信号优化}:根据实时车流动态调整信号灯
\end{itemize}
\begin{lstlisting}[language=Python]
# 城市交通信号优化概念示意
class TrafficSignalEnv:
"""交通信号控制强化学习环境"""
def __init__(self, intersection):
self.intersection = intersection
# 状态:各方向车流量、等待时间、当前信号相位
# 动作:切换信号相位(哪条路绿灯)
# 奖励:-(总等待时间 + 红灯通过惩罚)
def step(self, action):
# 切换信号相位
self.intersection.set_phase(action)
# 模拟一个时间步的交通流
self.simulate_traffic()
# 计算奖励
reward = -self.get_total_waiting_time()
return self.get_state(), reward, False, {}
\end{lstlisting}
\section{自主设计智能体}
将强化学习与生成模型结合,构建能够\textbf{自我改进的设计系统}
\begin{lstlisting}
设计智能体框架:
设计需求 ──→ 生成模型 ──→ 设计方案
↑ │
│ ↓
策略改进 ←──── 设计评估
(奖励信号)
迭代优化
\end{lstlisting}
这种框架下,设计智能体能够: - 根据评估反馈自动调整设计参数 - 在大量设计变体中搜索最优方案 - 学习人类设计师的偏好和风格
\section{建筑自动化}
强化学习在建筑制造领域的应用:
{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}llll@{}}
\toprule\noalign{}
应用 & 状态 & 动作 & 奖励 \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
砌砖机器人 & 当前砖墙状态 & 砖的放置位置和方式 & 墙体质量、效率 \\
3D打印建筑 & 打印进度状态 & 打印路径、速度 & 结构强度、材料效率 \\
无人施工车 & 工地地图 & 行驶路径、操作 & 任务完成度、安全性 \\
塔吊自动化 & 吊载状态 & 运动轨迹 & 就位精度、时间效率 \\
\end{longtable}
}
\section{城市系统优化}
强化学习在城市规划和设计中的应用:
\begin{itemize}
\tightlist
\item
\textbf{交通流量优化}:多智能体强化学习协调全城交通信号
\item
\textbf{能源管理}:建筑群能耗的动态优化
\item
\textbf{供水系统}:管网压力和流量的智能调度
\item
\textbf{垃圾回收路线}:根据实时数据动态规划回收路线
\end{itemize}
\begin{quote}
\textbf{案例}:杭州城市大脑使用强化学习算法优化交通信号控制,在部分路段实现了15\%的通行效率提升。这类应用展示了强化学习在城市设计中的巨大潜力。
\end{quote}
\section{思考与练习}
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
\textbf{概念理解}:试比较监督学习、无监督学习和强化学习三种范式的区别。在什么场景下,强化学习比监督学习更适合?请结合设计领域的例子说明。
\item
\textbf{算法思考}:RLHF的三个阶段(SFT → 奖励模型 → PPO优化)为什么缺一不可?如果跳过奖励模型阶段,直接用人工标注的分数进行PPO训练,会遇到什么问题?
\item
\textbf{设计应用}:选择一个你熟悉的设计场景(如室内设计、城市规划、产品设计等),将其建模为一个强化学习问题。请定义:状态空间、动作空间、奖励函数,并分析这个建模方式的优缺点。
\end{enumerate}
\section{关键术语}
{\def\LTcaptype{none} % do not increment counter
\begin{longtable}[]{@{}
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2727}}
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2727}}
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.1818}}
>{\raggedright\arraybackslash}p{(\linewidth - 6\tabcolsep) * \real{0.2727}}@{}}
\toprule\noalign{}
\begin{minipage}[b]{\linewidth}\raggedright
中文术语
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
英文术语
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
缩写
\end{minipage} & \begin{minipage}[b]{\linewidth}\raggedright
简要说明
\end{minipage} \\
\midrule\noalign{}
\endhead
\bottomrule\noalign{}
\endlastfoot
强化学习 & Reinforcement Learning & RL & 通过与环境交互和反馈来学习决策的方法 \\
智能体 & Agent & --- & 能够感知环境并采取行动的实体 \\
马尔可夫决策过程 & Markov Decision Process & MDP & 强化学习的数学框架,由(S,A,P,R,γ)定义 \\
状态 & State & S & 环境在某一时刻的描述 \\
动作 & Action & A & 智能体可采取的行为 \\
奖励 & Reward & R & 环境对智能体行为的反馈信号 \\
折扣因子 & Discount Factor & γ & 衡量未来奖励重要性的参数 \\
价值函数 & Value Function & V(s) & 评估某状态的长期收益期望 \\
动作价值函数 & Action Value Function & Q(s,a) & 评估在某状态下采取某动作的长期收益 \\
Q-Learning & Q-Learning & --- & 经典的免模型强化学习算法 \\
深度Q网络 & Deep Q-Network & DQN & 用神经网络近似Q函数的算法 \\
策略梯度 & Policy Gradient & PG & 直接优化策略的强化学习方法 \\
近端策略优化 & Proximal Policy Optimization & PPO & 限制策略更新幅度的稳定优化算法 \\
人类反馈强化学习 & Reinforcement Learning from Human Feedback & RLHF & 利用人类偏好反馈训练AI的方法 \\
AI反馈强化学习 & Reinforcement Learning from AI Feedback & RLAIF & 利用AI生成的反馈进行训练 \\
宪法AI & Constitutional AI & CAI & 通过原则进行自我纠正的对齐方法 \\
具身智能 & Embodied AI & --- & 具有物理/虚拟身体的AI系统 \\
数字孪生 & Digital Twin & --- & 物理实体的数字化映射 \\
仿真到现实 & Sim2Real & --- & 将仿真中训练的策略迁移到真实世界 \\
蒙特卡洛树搜索 & Monte Carlo Tree Search & MCTS & 通过模拟评估决策树节点的搜索算法 \\
自我对弈 & Self-Play & --- & AI通过与自身对弈来提升能力的方法 \\
探索与利用 & Exploration vs.~Exploitation & --- & 尝试新策略与使用已知最优策略的平衡 \\
经验回放 & Experience Replay & --- & 存储和复用历史交互数据的技术 \\
对齐 & Alignment & --- & 使AI行为符合人类价值观和期望的过程 \\
KL散度 & KL Divergence & KL & 衡量两个概率分布差异的指标 \\
\end{longtable}
}