强化学习之马尔可夫决策过程—机器学习公开课第十五讲

本篇笔记对应的是公开课的第十五讲,主要内容包括 马尔可夫决策过程MDP(Markov Decision Process)、价值函数(Value Function)、价值迭代(Value Iteration)、策略迭代(Policy Iteration)。

不同于监督学习,强化学习不是一个一次性的决策过程,比如对于一个判断患者是否患有癌症的二分类监督问题,它就是一个一次性的决策过程;但在强化学习中你必须随着时间的推移一直采取行动,这使得很难学习这个算法,这就是所谓的信贷分配问题(Credit Assignment Problem),比如下一盘棋在第60步输了,前面有60步的决策过程,你不是很确定哪一步的移动是正确的,有可能仅仅是因为你在第23步的决策出错,而其他步都是完美的,因此信贷分配问题可以粗略定义为你是否得到积极或者消极的奖励,从而判断你是作对了还是做错了,指导你多做对事、少做错事。

一. 马尔可夫决策-MDP(Markov Decision Process)

强化学习问题对真实环境建模使用的是MDP-马氏决策的形式体系,MDP是一个五元组 < S , A , P , γ , R > <S,A,P,γ,R>

  • S S S:状态集,比如无人机飞行时的位置;
  • A A A:动作集,所有可能的运动方向;
  • P P P:状态转换概率分布, P s a ( s ′ ) P_{sa}(s^{'}) Psa(s)表示在状态s采取a行动后,下一状态是状态 s ′ s^{'} s的概率,其满足 ∑ s ′ P s a ( s ′ ) = 1 , P s a ( s ′ ) ⩾ 0 \sum_{s^{'}}P_{sa}(s^{'})=1,P_{sa}(s^{'})\geqslant 0 sPsa(s)=1,Psa(s)0
  • γ \gamma γ:折扣因子(discount factor),取值范围为 [ 0 , 1 ] , 用 来 平 衡 远 期 回 报 与 近 期 回 报 的 相 对 比 例 [0,1],用来平衡远期回报与近期回报的相对比例 [0,1]
  • R R R:回报函数 reward function,表示在状态s时获得的奖励,可正可负;

先来看一个简单的例子:
强化学习之马尔可夫决策过程—机器学习公开课第十五讲_第1张图片

这是一个机器人挑战赛,阴影部分为障碍区,右上角为我们最终的目的地,对应的奖励 R ( ( 4 , 3 ) ) = + 1 R((4,3))=+1 R((4,3))=+1,而其下的方格对应的奖励为 R ( ( 4 , 2 ) ) = − 1 R((4,2))=-1 R((4,2))=1,其余方格对应的奖励为-0.02。如上,共有11个状态,动作集合 A = { N , S , E , W } A=\left \{ N,S,E,W \right \} A={N,S,E,W},分别表示四个运动方向,机器人动态模型为:如果你让机器人运动方向为N,那么实际上它只有80%的机会向N,10%向W,10%E;比如对于(3,1)这个位置,其状态转移概率为 P ( 3 , 1 ) N ( ( 3 , 2 ) ) = 0.8 , P ( 3 , 1 ) N ( ( 2 , 1 ) ) = 0.1 , P ( 3 , 1 ) N ( ( 4 , 1 ) ) = 0.1 , P ( 3 , 1 ) N ( ( 3 , 3 ) ) = 0 , . . . . . . P_{(3,1)N}((3,2))=0.8,P_{(3,1)N}((2,1))=0.1,P_{(3,1)N}((4,1))=0.1,P_{(3,1)N}((3,3))=0,...... P(3,1)N((3,2))=0.8,P(3,1)N((2,1))=0.1,P(3,1)N((4,1))=0.1,P(3,1)N((3,3))=0,......

下面来看看MDP到底是如何工作的?假设开始时在状态 s 0 s_{0} s0,然后通过动作 a 0 a_{0} a0以概率 P s 0 a 0 ( s 1 ) P_{s_{0}a_{0}}(s_{1}) Ps0a0(s1)转移到状态 s 1 s_{1} s1,再通过动作 a 1 a_{1} a1以概率 P s 1 a 1 ( s 2 ) P_{s_{1}a_{1}}(s_{2}) Ps1a1(s2)转移到状态 s 2 . . . . . . s_{2}...... s2......,以此类推,当机器人处理一段时间之后,就会得到一状态转换序列 s 0 s 1 s 2 . . . . . . s_{0}s_{1}s_{2}...... s0s1s2......,我们需要一个指标来评估本次选择的路径,即状态转换序列的好坏——total payoff,即序列的总回报:

t o t a l − p a y o f f = R ( s 0 ) + γ R ( s 1 ) + γ 2 R ( s 2 ) + ⋯ total-payoff = R(s_{0})+\gamma R(s_{1})+\gamma ^{2}R(s_{2})+\cdots totalpayoff=R(s0)+γR(s1)+γ2R(s2)+

其中 γ ∈ [ 0 , 1 ] \gamma \in [0,1] γ[0,1],引入 γ \gamma γ之后可以发现在time 0时刻获得的回报要比time 1时刻的重要一点,从金融学来看,立即的回报相对于延迟的回报能够获得更多的利益,同时也符合人类更看重眼前利益的特点。

二. 价值函数(Value Function)

那么最佳的策略是什么呢?就是让序列总回报最大的策略,即针对初始状态 s 0 s_{0} s0,选择一组动作集 ( a 0 , a 1 , a 2 , ⋯   ) (a_{0},a_{1},a_{2},\cdots) (a0,a1,a2,)来最大化 E [ R ( s 0 ) + γ R ( s 1 ) + γ 2 R ( s 2 ) + ⋯   ] E[ R(s_{0})+\gamma R(s_{1})+\gamma ^{2}R(s_{2})+\cdots] E[R(s0)+γR(s1)+γ2R(s2)+],最后我们得到的就是在什么状态下该做什么动作的建议。如何计算呢?我们先来定义一些东西:

对于任何策略 π \pi π,定义价值函数value function为初始状态为s,执行策略 π \pi π的期望tatal payoff,即:
V π ( s ) = E [ R ( s 0 ) + γ R ( s 1 ) + γ 2 R ( s 2 ) + ⋯ ∣ π , s = s 0 ] = E [ R ( s 0 ) + γ ( R ( s 1 ) + γ R ( s 2 ) + ⋯   ) ∣ π , s = s 0 ] = E [ R ( s 0 ) + γ V π ( s 1 ) ∣ π , s = s 0 ] V^{\pi}(s)=E[ R(s_{0})+\gamma R(s_{1})+\gamma ^{2}R(s_{2})+\cdots |\pi,s=s_{0}]=E[ R(s_{0})+\gamma (R(s_{1})+\gamma R(s_{2})+\cdots )|\pi,s=s_{0}]=E[ R(s_{0})+\gamma V^{\pi}(s_{1})|\pi,s=s_{0}] Vπ(s)=E[R(s0)+γR(s1)+γ2R(s2)+π,s=s0]=E[R(s0)+γ(R(s1)+γR(s2)+)π,s=s0]=E[R(s0)+γVπ(s1)π,s=s0]

继续整理,有 V π ( s ) = R ( s 0 ) + γ ∑ s ′ P s π ( s ) ( s ′ ) V π ( s ′ ) V^{\pi}(s)=R(s_{0})+\gamma \sum _{s^{'}}P_{s\pi(s)}(s^{'})V^{\pi}(s^{'}) Vπ(s)=R(s0)+γsPsπ(s)(s)Vπ(s),我们将这个方程称为Bellman’s Equation-贝尔曼方程,其中 P s a ( s ′ ) P_{sa}(s^{'}) Psa(s)为状态s时采取行动a到达状态 s ′ s^{'} s的概率, a = π ( s ) a=\pi(s) a=π(s),所以 P s π ( s ) ( s ′ ) = P s a ( s ′ ) P_{s\pi(s)}(s^{'})=P_{sa}(s^{'}) Psπ(s)(s)=Psa(s)

强化学习之马尔可夫决策过程—机器学习公开课第十五讲_第2张图片
举个例子,以上面的机器人挑战为例,策略如上图,如果初始状态为(3,1),那么 V π ( ( 3 , 1 ) ) = R ( ( 3 , 1 ) ) + γ [ 0.8 V π ( ( 3 , 2 ) ) + 0.1 V π ( ( 2 , 1 ) ) + 0.1 V π ( ( 4 , 1 ) ) ] V^{\pi}((3,1))=R((3,1))+\gamma [0.8V^{\pi}((3,2))+0.1V^{\pi}((2,1))+0.1V^{\pi}((4,1))] Vπ((3,1))=R((3,1))+γ[0.8Vπ((3,2))+0.1Vπ((2,1))+0.1Vπ((4,1))],这里的 V π ( s ′ ) , s ′ ∈ S V^{\pi}(s^{'}),s^{'}\in S Vπ(s),sS都是未知的,不过我们可以通过解方程组的方法求得这些值,针对上图中的每个位置,都可以列出一个方程——11个方程解11个参数。

Optimal Value Function——最佳的价值函数: V ∗ ( s ) = m a x π V π ( s ) V^{*}(s)=max_{\pi}V^{\pi}(s) V(s)=maxπVπ(s),利用贝尔曼方程进行整理,有 V ∗ ( s ) = R ( s ) + m a x a γ ∑ s ′ P s a ( s ′ ) V ∗ ( s ′ ) V^{*}(s)=R(s)+max_{a}\gamma \sum_{s^{'}}P_{sa}(s^{'})V^{*}(s^{'}) V(s)=R(s)+maxaγsPsa(s)V(s)

Optimal Policy——最佳策略: π ∗ ( s ) = a r g m a x a ∑ s ′ P s a ( s ′ ) V ∗ ( s ′ ) \pi ^{*}(s)=arg max_{a}\sum_{s^{'}}P_{sa}(s^{'})V^{*}(s^{'}) π(s)=argmaxasPsa(s)V(s)

但是我们不能穷尽所有可能的策略 π \pi π,这样计算量太大了。于是介绍下面的两个算法 值迭代(Value Iteration)和 策略迭代(Policy Iteration)。

三. 值迭代和策略迭代

1. 值迭代(Value Iteration)

算法描述:

  1. For ∀ s \forall s s,Initial V(s)=0;
  2. For every s,update V ( s ) = R ( s ) + m a x a γ ∑ s ′ P s a ( s ′ ) V ∗ ( s ′ ) V(s)=R(s)+max_{a}\gamma \sum_{s^{'}}P_{sa}(s^{'})V^{*}(s^{'}) V(s)=R(s)+maxaγsPsa(s)V(s)
  3. Then V(s)收敛于V*(s);

举个例子,某次迭代完成后各个位置的价值为:
强化学习之马尔可夫决策过程—机器学习公开课第十五讲_第3张图片

对于(3,1)这个位置,如果此时的动作为W,那么 ∑ s ′ P s a ( s ′ ) V ∗ ( s ′ ) = 0.8 ∗ 0.75 + 0.1 ∗ 0.69 + 0.1 ∗ 0.71 = 0.74 \sum_{s^{'}}P_{sa}(s^{'})V^{*}(s^{'})=0.8*0.75+0.1*0.69+0.1*0.71=0.74 sPsa(s)V(s)=0.80.75+0.10.69+0.10.71=0.74;如果此时的动作为N,那么 ∑ s ′ P s a ( s ′ ) V ∗ ( s ′ ) = 0.8 ∗ 0.69 + 0.1 ∗ 0.75 + 0.1 ∗ 0.49 = 0.676 \sum_{s^{'}}P_{sa}(s^{'})V^{*}(s^{'})=0.8*0.69+0.1*0.75+0.1*0.49=0.676 sPsa(s)V(s)=0.80.69+0.10.75+0.10.49=0.676,这也解释了为什么我们在该位置处做的决策是W而不是N。

2. 策略迭代(Policy Iteration)

算法描述:

  1. Initial π \pi π randomly;
  2. Repeat{
    Let V : = V π V:=V^{\pi} V:=Vπ(solve Bellman’s equation)
    Let π ( s ) : = a r g m a x a ∑ s ′ P s a ( s ′ ) V ( s ′ ) \pi(s):=argmax_{a}\sum_{s^{'}}P_{sa}(s^{'})V(s^{'}) π(s):=argmaxasPsa(s)V(s)}
  3. Then V收敛于V*, π \pi π收敛于 π ∗ \pi ^{*} π

如果MDP的状态数太多,我们通常倾向于使用值迭代,因为解方程组的代价太大。

3. 估计状态转移概率

如果 P s a P_{sa} Psa不知道怎么办?对于五元组 < S , A , P s a , γ , R > <S,A,Psa,γ,R>,S和A我们总是知道的, γ \gamma γ也是自己选择的,奖励函数有时知道有时不知道,对于状态转移概率我们从数据集中进行估计:
在这里插入图片描述

将值迭代和上面的估计方法结合起来,得到下面的算法描述:

Repeat
{
Take actions using π \pi π to get experience in MDP;
Update estimates of P s a P_{sa} Psa;
Solve Bellman of using value iteration to get V;
Update π ∗ ( s ) = a r g m a x a ∑ s ′ P s a ( s ′ ) V ( s ′ ) \pi^{*}(s)=argmax_{a}\sum_{s^{'}}P_{sa}(s^{'})V(s^{'}) π(s)=argmaxasPsa(s)V(s)
}

你可能感兴趣的:(强化学习,马尔可夫决策过程,价值函数,值迭代,策略迭代)