\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}
}
