\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 Function)V(s)}:在状态s下,遵循策略π所能获得的期望累积奖励。 \[V^\pi(s) = \mathbb{E}_\pi [G_t | S_t = s]\] \textbf{动作价值函数(Action Value Function)Q(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{DQN(Deep 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{PPO(Proximal 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{A3C(Asynchronous Advantage Actor-Critic, 2016)} 是DeepMind提出的并行训练框架: \begin{itemize} \tightlist \item 多个Actor-Critic智能体同时在不同的环境副本中运行 \item 异步更新全局网络参数 \item 大幅提升训练速度和样本效率 \end{itemize} \textbf{A2C(Advantage Actor-Critic)} 是A3C的同步版本,去掉了异步机制,实现更简洁,性能相当: \begin{lstlisting} A3C: 多个Worker异步更新 → 参数可能冲突,但整体有效 A2C: 多个Worker同步更新 → 等待所有Worker完成,再统一更新 \end{lstlisting} \section{Alpha系列} 从2016年开始,DeepMind的Alpha系列成果不断刷新人们对AI能力的认知。这些突破展示了一个共同的技术范式:\textbf{搜索 + 深度学习 + 海量计算}。 \section{AlphaGo(2016)}\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{AlphaZero(2017)}\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{AlphaFold(2020)}\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{RLHF(Reinforcement 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{RLAIF(Reinforcement 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} }