本节为吴恩达教授机器学习课程笔记最后一部分,增强学习和自适应控制,主要包括:马尔可夫决策过程的形式化描述,值迭代和策略迭代两种求解方法以及马尔可夫模型极大似然参数学习方法。

  在有监督学习中,学习算法尽量根据训练集来使得输出模仿标签数据,这种情况下,标签给出了每一个输入x的明确的正确答案。然而在很多序列决策制定以及自适应控制问题中,对于算法的这种明确的监督数据是难以获得的。比如如果我们制造了一个四条腿的机器人并且想要编程使其能够走路,那么初始化时我们并不知道能使机器人走路的正确的动作,所以也就不知道该如何去给算法提供一个可以模仿的监督数据。
  在增强学习框架中,我们仅仅提供给算法一个激励函数,来指出智能体的好行为和坏行为。比如四足机器人的走路问题中,激励函数会在机器人向前移动时给出奖励,并在后退或者跌倒时给出惩罚。这样一来,学习算法的工作就是如何选择下一步的动作来获得最多的奖励。
  增强学习的思路已经在包括包括无人直升机的自主飞行、机器人腿部运动,手机网络路由,营销策筛选,高效网页索引等多个方面取得成功,我们对增强学习的讨论将从马尔可夫决策过程(Markov decision process, MDP)开始,它为增强学习提供了一种形式化的定义。

1. 马尔可夫决策过程-MDP

  一个马尔可夫决策过程是一个这样的元组(S,A,{Psa},γ,R)(S,A,\{P_{sa}\},\gamma,R)(S,A,{Psa​},γ,R),其中:

  • SSS是状态的集合,例如在直升机自主飞行的例子中,SSS就可能是直升机所有可能的所在位置与飞行方向
  • AAA是动作的集合,例如直升机可能选择的飞行方向
  • PsaP_{sa}Psa​是状态转移概率,对于每一个s∈Ss \in Ss∈S和a∈Aa \in Aa∈A,PsaP_{sa}Psa​分布在状态空间,它给出了在状态sss下执行动作aaa转换称其他状态的分布
  • γ∈[0,1]\gamma \in [0,1]γ∈[0,1]称为惩罚因子
  • R:S×A↦RR: S\times A \mapsto RR:S×A↦R称为奖励函数,奖励函数也可以写为状态SSS的函数,这种情况下有R:S↦RR:S\mapsto RR:S↦R

  马尔科夫决策的过程如下:初始状态s0s_0s0​,并且选择一个动作a0∈Aa_0 \in Aa0​∈A,这样状态会发生转换变为s1,s1∼Ps0a0s_1,s_1 \sim P_{s_0a_0}s1​,s1​∼Ps0​a0​​。然后我们选择另一个动作a1a_1a1​,状态再次发生转换,变为s2∼Ps1a1s_2 \sim P_{s_1a_1}s2​∼Ps1​a1​​,然后选择另一个状态a2a_2a2​,我们可以将这个过程描述为:

  观测到带有动作a0,a1,...a_0,a_1,...a0​,a1​,...的状态序列s0,s1,...s_0,s_1,...s0​,s1​,...之后,全部的奖励由下式给出:

  当我们把奖励函数只写为状态的函数时上式变为:

  而且在大多数情况,我们使用更为简单的状态奖励函数R(s)R(s)R(s)与使用一般的状态-动作奖励函数R(s,a)R(s,a)R(s,a)的效果并无差别。
  增强学习的目标是在一个序列上选择动作来最大化奖励的期望值即下式:

  在时间点t奖励前要乘上乘法因子γt\gamma^tγt,因此,为了最大化这个期望,我们需尽可能积累符号为正的奖励且延缓符号为负的奖励的出现。
  一种可行的策略是使用任意一个可以把状态映射到动作的函数π\piπ。描述为如果我们处在状态sss,采取动作a=π(s)a=\pi(s)a=π(s)就称我们在执行策略π\piπ,根据下式针对策略π\piπ定义一个值函数:

  Vπ(s)V^{\pi}(s)Vπ(s)是初始状态为sss并且根据策略π\piπ执行动作的奖励函数的期望总和。
  给定一个固定的策略π\piπ,它的值函数VπV^{\pi}Vπ满足贝尔曼方程:

  也就是说,从状态sss开始奖励函数的期望和VπV^{\pi}Vπ由两部分组成,一部分是当前奖励R(s)R(s)R(s),第二部分是将来的期望奖励和,更为具体地,第二部分中的求和计算中可以视为Es′∼Psπ(a)[Vπ(s′)]E_{s'\sim P_{s\pi(a)}}[V^{\pi}(s')]Es′∼Psπ(a)​​[Vπ(s′)],也就是状态s′s's′的奖励函数,其中s′s's′服从分布Psπ(s)P_{s\pi(s)}Psπ(s)​,即从状态s采取动作π(s)\pi(s)π(s)后转换的状态s′s's′。
  贝尔曼方程给出了VπV^{\pi}Vπ的高效计算方式,具体来看在一个有限状态MDP中(∣S∣<∞|S| < \infty∣S∣<∞),我们可对每一个状态写出这样一个求解VπV^{\pi}Vπ的方程。这就得到了一系列线性方程,包含∣S∣|S|∣S∣个方程和∣S∣|S|∣S∣个变量。
  定义一个最优值函数:

  对于最优值函数也有贝尔曼方程:

  第一部分和之前一样也是当前的奖励,第二部分是遍采所有动作后得到的最大奖励。
  同样地定义一个策略π∗:S↦A\pi^*:S \mapsto Aπ∗:S↦A如下:

  并且对于所有的状态sss和策略π\piπ,都有:

  注意到这里π∗\pi^*π∗是对于所有状态的一个最优选择,也就是说,无论我们是从状态sss开始还是从其他的状态开始,π∗\pi^*π∗是不变的。

2.值迭代和策略迭代

  这是两种用于求解有限状态马尔可夫决策过程的两种高效算法,现在前提是有限动作和有限状态,即∣S∣<∞,∣A∣<∞|S|<\infty,|A|<\infty∣S∣<∞,∣A∣<∞。下面看第一个算法值迭代:

  有两种方式来对算法内循环的值进行更新。第一种方式,首先计算每一个状态sss对应的V(s)V(s)V(s),然后用新的值覆盖旧的值,这个过程叫做同步更新,这样算法就可以看作为一个“Bellamn backup operator”,其接受当前值函数估计的值为输入,然后将其映射为一个新的估计值(当然也可以异步更新)。
  无论是同步还是异步更新,值迭代总会将VVV向V∗V^*V∗收敛,找到V∗V^*V∗之后,就可以找到最优的策略。
  还有一种方式叫做策略迭代算法,过程如下:

  算法内循环不断为当前的策略计算值,然后选择值最大的策略,在一定次数的迭代之后,VVV会收敛到V∗V^*V∗,π\piπ会收敛到π∗\pi^*π∗。
  值迭代和策略迭代都是求解MDPs的标准算法,两种算法同样高效。对于小型的MDPs策略迭代更快收敛,但是对于状态空间很大的MDPs策略迭代计算代价过大,值迭代就可以用在这里,所以实际中,值迭代要比策略迭代更常用。

3.马尔可夫决策过程模型

  我们上面的讨论都是基于状态转换概率和奖励已知的情况,但是在大多数实际问题中,状态转换概率和奖励都不会明确获取,而是需要从数据中进行估计。(通常情况下,S,A,γS,A,\gammaS,A,γ都是已知的)
  例如,倒立摆问题中,MDP如下:

  si(j)s_i^{(j)}si(j)​是在t时间实验j的状态,ai(j)a_i^{(j)}ai(j)​是对应状态采取的动作。实际文中,每个实验都会进行到MDP停止或者到某个大但是有限的次数。
  给定包含一些列实验的MDP可以推导出状态转换概率的极大似然估计:

  如果出现"0/0"的情况,那我们直接赋值为1/∣S∣1/|S|1/∣S∣。
  注意,如果我们在MDP中观测到更多的实验,有一种高效的方式来对我们估计的状态转换概率及逆行更新,具体地,我们保持上卖弄式子中的分子分母不变,再次基础上观测到更多的实验,那么我们可以不断的积累奇数值,计算这些累计值的比值从而给出对PsaP_{sa}Psa​的估计。
  同样的情况下如果RRR是未知的,那么我们也可以用所有观测到的状态的建了个i的平均值来代替R(s)R(s)R(s)。
  构建了MDP的模型之后,我们可以根据估计的状态转换概率和奖励函数,使用值迭代或者策略迭代来求解MDP,把模型参数学习和MDP值迭代求解放到一起,就得到了下面这个用于状态转换概率未知情况的MDP的学习算法:

  注意到对于这个特定的算法,有一个小的优化可以加快其运行速度,即算法内循环部分我们应用止跌大的步骤,如果值迭代的初始状态为V=0V=0V=0,我们就可以得到一个更好的初始状态,算法会收敛地更快。
  MDP最优解求解问题是强化学习的目标,常见的解法有动态规划解法,蒙塔卡洛方法等等,之后遇到再进行学习。


欢迎扫描二维码关注微信公众号 深度学习与数学   [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]

机器学习课程笔记【十四】- 增强学习和自适应控制控制论相关推荐

  1. 【李宏毅机器学习课程笔记】深度强化学习(五)—— Sparse Reward

    文章目录 Introduction Reward Shaping Curiosity Curriculum Learning Hierarchical Reinforcement Learning I ...

  2. 吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进

    吴恩达<机器学习>学习笔记十四--应用机器学习的建议实现一个机器学习模型的改进 一.任务介绍 二.代码实现 1.准备数据 2.代价函数 3.梯度计算 4.带有正则化的代价函数和梯度计算 5 ...

  3. 吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究

    吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究 吴恩达深度学习课程笔记(四):卷积神经网络2 实例探究 2.1 为什么要进行实例探究 2.2 经典网络 LeNet-5 AlexNet VGG- ...

  4. 视觉SLAM十四讲学习笔记-第六讲-非线性优化的非线性最小二乘问题

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  5. 视觉SLAM十四讲学习笔记-第二讲-初识SLAM

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 "定位"和"建图",可以看成感知的"内外之分". ...

  6. 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(十四)(卷积神经网络))

    [神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(十四)(卷积神经网络)) 14 卷积神经网络 14.1 深度学习基础 14.1.1 深度学习的基本思想 14.1.2 深度学习三 ...

  7. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-三角测量和实践

     专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第 ...

  8. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵

    专栏系列文章如下:  专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLA ...

  9. 视觉SLAM十四讲学习笔记-第六讲学习笔记总结(1)---非线性优化原理

    第六讲学习笔记如下: 视觉SLAM十四讲学习笔记-第六讲-非线性优化的状态估计问题_goldqiu的博客-CSDN博客 ​​​​​​视觉SLAM十四讲学习笔记-第六讲-非线性优化的非线性最小二乘问题_ ...

  10. 视觉SLAM十四讲学习笔记-第四讲---第五讲学习笔记总结---李群和李代数、相机

    第四讲---第五讲学习笔记如下: 视觉SLAM十四讲学习笔记-第四讲-李群与李代数基础和定义.指数和对数映射_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第四讲-李代数求导与扰动模 ...

最新文章

  1. 程序员的自我修养--链接、装载与库笔记:Windows下的动态链接
  2. python使用matplotlib可视化、移除可视化图像坐标轴的刻度线和标签( remove the default axis ticks and labels)
  3. node2vec python_node2vec应用记录
  4. 网络推广外包——网络推广外包指出新站上线前一定要做好自我检测
  5. linux内存利用率多少合适,如何理解linux服务器中的内存使用率和平均负载
  6. android poi读写,Android-android中怎样使用poi
  7. 在编写mini2440 helloworld驱动遇到的问题
  8. python异步线程算法应用_Python多线程----线程池以及线程实现异步任务
  9. C++_Hash容器总结
  10. MkDocs安装、生成文档、风格配置、插件安装
  11. python无法在终端运行程序_pycharm的Python console不能调试当前程序的解决方案
  12. 职场技巧:高效实用的四象限法则
  13. 2020年过去了,我很怀念它
  14. 【数据结构】之排序算法综合篇
  15. 容灾是什么意思?容灾基础知识介绍
  16. springboot毕业设计 基于springboot医院预约挂号系统毕业设计设计与实现参考
  17. 8道C语言笔试题及答案(2022发布)
  18. 【Python学习教程】Python变量类型和运算符
  19. Conhash 和 Maglev hash对比
  20. 网站攻击的常见形式及应对方法

热门文章

  1. 解决pre-commit hook failed (add --no-verify to bypass)的问题
  2. 元组 与 字典
  3. 201671010129 2016—2017—2 《Java程序设计》Java总结
  4. T-SQL查询进阶—理解SQL Server中的锁
  5. pushd popd
  6. etc profile 的使用
  7. Cesium中的常用坐标及转换
  8. 04. 替换空格(C++版本)
  9. 每天一道剑指offer-包含min函数的栈
  10. mysql 主从库_MySQL数据库之mysql 主库有数据通过锁库做主从