机器学习(三十五)——Actor-Critic, Integrating Learning and Planning(1)

Actor-Critic

概述

MC策略梯度方法使用了收获作为状态价值的估计,它虽然是无偏的,但是噪声却比较大,也就是变异性(方差)较高。如果我们能够相对准确地估计状态价值,用它来指导策略更新,那么是不是会有更好的学习效果呢?这就是Actor-Critic策略梯度的主要思想。

机器学习(三十五)——Actor-Critic, Integrating Learning and Planning(1)

Actor-Critic的字面意思是“演员-评论”,相当于演员在演戏的同时,有评论家指点,继而演员演得越来越好。即使用Critic来估计行为价值:

Qw(s,a)Qπθ(s,a)Q_w(s,a)\approx Q^{\pi_\theta}(s,a)

基于Actor-Critic策略梯度学习分为两部分内容:

1.Critic:更新action-value函数的参数w。

2.Actor:按照Critic得到的价值,引导策略函数参数θ\theta的更新。

θJ(θ)Eπθ[θlogπθ(s,a)Qw(s,a)]\nabla_\theta J(\theta)\approx E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)Q_w(s,a)]

Δθ=αθlogπθ(s,a)Qw(s,a)\Delta \theta = \alpha \nabla_\theta \log \pi_\theta(s,a)Q_w(s,a)

可以看出,Critic做的事情其实是我们已经见过的:策略评估,他要告诉个体,在由参数θ\theta确定的策略πθ\pi_\theta到底表现得怎么样。

Compatible Function Approximation

近似策略梯度的方法引入了Bias,从而得到的策略梯度不一定能最后找到较好的解决方案,例如当近似价值函数引起状态重名的特征时。

幸运的是,如果我们小心设计近似函数,是可以避免引入bias的。该近似函数需要满足下面两个条件:

  • 近似价值函数的梯度完全等同于策略函数对数的梯度,即不存在重名情况:

wQw(s,a)=θlogπθ(s,a)\nabla_w Q_w(s,a)=\nabla_\theta \log \pi_\theta(s,a)

  • 价值函数参数w使得均方差最小:

ϵ=Eπθ[(Qπθ(s,a)Qw(s,a))2]\epsilon = E_{\pi_\theta}[(Q^{\pi_\theta}(s,a)-Q_w(s,a))^2]

符合这两个条件,则认为策略梯度是准确的,即:

θJ(θ)=Eπθ[θlogπθ(s,a)Qw(s,a)]\nabla_\theta J(\theta)= E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)Q_w(s,a)]

Reducing Variance Using Baseline

除了bias之外,variance也是需要考虑的方面。

我们从策略梯度里抽出一个基准函数B(s),要求这一函数仅与状态有关,而与行为无关,因而不改变梯度本身。

Eπθ[θlogπθ(s,a)B(s)]=sSdπθ(s)aAθπθ(s,a)B(s)=sSdπθ(s)B(s)θaAπθ(s,a)=0E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)B(s)] = \sum_{s\in S} d^{\pi_\theta}(s)\sum_{a\in A}\nabla_\theta \pi_\theta(s,a)B(s)\\= \sum_{s\in S} d^{\pi_\theta}(s)B(s) \nabla_\theta \sum_{a\in A} \pi_\theta(s,a) = 0

由于B(s)与行为无关,可以将其从针对行为a的求和中提出来,同时我们也可以把梯度从求和符号中提出来,而最后一个求和项:策略函数针对所有行为的求和,根据策略函数的定义,这里的结果肯定是1。而常数的梯度是0,因此总的结果等于0。

原则上,和行为无关的函数都可以作为B(s)。一个很好的B(s)就是基于当前状态的状态价值函数:Vπθ(s)V^{\pi_\theta}(s)

所以,我们可以用一个advantage function来改写策略梯度:

Aπθ(s,a)=Qπθ(s,a)Vπθ(s)A^{\pi_\theta}(s,a)=Q^{\pi_\theta}(s,a)-V^{\pi_\theta}(s)

上式的现实意义在于评估当个体采取行为a离开s状态时,究竟比该状态s总体平均价值要好多少?

θJ(θ)=Eπθ[θlogπθ(s,a)Aπθ(s,a)]\nabla_\theta J(\theta)= E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)A^{\pi_\theta}(s,a)]

advantage function可以明显减少状态价值的variance。(通俗的说法就是A的值有正有负,不像Q和V都是正值。)

因此,现在Critic的任务就改为估计advantage function。

在这种情况下,我们需要两个近似函数也就是两套参数,一套用来近似状态价值函数,一套用来近似行为价值函数。即:

Vv(s)Vπθ(s)V_v(s)\approx V^{\pi_\theta}(s)

Qw(s,a)Qπθ(s,a)Q_w(s,a)\approx Q^{\pi_\theta}(s,a)

A(s,a)=Qw(s,a)Vv(s)A(s,a) = Q_w(s,a) - V_v(s)

不过实际操作时,我们并不需要计算两个近似函数。这里以TD学习为例说明一下。

根据定义,TD误差δπθ\delta^{\pi_\theta}可以根据真实的状态价值函数Vπθ(s)V^{\pi_\theta}(s)算出:

δπθ=r+γVπθ(s)Vπθ(s)\delta^{\pi_\theta} = r + \gamma V^{\pi_\theta}(s') - V^{\pi_\theta}(s)

因为:

Eπθ[δπθs,a]=Eπθ[r+γVπθ(s)s,a]Vπθ(s)=Qπθ(s,a)Vπθ(s)=Aπθ(s,a) E_{\pi_\theta}[\delta^{\pi_\theta} | s,a] = E_{\pi_\theta}[r + \gamma V^{\pi_\theta}(s') | s,a] - V^{\pi_\theta}(s)= Q^{\pi_\theta}(s,a) - V^{\pi_\theta}(s) = A^{\pi_\theta}(s,a)

可见δπθ\delta^{\pi_\theta}就是Aπθ(s,a)A^{\pi_\theta}(s,a)的一个无偏估计。

因此,我们就可以使用TD误差来计算策略梯度:

θJ(θ)=Eπθ[θlogπθ(s,a)δπθ]\nabla_\theta J(\theta)= E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)\delta^{\pi_\theta}]

实际运用时,我们使用一个近似的TD误差,即用状态函数的近似函数来代替实际的状态函数:

δv=r+γVv(s)Vv(s)\delta_v = r + \gamma V_v(s') - V_v(s)

这也就是说,我们只需要一套参数描述状态价值函数,而不再需要行为价值函数了。

上述方法不仅可用于TD方法,还可用于MC方法等,以下不加讨论的给出如下结论:

KaTeX parse error: No such environment: align at position 7: \begin{̲a̲l̲i̲g̲n̲}̲ \nabla_\theta …

参考

https://zhuanlan.zhihu.com/p/51652845

强化学习这都学不会的话,咳咳,你过来下!

https://mp.weixin.qq.com/s/ce9W3FbLdsqAEyvw6px_RA

Actor Critic——一个融合基于策略梯度和基于值优点的强化学习算法

Integrating Learning and Planning

前面的章节主要介绍了Model-Free RL,下面将讲一下Model-Based RL,主要包括如下内容:

  • 如何从经历中直接学习Model。

  • 如何基于模型来进行Planning(规划)。

  • 如何将“学习”和“规划”整合起来。

机器学习(三十五)——Actor-Critic, Integrating Learning and Planning(1) |机器学习(三十五)——Actor-Critic, Integrating Learning and Planning(1)
上面两图形象的说明了Model-Free RL(左图)和Model-Based RL(右图)的差别。

Model-Based RL

机器学习(三十五)——Actor-Critic, Integrating Learning and Planning(1)

上图比较好的说明了模型学习在整个RL学习中的位置和作用。

我们首先看一下Model的定义:Model是一个参数化(参数为η\eta)的MDP<S, A, P, R>,其中假定:状态空间S和行为空间A是已知的,则M=<Pη,Rη>M=<P_\eta, R_\eta>,其中PηP,RηRP_\eta \approx P, R_\eta \approx R。则:

St+1Pη(St+1St,At)S_{t+1} \sim P_\eta (S_{t+1} | S_t, A_t)

Rt+1=Rη(Rt+1St,At)R_{t+1} = R_\eta (R_{t+1} | S_t, A_t)

通常我们需要如下的假设,即状态转移函数和奖励函数是条件独立的:

P[St+1,Rt+1St,At]=P[St+1St,At]P[Rt+1St,At]P[S_{t+1}, R_{t+1} | S_t, A_t] = P[S_{t+1} | S_t, A_t] P[R_{t+1} | S_t, A_t]

Model Learning

所谓Model Learning是指:从experience{S1,A1,R2,,ST}\{S_1, A_1, R_2, \dots, S_T\},学习

S1,A1R2,S2S_1, A_1\to R_2,S_2

S2,A2R3,S3S_2, A_2\to R_3,S_3

\dots

ST1,AT1RT,STS_{T-1}, A_{T-1}\to R_T,S_T

这实际上是一个监督学习的问题。其中,s,ars,a\to r是一个回归问题(regression problem),而s,ass,a\to s'是一个密度估计问题(density estimation problem)。

选择一个损失函数,比如均方差,KL散度等,优化参数η\eta来最小化经验损失(empirical loss)。所有监督学习相关的算法都可以用来解决上述两个问题。

根据使用的算法不同,可以有如下多种模型:查表式(Table lookup Model)、线性期望模型(Linear Expectation Model)、线性高斯模型(Linear Gaussian Model)、高斯决策模型(Gaussian Process Model)、和深信度神经网络模型(Deep Belief Network Model)等。

这里主要以查表模型来解释模型的构建。