Natural Gradient 算法简介

  • Natural Gradient Descent
    • Score function
    • Fisher Information Matrix
    • KL 散度
      • KL 散度的二阶 Hessian 阵
    • Natural Gradient Descent
      • 基本思路
      • 问题及解决
    • Quick Facts

Natural Gradient Descent

为了了解什么是 natural gradient descent,首先需要知道一些基础知识,包括:

  • Score function
  • Fisher Information Matrix
  • KL 散度及其泰勒展开形式
  • 拉格朗日乘子法

Score function

首先假设我们有一个参数化的模型 。Score function 定义为 log 似然的梯度:

score function 具有一个性质,也就是其期望为0:
\begin{aligned} \mathbb{E}_{x \sim p(x;\theta)}[s(\theta)] &= \mathbb{E}_{x \sim p(x;\theta)} [\nabla_\theta \log p(x;\theta)] \\ &= \int p(x;\theta)\frac{\nabla_\theta p(x;\theta)}{p(x;\theta)} \\ &=\nabla \int p(x;\theta) \\ &=0 \end{aligned}

Fisher Information Matrix

Fisher Information Matrix 定义为 score function 的方差:

\begin{aligned} F &= \mathbb{E}_{x\sim p(x;\theta)} \Big[\Big(s(\theta)-\mathbb{E}[s(\theta)\Big) \Big(s(\theta)-\mathbb{E}[s(\theta)\Big)^T \Big]\\ &=\mathbb{E}_{x\sim p(x;\theta)} \Big[\nabla_{\theta}p(x;\theta) \nabla_{\theta}p(x;\theta)^T \Big] \end{aligned}

KL 散度

两个分布 与 之间的KL 散度的定义为:

KL 散度的二阶 Hessian 阵

为了求解自然策略梯度,我们有必要知道 的Hessian阵是什么,下面给出KL散度的二阶Hessian阵形式(后面给出具体推导):
H_{\theta^{\prime}}\left[\mathrm{KL}\left[p(x ; \theta) \| p\left(x ; \theta^{\prime}\right)\right]\right] = \mathbb{E}_{x \sim p(x ; \theta)}\left[\left(\frac{\nabla_{\theta^{\prime}} p\left(x ; \theta^{\prime}\right)}{p\left(x ; \theta^{\prime}\right)}\right)\left(\frac{\nabla_{\theta^{\prime}} p\left(x ; \theta^{\prime}\right)}{p\left(x ; \theta^{\prime}\right)}\right)^{T}\right]

然而,KL散度的二阶Hessian阵在处的取值其实就是 Hessian 阵,也就是说:

推导过程如下:
\begin{aligned} H_{\theta'}\Big[\text{KL}[p(x;\theta)||p(x;\theta')]\Big] &= H_{\theta'}\Big[\mathbb{E}_{x\sim p(x;\theta)}[\log p(x;\theta)] - \mathbb{E}_{x \sim p(x;\theta)}[\log p(x;\theta')]\Big] \\ &= - H_{\theta'}\Big[\mathbb{E}_{x \sim p(x;\theta)}[\log p(x;\theta')] \Big] \\ &= -\mathbb{E}_{x \sim p(x;\theta)}\Big[H_{\theta'}[\log p(x;\theta')] \Big] \\ &= -\mathbb{E}_{x \sim p(x;\theta)}\Big[ J_{\theta'}[\frac{\nabla_{\theta'}p(x;\theta')}{p(x;\theta')}] \Big] \\ &= -\mathbb{E}_{x \sim p(x;\theta)}\Big[ \frac{H_{\theta'}[p(x;\theta')]p(x;\theta')-\nabla_{\theta'}p(x;\theta')\nabla_{\theta'}p(x;\theta')^T}{p(x;\theta')p(x;\theta')} \Big] \\ &= -\mathbb{E}_{x \sim p(x;\theta)}\Big[ \frac{H_{\theta'}[p(x;\theta')]}{p(x;\theta')}-\Big(\frac{\nabla_{\theta'}p(x;\theta')}{p(x;\theta')}\Big)\Big(\frac{\nabla_{\theta'}p(x;\theta')}{p(x;\theta')}\Big)^T \Big] \\ &= - \int H_{\theta'}[p(x;\theta')] + \mathbb{E}_{x\sim p(x;\theta)}\Big[ \Big(\frac{\nabla_{\theta'}p(x;\theta')}{p(x;\theta')}\Big)\Big(\frac{\nabla_{\theta'}p(x;\theta')}{p(x;\theta')}\Big)^T\Big]\\ &= \underbrace{- H_{\theta'} \Big[ \int p(x;\theta')\Big] }_{0}+ \mathbb{E}_{x\sim p(x;\theta)}\Big[ \Big(\frac{\nabla_{\theta'}p(x;\theta')}{p(x;\theta')}\Big)\Big(\frac{\nabla_{\theta'}p(x;\theta')}{p(x;\theta')}\Big)^T\Big] \\ &=\mathbb{E}_{x\sim p(x;\theta)}\Big[ \Big(\frac{\nabla_{\theta'}p(x;\theta')}{p(x;\theta')}\Big)\Big(\frac{\nabla_{\theta'}p(x;\theta')}{p(x;\theta')}\Big)^T\Big] \end{aligned}
所以 对 的导数在处的取值为Fisher Information Matrix:
\begin{aligned} H_{\theta'}\Big[\text{KL}[p(x;\theta)||p(x;\theta')]\Big]_{|_{\theta'=\theta}} &=\mathbb{E}_{x\sim p(x;\theta)}\Big[ \Big(\frac{\nabla_{\theta'}p(x;\theta')}{p(x;\theta')}\Big)\Big(\frac{\nabla_{\theta'}p(x;\theta')}{p(x;\theta')}\Big)^T\Big]_{|_{\theta'=\theta}} \\ &=\underbrace{\mathbb{E}_{x\sim p(x;\theta)} \Big[\nabla_{\theta}p(x;\theta) \nabla_{\theta}p(x;\theta)^T \Big]}_{\text{Fisher Information Matrix}} \\ &= F \end{aligned}

Natural Gradient Descent

基本思路

传统的策略梯度方法选择作为参数值的更新方向,但是这种方法依赖于欧式空间。而 Natural Gradient Descent 是在分布空间而不是参数空间来更新参数的,其基本思路如下:

根据泰勒二阶

可以得到 的 在 处的展开式,令,可以得到:
\begin{aligned} KL[p(x;\theta) || p(x;\theta')] & \approx \underbrace{KL[p(x;\theta)||p(x;\theta)]}_{0} + d^T \nabla_{\theta'}KL[p(x;\theta) || p(x;\theta')]_{|\theta'=\theta} + \frac{1}{2} d^T \underbrace{H_{\theta'}\Big[\text{KL}[p(x;\theta)||p(x;\theta')]\Big]_{|_{\theta'=\theta}}}_{F}d \\ & = 0 + d^T \nabla_{\theta'} \bigg(\mathbb{E}_{x \sim p(x;\theta)} [\log p(x;\theta)] - \mathbb{E}_{x \sim p(x;\theta)} [\log p(x;\theta')] \bigg)_{|\theta' = \theta} + \frac{1}{2} d^T F d \\ & = \frac{1}{2} d^T Fd \end{aligned}
所以我们通过对(1)中约束进行泰勒展开,得到了下面的优化式子:

其中对进行一阶泰勒展开,得到。于是(2)中的优化问题转换成

可以看出(3)中的优化问题是一个具有等式约束的优化问题,因此我们可以构造拉格朗日函数解上述限制优化问题,首先构造拉格朗日函数 为

为了求 的极小值,令其导数为0,可以得到:

因此,通过对目标函数进行泰勒一次展开,对KL约束进行二次泰勒展开,我们简化了函数的形式,最终得到方向 。因此参数的更新迭代过程为:

自然策略梯度法的算法如下 :

  • Repeat
    1. 进行前向传播计算损失函数
    2. 计算,计算Fisher信息矩阵
    3. 计算自然梯度
    4. 更新参数
  • Until Convergence

Quick Facts

总结一下我们提到过的一些结论:

  • score function 定义为
  • Fisher Information Matrix 为 score function 的方差
  • KL 散度二阶泰勒展开的二次项可以通过 Fisher Information Matrix 来表达

你可能感兴趣的:(Natural Gradient 算法简介)