《强化学习与最优控制》学习笔记(一):确定性动态规划和随机性动态规划

写在前面的

这本书的作者是Dimitri Panteli Bertsekas教授,1942年出生于希腊雅典,美国工程院院士,麻省理工大学电子工程及计算机科学教授。Bertsekas教授因其在算法优化与控制方面以及应用概率论方面编写了多达16本专著而闻名于世。他也是CiteSeer搜索引擎学术数据库中被引用率最高的100位计算机科学作者之一。Bertsekas教授还是Athena Scientific出版社的联合创始人。

我们知道,动态规划和最优化控制可以解决大型的多阶段决策问题,本书关注的重点是在计算资源有限的情况下,如何获得获得近似解。并且要求找到的近似解达到一定的性能需求。而这类方法通常被统称为强化学习,有时也会被叫做近似动态规划或神经动态规划。 

本书的主要灵感来自于最优化控制领域和人工智能领域的结合。本文的主要目之一就是探索这两个领域之间的边界,并为这两个领域的工作人员搭建互联互通的桥梁。

本书的相关资源: 

官网 REINFORCEMENT LEARNING AND OPTIMAL CONTROL :BOOKS, VIDEOLECTURES, AND COURSE MATERIAL

这本书的官方网站有对应的PDF(只不过是草稿,只有前四章的内容,建议直接买书,不过目前只有英文版的),还有相关的课件和视频(需翻墙)。

不过作者也在B站发布了上课的视频:

德梅萃_博赛卡斯——Bilibili

在知乎上也有大佬分享他的学习笔记:

【强化学习与最优控制】笔记(一)确定性问题的动态规划

这位大佬是control的背景,对optimal control和经典的数学优化的各种programming比较熟悉,而本人最近开始学习这本书,之前有一些强化学习的基础,在做机器人的一些应用,觉得这本书挺有价值,所以在此记录一下学习的过程,督促自己自学,也希望和大家一起讨论学习。

本篇文章对应书中的 1.1. Deterministic Dynamic Programming 和 1.2. Stochastic Dynamic Programming.

确定性动态规划(Deterministic Dynamic Programming)

所有的动态规划(以下简称为DP,Dynamic Programming)问题都包括一个离散时间的动态系统,其具有以下形式:

其中k是时间索引,x_k是系统的状态,u_k是控制或决策变量,在时间k从集合U_k(x_k)中选择,这是因为u_k一般会具有某种约束,比如机器人在地图中可以上下左右地走,但最上方的时候无法选择向上的动作,f_k是描述系统动态特性的一个关于(x_k,u_k)的函数,N是表示这个系统有N个时间步,这里先讨论N是有限的情况。

这类问题还包含一个cost function的情况,也就是我们需要考虑成本,比如寻路问题中要求总的路径和最小,燃料问题中使用的燃料要少等等。在本书中用g_k(x_k,u_k)表示在时间k中花费的成本。很容易就知道,这种成本是随着时间增加的,所以在初始状态为x_0,控制序列为{​{u_0,...u_{N-1}}的总花销为:

其中g_N(x_N)是在终止状态下花费的成本。

在整个系统中,我们的目的当然就是在每个状态x_k中选择的u_k总花费最小,也就是J(x_0)最小,其中最优的符号一般用星号(*)表示:

所以DP问题可以用下图描述:

动态规划算法

最优原则(Principle of Optimality)

动态规划算法其实就是将待求解的问题分解为若干个子问题,按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。下面具体说一下:

定义{u^{*}_{0},...,u^{*}_{N-1}}为最优的控制序列,所以在初始状态x_0之后对应的状态都是最优的状态,即{x^{*}_{1},...,x^{*}_{N}}。我们考虑中间的一步,即在时间为k之后的情况:

显然这是原问题的一个子问题,这个子问题的最优解就是{u^{*}_{k},...,u^{*}_{N-1}} 。

最优原则就是说原问题的最优解的一个子序列({u^{*}_{k},...,u^{*}_{N-1}}就是从{u^{*}_{0},...,u^{*}_{N-1}}中拿出来的),就是子问题的最优解。注意这个子问题得是最终状态相同,就是所有子问题开头可以不一样,但是结尾必须和原问题一样,这种子问题英文上叫做Tail subproblem,如下图所示:

  文中有个例子比较直白,就是假设洛杉矶到芝加哥的最短路径会经过波士顿,那么波士顿到芝加哥的最短路径也会经过这里。

动态规划寻找最优控制序列

 通过上面的学习我们可以知道求解原问题的最优解可以分解成求解不同的Tail subproblem的最优解:

 其中:

也就是说,J_{k}^{*}(x_k)是从kN的一个最小的花费,从式子可以看到,如果我们要计算J_{k}^{*}(x_k),每次都要算从kN的总花销,为此用了一种归纳(Induction)的方法:

这样只要我们算好J_{k+1}^{*},只要加上g_k就可以得出J_{k}^{*}(x_k),其实在强化学习中也用到了这个思想,g_k是立即的花费,而J_{k+1}^{*}代表未来的花费,叫做cost-to-go funtion

在得到了J^{*}_{0},...,J^{*}_{N}之后,我们就可以利用这些funtion来求解最优控制序列了,其实就是找到一个{\color{Red}u_k},使得{\color{Red} J^{*}_{k}}最小

值空间近似

由上面的学习我们也知道,要求解一个最优序列我们需要计算J_{k}^{*}(x_k),这需要考虑所有的x_kk,就是这一部分:,这很花计算的时间。为此采用了一种近似的方法,将J^{*}_k

替换成\tilde{J}_{k},这个近似有很多种方式,例如我们知道神经网络可以拟合函数,那么这个\tilde{J}_{k}可以用神经网络来表示,直接输入x_ku_k就能直接输出结果,不需要考虑所有的x_kk

 本书用Q-factors来表示上图式子(1.9)的右半部分:

 即:

这个近似的Q-factors也可以用神经网络等方法来实现,然后在强化学习的方法中求解Q-factors的方法就叫做Q-learning。

相对于近似的\tilde{Q}_{k},自然就有最优的Q_{k}^{*},我们的目的就是使得它们越相近越好,这个后面再说,由上面式子自然得出:

 它也有归纳的形式,推导其实都很简单,可以私下推导加强理解:

随机动态规划(Stochastic Dynamic Programming)

其实随机性问题相比于确定性问题只是多了一个干扰的随机变量w_kw_k服从于一个概率的分布P_k(\cdot |x_k,u_k) 。这种系统的表示形式如下:

 其它的一些定义如图所示:

 和确定性问题有一个比较重要的区别是我们要优化的不再是控制序列{u_{0},...,u_{N-1}},而是策略(policies)

 其中,\mu_{k}是状态x_k到控制u_k的映射u_k =\mu_{k}(x_k),并且满足控制的约束。策略比控制序列更通用,在存在随机不确定性的情况下,它们可以降低成本,因为它们根据x_k(这通常包含一些知识)选择u_k。如果没有这些知识,控制器就不能适应某些意外状况(因为有个随机变量w_k),从而对成本造成不利影响。这是确定性和随机最优控制问题之间的一个根本区别。

还有一个区别就是用了期望来表示J,这也是因为存在了随机变量w_k,一般用Monte Carlo simulation获得:

其它部分就和确定性问题的差别就不是很大了,我就放一部分方便对比:

DP求解随机性问题:

随机性问题中的Q-Factors,可以看出只是多了一个随机变量w_k :

写在后面的

下一章地址:

《强化学习与最优控制》学习笔记(二):强化学习与最优控制的一些术语对比

  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向南而行灬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值