本篇笔记对应的是公开课的第十五讲,主要内容包括 马尔可夫决策过程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,\gamma,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 ∑s′​Psa​(s′)=1,Psa​(s′)⩾0;
  • γ \gamma γ:折扣因子(discount factor),取值范围为 [ 0 , 1 ] , 用 来 平 衡 远 期 回 报 与 近 期 回 报 的 相 对 比 例 [0,1],用来平衡远期回报与近期回报的相对比例 [0,1],用来平衡远期回报与近期回报的相对比例;
  • R R R:回报函数 reward function,表示在状态s时获得的奖励,可正可负;

先来看一个简单的例子:

这是一个机器人挑战赛,阴影部分为障碍区,右上角为我们最终的目的地,对应的奖励 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}) Ps0​a0​​(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}) Ps1​a1​​(s2​)转移到状态 s 2 . . . . . . s_{2}...... s2​......,以此类推,当机器人处理一段时间之后,就会得到一状态转换序列 s 0 s 1 s 2 . . . . . . s_{0}s_{1}s_{2}...... s0​s1​s2​......,我们需要一个指标来评估本次选择的路径,即状态转换序列的好坏——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 total−payoff=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​)+γ∑s′​Psπ(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′)


举个例子,以上面的机器人挑战为例,策略如上图,如果初始状态为(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′),s′∈S都是未知的,不过我们可以通过解方程组的方法求得这些值,针对上图中的每个位置,都可以列出一个方程——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​γ∑s′​Psa​(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)=argmaxa​∑s′​Psa​(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​γ∑s′​Psa​(s′)V∗(s′);
  3. Then V(s)收敛于V*(s);

举个例子,某次迭代完成后各个位置的价值为:

对于(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 ∑s′​Psa​(s′)V∗(s′)=0.8∗0.75+0.1∗0.69+0.1∗0.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 ∑s′​Psa​(s′)V∗(s′)=0.8∗0.69+0.1∗0.75+0.1∗0.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):=argmaxa​∑s′​Psa​(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,{P_{sa}},\gamma,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)=argmaxa​∑s′​Psa​(s′)V(s′)
}

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

  1. 什么是强化学习(马尔可夫决策过程)

    文章目录 什么是强化学习(马尔可夫决策过程) 1. 强化学习(概述) 2. 马尔可夫决策过程 2.1 马尔可夫假设 2.2 马尔可夫决策过程 2.3 状态值函数(state-value functio ...

  2. 【githubshare】深度学习蘑菇书,覆盖了强化学习、马尔可夫决策过程、策略梯度、模仿学习

    GitHub 上的深度学习技术书籍:<蘑菇书 EasyRL>,覆盖了强化学习.马尔可夫决策过程.策略梯度.模仿学习等多个知识点. GitHub:github.com/datawhalech ...

  3. 【强化学习】《动手学强化学习》马尔可夫决策过程

    [强化学习]<动手学强化学习>马尔可夫决策过程 一.随机过程.马尔可夫过程.马尔可夫奖励过程 二.马尔可夫决策过程 三.蒙特卡洛方法 四.最优策略与贝尔曼最优方程 一.随机过程.马尔可夫过 ...

  4. 强化学习之——马尔可夫决策过程原理

    强化学习之--马尔可夫决策过程原理 1.1 MDP:策略与环境模型 我们以蛇棋为模型引入--蛇棋的关键问题在于:哪些因素决定了蛇棋最终获得分数的多少? 两个因素 选择什么样的手法投掷(也就是投3以内的 ...

  5. 强化学习笔记-马尔可夫决策过程

    前言 本文首先介绍了三个基本概念:马尔可夫性.马尔可夫过程和马尔可夫决策过程.接着引入贝尔曼方程,给出了值函数.状态行为函数.最优值函数.最优状态行为函数的推导公式以及它们之间的关系. 解释马尔可夫性 ...

  6. mdp框架_强化学习-MDP(马尔可夫决策过程)算法原理

    1. 前言 前面的强化学习基础知识介绍了强化学习中的一些基本元素和整体概念.今天讲解强化学习里面最最基础的MDP(马尔可夫决策过程). 2. MDP定义 MDP是当前强化学习理论推导的基石,通过这套框 ...

  7. 强化学习_02_DataWhale马尔可夫决策过程习题

    习题 1-1 为什么在马尔可夫奖励过程中需要有折扣因子(discount factor)? 马尔可夫过程是带环的,需要避免无穷的奖励 我们没办法完美模拟环境,对未来的预估不一定准确.折扣因子可以将这个 ...

  8. 【深度强化学习】马尔可夫决策过程(Markov Decision Process, MDP)

    1. Markov Process 我们一步一步来讲解 Markov Decision Process.按顺序,从 Markov Process 到 Markov Reward Process,再到 ...

  9. 重温强化学习之马尔可夫决策过程(MDPs)

最新文章

  1. ACS AAA Tacacs+
  2. C++类的基本概念演示Win32版
  3. 前端学习(2683):重读vue电商网站4之登录页面总结使用 iconfont 给输入框添加图标
  4. 北大光华教授孟涓涓:数据时代,从3个层面看个人隐私问题
  5. 提高Axure设计效率的10条建议 (转)
  6. 不想打造物联网的制造型企业不是一家合格的百年老店
  7. iOS分段选择器、旅行App、标度尺、对对碰小游戏、自定义相册等源码
  8. 高斯列元素消去法c语言,【大神在哪里】高斯-列主元消去法
  9. LeetCode 114 二叉树展开为链表
  10. linux 安装Paramiko模块安装和使用
  11. CSS:模拟实现QQ浏览器
  12. 【钉钉机器人 + 爬虫 + celery】定时发送微博热搜 + 定时发布财经新闻
  13. 向量对矩阵列空间的投影_向量(阵列)处理和超标量处理器
  14. 两独立样本非参数检验的Mann-whitneyU检验
  15. android 验证手机、邮箱格式
  16. 脱颖而出丨智谷星图入选腾讯区块链加速器全球32强!
  17. 2020美亚杯个人赛
  18. java计算机毕业设计高校实习实训管理系统源码+mysql数据库+系统+lw文档+部署
  19. 入驻华为云·云享专家了?!
  20. 协程(二):协程的应用

热门文章

  1. AtCoder Beginner Contest 260 A~F 题解
  2. 因为这两组数字,京东集团副总裁一夜未眠
  3. LoadLibrary python.plw error: 找不到指定的模块
  4. Linux系统init过程之 UpStart
  5. 工作网络安全运维兼顾JAVA开发
  6. HBuildX打包uniapp内存溢出解决放案
  7. 马上2023年了,还能做电商吗?奉劝大家别被骗了
  8. Blockly Demo
  9. ICS-43434 MIC MEMS MULTI-MODE OMNI -26DB
  10. pre-commit用法说明