【强化学习算法】原理介绍
置顶
猪腰子3 发布于2019-02-20 浏览:5555 回复:12
2
收藏
最后编辑于2020-08-03

     强化学习特别是深度强化学习近年来取得了令人瞩目的成就,除了应用于模拟器和游戏领域,在工业领域也正取得长足的进步。百度是较早布局强化学习的公司之一。这篇文章系统地介绍强化学习算法基础知识,强化学习在百度的应用,以及百度近期发布的强化学习工具PARL。

 

                                                强化学习算法(RL)和其他学习算法的异同

     首先,从宏观层面看,可以通过“三轴”图来看强化学习与其他学习方法的联系和区别:第一条轴deterministic -stochastic可以描述转移概率,决策过程和奖励值分布的随机性;第二条轴fixed dataset -interactive data,表示学习数据的来源方式;第三轴instant reward -delayed reward表示奖励值是立即返回还是有延迟的。我们熟知的有监督学习,针对的是静态的学习数据,以及近似可以看作无延迟的奖励;动态规划针对的则是确定性的环境,以及静态的数据;主动学习针对无延迟的奖励以及交互型的数据;多臂老虎机(multi-armed bandits)则同时处理带有奖励随机性和交互型的数据,但依旧是无延迟的奖励问题;只有强化学习处理三个方向(随机,有延时,交互)的问题。因此,强化学习能够解决很多有监督学习方法无法解决的问题。

 

                           强化学习的基本定义

     强化学习的主要思想是基于机器人(agent)和环境(environment)的交互学习,其中agent通过action影响environment,environment返回reward和state,整个交互过程是一个马尔可夫决策过程。

     举个例子如雅利达游戏:state指看到当前电游屏幕上的图像信息;agent或者人类专家面对state可以有相应的action,比如对应游戏手柄的操作;environment在下一帧会反馈新的state和reward,整个过程可以用马尔可夫决策过程来描述。在这个过程中的environment则主要包括两个机制:一个是transition代表环境转移的概率,另外一个是reward。

         

                                                  Markov Decision Process和Policy的定义

     可以通过更具体的类比来理解有监督和强化学习的REINFORCE算法的关联。假设在t时刻action以来表示. 在有监督的学习过程中需要人来示范动作, 通常我们希望机器去学习人的示范动作,在这里就代表示范的label。我们一般可以通过最小Negative Log-Likelihood (NLL)来使得我们的policy函数逼近人的示范。

 

                                                                      从Supervised Learning到REINFORCE

     在交互学习的过程中,没有人的示范,而是让机器自主去做一个动作。我们先考虑reward没有延迟的情况,机器人用一定的初始策略选到 这个动作。它不知道自己做的对不对, 但是可以他拿到一个立即的reward。如果我们尝试最小化这样一个目标函数 。 同时假设这个动作做对了奖励是 +1,做错了奖励是0, 我们可以发现,这个式子跟 是一致的,也就是退化为监督学习, 但却并不需要示范label, 只需要reward。

     进一步的,在马尔可夫决策过程迭代中,我们希望优化整个序列的总收益(delayed reward),而不是单步的立即收益。进一步修改目标为 ,即整个序列如果更好地完成最终总体指标R,就强化整个动作序列的概率,反之弱化整个动作序列的概率。这便是强化学习最简单的策略梯度方法。

     除此之外,DQN、temporal difference等方法,则是基于一个值(critic)评价体系进行迭代,而非直接求解policy。这类方法存在显著问题是无法针对连续动作空间。本文不再展开介绍。

 

                                                                         REINFORCE 和 CreditAssignment

     REINFORCE这类直接求解policy function的方法,效率通常比DQN低很多。以下围棋举例,比如前99步都下得很好,最后1步下的不好,导致满盘皆输。如果用REINFORCE方法,会认为这100步,包括下的不错的前99步都不好。虽然从统计意义上来说,如果下的次数足够多,梯度更新最终仍然是往正确的方向,但显然这是一种学习效率很低的算法。为了改善这个问题,另一类应用更广的方法是actor-critic,其中actor是policy,critic是评价函数,这类方法是将策略函数和值函数一同学习,核心思想是希望评价函数做能够给action返回一个合适针对它自己对于整个棋局影响的“综合”反馈 ,通常被称为credit Assignment。REINFORCE可以认为用整个序列的总体reward作为credit,而actor-critic赋予每一个动作一个独立的反馈,也叫做advantage。下面列出的是一些不同的advantage的计算方式[1]。其中,1是传统的REINFORCE,而后面的一些计算方式,则通过值函数的迭代,提升advantage计算准确性,从而提高策略梯度的效率。

 

                                                       从REINFORCE到Advantage Function的计算

     强化学习涉及的算法非常多,种类也非常广,包括:model-free算法,这类算法最为大家所熟知,而它又可以分为critic only,actor only和actor-critic;model based算法,通过对环境建模来进行规划,这类算法在训练过程中具有很高效率,但因为inference的时候需要做planning效率则较低,这类方法最近获得越来越多的关注;还有一些和不同算法结合在一起的组合RL方法,如Auxiliary Tasks, Hiearchical RL,DeepExploration,逆强化学习等。

 

                                                                              强化学习的算法罗列

 

 

参考文献

[1] Schulman, John, etal. "High-dimensional continuous control using generalized advantageestimation." arXiv preprintarXiv:1506.02438 (2015).

收藏
点赞
2
个赞
共12条回复 最后由Randcase回复于2020-08-03
#13Randcase回复于2020-08-03

就是有点不理解

0
#12wangwei8638回复于2020-06-21

补补基础知识

0
#11进985回复于2020-04-15

深奥

0
#10蓝兰兰111回复于2020-04-15

写的很详细了

0
#9susan回复于2020-01-12

果断收藏了。谢谢分享。

0
#8du初回复于2019-10-10

讲解的很详细深奥

0
#7wangwei8638回复于2019-04-22
#5 liguanghui2588回复
讲解很好,但是算法这块不太容易

算法没有简单的

0
#5liguanghui2588回复于2019-04-21

讲解很好,但是算法这块不太容易

0
#4liguanghui2588回复于2019-04-19

云图识别算法相关的有吗

0
#3wangwei8638回复于2019-04-18

收藏

0
#2荒墨丶迷失回复于2019-03-26

讲解的很详细深奥 学习了 哈哈哈

1
TOP
切换版块