ws:OpenAI Deep RL

一 什么是RL

RL是trail and error来解决问题。

RL条件:你有一个sequential decision making问题,你不知道最好的behavior怎么做,但是你仍旧可以度量behavior是好是坏。

首先observe周围的state,然后用policy来从state选择action,trajectory是state和action序列。reward是衡量state-action对。

Value函数V(s)是action-value函数Q(s,a)关于policy on a的期望值。

Bellman equation:V(s)=(当前的reward+ rV(s'))关于policy和state transition的期望。而最优的V和Q都是max on policy。

因为最优的policy肯定是对应着最优的Q,所以有两种强化学习的方式:直接优化policy,或者通过寻找最优的Q来找到最优的policy。而最优的Q肯定是满足于Bellman equation,所以可以据此来计算出Bellman error进行优化。(问题:Bellman equation只是一个必要条件,不是一个充分条件

二 Deep RL算法


首先根据我们是否知道state transition,分为两大类。如果是知道state transition,那么我们就可以很容易通过forward simulate action来evaluate我们的action。如果没有的话,就只能通过跟环境之间接触的经验来学习。但是model-based相比不是那么成熟。

Policy optimization

使用policy得到trajectory,然后通过优化reward来求解policy。是一个on policy方法。

想要优化J就要优化P(T/pi_theta),而后者的求导只是对policy的求导。所以最终:

通过“Reward-to-Go”以及baseline变化最终得到:

其中V是通过另外一个网络根据数据学习得到的。

Q-Learning

通过bootstrapping也就是最小化sum(Q_theta(s,a)- (r+/gamma max_on_a' Q_theta(s',a'))来求得theta。但是用这种方式训练非常不稳定,因为作为目标的r+/gamma max_on_a' Q_theta(s',a')是每次随着theta改变的。所以一般不用。而是用另外一个r+/gamma max_on_a' Q_theta_target(s',a')来代表target,其中theta_target只在每个k steps来update为当前的theta。DQN只能用在discrete policy。因为只需要有任意模型产的训练语料,就可以学得模型,所以是off-policy算法。

DQN类的算法非常容易时不时的diverge,Q值或者变得非常大,或者成负值。

为什么上面的Q-learning算法可以得到最优的Q?依据是contraction map,如果||f(x) - f(y)|| <= B||x-y||,其中B\in[0,1],那么f就是contraction的。在这个前提下, 通过repeated应用f在当前的输出上,最终就会得到一个unique fixed-points。但是因为Q随着改变,导致Q-learning算法可能不满足上面的条件。

Model-Based RL(AlphaZero)

如果有一个model即simulator可以告诉我们如果这样做会发生什么,那么我就可以进行look ahead。但是这样的simulator是很难学得的。

model的作用方法有:作为look ahead来为未来做evaluate;在Expert Iteration,帮助训练policy;利用model来做policy evaluation;利用model来做side information。例如在AlphaZero中,利用MCTS作为simulator来产生target policy。

你可能感兴趣的:(ws:OpenAI Deep RL)