本文介绍Diffusion-QL(Diffusion Q-Learning)方法
- 参考链接:
基本思路
- 目标:解决 Offline RL 的问题
- 基本思想:通过Diffusion模型 \(\epsilon_\theta(a^i,s_t,i)\) 来建模策略,具体地通过反向过程的多次采样得到当前状态 \(s_t\) 下的最优的动作 \(a_{t}^0\),其中 \(i\) 表示Diffusion采样时间步
- 学习策略时,使用Diffusion模型的模仿能力保证决策的动作不要偏离原始数据集太多(利用DDPM损失函数来学习);同时使用普通强化学习思路找到使得Q值最大的动作
Diffusion-QL方法
- 伪代码:

- 训练Q值时,就是普通的贝尔曼算子对应的损失函数,其中下个状态的最优动作通过Diffusion模型 \(\epsilon_\theta(a^i,s_t,i)\) 来采样得到
- 训练策略网络(即Diffusion模型 \(\epsilon_\theta(a^i,s_t,i)\) )时包含两部分损失:
- 最大化Q网络:通过Diffusion模型 \(\epsilon_\theta(a^i,s_t,i)\) 来采样得到动作 \(a_{t}^0\),该动作包含了 \(\theta\) 的梯度信息,将该动作\(a_{t}^0\) 填充到Q网络中即可通过梯度更新 \(\theta\) 的参数(类似DDPG的方式)
- 最小化DDPM的损失函数,保证生成的动作分布符合原始状态动作对 \((s,a)\)
一些补充
- 为什么需要使用Diffusion的损失函数?
- Online RL中,理论上找到使得Q值最大的动作就可以了
- Offline RL中,加入DDPM的损失函数之后有一种拟合原始数据策略的含义,保证生成的动作不会偏离原始数据集太多,有助于缓解Offline RL的OOD问题