6.4 KiB
6.4 KiB
以下是修改后的内容,所有公式已用 $
或 $$
规范包裹:
VDN(Value-Decomposition Network)笔记
参考你的 DQN 笔记格式,并在每一步里标出与 DQN 的主要差异
核心思想
DQN | VDN |
---|---|
用单个深度网络近似 单智能体 的 Q-函数。 | 用 多智能体 框架下的"值分解"思想:把联合 Q 值 拆成各智能体局部 Q 值之和 |
$$ Q_{\text{team}}(h,a);\approx;\sum_{i=1}^{n} Q_i(h_i,a_i) $$。 | |
目标是让一个智能体学会最优策略。 | 目标是让 n 个协作智能体,在只拿到 同一个团队奖赏 的前提下,仍能各自学习并在推理阶段独立运行。 |
好处
- 稳定性:通过集中式回传梯度来训练,避免了纯独立学习时的非平稳性与"懒惰智能体"现象。
- 可扩展执行:训练期需要集中,但执行期每个智能体只用自己的 $Q_i$,动作选择仍是局部、分布式的。
- 无需手工设计个体奖励:VDN 直接把团队奖励拆解为梯度信号,由网络自动学习"谁贡献了多少"。
训练流程(对照 DQN,粗体为新增或改动部分)
1. 初始化
-
局部 Q 网络(Online Networks)
- 为每个智能体
i
初始化参数 $\theta_i$,并定义局部 Q 函数 $Q_i(h_i,a_i;\theta_i)$。 - 可选:参数共享(所有
Q_i
共用一套 $\theta$)+ 身份/角色 one-hot。
- 为每个智能体
-
目标网络
- 为每个智能体维护对应的 $\theta_i^{-}$,或共享式 $\theta^{-}$。
-
经验回放(Replay Buffer)
- 存储的是联合元组
其中(\,\mathbf h=(h_1,\dots,h_n),\; \mathbf a=(a_1,\dots,a_n),\; r,\; \mathbf h'\,)
r
是唯一的团队奖励。
- 存储的是联合元组
-
超参数
- 同 DQN:
\eta,\gamma,\epsilon,B,C
等。 - 新增:智能体数 n、是否共享权重、是否启用通信通道等。
- 同 DQN:
2. 与环境交互并存储经验
对每个时间步 $t$:
步骤 | 与 DQN 的差异 |
---|---|
动作选择 | 每个智能体独立实施 ε-greedy: a_t^i = \arg\max_{a_i} Q_i(h_t^i,a_i) (或随机)。 |
环境反馈 | 环境返回单一团队奖励 r_t 与下一批局部观测 $\mathbf h_{t+1}$。 |
存入缓冲区 | 存联合元组,保证训练时能对齐多智能体的状态-动作。 |
3. 批量随机采样并训练
前提:缓冲区样本 ≥ $N_{\min}$。
-
采样小批量
\{\!(\mathbf h^{(k)},\mathbf a^{(k)},r^{(k)},\mathbf h'^{(k)})\!\}_{k=1}^{B}
-
计算联合 TD 目标
- 先用目标网络集合求
y^{(k)} = r^{(k)} + \gamma \max_{\mathbf a'}\sum_{i} Q_i^{-}\!\bigl(h_{i}'^{(k)},a_i';\theta_i^{-}\bigr)
- 注意:max 运算对 联合动作 $\mathbf a'$ 求和后再取最大;避免了枚举指数级动作的方法通常使用 分解后逐个最大化*:
这是 VDN 能高效扩展到多智能体的关键假设。\max_{\mathbf a'}\sum_i Q_i^{-}(\cdot)\;=\;\sum_i\max_{a_i'} Q_i^{-}(\cdot)
- 先用目标网络集合求
-
预测当前联合 Q 值
\hat Q^{(k)} = \sum_{i} Q_i\!\bigl(h_i^{(k)},a_i^{(k)};\theta_i\bigr)
-
损失函数
L = \frac1B\sum_{k=1}^{B}\bigl(y^{(k)} - \hat Q^{(k)}\bigr)^2
-
梯度更新
- 对每个
\theta_i
反向传播同一个联合损失L
的梯度。 - 若共享权重,则只更新
\theta
一份。
- 对每个
4. 同步目标网络
- 硬同步:每
C
次优化后令 $\theta_i^{-}!\leftarrow!\theta_i$。 - 软更新(可选):$\theta_i^{-} \leftarrow \tau\theta_i + (1-\tau)\theta_i^{-}$。
5. 重复直到收敛
- 同 DQN,可线性或指数衰减 $\epsilon$。
- 评估阶段,各智能体独立使用各自的
Q_i
做贪婪动作,无需中心化。
与 DQN 的关键区别速查
位置 | DQN | VDN |
---|---|---|
状态表示 | 单一 s 或历史 $h$。 |
局部历史向量 ${h_i}$。 |
动作空间 | 单行动作 $a$。 | 联合动作 $\mathbf a$,但执行时每人只管自己的 $a_i$。 |
价值函数 | $Q(s,a)$。 | $Q_{\text{team}}(\mathbf h,\mathbf a)=\sum_i Q_i(h_i,a_i)$。 |
TD 目标 | $r+\gamma\max_a Q^-(s',a)$。 | 对和取 TD:$r+\gamma\max_{\mathbf a'}\sum_i Q_i^-(h_i',a_i')$。 |
损失回传 | 单网络。 | 同一联合损失回传到多网络/共享网络。 |
执行 | 独立单体。 | 集中训练—分布执行(CTDE)。 |
(可选)示例小算例
设两个智能体 A、B 在同一回合内只会得到一次共同奖励:
- A 拾取物品得 3 分
- B 成功送回物品得 5 分
VDN 训练后通常学到:
时刻 | 预测 Q_A |
预测 Q_B |
合成 \Sigma Q_i |
---|---|---|---|
A 正要拾取 | ↑3.0 | ≈0 | ≈3 |
B 正要送回 | ≈0 | ↑5.0 | ≈5 |
其它时刻 | ≈基线 | ≈基线 | ≈基线 |
这说明网络已自动把团队奖励"归因"到对应智能体的局部价值上,而无需显式个体奖励设计。
小结
- VDN = DQN + 值分解 + 多智能体联合 TD
- 集中式梯度、分布式执行,天然适合合作任务。
- 在确保分解假设(奖励/价值近似可加)成立时,VDN 能显著缓解联合动作维度爆炸与非平稳性问题,是协作 MARL 的入门基线之一。