VIME

VIME: Variational Information Maximizing Exploration

原文地址:VIME: Variational Information Maximizing Exploration

简介

本文提出一种基于好奇心驱动的探索策略,利用智能体对动力学模型内部信念的信息增益作为内部奖励。其中,智能体当前对环境动力学的理解由贝叶斯神经网络(Bayesian Neural Networks, BNN) 表示。本文的方法适用于连续状态和动作空间。

好奇心的形式化:信息增益最大化

从熵值变化到信息增益

假设智能体维护一个动态模型 $p(s_{t+1}|s_t, a_t; \theta)$,其中 $\theta$ 为模型参数,其取值为$\theta \in \Theta$。根据好奇心驱动的探索理论,智能体应采取行动,使关于动态的不确定性减少最大化,即通过一系列动作$\{a_{t}\}$最大化熵减少之和:

$$\arg\max_{\theta} \sum_{t}\left(H\left(\Theta | \xi_{t}, a_{t}\right)-H\left(\Theta | S_{t + 1}, \xi_{t}, a_{t}\right)\right)$$

其中$\xi_{t}=\{s_{1}, a_{1}, ..., s_{t}\}$是智能体在时间步$t$之前的历史信息。

由于信息增益等于熵减去条件熵,即$I(X;Y)=H(X)-H(X|Y)$,可知每项等于下一状态分布$S_{t + 1}$与模型参数$\Theta$之间的信息增益,也就是互信息$I(S_{t + 1} ; \Theta | \xi_{t}, a_{t})$,因此目标函数变为:

$$\arg\max_{\theta} \sum_{t}I(S_{t + 1} ; \Theta | \xi_{t}, a_{t})$$

从信息增益到KL散度

同时,根据互信息的定义,互信息可表示为后验与先验分布的KL散度期望:

$$ \begin{aligned} I(X; Y) &= \mathbb{E}_{p(x, y)} \left[ \log \frac{p(x, y)}{p(x)p(y)} \right] \\ &= \mathbb{E}_{p(x, y)} \left[ \log \frac{p(y \mid x)}{p(y)} \right] \\ &= \mathbb{E}_{p(x)} \mathbb{E}_{p(y \mid x)} \left[ \log \frac{p(y \mid x)}{p(y)} \right] \\ &= \mathbb{E}_{p(x)} \left[ D_{KL} \big( p(y \mid x) \parallel p(y) \big) \right] \end{aligned} $$

可得

$$I\left(S_{t + 1} ; \Theta | \xi_{t}, a_{t}\right)=\mathbb{E}_{s_{t + 1} \sim \mathcal{P}\left(\cdot | \xi_{t}, a_{t}\right)}\left[D_{KL}\left[p\left(\theta | \xi_{t}, a_{t}, s_{t + 1}\right) \| p\left(\theta | \xi_{t}\right)\right]\right]$$


其中 $\mathcal{P}\left(s_{t+1}| \xi_{t}, a_{t}\right)$是真实转移概率。真实转移概率在通常情况下是未知的,无法直接优化上式,因此考虑将互信息项设计成奖励,这样可以通过采样$s_{t + 1} \sim P(\cdot | s_{t}, a_{t})$来实现互信息项的计算,即:

$$r'\left(s_{t}, a_{t}, s_{t + 1}\right)=r\left(s_{t}, a_{t}\right)+\eta D_{KL}\left[p\left(\theta | \xi_{t}, a_{t}, s_{t + 1}\right) \| p\left(\theta | \xi_{t}\right)\right]$$

其中$\eta \in \mathbb{R}_{+}$是一个超参数,控制探索的欲望。

什么是信念

本文用“信念”(belief)表示是智能体对环境动态模型参数的概率分布的认知。$p \left(\theta | \xi_{t}\right)$ 是旧信念,而$p\left(\theta | \xi_{t}, a_{t}, s_{t + 1}\right)$则是获得新的状态信息后的新信念。所以互信息实际上也衡量了信念的变化幅度。

采用变分推断近似计算后验

为什么后验需要近似计算

直接计算后验 $p(\theta|S_{t+1}, \xi_t, a_t)$

$$p\left(\theta | \xi_{t}, a_{t}, s_{t + 1}\right)=\frac{p\left(\theta | \xi_{t}\right) p\left(s_{t + 1} | \xi_{t}, a_{t} ; \theta\right)}{p\left(s_{t + 1} | \xi_{t}, a_{t}\right)}$$


其分母需要计算积分

$$ p(s_{t+1}|\xi_t, a_t) = \int_\Theta p(s_{t+1}|\xi_t, a_t; \theta) p(\theta|\xi_t) \, d\theta $$


当动态模型为神经网络(如贝叶斯神经网络BNN)时,该积分难以解析求解,因此引入变分推断近似后验。

如何近似计算后验

定义变分分布 $q(\theta; \phi)$(参数为 $\phi$),用于最小化 $D_{\text{KL}}(q(\theta; \phi) \| p(\theta|D))$ 近似真实后验。其中,$\mathcal{D}$ 为观测数据(如状态-动作-下一状态三元组)。根据变分推断,这等价于最大化变分下界(Evidence Lower BOund, ELBO),即原文的Eq.(6):

$$ \mathcal{L}[q(\theta; \phi), \mathcal{D}] = \mathbb{E}_{\theta \sim q(\cdot; \phi)}[\log p(\mathcal{D}|\theta)] - D_{\text{KL}}(q(\theta; \phi) \| p(\theta)) $$

变分下界的第一项是似然期望(拟合数据),第二项是先验正则化(避免过拟合)。
此时,奖励函数变为了(原文Eq.(7)):

$$r'\left(s_{t}, a_{t}, s_{t + 1}\right)=r\left(s_{t}, a_{t}\right)+\eta D_{KL}\left[q\left(\theta ; \phi_{t + 1}\right) \| q\left(\theta ; \phi_{t}\right)\right]$$

采用BNN建模动态模型

为什么选择BNN

在 VIME 中,内在奖励来源于模型的“惊讶程度”,即新观察数据引起的 信念更新(信息增益)。而这个信念就是模型对环境动态的分布性理解。而BNN 的最大优势是,它不仅学习一个确定性的预测函数,而是学习 一组分布(即对网络参数的后验分布)。 这意味着它可以自然表达出模型的不确定性,而这正是 VIME 的核心需求。

动态BNN的参数化

不同于普通BNN建模固定数据集,动态BNN用于建模环境的状态转移概率 $p(s_{t+1}|s_t, a_t; \theta)$,其权重分布 $q(\theta; \phi)$ 被定义为完全因子化(所有变量相互独立)的高斯分布:

$$q(\theta; \phi) = \prod_{i=1}^{|\Theta|} \mathcal{N}(\theta_i | \mu_i, \sigma_i^2)$$


其中参数 $\phi = \{\mu, \sigma\}$ 包含均值向量 $\mu$ 和协方差矩阵的对角元素 $\sigma$。为了确保标准差 $\sigma > 0$,使用Softplus函数对 $\sigma$ 进行参数化:

$$\sigma = \log(1 + e^\rho), \quad \rho \in \mathbb{R}.$$

变分下界优化

动态BNN的损失函数就是上一节推导的ELBO了(Eq.(6)):

$$L[q(\theta; \phi), \mathcal{D}] = \mathbb{E}_{\theta \sim q(\cdot;\phi)} [\log p(\mathcal{D}|\theta)] - D_{\text{KL}}[q(\theta; \phi) \| p(\theta)].$$
  • 第一项(似然项):通过采样近似计算,即从 $q(\theta; \phi)$ 中抽取 $N$ 个样本 $\theta_i$,计算其对数似然的平均值。
  • 第二项(KL散度项):衡量当前权重分布与先验分布 $p(\theta)$ 的差异。对于因子化高斯分布,KL散度有解析解(见后文)。

优化采用随机梯度变分贝叶斯(SGVB)方法,结合局部重参数化技巧(local reparameterization trick)以提高计算效率并减少梯度方差。

KL散度的计算

为了计算奖励函数中的KL散度 $D_{\text{KL}}[q(\theta; \phi_{t+1}) \| q(\theta; \phi_t)]$,采用以下步骤:

  1. 近似后验更新:通过最小化以下目标函数来更新参数 $\phi$(原文Eq.(12)):

    $$\phi' = \arg\min_\phi \left[ D_{\text{KL}}[q(\theta; \phi) \| q(\theta; \phi_{t-1})] - \mathbb{E}_{\theta \sim q(\cdot;\phi)} [\log p(s_t | \xi_t, a_t; \theta)] \right].$$


    实际优化时,仅执行一次二阶更新步:

    $$\Delta\phi = H^{-1}(\ell) \nabla_\phi \ell(q(\theta; \phi), s_t)$$

    其中 $H(\ell)$ 是目标函数关于 $\phi$ 的Hessian矩阵。

  2. Hessian的简化计算:假设KL散度项在参数空间中是二次的,且似然项局部线性,Hessian矩阵仅计算KL散度项的部分:

    $$\frac{\partial^2 \ell_{\text{KL}}}{\partial \mu_i^2} = \frac{1}{\log^2(1 + e^{\rho_i})}, \quad \frac{\partial^2 \ell_{\text{KL}}}{\partial \rho_i^2} = \frac{2e^{2\rho_i}}{(1 + e^{\rho_i})^2} \cdot \frac{1}{\log^2(1 + e^{\rho_i})}. $$


    由于Hessian是对角矩阵,其逆矩阵可高效计算。

  3. KL散度的近似:通过二阶泰勒展开近似KL散度(原文Eq.(16)):

    $$ D_{\text{KL}}[q(\theta; \phi + \lambda \Delta\phi) \| q(\theta; \phi)] \approx \frac{1}{2} \lambda^2 \nabla_\phi \ell^\top H^{-1}(\ell_{\text{KL}}) \nabla_\phi \ell. $$

算法流程

image-62.png

  1. 数据收集:智能体通过策略 $\pi_\alpha$ 采样动作 $a_t$,与环境交互得到 $(s_t, a_t, s_{t+1})$,存入FIFO回放池。
  2. 模型更新:定期从回放池采样数据,通过SGVB优化BNN的变分下界,更新 $\phi$。
  3. 奖励计算:根据当前和更新后的变分分布计算KL散度,归一化后与外部奖励结合形成总奖励 $r'$。
  4. 策略优化:使用总奖励 $r'$ 更新RL算法(如TRPO、REINFORCE)的策略参数 $\alpha$。
comments powered by Disqus
发表了21篇文章 · 总计4万5千字
使用 Hugo 构建
主题 StackJimmy 设计