Policy Gradient

一、介绍

回顾以下以前 value-based的方法:在value-based方法中,他们都是去学习一个动作的价值函数,然后根据这个动作的价值函数作出下一步选择。以至于这个方法高度依赖动作价值函数,如果没有动作价值函数,也就不知道如何为下一步作出抉择。
在本文中,我们提出一种新的想法来解决Reinforcement Learning 中的决策问题。即直接去训练这么一个策略,它能直接给出下一步动作是什么。当然,这个策略肯定是带参数的。我们最直接的目标就是优化策略的参数,使之能够很好的做出准确的决策。换句话说,以前 value-based方法是找出每一个状态下的每一个动作的价值函数,而 Policy Gradient 的方法是找出每一个状态下该采取哪个动作的函数。前者是 状态动作到价值的映射,后者是状态到动作的映射。显然后者更简单粗暴点。后者这种方法就叫做policy-based.

为了表示出Policy Gradient中的策略,我们记 \theta 为策略的参数向量。因此策略可以用如下概率表示:
\pi(a|s, \theta) = Pr\{A_t = a | S_s, \theta_t = \theta\}

image.png

即在时间 t 时,在状态 s 下选取某一个动作的概率。
实际上,我们定义了一个某一个状态下关于动作的概率分布。有了这个概率分布,决策时在这个分布中采样就可以了。

当然policy gradient 也可以处理连续空间问题,如下图所示,但本文主要以离散动作空间做例子:


image.png

二、优化策略

OK,那问题来了,策略 \pi(a|s, \theta) 有了,该怎么优化这个策略呢?如果能找到最优的策略,那不管环境给你怎样的状态,我们都能从策略中得到当前状态下关于动作的分布,最后采样结果就是抉择的结果。但是前提是这个策略是靠谱的,所以我们下面研究如何优化这个策略。

这里要提出一个优化方法:梯度下降

首先,我们要有一个衡量策略结果好坏的函数,把它叫做目标函数,记 J(\theta),其中\theta是参数向量。这个目标函数值越大,说明我们的策略越好,反之越差。所以实际上问题就转化为最大化目标函数。而最大化该函数的方法就是用梯度下降。
应用梯度下降方法求解最大化函数问题,简单地讲就是求偏导,最后的参数更新有如下形式:
\theta_{t+1} = \theta_t + \alpha \nabla J(\theta_t)

这个一个非常一般的一种形式,不同的目标函数催生出不同的算法。但是,只要可以表示成上面这种形式的表达式,都属于 Policy Gradient 方法。

那么,该怎么计算 \nabla J(\theta) 以及 \pi(a|s, \theta) = Pr\{A_t = a | S_s, \theta_t = \theta\}呢?
实际上,这两个的计算方法都依赖于其本身的定义。例如:对于离散动作空间下,策略\pi可以用 soft-max 分布表示
\pi(a|s, \theta) = \frac{e^{h(s, a, \theta)}}{\sum_b e^{h(s, b, \theta)}}
其中h(s, a, \theta)是状态-动作对的参数化表示,可以用一个神经网络去近似它:
h(s,a, \theta) = \theta^T x(s,a)
其中 \theta 是网络中去权重的向量,x(s,a)表示状态和动作的特征。

至于如何计算 \nabla J(\theta)? 计算前必须先定义好 J(\theta)。假设环境能产生一段完整的 episode, 那么我们可以用初始状态的价值去表示目标函数:
J(\theta) = v_{\pi_\theta}(s_0)

J(\theta) = v_{\pi_\theta}(s_0) 求偏导,其偏导结果有定理Policy Gradient Theorem给出

image.png

有了上面的求导结果,就可以导出第一个 policy-gradient 算法了:Monte Carlo Policy Gradient
从上面公式看,\nabla J(\theta) 结果与 \sum \mu (s) \sum_a \nabla \pi (a|s) q_\pi (s,a) 成正比,进一步写成:
\nabla J(\theta) \propto \sum \mu (s) \sum_a \nabla \pi (a|s) q_\pi (s,a)
= E_\pi[ \sum_a q_\pi (S_t , a) \nabla \pi (a|S_t, \theta)]
实际上我们可以把\nabla J(\theta)\sum \mu (s) \sum_a \nabla \pi (a|s) q_\pi (s,a) 之间画上等号,因为我们在更新参数 \theta 的时候会乘上一个学习数率\alpha,这个参数可以消去这两个项之间的比例系数。所以,放心画上等号后:
\begin{align} \nabla J(\theta) & =\sum \mu (s) \sum_a \nabla \pi (a|s) q_\pi (s,a) \\ & = E_\pi[ \sum_a q_\pi (S_t , a) \nabla \pi (a|S_t, \theta)] \\ & = E_\pi[ \sum_a \pi(a, | S_t , \theta) q_\pi (S_t , a) \frac{ \nabla \pi (a|S_t, \theta)]}{\pi (a|S_t, \theta)} ]\\ & = E_\pi [q_\pi (S_t , A_t) \frac{\nabla \pi (a|S_t, \theta)}{\pi (a|S_t, \theta)}] \\ & = E_\pi [G_t \nabla log \pi(A_t | S_t , \theta) ] \end{align}

现在就能导出 monte carlo 的 policy gradient 的更新公式了:
\theta_(t+1) = \theta_t + \alpha G_t \nabla \pi(A_t | S_t , \theta)

三、算法框架

image.png
  1. 初始化状态 s_0
  2. 将状态 s_0 传入 RL 算法,得到各个动作的概率
  3. 根据概率分布采样,得到下一步动作 a_0
  4. 环境对 Agent 作出的动作 a_0 给予相应的奖励 r_1, Agent 到达下一个状态 s_1

经过上面步骤后,得到数据集: \{s_0, a_0, r_1, s_1\}, 如果 a_0 不是终止动作,上面的步骤还必须继续进行,直到遇到终止动作,一段 episode 就说是结束了。

最后收集的数据: \{ s_0, a_0, r_1, s_1, a_1, r_2, s_2 , ... ..., s_{T-1}, a_{T-1}, r_T, s_T \}

有了数据后才进行算法的更新。

image.png

这是 sutton 的《Reinforcement learning 》书中所叙的算法。下面再贴上 Devil 的算法:


image.png

这两个算法差别不大,可以说基本差不多。注意 Devil 版本的算法中的更新公式中有一项是v_t,这个v_t实际上还是用G_t去估计。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容