读心术:对手建模与心智理论 (Agent Modeling & Theory of Mind)
摘要:多智能体强化学习(MARL)中,对手建模(Agent Modeling)和心智理论(ToM)是提升智能体认知能力的关键。显式建模通过监督学习预测对手动作,适合固定策略场景;隐式表征学习提取对手潜在特征(如风格或意图),支持零样本泛化;而ToM通过递归推理模拟对手思维层级,适用于复杂心理博弈。本文系统梳理了三种方法的原理、实现及适用场景,为MARL从感知智能迈向认知智能提供技术路线。
摘要:
在单智能体 RL 中,环境是死板的物理规则;但在多智能体 RL (MARL) 中,环境包含了其他会思考、会学习的智能体。如果把对手仅仅当作环境背景(Environment),我们就放弃了博弈的主动权。对手建模 (Agent Modeling) 旨在根据历史观测推断其他智能体的策略、意图或隐藏状态。而更高级的 心智理论 (Theory of Mind, ToM) 则涉及递归推理——“我知道你知道我知道…”。本文将详解从显式建模到隐式表征学习的技术路线,揭示 AI 是如何学会“知己知彼”的。
目录 (Table of Contents)
- 为什么需要对手建模?
- 解决非平稳性 (Non-Stationarity)
- 从反应式 (Reactive) 到 预测式 (Proactive)
- Ad-hoc Teamwork:与陌生人合作
- 建模的对象:我们在预测什么?
- 动作 (Action)
- 目标/意图 (Goal/Intent)
- 类型/风格 (Type/Style)
- 方法论一:显式建模 (Explicit Modeling)
- 监督学习视角
- 辅助任务 (Auxiliary Task)
- 代码实现:预测对手动作
- 方法论二:隐式/表征建模 (Implicit Representation)
- Encoder-Decoder 架构
- 从轨迹到 Latent Code ( z z z)
- 泛化到未见过的对手 (Zero-shot)
- 方法论三:心智理论 (Theory of Mind)
- 认知层级理论 (Cognitive Hierarchy)
- Level-k 思维与递归推理
- “我知道你知道”的数学表达
- 总结与展望
1. 为什么需要对手建模?
1.1 解决非平稳性
在 IQL 或 MADDPG 中,我们通常假设对手是环境的一部分。但对手是在不断学习变强的。如果我们能预测对手的策略变化,我们就能提前调整自己的策略,而不是等到撞了墙才回头。
1.2 从反应式到预测式
- Reactive (反应式):看到对手出拳了,我再格挡。
- Proactive (预测式):根据对手的姿态和历史习惯,预测他下一秒要出拳,我提前闪避并反击。
在星际争霸或德州扑克中,胜负往往取决于谁能更精准地建立对手模型。
1.3 Ad-hoc Teamwork (即席协作)
这是 MARL 的圣杯之一。
假设你是一个足球 AI,你被随机匹配到一群从未见过的队友(可能是人类,也可能是其他版本的 AI)。你没有时间和他们预先训练。
此时,你需要通过观察队友的行为,迅速建立他们的模型(“这个队友喜欢进攻”、“那个队友比较保守”),从而配合他们。
2. 建模的对象:我们在预测什么?
Agent Modeling 是一个宽泛的概念,具体来说,我们在预测对方的什么?
- 策略 (Policy) π − i ( a ∣ s ) \pi^{-i}(a|s) π−i(a∣s):
- 最直接的目标。给定状态,预测对手会做什么动作。
- 应用:1v1 对战游戏。
- 目标 (Goal/Intent) g − i g^{-i} g−i:
- 对手想去哪里?想杀谁?
- 应用:自动驾驶(预测行人意图)、MOBA 游戏。
- 类型 (Type/Style) z − i z^{-i} z−i:
- 对手是激进型 (Aggressive) 还是保守型 (Conservative)?是菜鸟还是高手?
- 应用:扑克、非对称博弈。
3. 方法论一:显式建模 (Explicit Modeling)
这是最直观的方法:把预测对手动作当作一个辅助的监督学习任务。
3.1 算法架构
在训练强化学习(RL)主网络的同时,并在网络中分出一个分支(Header)或者单独训练一个网络,用来预测对手动作。
- 输入:历史观测序列 ( o t − k , … , o t ) (o_{t-k}, \dots, o_t) (ot−k,…,ot)。
- 标签 (Label):对手真实的动作 a t − i a^{-i}_{t} at−i。
- Loss:交叉熵损失 (Cross Entropy)。
L m o d e l ( ϕ ) = − ∑ ( s , a − i ) ∈ D log π ^ ϕ ( a − i ∣ s ) \mathcal{L}_{model}(\phi) = - \sum_{(s, a^{-i}) \in \mathcal{D}} \log \hat{\pi}_{\phi}(a^{-i} | s) Lmodel(ϕ)=−(s,a−i)∈D∑logπ^ϕ(a−i∣s)
3.2 如何使用预测结果?
一旦我们有了预测出的对手策略 π ^ − i \hat{\pi}^{-i} π^−i,我们可以:
- 作为 Input:把预测的动作 a ^ − i \hat{a}^{-i} a^−i 拼接到自己的 State 中,喂给 Q 网络或 Policy 网络。
- 作为 Planning:在 MCTS (蒙特卡洛树搜索) 中,用 π ^ − i \hat{\pi}^{-i} π^−i 来模拟对手的反应。
3.3 代码片段 (PyTorch)
class ModelingAgent(nn.Module):
def __init__(self, obs_dim, act_dim, opp_act_dim):
super().__init__()
# 特征提取层
self.feature_net = nn.Sequential(nn.Linear(obs_dim, 64), nn.ReLU())
# 1. RL Policy Head (输出自己的动作)
self.policy_head = nn.Linear(64, act_dim)
# 2. Opponent Modeling Head (预测对手动作 - Auxiliary Task)
self.opp_model_head = nn.Linear(64, opp_act_dim)
def forward(self, obs):
feat = self.feature_net(obs)
my_action_prob = F.softmax(self.policy_head(feat), dim=-1)
pred_opp_action_prob = F.softmax(self.opp_model_head(feat), dim=-1)
return my_action_prob, pred_opp_action_prob
# 训练循环中
# total_loss = rl_loss + beta * modeling_loss
4. 方法论二:隐式/表征建模 (Implicit Representation)
显式建模有一个缺点:如果对手策略极其复杂,或者对手从未见过,直接预测动作 a a a 很困难。
现代方法倾向于学习一个隐变量 (Latent Variable) z z z 来代表对手的特征。
4.1 Encoder-Decoder 架构
我们假设对手的策略由一个隐藏的 z z z 控制(比如 z z z 代表性格)。
- Encoder:输入对手的历史轨迹 τ = ( s 0 , a 0 − i , s 1 , a 1 − i , … ) \tau = (s_0, a^{-i}_0, s_1, a^{-i}_1, \dots) τ=(s0,a0−i,s1,a1−i,…),输出一个向量 z z z。
z ∼ E ( τ ) z \sim E(\tau) z∼E(τ) - RL Agent:将 z z z 作为额外信息输入。
π ( a ∣ s , z ) \pi(a | s, z) π(a∣s,z) - 训练目标:
- 对比学习 (Contrastive Learning):让同一个对手的轨迹生成的 z z z 靠近,不同对手的 z z z 远离。
- 重建 (Reconstruction):利用 z z z 去预测对手未来的动作。
4.2 优势:Zero-Shot Generalization
这种方法非常强大。例如 Grover 或 LIAM 算法。
在训练时,我们在多种不同风格的对手中训练,学会了提取 z z z。
在测试时,遇到一个全新的对手,Encoder 只需要看几步他的操作,就能生成一个 z z z。即使没见过这个对手,Agent 也能根据相似的 z z z 调出应对策略。这就是“看人下菜碟”。
5. 方法论三:心智理论 (Theory of Mind, ToM)
这属于认知科学与 AI 的交叉领域,主要研究递归推理 (Recursive Reasoning)。
5.1 认知层级理论 (Cognitive Hierarchy)
想象你在玩剪刀石头布:
- Level-0 (随机者):完全随机出拳。
- Level-1 (聪明的初学者):假设对手是 Level-0,计算出最佳应对策略(Best Response to L0)。
- Level-k (高阶博弈者):假设对手是 Level-(k-1),计算最佳应对策略。
5.2 递归推理的挑战
“我知道你知道我知道你要出剪刀…”
在 MARL 中,如果我们能建模对手的思维层级,我们就能降维打击。
PR2 (Probabilistic Recursive Reasoning) 算法提出:
Q k i ( s , a i ) = E a − i ∼ π k − 1 − i [ r + γ max Q k i ( s ′ , a ′ ) ] Q^i_k(s, a^i) = \mathbb{E}_{a^{-i} \sim \pi^{-i}_{k-1}} [r + \gamma \max Q^i_k(s', a')] Qki(s,ai)=Ea−i∼πk−1−i[r+γmaxQki(s′,a′)]
Agent i i i 并不是要在物理世界中寻找最优解,而是要在对手的思维模型中寻找最优解。
5.3 现实中的应用
虽然 Level- k k k 理论很美,但在深度强化学习中,通常计算到 Level-2 就足够了。再高阶的推理不仅计算量指数爆炸,而且容易产生“自作聪明”的误判(比如对手其实只是个菜鸟(Level-0),你却以为他在第五层,结果你把自己绕进去了)。
6. 总结与展望
对手建模是 MARL 从“感知智能”向“认知智能”跨越的关键。
| 方法 | 核心思想 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 显式建模 | 监督学习预测动作 a − i a^{-i} a−i | 简单,易实现 | 难以处理未见过的策略 | 1v1 对抗,策略集合固定 |
| 隐式表征 | 学习对手的特征向量 z z z | 泛化性强,支持 Ad-hoc | 训练复杂,需要多样化对手库 | 匹配陌生队友,复杂博弈 |
| ToM / 递归 | 模拟对手的思维层级 L k L_k Lk | 理论上限高,能剥削对手 | 计算昂贵,容易过度思考 | 扑克,谈判,心理博弈 |
给炼丹师的建议:
- 如果你的任务是协作(如 SMAC),且可以 CTDE,通常不需要专门做对手建模,QMIX 及其变体已经隐式处理得不错。
- 如果你的任务是竞争(1v1),或者需要和人类/未知 AI 合作,那么添加一个简单的 Auxiliary Task(显式预测对手动作) 是提升性能性价比最高的方法。
到这里,MARL 的高阶技巧也介绍得差不多了。从对手建模到通信,从合作到竞争,多智能体的世界比单智能体精彩得多,也困难得多。愿你在 Agent 的博弈中找到纳什均衡!
更多推荐


所有评论(0)