五、策略梯度

五、策略梯度

1.1 名词介绍

首先介绍几个名词:

actor:产生并执行策略或动作(policy或者action)的东西。比如打游戏,actor就是手柄,操纵角色移动。

environment:同样是打游戏,environment 就是主机,能够根据手柄输出的信号改变什么,比如角色进攻、怪物被打死等。

reward function:就是打游戏会获得多少分数,比如杀死怪兽就得到二十分。

在 reinforcement learning 里面,environment 跟 reward function 不是你可以控制的,environment 跟 reward function 是在开始学习之前,就已经事先给定的。你唯一能做的事情是调整 actor 里面的 policy,使得 actor 可以得到最大的 reward。Actor 里面会有一个 policy, 这个 policy 决定了 actor 的行为。Policy 就是给一个外界的输入,然后它会输出 actor 现在应该要执行的行为。


1.2 policy

Policy 一般写成 π ,到了后面的actor-critic的话,policy是由一个网络输出的,可以将policy看作一个网络,使用参数 θ 表示 π 的参数。Networkinput 就是现在 machine 看到的东西, Output 的就是机器要采取什么样的行为。

假设还是打游戏,并且你现在可以做的行为有 3 个,output layer 就是有 3 个 neurons。每个 neuron 对应到一个可以采取的行为。Input 一个东西后,network 就会给每一个可以采取的行为一个分数。接下来,你把这个分数当作是概率。 actor 就是看这个概率的分布,根据这个机率的分布,决定它要采取的行为。比如说 70% 会走 left,20% 走 right,10%开火等等。概率分布不同,actor 采取的行为就会不一样。

1.2.1 actor与环境互动

接下来用一个打游戏的例子来说明 actor 是怎么样跟环境互动的。 首先 actor 会看到一个游戏画面,我们用 来表示这个游戏画面,它代表游戏初始的画面。接下来 actor 看到这个游戏的初始画面以后,根据它内部的 network,根据它内部的 policy 来决定一个 action。假设它现在决定的 action 是向右,它决定完 action 以后,它就会得到一个reward ,代表它采取这个 action 以后得到的分数。

我们把一开始的初始画面记作 s1,把第一次执行的动作记作a1,把第一次执行动作完以后得到的 reward 记作r1,不同的书会有不同的定义,有人会觉得说这边应该要叫做r2,这个无所谓。Actor 决定一个的行为以后, 就会看到一个新的游戏画面s2,把这个s2输入给 actor ,这个 actor决定要开火,然后它可能杀了一只怪,就得到五分。这个 process 就反复地持续下去,直到今天走到某一个 timeslot执行某一个 action,得到 reward 之后, 这个environment 决定这个游戏结束了。

一场游戏叫做一个 episode(回合) 或者 trial(试验) 。把这个游戏里面,所有得到的 reward 都总合起来,就是 total reward ,我们称其为 return(回报) ,用R 来表示它。Actor 要想办法去 maximize 它可以得到的 reward。

1.2.2 轨迹

在一场游戏里面,我们把 environment 输出的s跟 actor 输出的行为a全部串起来,叫做一个 Trajectory(轨迹) ,如下式所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u7j6Pv4H-1603720505273)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20201026214028703.png)]

在一个process中,一个具体的trajectory 的s1, a1, s2, a2出现的概率取决于两部分:

  1. 一部分是 environment 的行为, environment 的 function 它内部的参数或内部的规则长什么样子。 p(st+1|st, at)这一项代表的是 environment, environment这一项通常你是无法控制它的,因为那个是人家写好的,你不能控制它。
  2. 另一部分是 agent 的行为,你能控制的是pθ(at|st)。给定一个st,, actor 要采取什么样的at会取决于你 actor 的参数θ。所以这部分是 actor 可以自己控制的。随着 actor 的行为不同,每个同样的 trajectory, 它就会有不同的出现的概率。

1.3 蒙特卡洛(MC)和时序差分(TD)的联系与区别

  1. 两者的更新频率不同,蒙特卡洛强化学习方法是每一个episode更新一次,即需要经历完整的状态序列后再更新,而对于时序差分强化学习方法是每一个 step就更新一次。相对来说,时序差分强化学习方法比蒙特卡洛强化学习方法更新的频率更快。

  2. 时序差分强化学习能够在知道一个小step后就进行学习,相比于蒙特卡洛强化学习,其更加快速、灵活。

  3. 具体举例来说:假如我们要优化开车去公司的通勤时间。对于此问题,每一次通勤,我们将会到达不同的路口。对于时序差分(TD)强化学习,其会对于每一个经过的路口都会计算时间,例如在路口 A 就开始更新预计到达路口 B、路口 C , 以及到达公司的时间;而对于蒙特卡洛(MC)强化学习,其不会每经过一个路口就更新时间,而是到达最终的目的地后,再修改每一个路口和公司对应的时间。

1.4 REINFORCE的计算过程

首先我们需要根据一个确定好的policy model来输出每一个可能的action的概率,对于所有的action的概率,我们使用sample方法(或者是随机的方法)去选择一个action与环境进行交互,同时环境就会给我们反馈一整个episode数据。对于此episode数据输入到learn函数中,并根据episode数据进行loss function的构造,通过adam等优化器的优化,再来更新我们的policy model。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值