基本概念

强化学习(reinforcementlearning, RL)是近年来机器学习和智能控制领域的主要方法之一。强化学习关注的是智能体如何在环境中采取一系列行为,从而获得最大的累计回报
通过强化学习,一个智能体知道在什么状态下应该采取什么行为。RL是从环境状态到动作的映射学习,我们把这个映射称为策略(Policy)
强化学习和监督学习的区别

  • 增强学习是试错学习(Trail-and-error),由于没有直接的指导信息,智能体要以不断与环境进行交互,通过试错的方式来获得最佳策略。
  • 延迟回报,增强学习的指导信息很少,而且往往是在事后(最后一个状态)才给出的,这就导致了一个问题,就是获得正回报或者负回报以后,如何将回报分配给前面的状态。

马尔科夫决策过程

马尔科夫链是指,从一个状态到另一个状态的转换的随机过程。该过程要求具备“无记忆”的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。这种特定类型的“无记忆性”称作马尔可夫性质。
马尔可夫决策过程(Markov Decision Process,MDP)也具有马尔可夫性,与上面不同的是MDP考虑了动作,即系统下个状态不仅和当前的状态有关,也和当前采取的动作有关

马尔科夫决策过程推导

一个马尔科夫决策过程由一个四元组构成 M = ( S , A , P s a , R ) M=(S, A, P_{sa}, R) M=(S,A,Psa,R)

  • S S S:表示状态集(states), 有 s ∈ S s \in S sS, s i s_i si表示第 i i i步的状态
  • A A A: 表示一组动作(actions),有 a ∈ A a \in A aA a i a_i ai表示第 i i i步的动作
  • P s a P_sa Psa:表示状态转移概率。 P s a P_{sa} Psa表示的是在当前 s ∈ S s \in S sS状态下,经过 a ∈ A a \in A aA作用后,会转移到的其他状态的概率分布情况。比如,在状态 s s s下执行动作 a a a,转移到 s ′ s' s的概率可以表示为 p ( s ′ ∣ s , a ) p(s'|s,a) p(ss,a)
  • R R R: R是回报函数(reward function)。如果一组 ( s , a ) (s,a) (s,a)转移到了下个状态 s ′ s' s,那么回报函数可记为 r ( s ′ ∣ s , a ) r(s'|s, a) r(ss,a)。如果 ( s , a ) (s,a) (s,a)对应的下个状态 s ′ s' s是唯一的,那么回报函数也可以记为 r ( s , a ) r(s,a) r(s,a)

MDP的动态过程如下:某个智能体(agent)的初始状态为 s 0 s_0 s0,然后从 A A A 中挑选一个动作 a 0 a_0 a0执行,执行后,agent 按 P s a P_{sa} Psa概率随机转移到了下一个 s 1 s_1 s1状态, s 1 ∈ P s 0 a 0 s_1 \in P_{s_0a_0} s1Ps0a0。然后再执行一个动作 a 1 a_1 a1,就转移到了 s 2 s_2 s2,接下来再执行 a 2 a_2 a2…,我们可以用下面的图表示状态转移的过程。
此处输入图片的描述
如果回报r是根据状态s和动作a得到的,则MDP还可以表示成下图:
此处输入图片的描述

值函数

强化学习学到的是一个从环境状态到动作的映射(即行为策略),记为策略 π : S → A π: S→A π:SA。而强化学习往往又具有延迟回报的特点:因而需要定义值函数(value function,又叫效用函数)来表明当前状态下策略 π π π的长期影响。

V π ( s ) V^{\pi}(s) Vπ(s)表示策略 π \pi π下,状态 s s s的值函数。 r i r_i ri表示未来第 i i i步的立即回报,常见的值函数有一下三种

  • 未来有限h步的期望立即回报总和: V π ( s ) = E π [ ∑ i = 0 h r i ∣ s 0 = s ] V^{\pi}(s)=E_{\pi}[\sum_{i=0}^hr_i|s_0=s] Vπ(s)=Eπ[i=0hris0=s]
  • 采用策略π的情况下期望的平均回报: V π ( s ) = E π [ 1 h ∑ i = 0 h r i ∣ s 0 = s ] V^{\pi}(s)=E_{\pi}[\frac{1}{h}\sum_{i=0}^hr_i|s_0=s] Vπ(s)=Eπ[h1i=0hris0=s]
  • 值函数最常见的形式: V π ( s ) = E π [ ∑ i = 0 ∞ γ i r i ∣ s 0 = s ] V^{\pi}(s)=E_{\pi}[\sum_{i=0}^\infty \gamma ^ir_i|s_0=s] Vπ(s)=Eπ[i=0γiris0=s]

接下来我们只讨论第三种形式,式中 γ \gamma γ称为折合因子,表明了未来的回报相对于当前回报的重要程度。特别的, γ = 0 \gamma =0 γ=0时,相当于只考虑立即不考虑长期回报, γ = 1 \gamma = 1 γ=1时,将长期回报和立即回报看得同等重要。

现在将值函数的第三种形式展开,其中 r i r_i ri表示未来第 i i i步回报, s ′ s' s表示下一步状态,则有:

V π ( s ) = E π [ r 0 + γ r 1 + γ 2 r 2 + γ 3 r 3 + . . . ∣ s 0 = s ] V^{\pi}(s)=E_{\pi}[r_0+\gamma r_1 + \gamma^2r_2 + \gamma^3r_3+...|s_0=s] Vπ(s)=Eπ[r0+γr1+γ2r2+γ3r3+...s0=s]
= E π [ r 0 + γ E [ r 1 + γ r 2 + γ 2 r 3 + . . . ] ∣ s 0 = s ] =E_{\pi}[r_0+\gamma E[r_1 + \gamma r_2 + \gamma^2 r_3+...]|s_0=s] =Eπ[r0+γE[r1+γr2+γ2r3+...]s0=s]
= E π [ r ( s ′ ∣ s , a ) + γ V π ( s ′ ) ∣ s = s 0 ] =E_{\pi}[r(s'|s,a)+\gamma V^{\pi}(s')|s=s_0] =Eπ[r(ss,a)+γVπ(s)s=s0]

给定策略 π \pi π和初始状态 s s s,则动作 a = π ( s ) a=\pi(s) a=π(s),下个时刻将以概率 p ( s ′ ∣ s , a ) p(s'|s,a) p(ss,a)转向下个状态 s ′ s' s,那么上式的期望可以拆开,可以重写为:
V π ( s ) = ∑ s ′ ∈ S p ( s ′ ∣ s , a ) [ r ( s ′ ∣ s , a ) + γ V π ( s ′ ) ] V^{\pi}(s)=\sum_{s'\in S}p(s'|s,a)[r(s'|s,a)+\gamma V^{\pi}(s')] Vπ(s)=sSp(ss,a)[r(ss,a)+γVπ(s)]

上面提到的值函数称为状态值函数(state value function),需要注意的是, V π ( s ) V^{\pi}(s) Vπ(s)中, π \pi π和初始状态 s s s是我们给定的,而初始动作 a a a是由策略 π \pi π和状态 s s s决定的,即 a = π ( s ) a=\pi(s) a=π(s)

定义**动作值函数(action value function)**如下:

Q π ( s , a ) = E π [ ∑ i = 0 ∞ γ i r i ∣ s 0 = s , a 0 = a ] Q^{\pi}(s,a)=E_{\pi}[\sum_{i=0}^\infty \gamma ^ir_i|s_0=s,a_0=a] Qπ(s,a)=Eπ[i=0γiris0=s,a0=a]

给定当前状态 s s s和当前动作 a a a,在未来遵循策略 π \pi π,那么系统将以概率 p ( s ′ ∣ s , a ) p(s'|s,a) p(ss,a)转向下个状态 s ′ s' s,上式可以重写为:

Q π ( s , a ) = ∑ s ′ ∈ S p ( s ′ ∣ s , a ) [ r ( s ′ ∣ s , a ) + γ V π ( s ′ ) ] Q^{\pi}(s,a)=\sum_{s'\in S}p(s'|s,a)[r(s'|s,a)+\gamma V^{\pi}(s')] Qπ(s,a)=sSp(ss,a)[r(ss,a)+γVπ(s)]

Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a),不仅策略 π \pi π和初始状态 s s s是我们给定的,当前的动作a也是我们给定的,这是 Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a) V π ( a ) V^{\pi}(a) Vπ(a)的主要区别。

一个MDP的最优策略表示如下
π ∗ = a r g m a x π V π ( s ) , ( ⋁ s ) \pi^{\ast} = arg max_{\pi}V^{\pi}(s), (\bigvee s) π=argmaxπVπ(s),(s)

即我们寻找的是在任意初始条件 s s s下,能够最大化值函数的策略 π ∗ {\pi}^{\ast} π

Temporal-Difference learning

在介绍时间差分学习(TD learning)之前,先引入蒙特卡罗算法,称为constant-α MC,它的状态值函数更新公式如下:

V ( s t ) ← V ( s t ) + α [ R t − V ( s t ) ] V(s_t){\leftarrow}V(s_t)+\alpha[R_t-V(s_t)] V(st)V(st)+α[RtV(st)]

其中 R t R_t Rt是每个episode结束后获得的实际累积回报, α \alpha α是学习率,这个式子的直观的理解就是用实际累积回报 R t R_t Rt作为状态值函数 V ( s t ) V(s_t) V(st)的估计值。具体做法是对每个episode,考察实验中 s t s_t st的实际累积回报 R t R_t Rt和当前估计 V ( s t ) V(s_t) V(st)的偏差值,并用该偏差值乘以学习率来更新得到 V ( S t ) V(S_t) V(St)的新估值。

现在我们将公式修改如下,把 R t R_t Rt换成 r t + 1 + γ V ( s t + 1 ) r_{t+1}+\gamma V(s_t+1) rt+1+γV(st+1),就得到了TD(0)的状态函数更新公式:

V ( s t ) ← V ( s t ) + α [ r t + 1 + γ V ( s t + 1 ) − V ( s t ) ] V(s_t){\leftarrow}V(s_t)+\alpha[r_{t+1}+\gamma V(s_{t+1})-V(s_t)] V(st)V(st)+α[rt+1+γV(st+1)V(st)]

回忆下状态值函数的定义:

V π ( s ) = E π [ r ( s ′ ∣ s , a ) + γ V π ( s ′ ) ] V^{\pi}(s) = E_{\pi}[r(s'|s,a)+\gamma V^{\pi}(s')] Vπ(s)=Eπ[r(ss,a)+γVπ(s)]

利用真实的立即回报 r t + 1 r_{t+1} rt+1和下个状态的值函数 V ( s t + 1 ) V(s_{t+1}) V(st+1)来更新 V ( s t ) V(s_t) V(st),这种就方式就称为时间差分(temporal difference)。

Sarsa

强化学习算法可以分为在线策略(on-policy)和离线策略(off-policy)两类。sarsa算法属于on-policy算法。sarsa算法估计的是动作值函数而非状态值函数。也就是说,我们估计的是策略 π \pi π下,任意状态 s s s上所有可执行的动作 a a a的动作值函数 Q π ( s , a ) Q^{π}(s,a) Qπ(s,a)

sarsa的动作值函数更新公式如下:

Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + 1 + λ Q ( s t + 1 , a t + 1 ) − Q ( s t , a t ) ] Q(s_t,a_t)\leftarrow Q(s_t,a_t) + \alpha [r_{t+1}+\lambda Q(s_{t+1},a_{t+1}) - Q(s_t,a_t)] Q(st,at)Q(st,at)+α[rt+1+λQ(st+1,at+1)Q(st,at)]

由于动作值函数的每次更新都与 ( s t , a t , r t + 1 , s t + 1 , a t + 1 ) (s_t,a_t,r_{t+1},s_{t+1},a_{t+1}) (st,at,rt+1,st+1,at+1)相关,因此算法被命名为sarsa算法。sarsa算法的完整流程图如下:
此处输入图片的描述

Q-learning

在sarsa算法中,选择动作时遵循的策略和更新动作值函数时遵循的策略是相同的,即 ϵ − g r e e d y ϵ−greedy ϵgreedy的策略,而在接下来介绍的Q-learning中,动作值函数更新则不同于选取动作时遵循的策略,这种方式称为离线策略(Off-Policy)。Q-learning的动作值函数更新公式如下:

Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + 1 + λ m a x α Q ( s t + 1 , a t ) − Q ( s t , a t ) ] Q(s_t,a_t)\leftarrow Q(s_t,a_t) + \alpha [r_{t+1}+\lambda max_{\alpha}Q(s_{t+1},a_{t}) - Q(s_t,a_t)] Q(st,at)Q(st,at)+α[rt+1+λmaxαQ(st+1,at)Q(st,at)]

可以看到,Q-learning与sarsa算法最大的不同在于更新Q值的时候,直接使用了最大的Q(st+1,a)值——相当于采用了Q(st+1,a)值最大的动作,并且与当前执行的策略,即选取动作at时采用的策略无关
此处输入图片的描述

Q-learning和Sarsa算法对比
此处输入图片的描述
从算法来看, 这就是他们两最大的不同之处了. 因为 Sarsa 是说到做到型, 所以我们也叫他 on-policy, 在线学习, 学着自己在做的事情. 而 Q learning 是说到但并不一定做到, 所以它也叫作 Off-policy, 离线学习. 而因为有了 maxQ, Q-learning 也是一个特别勇敢的算法。

Deep Q Network

我们使用表格来存储每一个状态 state, 和在这个 state 每个行为 action 所拥有的 Q 值. 而当状态很多的时候,使用表格存储效率就很低了.DQN利用神经网络,将状态和动作当成神经网络的输入,然后经过神经网络分析后得到动作的 Q 值, 这样我们就没必要在表格中记录 Q 值, 而是直接使用神经网络生成 Q 值. 还有一种形式的是这样, 我们也能只输入状态值, 输出所有的动作值, 然后按照 Q learning的原则,直接选择拥有最大值的动作当做下一步要做的动作. 我们可以想象, 神经网络接受外部的信息, 相当于眼睛鼻子耳朵收集信息, 然后通过大脑加工输出每种动作的值, 最后通过强化学习的方式选择动作.

算法流程如下所示:
此处输入图片的描述

Policy Gradient

简介

强化学习是一个通过奖惩来学习正确行为的机制. 家族中有很多种不一样的成员, 有学习奖惩值, 根据自己认为的高价值选行为, 比如 Q learning, Deep Q Network, 也有不通过分析奖励值, 直接输出行为的方法, 这就是今天要说的 Policy Gradients 了. 甚至我们可以为 Policy Gradients 加上一个神经网络来输出预测的动作. 对比起以值为基础的方法, Policy Gradients 直接输出动作的最大好处就是, 它能在一个连续区间内挑选动作, 而基于值的, 比如 Q-learning, 它如果在无穷多的动作中计算价值, 从而选择行为, 这, 它可吃不消.

核心思想

举个简单的例子来说明policy gradient的核心思想。假设一个智能体有左右两个可选动作。假如这次的观测信息让神经网络选择了右边的行为, 右边的行为随之想要进行反向传递, 使右边的行为下次被多选一点, 这时, 获得了一个正的奖励。 告诉我们这是好行为, 那我们就在这次反向传递的时候加大力度, 让它下次被多选的幅度更猛烈! 这就是 Policy Gradients 的核心思想了。

算法流程

此处输入图片的描述

参考文献

  1. https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/5-1-policy-gradient-softmax1/
  2. http://www.cnblogs.com/jinxulin/tag/增强学习/
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐