强化学习与深度学习

~ 一些资料可以参考如下网页

http://blog.csdn.net/lqfarmer/article/details/74612982

 

~ 强化学习

强化学习是一种不同于监督学习和无监督学习的在线学习技术,基本模型图一所示。它把学习看作是一个“试探一评价”的过程,首先学习系统称为智能体感知环境状态,采取某一个动作作用于环境,环境接受该动作后状态发生变化,同时给出一个回报奖励或惩罚反馈给强化学习系统,强化学系统根据强化信号和环境的当前状态再选择下一个动作,选择的原则是使受到再励的概率增大。

强化学习是学习一个最优策略(policy),可以让本体(agent)在特定环境(environment)中,根据当前的状态(state),做出行动(action),从而获得最大回报(G or return)。

强化学习就是:追求最大回报G
追求最大回报G就是:找到最优的策略π
策略π告诉在状态s,应该执行什么行动a
最优策略可以由最优价值方法v(s)或q(s,a)决定

图示过程如下:

image

智能体在和环境交互时,在每一时刻会发生如下事件序列
1)智能体感知t时刻的环境状态s(t)
2)针对当前的状态和即时回报r(t),智能体选择一执行动作a(t)。
3)当智能体所选择的动作作用于环境时,环境发生变化
           环境状态转移至下一新的状态s(t+1)
           给出即时回报r(t),又称为奖赏回报
4)即时回报r(t)反馈给智能体,t<-t+1,。
5)转向第2步,如果新的状态为结束状态,则停止循环。
其中即时回报r(t),由环境状态s(t)与智能体的输出a(t)决定。a∈A,A为一组动作集。

 

强化学习中有三种方法可以实现回报的最大化:值迭代,策略迭代,策略搜索.

 

~ 马尔科夫基本决策过程(不带reward和action的不能称为强化学习)

马尔科夫的基本表示和定义

下图给出了马尔科夫子模型的关系

 

1.马尔卡夫决策过程(MDP)理论定义了一个数学模型,可用于随机动态系统的最优决策过程。强化学习利用这个数学模型将一个现实中的问题变成一个数学问题。马尔科夫决策过程(Markov Decision Process, MDP)考虑了动作.

设:

state 状态
action 行动
reward 奖赏

Pss' = P[St+1 = S' | St = S] 表示在状态为S情况下进入状态为S'的概率

 表示各种状态转化集和,比如P11表示从状态1转化到状态2的概率,这个矩阵是马尔科夫问题的框架

 马尔科夫决策过程变为强化学习:<S, P> -> <S, P, R, γ> 其中S表示状态.P表示转换概率.R表示奖励函数.γ表示折扣因子,介于(0,1)之间,表示更喜欢现在的奖励还是以后的奖励,并反映有多在乎未来得到的奖励,如果是0的话表示只关心当前时间的奖励,如果是1的话会考虑未来所有时间段的奖励

 2.马尔可夫性(无后效性),也就是指系统的下个状态只与当前状态信息有关,而与更早之前的状态无关。

 

马尔科夫决策原理

1.Rs = E[Rt+1 | St = s] 表示从 时间 t 状态 s 开始,到时间 t+1 时能够得到多少奖励,但强化学习关心的是最大化积累的奖励(R)的总量,即所有时间步的奖励(reward)总和Gt

强化学习的最终目标就是最大化 Gt,

那么如何求解最优策略呢?基本的解法有三种:

a.动态规划法(dynamic programming methods)

b.蒙特卡罗方法(Monte Carlo methods)

c.时间差分法(temporal difference)。

动态规划算法是其中最基本的算法

 

一个马尔可夫决策过程由一个四元组构成M = (S, A, Psa, )

  • S: 表示状态集(states),有s∈S,si表示第i步的状态。
  • A:表示一组动作(actions),有a∈A,ai表示第i步的动作。
  • sa: 表示状态转移概率。s 表示的是在当前s ∈ S状态下,经过a ∈ A作用后,会转移到的其他状态的概率分布情况。比如,在状态s下执行动作a,转移到s'的概率可以表示为p(s'|s,a)。
  • R: S×A⟼ℝ ,R是回报函数(reward function)。有些回报函数状态S的函数,可以简化为R: S⟼ℝ。如果一组(s,a)转移到了下个状态s',那么回报函数可记为r(s'|s, a)。如果(s,a)对应的下个状态s'是唯一的,那么回报函数也可以记为r(s,a)。

MDP 的动态过程如下:某个智能体(agent)的初始状态为s0,然后从 A 中挑选一个动作a0执行,执行后,agent 按Psa概率随机转移到了下一个s1状态,s1∈ Ps0a0。然后再执行一个动作a1,就转移到了s2,接下来再执行a2…,我们可以用下面的图表示状态转移的过程。

如果回报r是根据状态s和动作a得到的,则MDP还可以表示成下图:

 

2.定义状态值函数(又称评价函数)如下:表示在此 S 状态下可以获得多少奖励值,表示了向前走一步,平均了所有可能的结果

3.bellman方程用于对v(s)进行递归分解,直观的讲是将此时的奖励和之后的奖励分为两部分,即即将得到的奖励和你在这个时间段之后会得到的奖励(加上折扣的)两个部分

bellman(贝尔曼)方程可以使用矩阵方式来表达:

4.定义policy,是一个在给定状态 S 下关于行为(action)的概率分布

 

强化学习注意

1.状态的提取方式有很多种,这里状态的定义完全由人为决定.

 

~  Q-learning基本介绍

1. Q一学习是强化学习的主要算法之一,是一种无模型的学习方法,它提供智能系统在马尔可夫环境中利用经历的动作序列选择最优动作的一种学习能力。Q-学习基于的一个关键假设是智能体和环境的交互可看作为一个Markov决策过程(MDP),即智能体当前所处的状态和所选择的动作,决定一个固定的状态转移概率分布、下一个状态、并得到一个即时回报。Q-学习的目标是寻找一个策略可以最大化将来获得的报酬。

 Q-Learning是一项无模型的增强学习技术,它可以在MDP问题中寻找一个最优的动作选择策略。它通过一个动作-价值函数来进行学习,并且最终能够根据当前状态及最优策略给出期望的动作。它的一个优点就是它不需要知道某个环境的模型也可以对动作进行期望值比较,这就是为什么它被称作无模型的。

Q--learning中,每个Q(s,a)对应一个相应的Q值,在学习过程中根据Q值,选择动作。Q值的定义是如果执行当前相关的动作并且按照某一个策略执行下去,将得到的回报的总和。最优Q值可表示为Q+,其定义是执行相关的动作并按照最优策略执行下去,将得到的回报的总和,其定义如下:

image

 其中:s表示状态集,A表示动作集,T(s,a,s’)表示在状态s下执行动作a,转换到状态s’的概率,r(s,a)表示在状态s下执行动作a将得到的回报,γ表示折扣因子,决定时间的远近对回报的影响程度。

智能体的每一次学习过程可以看作是从一个随机状态开始,采用一个策略来选择动作,如ε贪婪策略或Boltzamann分布策略。采用随机策略是为了保证智能体能够搜索所有可能的动作,对每个Q(s,a)进行更新。智能体在执行完所选的动作后,观察新的状态和回报,然后根据新状态的最大Q值和回报来更新上一个状态和动作的Q值。智能体将不断根据新的状态选择动作,直至到达一个终止状态。下面给出Q—learning算法的描述:

preview

每次更新我们都用到了 Q 现实和 Q 估计, 而且 Q-learning 的迷人之处就是 在 Q(s1, a2) 现实 中, 也包含了一个 Q(s2) 的最大估计值, 将对下一步的衰减的最大估计和当前所得到的奖励当成这一步的现实, 很奇妙吧. 最后我们来说说这套算法中一些参数的意义. ε greedy 是用在决策上的一种策略, 比如 ε= 0.9 时, 就说明有90% 的情况我会按照 Q 表的最优值选择行为, 10% 的时间使用随机选行为. α是学习率, 来决定这次的误差有多少是要被学习的, α是一个小于1 的数. γ是对未来 reward 的衰减值. 我们可以这样想象.

Q-learning 是一个 off-policy 的算法, 因为里面的 max action 让 Q table 的更新可以不基于正在经历的经验(可以是现在学习着很久以前的经验,甚至是学习他人的经验).

On-policy 与 off-policy 本质区别在于:更新Q值时所使用的方法是沿用既定的策略(on-policy)还是使用新策略(off-policy)

image

Sarsa算法是on-policy的。也就是说,Sarsa算法在更新Q表的时候所遵循的策略与当前策略一致。这与q-learning不同, q-learning是off-policy的算法.

 

2.例子

让小鸟学习怎么飞是一个强化学习(reinforcement learning)的过程,强化学习中有状态(state)、动作(action)、奖赏(reward)这三个要素。智能体(Agent,在这里就是指我们聪明的小鸟)需要根据当前状态来采取动作,获得相应的奖赏之后,再去改进这些动作,使得下次再到相同状态时,智能体能做出更优的动作。

状态的选择 在这个问题中,状态的提取方式可以有很多种:比如说取整个游戏画面做图像处理啊,或是根据小鸟的高度和管子的距离啊。在这里选用的是跟SarvagyaVaish项目相同的状态提取方式,即取小鸟到下一根下侧管子的水平距离和垂直距离差作为小鸟的状态:

(图片来自Flappy Bird RL by SarvagyaVaish

记这个状态为(dx,dy)dx为水平距离,dy为垂直距离。

动作的选择 小鸟只有两种动作可选:1.向上飞一下,2.什么都不做。

奖赏的选择 这里采用的方式是:小鸟活着时,每一帧给予1的奖赏;若死亡,则给予-1000的奖赏;若成功经过一个水管,则给予50的奖赏。

关于Q

提到Q-learning,我们需要先了解Q的含义。

Q为动作效用函数(action-utility function),用于评价在特定状态下采取某个动作的优劣,可以将之理解为智能体(Agent,我们聪明的小鸟)的大脑。我们可以把Q当做是一张表。表中的每一行是一个状态(dx,dy),每一列(这个问题中共有两列)表示一个动作(飞与不飞)。

例如:

这张表一共 m \times n 行,表示 m \times n 个状态,每个状态所对应的动作都有一个效用值。训练之后的小鸟在某个位置处飞与不飞的决策就是通过这张表确定的。小鸟会先去根据当前所在位置查找到对应的行,然后再比较两列的值(飞与不飞)的大小,选择值较大的动作作为当前帧的动作。

训练

那么这个Q是怎么训练得来的呢,贴一段伪代码。

Initialize Q arbitrarily //随机初始化Q值
Repeat (for each episode): //每一次游戏,从小鸟出生到死亡是一个episode
    Initialize S //小鸟刚开始飞,S为初始位置的状态
    Repeat (for each step of episode):
        根据当前Q和位置S,使用一种策略,得到动作A //这个策略可以是ε-greedy等
        做了动作A,小鸟到达新的位置S',并获得奖励R //奖励可以是1,50或者-1000
        Q(S,A) ← (1-α)*Q(S,A) + α*[R + γ*maxQ(S',a)] //在Q中更新S
        S ← S'
    until S is terminal //即到小鸟死亡为止

其中有两个值得注意的地方

1.“根据当前Q和位置S,使用一种策略,得到动作A,这个策略可以是ε-greedy等。”

这里便是题主所疑惑的问题,如何在探索与经验之间平衡?假如我们的小鸟在训练过程中,每次都采取当前状态效用值最大的动作,那会不会有更好的选择一直没有被探索到?小鸟一直会被桎梏在以往的经验之中。而假若小鸟在这里每次随机选取一个动作,会不会因为探索了太多无用的状态而导致收敛缓慢?

于是就有人提出了ε-greedy方法,即每个状态有ε的概率进行探索(即随机选取飞或不飞),而剩下的1-ε的概率则进行开发(选取当前状态下效用值较大的那个动作)。ε一般取值较小,0.01即可。当然除了ε-greedy方法还有一些效果更好的方法,不过可能复杂很多。

以此也可以看出,Q-learning并非每次迭代都沿当前Q值最高的路径前进。

2. Q(S,A) \leftarrow (1-\alpha)*Q(S,A) + \alpha*[R + \gamma*max_aQ(S',a)]

这个就是Q-learning的训练公式了。其中α为学习速率(learning rate),γ为折扣因子(discount factor)。根据公式可以看出,学习速率α越大,保留之前训练的效果就越少。折扣因子γ越大,max_aQ(S', a)所起到的作用就越大。但max_aQ(S', a)指什么呢?

小鸟在对状态进行更新时,会考虑到眼前利益(R),和记忆中的利益(max_aQ(S', a))。

max_aQ(S', a)指的便是记忆中的利益。它是指小鸟记忆里下一个状态S'的动作中效用值的最大值。如果小鸟之前在下一个状态S'的某个动作上吃过甜头(选择了某个动作之后获得了50的奖赏),那么它就更希望提早地得知这个消息,以便下回在状态S可以通过选择正确的动作继续进入这个吃甜头的状态S'

可以看出,γ越大,小鸟就会越重视以往经验,越小,小鸟只重视眼前利益(R)。

根据上面的伪代码,就可以写出Q-learning的代码了。

成果

Ps,s=P[St+1=s|St=s]
P[St+1|St]=P[St+1|St,,S1]

posted on 2017-12-11 10:04  悟江居士  阅读(1102)  评论(0编辑  收藏  举报

导航