强化学习基础知识

强化学习基础知识

RL

元素:actor(我们可以控制,决策我们的行为),Env,Reward(我们不能控制环境)

主要方法:model-baed(对Env建模,actor可以理解环境), model-free(policy-based,value-based);on-policy(学习与互动的actor为一同一个),off-policy(学习与互动actor不同);MC(eposidic),TD


主要介绍了Policy Gradient,Q-learning,Actor-Critic,Sparse Reward,Imitation Learning及其相关内容。


Policy Gradient

考虑一个actor π与环境互动,收集(s,a,r,s'),其中π(a|s)为我们可以控制的policy,Env在收到actor 动作后给出下一个s'和r,这是无法控制的!且r一般为随机变量,我们考虑一个trajectory完成时的total reward,也就是所有r的和R(必然一个问题是R的方差极大)。由于R为随机变量,我们考虑最大化R的均值,也就是sample一些π的trajectory,然后求均值R'。

其中P(s)是Env给的,我们无法控制,我们可以调节的policy为P(a|s)。

使用gradient ascend来最大化R',这里参数θ只与π(a|s)有关,最后得到可sample的式子。其中每笔trajectory的数据只能用一次,actor更新之后就不能用了。实际操作时可以看为加权的分类问题S->A,选择cross-entropy,权重为R, R可以不可导。

tip1 : add a baseline, 可能R都是正的,导致不论什么a都增加其几率,当sample够大这不是问题,但sample小的话会潜在降低没有sample出a的几率。b一般与s有关。比如可以使用R的均值等。

tip2:assign suitable credit,一个trajectory中所有a的r都一样是不合理的,只考虑t之后的r,可以考虑discount rate。当sample足够大,也不是问题,数据可以区分不同a的作用。其中R' - b为advantage function,衡量用θ这个模型,在s中采取a相对于其他action的好坏(Critic)。最终:

=======================================================

PPO (TRPO,PPO2)

原因:policy gradient为on-policy,sample一次更新完actor之后,actor就变了,不能使用原来的数据了,必须重新与Env互动收集新数据。

Important sampling:使用其他分布q获得数据,来估计基于分布p的函数期望,用户不能直接从p中采样的情况。需要注意的是p与q不能差太多,因为函数期望虽然无偏,但是方差可能很大,当然如果sample数据足够多也没这个问题。

目标:使用θ'采样的数据,训练θ这个actor,过程中θ'是fixed的所以可以重复使用用θ'的数据训练θ许多次,增加数据利用率,提高训练速度,为openAI的default方法。显然,此方法转为了off-policy。

注意:因为θ' 是与环境交互的actor,所以advantage function 的估计需要使用θ'的数据

此为跟新需要的gradient,其中假设在不同actor中看到的s概率一样,则可以简化。通过gradient可以反推出目标函数。

约束:由于θ'与θ不能差别太大,所以需要有个约束,比如在目标函数后加-βKL(θ,θ')作为约束(PPO);或者外面引入KL(θ,θ') < δ (TRPO,PPO前身,用constraint计算上不好处理)

说明:因为可能参数小的变化,行为变化很大,衡量无意义。所以。KL(θ,θ')不是参数上的距离,而是行为上的距离!π(a|s)的分布接近!

tip:adaptive KL Penalty,权衡β。定义KLmin和KLmax,当KL > KLmax,说明penalty作用没发挥,则增加β的值,反之亦然。


PPO2:不用计算KL,同样可以控制θ与θ'之间差距。

说明:当A>0,也就是a是好的,我们希望增加Pθ的概率,但是,Pθ不能弄得太大,太大也就会使与Pθ'差距大,导致效果不好。反之亦然。

=======================================================

Q-Learning

value-based,学习Critic,评价现在的行为的相对好坏。

state value fucntion V_π(s): 期望累计奖励,给定π,s,衡量a的好坏。主要他必须与π相关,衡量这个actor,而不是单纯的s。

  1. MC(episodic),需要π经历一次整个过程后,进行统计估计,由于r为随机变量,所以此方法方差大,但是无偏的。
  2. TD, 根据V_π(s) = Vπ(s+1) +r_t估计,不需要每次经历完整过程。由于Vπ值都为估计值,可能存在估计不准,其中只涉及r,方差小

state-action value function(Q function) Q_π(s,a):衡量π在s下,采取a的好坏。其中π不一定采取a,这里只是衡量如果在这采取a的情况。

形式:

  • 输入s,a,输出Q
  • 输入s,输出每个a的Q,只能用于离散a

目标:给定Q,找到一个比π更好的π',这里"更好"是说,对所有s,有V_π'(s) >= V_π(s)

决策:π' = argmax_a(Q_π(s,a)),这里没有policy,依据Q来决定的,这个形式对连续a不好求解

附:证明V_π'(s) >= V_π(s)

由于π' = argmax_a(Q_π(s,a)),所以,

必用tips

  1. target network

学习中数据为...(st,at,r_t, s_t+1)...,训练目标为

由于目标函数在更新后是变化的,训练十分不稳定

我们采用两个network,一个用来训练,一个用来计算目标target(右边的),训练时target固定住。当训练一定数目后再更新target network的参数(用训练network替换)。

2. exploration

Q-learning的policy是依赖于Q,每次选择最大Q的a,这样不利于收集数据,如果一开始没有采样到a,Q比较小,之后不会再采取这个a,无法准确估计Q(s,a)。

方法: ε-greedy :以ε概率随机选择a,通常 ε随着学习进行变小;

Boltzmann Exploration:基于Q值概率化,通过概率采样选择a,

3. Replay Buffer

把actor的每笔experience...(st,at,r_t, s_t+1)...放到一个buffer里面,其中buffer里面的exp可能来自不同的actor,当buffer满了再替换旧的exp。训练过程时每次从buffer里面sample一个batch出来训练。

结果:变成了off-policy方法(可能来自于其他actor)

好处:RL训练过程中交互很耗时间,这样充分利用数据(可以反复利用数据),减少很Env互动次数;降低batch内相关性,训练效果更稳定(diverse),因为我们只用一个exp训练,并不是trajectory,所以off-policy也没关系。

高级tips

4. Double DQN

Q值一般都是被高估的,假设某个a被高估了,则target会选择被高估的a,则target总是会很大。

我们采取使用两个function Q和Q',其中Q选择a(训练Q),Q'来估计q值(target Q'),当一个高估q的Q选择了高估的a,但是另一个可能会准确估计其q值;当Q'高估q,只有Q不选择a就ok,这样双重决策会缓解高估问题。采用target network和main network可以有效减少参数量。

5. Dueling DQN

改架构,使Q(s,a) = A(s,a) + V(s),有时候Q的值可能与a无关,而只与s有关,比如一个不好的s导致什么a都不好。当action不影响s时,没必要去衡量每个a的q值(只有在关键时刻a才重要!)

好处:当没有sample到a时,同样可以更新a,比较有效率地使用数据,加速训练。
说明:为了防止模型不训练V,可以给A(s,a)加约束。比如A(s,a)限制和为0等等。实际操作可以在A(s,a)最后一层加normalization op.

6. Prioritized Replay

改变sample data的分布,增加那些难训练的数据被采样的概率,TD error大的数据;同时可以改变训练过程。

7. Multi-step

权衡MC与TD,结合MC与TD的好处与坏处,MC准确方差大,TD方差小,估计不准。可以通过调节N来权衡。replay buffer中存N步的exp,则target变成:

8. Noisy Net (State-dependent Exploration)

原本的exploration(ε-greedy)时对action加noise,现实中是不合理的(给同样s,采取的a不同,真是π不是这样的)。这里采用在每个参数上加gaussian noise,注意每次在sample net时是在每个episode开始使sample net,之后固定住net开始训练。这样在类似的s给出是类似的a,更合理,系统地探索环境(Explore in a consistent way)。

9. Distributional Q-function

Q function为累计期望奖励,它为期望值,实际上在s采取a时,最终所有得到的reward为一个分布reward distribution,但是不同的分布可能期望是一样的。只用期望来代表reward会损失一些信息。

原来Q function为输出每个a的Q,Q为期望,现在输出每个a的Q的分布!实际上操作,假定reward distribution在一个范围内,拆成一些区间,输出在s采取a的reward落在某个区间的概率。在test时可以选择某个a期望最大的action执行,也可以考虑分布的方差,减低a的风险。此方法不会产生高估q值问题,因为一开始把q限制在一个范围内了(可能低估q)。

10. Rainbow

以上方法全部结合起来!


Q-learning总结:比较稳;只需要Q function就可以找到较好的π;容易操作。不易处理连续action情况。

如何用Q-learning处理连续a的情况:

  1. sampling action: sample N a, choose maxQ(a,s)
  2. gradient ascent solve the optimization problem, 存在local minimum,选择a时先要训练一个net..
  3. 设计网络使优化目标好解,比如输出为miu,S,V,Q值为

如此设计则最优a为miu(s)

=======================================================

Actor Critic (A2C, A3C, DPGP)

原始policy-based方法中梯度为

其中

累计奖励G是π在s采取a经历到最后得到的,为随机变量的和,所以方差可能很大,我们通过sample估计可能不准确。

目标:直接估计累计reward的期望值代替sample的估计,使估计稳定。其中估计reward的期望值为value-based method。

根据Q function的定义:E[Gt] = Q(s_t, a_t),所以可以用Q-learning学G。

baseline:与s有关,可以用V_π(S)等表示,需要注意EQ(s,a)=V(s),所以Q-V有正有负!

最终:G-b = Q(s,a) - V(s),此时需要两个network分别预测Q和V,这会承担2倍风险预测不准确。

因为Q_π(s_t,a_t) = E[r_t+V_π(s_t)],假设可以忽略期望,因为r时随机变量,但是r的方差肯定小于G,所以这种假设是可行的。最终可以利用V计算Q。不需要估计Q,但是略微引入了一点方差。

最终:

此为advantage function.

A2C:π先互动,收集exp,先估计V(s) (TD, MC),再估计π

tips

  1. shared shallow layer:需要学习的两个network可以共享参数

2. output entropy as regularization for π(s),使action分布交均匀,实现exploration


A3C:A2C训练较慢,使用多个worker学习参数跟新梯度,一起更新Global Network的参数。每个worker从global network中拿参数,自己与环境互动,计算梯度,更新global network参数。注意,每个worker可能不是原始参数。


PDPG:从不同视角来看,原来Critc只评价a,现在可以引导π,告诉哪个a好;一种使用Q-learning解连续动作的方法,原来Q-learning不好解连续a的argmax的问题,现在用一个actor来解。

先训练Q,然后固定Q,训练actor使得Q最大,架构与GAN一样!generator为actor,discriminator为Q,为一个conditional GAN

Q-learning中的技术都可以使用。

整个算法:

进而,GAN中的优化方法可以引入这里:

=======================================================

高级技法

Sparse Reward

agent可能大多时间没有reward,导致训练时不论采取什么a都一样好。

Reward Shaping:Env有自己固定的reward,我们引导actor刻意设计一些reward,学到期望的行为。可能有些actor在预测未来reward很难,则discount很大。设计reward不一定是Env真的reward,只是我们希望的行为,一般需要domain knowledge。

Curiosity:Intrinsic Curiosity module (ICM)

鼓励actor冒险,越难预测的s,则风险越大,增加exploration。但是不一定越难预测这个s就是好的,可能环境中的随机无关变量。进而引入feature extractor,把没有意义的无关变量过滤掉。则ICM可以为:

这样设计的feature是与a有关的。


Curriculum Learning:为机器的学习做规划,有顺序地训练,从简单东西到难的东西(不只用于RL)。比如识别数字,先学习分辨0,1,然后学习分辨0-9。需要老师设计课程。


Reverse Curriculum Generation:给定一个goal state->根据goal state采样离goal state接近的state s1->从这个s1互动,看能否达到goal state,得到reward->删除reward 极端的state(reward太大,说明太简单,已经学会,反之亦然)->基于适中的reward的s1继续sample s2。


Hierachical RL:有许多不同等级的agent,高层的负责定目标,分配给底层的agent负责执行完成。大任务分解为小任务逐次实现。

注意:如果低级的agent不能实现目标,则高级的agent受惩罚,防止高层的agent提出太难的目标;如果agent最终实现了一个错误的goal,则假设正确的goal为这个错的!

=======================================================

Imitation Learning

Appewnticeship Learning: learning by demonstration,整个任务没有reward!通过专家演示如何解决问题。

  • 机器可以与环境互动,但是不会获得显示的奖励
  • 有些任务很难定义reward(比如驾驶车无法判断撞男人和女人各有多少reward)
  • 有些人工定义的reward可能导致无法控制的结果

方法:Behavior Cloning;Inverse Reinforcement Learning (inverse optimal control)

Behavior Cloning:监督学习,收集专家的(s,a)进行学习。

可能存在的问题:

  1. 专家只能提供有限的样本(专家很专业,不会经历一些极端情况,机器遇到无法决策)。

Dataset Aggregation:这种情况可以让专家在机器决策时处于机器的环境(收集专家在极端情况下的行为),但是机器还是做自己,专家给予指导,可能导致每次尝试损失一个专家

  1. 机器可能只是单纯复制专家的行为,不论行为是是否相关(比如学到个人无关的坏行为),因为机器的capacity是有限的,可能只学到了坏行为(监督学习同等对待所有error
  2. 训练数据与测试数据mismatch

supervised learning中我们希望训练集和测试集具有相同的分布。

但是在BC中,训练数据为(s,a)~π^(expert),其中专家的action会影响s的分布( RL特点);测试数据为(s',a')~π*(actor clone expert)。当π^=π*时,数据具有相同的分布;当不相等时,s与s'可能差异很大。


Inverse Reinforcement Learning:有Env,actor,Expert demonstration,但是没有reward function。利用expert行为反推reward function;接下来可利用RL找到optimal actor。

好处:可能reward function比较简单,也能导致expert的复杂行为。

方法:

  1. 有一个expert与环境互动得到一些专家数据
  2. 有一个actor π与环境互动得到数据
  3. 反推一个reward function,原则为expert得到的分数比actor高
  4. 利用这个reward fucntion使用RL方法学习actor,得到新数据。
  5. 基于新的actor与expert数据,更新reward function,遵循同样的原则,反复迭代,最终学到reward function使得actor与expert得到同样高分。

reward function:如果是线性的reward,保证收敛。或者可以使用NN,输入为trajectory,输出一个R;或者输入(s,a),输出r,最后汇总得到R

说明:如果actor是generator,reward function是discriminator,则整个框架就是GAN!

优点:不需要太多的training data

应用:学习不同expert开车,且能学习每个expert开车不同风格;人示范训练机器人(手把手,机器处于s的第一视角);Chat-bot(使用maximum likelihood相当于behavior cloning,这是不够的!;SeqGAN方式相对于IRL

扩展

Third Person IL:使用domain adversial training (抽取有用的信息)+ IL,机器看人的行为学习(机器学习视角为第三视角)。

发布于 2018-08-10

文章被以下专栏收录