推导policy gradient算法以及为什么添加baseline可以减小方差且保持策略梯度不变

策略网络

策略函数(policy function)是行为空间上的概率密度函数,记为 π ( a ∣ s ) \pi(a|s) π(as)
利用策略函数可以控制agent在状态s下做出哪种行为a。
当利用神经网络近似策略函数的时候,也被称为策略网络(policy network),记为 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(as),其中 θ \theta θ代表神经网络(策略网络)的参数

策略网络的输入是状态,输出是行为,策略网络可以被看作是agent。

动作价值函数

在状态 s t s_t st下做出行为 a t a_t at会得到环境给的奖励 r t r_t rt
定义 G t = r t + γ r t + 1 + γ 2 r t + 2 + ⋯ G_t=r_t+\gamma r_{t+1}+\gamma^2r_{t+2}+\cdots Gt=rt+γrt+1+γ2rt+2+
G t G_t Gt是在初始状态是 s t s_t st时,直到终止状态,或者说游戏结束时agent所能获得到的累计折扣奖励(加上折扣因子一方面是避免陷入循环,另一方面是因为未来的奖励对当前是有不确定性的)。

定义动作价值函数是在状态 s s s下根据策略 π θ \pi_\theta πθ产生的所有可能的轨迹的累计折扣奖励总和:
q π θ ( s , a ) = E ( G t ∣ S t = s , A t = a ) q_{\pi_\theta}(s,a)=\mathbb{E}(G_t|S_t=s,A_t=a) qπθ(s,a)=E(GtSt=s,At=a)

动作价值函数用来评价在状态 s s s下做出行为 a a a的好坏

价值函数

价值函数是对状态 s s s下做出的所有动作的动作价值的期望:
V π θ ( s ) = E a ∈ A [ q π θ ( s , a ) ] V_{\pi_\theta}(s)=\underset{a\in A}{\mathbb{E}}[q_{\pi_\theta}(s,a)] Vπθ(s)=aAE[qπθ(s,a)]
我们写成连加的形式如下(正常来讲要区分连续和离散,连续要写成积分的形式,这里不考虑连续,因为我们大多是离散的行为空间,所以可以写成连加的形式):
V π θ ( s ) = ∑ a ∈ A π θ ( a ∣ s ) q π θ ( s , a ) V_{\pi_\theta}(s)=\sum_{a\in A}\pi_\theta(a|s)q_{\pi_\theta}(s,a) Vπθ(s)=aAπθ(as)qπθ(s,a)
(之所以可以写成这样是因为策略函数 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(as)本身就是行为空间上的概率密度函数,而且我们又知道,当一个随机变量X的概率密度函数 f ( x ) f(x) f(x)已知时,那么对函数 p ( x ) p(x) p(x)的期望就是 E [ p ( x ) ] = ∫ f ( x ) p ( x ) d x \mathbb{E}[p(x)]=\int f(x)p(x)dx E[p(x)]=f(x)p(x)dx)

价值函数可以用来评估状态 s s s的好坏
根据价值函数的定义以及上面两个式子我们看出,一个状态的价值可以用该状态下所有可能的行为价值来表达

策略梯度

价值函数 V π θ ( s ) V_{\pi_\theta}(s) Vπθ(s)依赖于状态 s s s和策略网络 π θ \pi_\theta πθ,我们希望的是当给定状态 s s s时,价值函数能够给 s s s较高的价值,也就是使得 V π θ ( s ) V_{\pi_\theta}(s) Vπθ(s)值要尽可能的大。那么自然的解决办法就是更新策略网络的参数 θ \theta θ,于是就有了策略梯度算法,它是一种梯度上升算法,目的是更新参数 θ \theta θ使得价值函数值上升。

策略梯度就是价值函数对策略网络参数的导数

(推导之前需要知道 d log ⁡ f ( x ) = 1 f ( x ) d f ( x ) d x d\log f(x)=\displaystyle\frac{1}{f(x)}\displaystyle\frac{df(x)}{dx} dlogf(x)=f(x)1dxdf(x))
下面推导:
V π θ ( s ) = ∑ a ∈ A π θ ( a ∣ s ) q π θ ( s , a ) ∂ V π θ ( s ) ∂ θ = ∑ a ∈ A π θ ( a ∣ s ) 1 π θ ( a ∣ s ) ∂ π θ ( a ∣ s ) ∂ θ q π θ ( s , a ) = ∑ a ∈ A π θ ( a ∣ s ) ▽ θ log ⁡ π θ ( a ∣ s ) q π θ ( s , a ) = E A ∼ π θ ( ⋅ ∣ s ) [ ▽ θ log ⁡ π θ ( A ∣ s ) q π θ ( s , A ) ] \begin{aligned} V_{\pi_\theta}(s) &=\sum_{a\in A}\pi_\theta(a|s)q_{\pi_\theta}(s,a) \\ \frac{\partial V_{\pi_\theta}(s)}{\partial\theta}&= \sum_{a\in A}\pi_\theta(a|s)\frac{1}{\pi_\theta(a|s)}\frac{\partial \pi_\theta(a|s)}{\partial \theta} q_{\pi_\theta}(s,a)\\ &= \sum_{a\in A}\pi_\theta(a|s)\triangledown_{\theta}\log \pi_\theta(a|s)q_{\pi_\theta}(s,a)\\ &= \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[\triangledown_{\theta}\log \pi_\theta(A|s)q_{\pi_\theta}(s,A)] \end{aligned} Vπθ(s)θVπθ(s)=aAπθ(as)qπθ(s,a)=aAπθ(as)πθ(as)1θπθ(as)qπθ(s,a)=aAπθ(as)θlogπθ(as)qπθ(s,a)=Aπθ(s)E[θlogπθ(As)qπθ(s,A)]

以上就是policy gradient的推导过程,其中需要注意的是:

  1. 假设 q π θ ( s , a ) q_{\pi_\theta}(s,a) qπθ(s,a)不参与对 θ \theta θ的求导过程
  2. π θ ( a ∣ s ) \pi_\theta(a|s) πθ(as)是动作的概率密度函数,所以可以写成期望的形式。具体的就是对状态 s s s下所有可能采取的动作做期望

在实际中,我们通常都是在状态 s s s下根据策略网络输出的对行为的概率分布上,随机采样出一个行为 a ^ \hat{a} a^来近似上面的期望

∂ V π θ ( s ) ∂ θ = ▽ θ log ⁡ π θ ( a ^ ∣ s ) q π θ ( s , a ^ ) \frac{\partial V_{\pi_\theta}(s)}{\partial\theta}=\triangledown_{\theta}\log \pi_\theta(\hat{a}|s)q_{\pi_\theta}(s,\hat{a}) θVπθ(s)=θlogπθ(a^s)qπθ(s,a^)

策略梯度算法的流程

  1. 给定状态 s t s_t st
  2. 根据策略网络输出的行为空间的概率分布,随机采样一个行为 a t = π θ ( ⋅ ∣ s t ) a_t=\pi_\theta(\cdot|s_t) at=πθ(st)
  3. 根据动作价值函数计算状态 s t s_t st下做出行为 a t a_t at的价值 q t = q π θ ( s t , a t ) q_t=q_{\pi_{\theta}}(s_t,a_t) qt=qπθ(st,at)
  4. 计算 ▽ θ log ⁡ π θ ( a t ∣ s t ) \triangledown_{\theta}\log \pi_\theta(a_t|s_t) θlogπθ(atst)
  5. 利用策略梯度更新参数 θ ← θ + α ▽ θ log ⁡ π θ ( a t ∣ s t ) ∗ q t \theta\leftarrow\theta+\alpha\triangledown_{\theta}\log \pi_\theta(a_t|s_t)*q_t θθ+αθlogπθ(atst)qt

REINFORCE算法

我们要注意的是上面的策略梯度算法中动作价值函数 q π θ ( s t , a t ) q_{\pi_{\theta}}(s_t,a_t) qπθ(st,at)我们是不知道是什么的。

我们知道的是动作价值函数 q π θ ( s t , a t ) q_{\pi_{\theta}}(s_t,a_t) qπθ(st,at)的定义是状态 s t s_t st做出行为 a t a_t at会得到的累计折扣奖励的期望,即等于 E [ G t ∣ S t = s t , A t = a t ] \mathbb{E}[G_t|S_t=s_t,A_t=a_t] E[GtSt=st,At=at]
累计折扣奖励是 G t = r t + γ r t + 1 + γ 2 r t + 2 + ⋯ G_t=r_t+\gamma r_{t+1}+\gamma^2r_{t+2}+\cdots Gt=rt+γrt+1+γ2rt+2+

REINFORCE算法就是利用可观测到的累计折扣奖励来近似期望值。

假设我们在状态 s t s_t st下做出行为 a t a_t at得到奖励 r t r_t rt,然后状态变成 s t + 1 s_{t+1} st+1,再根据策略做出行为 a t + 1 a_{t+1} at+1得到奖励 r t + 1 r_{t+1} rt+1,以此类推。直到终止状态,我们就得到了一条轨迹上的累计折扣奖励 r t + γ r t + 1 + γ 2 r t + 2 + ⋯ r_t+\gamma r_{t+1}+\gamma^2r_{t+2}+\cdots rt+γrt+1+γ2rt+2+
我们利用这个累计折扣奖励值来近似动作价值函数 q π θ ( s t , a t ) q_{\pi_{\theta}}(s_t,a_t) qπθ(st,at)的值 q t q_t qt

所以REINFORCE算法就可以将策略梯度写成
∂ V π θ ( s t ) ∂ θ = ∑ t = 1 T ▽ θ log ⁡ π θ ( a t ∣ s t ) R ( s t , a t ) \frac{\partial V_{\pi_\theta}(s_t)}{\partial\theta}=\sum_{t=1}^{T}\triangledown_{\theta}\log \pi_\theta(a_t|s_t)R(s_t,a_t) θVπθ(st)=t=1Tθlogπθ(atst)R(st,at)
其中 R ( s t , a t ) = r t R(s_t,a_t)=r_t R(st,at)=rt

添加baseline可以减小策略梯度的方差且保持期望不变

证明添加baseline对策略梯度是不变的,前提是baseline与动作无关

推导过程:
E A ∼ π θ ( ⋅ ∣ s ) [ ▽ θ log ⁡ π θ ( A ∣ s ) ∗ b ] = b ∗ ∑ a ∈ A π θ ( a ∣ s ) ▽ θ log ⁡ π θ ( a ∣ s ) = b ∗ ∑ a ∈ A π θ ( a ∣ s ) 1 π θ ( a ∣ s ) ∂ π θ ( a ∣ s ) ∂ θ = b ∗ ∑ a ∈ A ∂ π θ ( a ∣ s ) ∂ θ = b ∗ ∂ ∑ a ∈ A π θ ( a ∣ s ) ∂ θ = b ∗ ∂ 1 ∂ θ = 0 \begin{aligned} \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[\triangledown_{\theta}\log \pi_\theta(A|s)*b] &=b*\sum_{a\in A}\pi_\theta(a|s)\triangledown_{\theta}\log \pi_\theta(a|s) \\ &= b*\sum_{a\in A}\pi_\theta(a|s)\frac{1}{\pi_\theta(a|s)}\frac{\partial \pi_\theta(a|s)}{\partial \theta}\\ &= b*\sum_{a\in A} \frac{\partial \pi_\theta(a|s)}{\partial \theta}\\ &= b*\frac{\partial \sum_{a\in A} \pi_\theta(a|s)}{\partial \theta}\\ &= b*\frac{\partial 1}{\partial \theta} \\ &= 0 \end{aligned} Aπθ(s)E[θlogπθ(As)b]=baAπθ(as)θlogπθ(as)=baAπθ(as)πθ(as)1θπθ(as)=baAθπθ(as)=bθaAπθ(as)=bθ1=0
需要注意的是:

  1. 求导和求和是可以互换的
  2. baseline b是与动作无关的,绝对不能是关于动作的函数

知道了上面的计算过程,下面就容易了,我们来看策略梯度:
E A ∼ π θ ( ⋅ ∣ s ) [ ▽ θ log ⁡ π θ ( A ∣ s ) ( q π θ ( s , A ) − b ) ] = E A ∼ π θ ( ⋅ ∣ s ) [ ▽ θ log ⁡ π θ ( A ∣ s ) q π θ ( s , A ) ] − E A ∼ π θ ( ⋅ ∣ s ) [ ▽ θ log ⁡ π θ ( A ∣ s ) b ] = E A ∼ π θ ( ⋅ ∣ s ) [ ▽ θ log ⁡ π θ ( A ∣ s ) q π θ ( s , A ) ] \begin{aligned} \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[\triangledown_{\theta}\log \pi_\theta(A|s)(q_{\pi_\theta}(s,A)-b)]&=\underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[\triangledown_{\theta}\log \pi_\theta(A|s)q_{\pi_\theta}(s,A)]-\underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[\triangledown_{\theta}\log \pi_\theta(A|s)b] \\ &=\underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[\triangledown_{\theta}\log \pi_\theta(A|s)q_{\pi_\theta}(s,A)] \end{aligned} Aπθ(s)E[θlogπθ(As)(qπθ(s,A)b)]=Aπθ(s)E[θlogπθ(As)qπθ(s,A)]Aπθ(s)E[θlogπθ(As)b]=Aπθ(s)E[θlogπθ(As)qπθ(s,A)]
所以说添加个与动作无关的baseline是不改变策略梯度值的。

证明合适的baseline可以减小策略梯度的方差

我们需要知道方差的定义是 Var [ x ] = E [ x 2 ] − E 2 [ x ] \text{Var}[x]=\mathbb{E}[x^2]-\mathbb{E}^2[x] Var[x]=E[x2]E2[x]

所以有:
V a r [ ▽ θ log ⁡ π θ ( A ∣ s ) ( q π θ ( s , A ) − b ) ] = E A ∼ π θ ( ⋅ ∣ s ) [ ( ▽ θ log ⁡ π θ ( A ∣ s ) ( q π θ ( s , A ) − b ) ) 2 ] − E A ∼ π θ ( ⋅ ∣ s ) 2 [ ▽ θ log ⁡ π θ ( A ∣ s ) ( q π θ ( s , A ) − b ) ] Var[\triangledown_{\theta}\log \pi_\theta(A|s)(q_{\pi_\theta}(s,A)-b)]=\underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[(\triangledown_{\theta}\log \pi_\theta(A|s)(q_{\pi_\theta}(s,A)-b))^2]-\underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}^2[\triangledown_{\theta}\log \pi_\theta(A|s)(q_{\pi_\theta}(s,A)-b)] Var[θlogπθ(As)(qπθ(s,A)b)]=Aπθ(s)E[(θlogπθ(As)(qπθ(s,A)b))2]Aπθ(s)E2[θlogπθ(As)(qπθ(s,A)b)]
第二项我们不需要考虑,因为我们已经推导出它和 E A ∼ π θ ( ⋅ ∣ s ) 2 [ ▽ θ log ⁡ π θ ( A ∣ s ) q π θ ( s , A ) ] \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}^2[\triangledown_{\theta}\log \pi_\theta(A|s)q_{\pi_\theta}(s,A)] Aπθ(s)E2[θlogπθ(As)qπθ(s,A)]一样的。
我们主要看第一项,如果第一项可以小于 E A ∼ π θ ( ⋅ ∣ s ) [ ( ▽ θ log ⁡ π θ ( A ∣ s ) q π θ ( s , A ) ) 2 ] \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[(\triangledown_{\theta}\log \pi_\theta(A|s)q_{\pi_\theta}(s,A))^2] Aπθ(s)E[(θlogπθ(As)qπθ(s,A))2],那么我们就证明出来添加了baseline后减小了策略梯度的方差。

推导过程:

E A ∼ π θ ( ⋅ ∣ s ) [ ( ▽ θ log ⁡ π θ ( A ∣ s ) ( q π θ ( s , A ) − b ) ) 2 ] = E A ∼ π θ ( ⋅ ∣ s ) [ ▽ θ ( log ⁡ π θ ( A ∣ s ) ) 2 ( ( q π θ ( s , A ) − b ) ) 2 ] \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[(\triangledown_{\theta}\log \pi_\theta(A|s)(q_{\pi_\theta}(s,A)-b))^2]=\underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[\triangledown_{\theta}(\log \pi_\theta(A|s))^2((q_{\pi_\theta}(s,A)-b))^2] Aπθ(s)E[(θlogπθ(As)(qπθ(s,A)b))2]=Aπθ(s)E[θ(logπθ(As))2((qπθ(s,A)b))2]
我们假设变量无关性,即 ▽ θ log ⁡ π θ ( A ∣ s ) \triangledown_{\theta}\log \pi_\theta(A|s) θlogπθ(As) q π θ ( s , A ) − b q_{\pi_\theta}(s,A)-b qπθ(s,A)b是相互独立的。那么 E ( x y ) = E ( x ) E ( y ) \mathbb{E}(xy)=\mathbb{E}(x)\mathbb{E}(y) E(xy)=E(x)E(y) x x x y y y相互独立时。
所以我们有:
E A ∼ π θ ( ⋅ ∣ s ) [ ▽ θ ( log ⁡ π θ ( A ∣ s ) ) 2 ( ( q π θ ( s , A ) − b ) ) 2 ] = E A ∼ π θ ( ⋅ ∣ s ) [ ▽ θ ( log ⁡ π θ ( A ∣ s ) ) 2 ] E A ∼ π θ ( ⋅ ∣ s ) [ ( q π θ ( s , A ) − b ) 2 ] \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[\triangledown_{\theta}(\log \pi_\theta(A|s))^2((q_{\pi_\theta}(s,A)-b))^2]=\underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[\triangledown_{\theta}(\log \pi_\theta(A|s))^2]\underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[(q_{\pi_\theta}(s,A)-b)^2] Aπθ(s)E[θ(logπθ(As))2((qπθ(s,A)b))2]=Aπθ(s)E[θ(logπθ(As))2]Aπθ(s)E[(qπθ(s,A)b)2]

我们主要看第二项 E A ∼ π θ ( ⋅ ∣ s ) [ ( q π θ ( s , A ) − b ) 2 ] \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[(q_{\pi_\theta}(s,A)-b)^2] Aπθ(s)E[(qπθ(s,A)b)2],看看 b b b取什么值的时候它可以小于 E A ∼ π θ ( ⋅ ∣ s ) [ q π θ ( s , A ) 2 ] \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[q_{\pi_\theta}(s,A)^2] Aπθ(s)E[qπθ(s,A)2]

我们把第二项看成是关于 b b b的函数,然后对 b b b求导,导数为0的点就是函数的极小值点(这里说明下,按理来说导数为0的点有可能是极大值,但是我们知道第二项关于 b b b的二阶导数是1,二阶导数值大于0,那么我们知道该点一定是极小值点)

推导过程:

E A ∼ π θ ( ⋅ ∣ s ) [ ( q π θ ( s , a ) − b ) 2 ] = ∑ a ∈ A π θ ( a ∣ s ) ( q π θ ( s , a ) − b ) 2 d ∑ a ∈ A π θ ( a ∣ s ) ( q π θ ( s , a ) − b ) 2 d b = − 2 ∑ a ∈ A π θ ( a ∣ s ) ( q π θ ( s , a ) − b ) ∑ a ∈ A π θ ( a ∣ s ) ( q π θ ( s , a ) − b ) = 0 ∑ a ∈ A π θ ( a ∣ s ) q π θ ( s , a ) = ∑ a ∈ A π θ ( a ∣ s ) b E A ∼ π θ ( ⋅ ∣ s ) [ q π θ ( s , A ) ] = b ( because ∑ a ∈ A π θ ( a ∣ s ) = 1 ) \begin{aligned} \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[(q_{\pi_\theta}(s,a)-b)^2]&=\sum_{a\in A}\pi_\theta(a|s)(q_{\pi_\theta}(s,a)-b)^2\\ \frac{d \sum_{a\in A}\pi_\theta(a|s)(q_{\pi_\theta}(s,a)-b)^2}{d b}&= -2\sum_{a\in A}\pi_\theta(a|s)(q_{\pi_\theta}(s,a)-b)\\ \sum_{a\in A}\pi_\theta(a|s)(q_{\pi_\theta}(s,a)-b)&=0\\ \sum_{a\in A}\pi_\theta(a|s)q_{\pi_\theta}(s,a)&=\sum_{a\in A}\pi_\theta(a|s)b \\ \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[q_{\pi_\theta}(s,A)]&=b(\text{because} \sum_{a\in A}\pi_\theta(a|s)=1) \end{aligned} Aπθ(s)E[(qπθ(s,a)b)2]dbdaAπθ(as)(qπθ(s,a)b)2aAπθ(as)(qπθ(s,a)b)aAπθ(as)qπθ(s,a)Aπθ(s)E[qπθ(s,A)]=aAπθ(as)(qπθ(s,a)b)2=2aAπθ(as)(qπθ(s,a)b)=0=aAπθ(as)b=b(becauseaAπθ(as)=1)

我们最终推导出来当 b = E A ∼ π θ ( ⋅ ∣ s ) [ q π θ ( s , A ) ] b=\underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[q_{\pi_\theta}(s,A)] b=Aπθ(s)E[qπθ(s,A)]时,上式的 E A ∼ π θ ( ⋅ ∣ s ) [ ( q π θ ( s , A ) − b ) 2 ] \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[(q_{\pi_\theta}(s,A)-b)^2] Aπθ(s)E[(qπθ(s,A)b)2]函数值最小,且一定小于 E A ∼ π θ ( ⋅ ∣ s ) [ q π θ ( s , A ) 2 ] \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[q_{\pi_\theta}(s,A)^2] Aπθ(s)E[qπθ(s,A)2]。而且我们发现 E A ∼ π θ ( ⋅ ∣ s ) [ q π θ ( s , A ) ] \underset{A\sim \pi_\theta(\cdot|s)}{\mathbb{E}}[q_{\pi_\theta}(s,A)] Aπθ(s)E[qπθ(s,A)]正是价值函数 V π θ ( s ) V_{\pi_\theta}(s) Vπθ(s)

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值