md_files/科研/草稿.md

158 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

以下是修改后的内容,所有公式已用 `$``$$` 规范包裹:
---
## 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 的入门基线之一。