md_files/科研/草稿.md

158 lines
6.4 KiB
Markdown
Raw Normal View History

以下是修改后的内容,所有公式已用 `$``$$` 规范包裹:
---
## VDNValue-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 个协作智能体,在只拿到 **同一个团队奖赏** 的前提下,仍能各自学习并在推理阶段独立运行。 |
**好处**
1. **稳定性**:通过集中式回传梯度来训练,避免了纯独立学习时的非平稳性与"懒惰智能体"现象。
2. **可扩展执行**:训练期需要集中,但执行期每个智能体只用自己的 $Q_i$,动作选择仍是局部、分布式的。
3. **无需手工设计个体奖励**VDN 直接把团队奖励拆解为梯度信号,由网络自动学习"谁贡献了多少"。
---
### 训练流程(对照 DQN粗体为新增或改动部分
#### 1. 初始化
1. **局部 Q 网络**Online Networks
- 为**每个**智能体 $i$ 初始化参数 $\theta_i$,并定义局部 Q 函数 $Q_i(h_i,a_i;\theta_i)$。
- **可选**:参数共享(所有 $Q_i$ 共用一套 $\theta$+ 身份/角色 one-hot。
2. **目标网络**
- 为每个智能体维护对应的 $\theta_i^{-}$,或共享式 $\theta^{-}$。
3. **经验回放**Replay Buffer
- **存储的是联合元组**
$$
(\,\mathbf h=(h_1,\dots,h_n),\; \mathbf a=(a_1,\dots,a_n),\; r,\; \mathbf h'\,)
$$
其中 $r$ 是唯一的团队奖励。
4. **超参数**
- 同 DQN$\eta,\gamma,\epsilon,B,C$ 等。
- **新增:智能体数 n**、是否共享权重、是否启用通信通道等。
---
#### 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}$。
1. **采样小批量**
$$
\{\!(\mathbf h^{(k)},\mathbf a^{(k)},r^{(k)},\mathbf h'^{(k)})\!\}_{k=1}^{B}
$$
2. **计算联合 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'$** 求和后再取最大;避免了枚举指数级动作的方法通常使用 **分解后逐个最大化**\*
$$
\max_{\mathbf a'}\sum_i Q_i^{-}(\cdot)\;=\;\sum_i\max_{a_i'} Q_i^{-}(\cdot)
$$
这是 VDN 能高效扩展到多智能体的关键假设。
3. **预测当前联合 Q 值**
$$
\hat Q^{(k)} = \sum_{i} Q_i\!\bigl(h_i^{(k)},a_i^{(k)};\theta_i\bigr)
$$
4. **损失函数**
$$
L = \frac1B\sum_{k=1}^{B}\bigl(y^{(k)} - \hat Q^{(k)}\bigr)^2
$$
5. **梯度更新**
- 对每个 $\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 的入门基线之一。