从第一章中了解到强化学习中,智能体通过和环境进行交互获得信息。这个交互过程可以通过马尔可夫决策过程来表示,所以了解一下什么是MDP至关重要。
  不过在了解马尔可夫决策过程之前,先要一些预备知识,它们分别叫马尔可夫性质、马尔可夫过程/马尔可夫链、马尔可夫奖励过程。
  马尔可夫性质(Markov property):如果一个状态的下一个状态只取决于当前状态,跟它当前状态之前的状态都没有关系。换句话说:未来的转移跟过去是独立的,只取决于现在。
  给定一个状态的历史概念(其实就是过去状态的一个集合表示):

马尔可夫链(Markov Chain):一个状态转移链,从起始状态到结束状态。代表状态转换过程。
  状态转移有很多种表示形式:
  表示法1:图解法(图中包括状态之间发生转移的关系以及状态转移对应的回报值)

表示法2:状态转移矩阵法(矩阵维度等于状态,矩阵值为转移概率,以条件概率形式表示)

马尔可夫过程(Markov Process):其实书中并没有和马尔可夫链做太大的区分,对于RL来说,只需要明确它们都是表示存在状态转移就可以。但实际上还是有不同的,马尔科夫链更广泛一点,具体内容可以参考:马尔可夫链_百度百科 (baidu.com)
  举个马尔可夫链的例子:s3,s2,s3,s2,s1。从头到尾的执行过程就可以叫做马尔可夫过程。
  马尔可夫奖励过程(Markov reward process)=马尔可夫链+奖励函数
  那什么是奖励函数呢?在前面的概论中,了解到RL过程中状态转移会有奖励。这个奖励函数就是这个奖励的一种表示。之前是概念性的,现在用数学化的方式来表达一下。
  回报(return):当前状态及之后状态的总收益,一般把之后的状态打折扣。如下,回报常用G表示:

ps:上式中R就是奖励函数
  回报是针对每一个状态的,从上一章中了解到。价值函数是用来判断策略好坏的。那有没有办法去衡量一个状态的价值呢?方法当然有,其实就是价值函数的分类之一:状态价值函数(state-value function)。对于马尔可夫过程而言,状态价值函数定义为回报的期望:

这个的γ是折扣因子,原因之前介绍过了,认为未来的奖励对于当前状态的影响会小。 折扣因子的作用有如下几点:
  1)避免过程中有环路,出现无穷奖励
  2)用来表达不确定性
  3)表达出倾向于立刻的奖励
 
  马尔可夫决策过程:马尔科夫链+奖励+决策(动作)
  由上面的定义式知,马尔可夫决策也等于马尔可夫奖励+决策。所以决策和奖励二者之间存在这样的转化关系:
一个明显的问题就是:马尔可夫决策过程和马尔可夫过程/奖励过程有什么区别呢?区别就是决策的存在,体现为是否有具体动作的选择。用图来说明这个问题:
 注:上面右边这个图其实叫备份图,备份类似于自举之间的迭代关系,对某一个状态当前的价值和未来价值线性相关。对于备份有两种分类 同步备份:每一次迭代都会完全更新所有的状态。异步备份:通过某种方式,每一次迭代不需要更新所有的状态。
 
  左边这个图可以代表过程/奖励过程,右边代表决策过程。很直观的可以看出决策中增加了动作的选择(也就是决策Π)。普通的马尔可夫过程只是代表状态的转移,而马尔可夫决策过程中加上动作层。状态执行动作由策略决定,执行动作后变成的状态是其实一个概率事件(原因在于不同时间,即使相同状态执行相同动作的结果也不一定相同。情况在变)。
  马尔可夫决策中引入了策略,那如何定义策略的好坏呢?就需要引入另一种评价指标,价值函数。价值函数决定了策略的好坏。之前提过价值函数分两种:状态价值函数、动作状态价值函数。下面对这两种价值函数给出定义:
  ps:价值函数的引入已经反复提了很多次,但其实整体是一个逻辑有策略就有价值函数。不过本节会更倾向于数学化的表示
  状态价值函数(state-value function):
动作状态价值函数(action-value function,也叫Q函数):
从上面的数学式上看,都是与回报相关的期望。而且是策略确定
  当了解到这里后,会有两个很直接的问题:
  1)如果策略已知,它的两个价值函数怎么求?(以函数做类比,函数形式是什么样的?)
  2)价值函数求出来了,想要更好的策略。怎么利用求出来的价值函数更新更好的策略
  关于这两个问题,这章可能不能给出直接的答案。但后面会逐渐介绍解决方法的,敬请期待~
  想这样一个问题:对于两个状态,最关心的是什么?应该是两个状态是怎么转换的!能不能了解到两个状态转换的表达式,而且根据马尔可夫性质,这两个状态应该是时间上连续的。做一个假定(后面都是按照这个来):s是当前状态,s’是下一个状态。
  假设现在有了一个策略(其实总会有初始化的一个策略,只不过可能不好),关心的是两类价值函数。结合上面说的过程转换,那对于两类价值函数来说,状态转换表达式是啥呢?(hhh,终于绕过来了)
  能够解释上个问题的就是贝尔曼期望方程(Bellman expectation equation,有的时候会简称为贝尔曼方程),其实理解马尔可夫决策过程的关键就是明白贝尔曼方程的含义及推导过程,贝尔曼方程的作用是定义了当前状态和未来状态的关系。先给出贝尔曼方程的结果式,然后再来进行推导:
 
 对于贝尔曼方程的推导比较难以理解,直接啃书本可能会懵。这里推荐一个视频课,我觉得讲的很清楚(直接去看,不要多说,看了就会):
【强化学习】马尔科夫决策过程【白板推导系列】_哔哩哔哩_bilibili
  学的时候直接找这个就行,为了证明我会了,我也会手动推理一遍。并在旁边标上注释。可以作为学习参考:
 贝尔曼最优方程(Bellman optimality equation)推导如下:
 因为我们的目标是最优策略,所以贝尔曼最优方程就是从最优的角度出发。推导前后关系。
  现在,明确了贝尔曼方程。继续往下看:
 上式也是马尔可夫奖励函数的推导式,那现在来看看如何求解马尔可夫奖励函数的价值,有两种方式,分别对应了两种情况:
  1)解析解:对应状态量较小
使用的主要思想是把整体矩阵化,在此不进行推导了。只摆出结论:
  其中V代表价值,I代表单位矩阵,γ代表折扣因子,P代表状态转移矩阵,R代表每个状态的回报(因为其中有求逆的操作,复杂度较高,状态数过多代表矩阵维度过高,不易计算)
  2)迭代解:对应状态量较大
  迭代求解的方法有很多种,在此简单介绍下(后面会多次详细的使用这些方法):
    (1)蒙特卡洛法(MC):进行一次实验,产生一次轨迹。得到一次奖励。多次实验取平均,作为价值。伪代码如下:
(2)动态规划法(DP):迭代中关注状态变化,等到状态变化不大时,更新停止,再计算当前状态对应的价值。伪代码如下:
(3)时序差分法(TD): MC中需要完成一次完成的奖励采样才能得到结论,那如果存在一些限制,无法结束。能否通过相邻两个状态的变化就求解出想要的内容呢?这就是时序差分干的事情。在此给一个思想,后面会详细的介绍相关内容的。
  ps:动态规划法中涉及到一个概念:自举,这是一种思想,指根据其他估算值来更新估算值。重点是估算值,说明就不是准确的。
 
  下面介绍一些概念,从概念引出要介绍的内容:
  策略评估:计算状态价值函数的过程叫做策略评估。另外一种含义是预测当前采取的策略最终会产生多少的价值
 
  预测和控制(马尔可夫决策过程里面的两个关键问题):
  预测指给定一个马尔可夫决策过程<S,A,P,R,γ>及一个策略Π,去计算它的价值函数(两个输入一个输出)
  控制指我们去寻找一个最佳的策略,然后同时输出它的最佳价值函数和最佳策略(一个输入两个输出)
  比较两者区别,预测要策略已知,控制是策略未知。两者之间的存在递进关系,在RL中一般是先解决预测问题,然后再解决控制问题。
  马尔可夫决策过程控制:已有一个马尔可夫决策过程,确定最佳策略和最佳价值函数。
  最佳策略和最佳价值函数之间有什么关系吗?其实它们是一个东西,取到了最佳策略就对应的是最佳价值函数。一般求的话是先取得最佳的价值函数,然后问题转变成如何得到最佳策略,通过的方式就是Q函数极大化。
 啥意思呢?直白点儿说最优策略就是每步动作都是价值最大的,那就从所有的动作中选择一个最大的,以这个动作作为策略的一部分就OK了。当然这个只是概念上的一种方法,具体怎么实现呢?寻找最佳策略有个专业术语叫做:策略搜索。最简单的办法就是穷举,然后根据回报选一个最佳策略。但效率很低,常用的两种方法是策略迭代和价值迭代
  策略迭代:
  策略迭代由两部分组成:策略评估+策略改进

策略评估:已有一个策略Π,计算这个策略的价值函数V
  策略改进:得到价值函数V,通过奖励函数和状态转移计算Q函数。通过最大化Q生成新策略。
  价值迭代:
  价值迭代算法的精髓是不停地去迭代贝尔曼最优方程,到最后会趋向于最佳策略,
  策略迭代与值迭代都属于强化学习里面策略求解中的动态规划方法
  如果到这儿还不太清楚策略迭代和价值迭代也不用着急,具体的内容还在后面,我在网上找了一些相关的内容,可以看一看,提前学习一下下:
 
  策略迭代流程:
策略迭代的目的是寻找最优策略,方法是不断更新策略。更新策略的方法是不断选择状态价值最高的策略。让状态价值变高的方法是选择正确的状态。这是反向过程,首先根据状态计算状态的价值,让价值收敛就是选择出具有最高价值的状态/确定了新策略的评估函数。利用评估函数,确定每一个状态选择每一个动作的价值。选择价值最高的动作,将这个动作作为策略。这个策略比之前的有所改进。
 
  价值迭代流程:
价值迭代的目的是寻找最优策略和最大价值函数。进行价值函数更新时就直接选择最好的。策略迭代中利用的是收敛即可,这里是要尝试所有状态的所有动作,选择其中最大的价值。并将这个期望价值函数作为当前状态的价值函数,然后收敛就行。利用最有价值函数和状态转移概率计算出最优动作,这就是最优策略
参考: 策略迭代与值迭代的区别_dadadaplz的博客-CSDN博客_值迭代和策略迭代区别
  老规矩,课后题来!
2-1 折扣因子有三个作用:1)防止无穷奖励 2)倾向与当前奖励 3)表达不确定性
2-2 解析解求解的时候计算了矩阵的逆,矩阵的维度是状态数,状态数过多时,求解时间复杂度很高
2-3 贝尔曼方程的推导写了一遍,我觉得我掌握一种就够了(狗头保命)
2-4 决策过程比奖励过程多了一个决策的动作层
2-5 马尔可夫奖励比马尔可夫过程结构上多了每次状态转移的奖励
2-6 价值迭代和策略迭代,策略迭代只寻找最优策略,价值迭代寻找最优策略及最优价值函数

2-1 马尔可夫过程指状态转移过程,而且下一时刻状态只取决于当前状态,与当前状态前面的状态无关。马尔可夫决策过程指马尔可夫奖励过程+策略选择。 最重要的性质只有相邻状态间存在相关性
2-2 策略迭代和价值迭代
2-3 ?????
2-4
2-5 都是最优情况下,按照最优的唯一性,最佳价值函数和最优策略对应的应该是相同情况
2-6 当n越来越大时,方差应该是变大的。这点类比于MC和TD的关系,MC相当于n趋近于无穷,MC的方差更大。类似MC的期望更小,n越大,期望也会越小
 
  学完MDP这一章,我们明确了要寻找最佳策略,给了策略迭代和价值迭代的方法。本文介绍了思想,但是它们具体是怎么实现的呢?且听下回分说。
 
因作者水平有限,如果错误之处,请在下方评论区指正,谢谢!