浅谈马尔可夫决策过程(一)

news/2024/5/19 1:53:01 标签: 机器学习, 人工智能, 强化学习

1.基本概念

    Markov Chain/Markov process:具有马尔可夫性质的随机过程。

    Markov Property用公式表示为: P(st+1 | st, st-1, …) = P(st+1 | st)。简单说就是当前时刻的状态仅仅和上一个时刻的状态有关。这个性质感觉更多的是从工程上考虑问题得出的,因为这样可以极大的简化计算,并且有一定的合理性。

    State Transition Matrix:状态转移概率矩阵定义了所有状态的转移概率。

                                                               

                                        

    很明显,转移矩阵中每一行的概率和为1。

    Markov Reward Process:Markov Chain + Reward。 在两个状态之间发生转移的时候,会得到一个奖励。

                                                                        

    Markov Decision Process: Markov Chain + + Action + Reward.两个相邻状态之间的转移受Action的影响,而且转移完成之后会得到一个reward 

                                                                          

    一个完整的MDP过程描述如下:

                                      

    MDP可以由一个四元组来表示<S,A,P,R>。其中S表示的是状态集合,A表示的是动作集合,P是概率转移矩阵,表示两个状态之间转移的概率,R为两个状态发生转移后的奖励。

    MDP动态特征:这里引入一个MDP动态特征的概念,通过这一概念将S,A,P,R四个变量联系起来来表示MDP的过程。

                                

    我们之前提到过,马儿可夫特性更多的是从工程的角度出发。从上面的式子也可以看出,我们仅仅使用当前的一个状态就可以预估下一个状态的收益,这样在实际应用中会极大的简化计算过程。而且根据经验,只使用当前状态进行预测评估并不会比使用过去历史所有的状态去评估差很多。

2.MDP中的策略

    强化学习的核心就是策略,而MDP的目标就是想要找到最优策略。那么什么是Policy?Policy可以简单的理解为对action如何选择。Policy用π\pi来表示,它分为两类

    1.确定性策略,表示输出的动作是确定的a = π\pi(s)

    表示当处在state s的时候我就选action a。比如红灯停,绿灯行,你的action在这个状态下是唯一的。

    2.随机性策略,

     表示当处在state s的时候 选择不同action的概率。比如开车到了一个3岔路,直行的概率是0.5,左转的概率是0.3,右转的概率是0.2。此时输出的是动作a的概率分布。

    确定性策略是随机性策略的一个特例。知道什么是策略以后,什么样的策略才是 好的?

                               

    比较简单的一个衡量方法就是看Reward,比如上图执行A1之后得到R2,R2越大可以认为这个A1也就是这个策略越好,但是这种只考虑R2的方法是有些问题的,因为有些时候Reward是有延时性的,你在S1选择了A1,产生了R2,但之后产生的收益R3,R4,甚至一直到Rt都是有可能受你在S1上这个A1影响的,所以我们引入了一个新的变量来衡量策略的好坏,这个变量就是回报。

                                                     

      我们现在展开来看下S3到S4这一个状态转移过程,我们假设每个State都有3个状态,每个action也有3个选择的可能,那么上面这一过程的展开图就如下所示:

                                       

    上面每一条路径就是一种状态转移的可能,因为我们每个state有3个状态,每个action有3种选择,所以实际一共可能有9种转移可能,我们可以将其记为G_{t}^{1} G_{t}^{2} G_{t}^{3} ....G_{t}^{9} .,我们会发现我们无法用单独的一个Gt来衡量一个策略的好坏,所以我们又引入了一个新的概念,价值函数,定义为:从 s 状态开始的在 π 策略下获得的所有路径回报的期望。

                                                               

3. 贝尔曼期望方程

    V^{\pi }(s)表示的是当到达某个状态s 之后,如果接下来一直按着策略π 来行动,能够获得的期望收益。

实际上还有另外一个价值函数,它引入了状态action,叫做动作状态价值函数。它表示的是到达某个状态S之后,如果采取行动a,接下来再按照策略π来行动,能够获得的期望收益。

                                                            

    这两种价值函数之间有什么关系呢?

    3.1 state->action的关系

                                                        

    上图中,空心较大圆圈表示状态,黑色实心小圆表示的是动作本身,连接状态和动作的线条仅仅把该状态以及该状态下可以采取的行为关联起来。

    从当前state s按照策略π选取一个action a会产生一个动作价值函数q^{\pi }(s,a),\pi(a|s)表示选择每个action的概率,从上图的关系也可以看出来V^{\pi }(s)就是q^{\pi }(s,a),\pi(a|s)的加权求和。

                                                                      

    两者之间还有一层显而易见的关系V^{\pi }(s) \leq \underset{a}{max} {_{q}}^{\pi }(s|a)

    3.2 action->state的关系

                                                                              

    从上图可以看出从q^{\pi }(s,a)V^{\pi }(s^{'})的回报有两部分,一部分是在State s采取action a 离开s 之后的reward r,我们可以把他看做是采用action a 离开state s之后的及时回报,另一部分就是折扣因子\gamma乘以V^{\pi }(s^{'})的长期回报。这也符合我们上面对于回报的定义。在加上从state s采取action a到达 state s^{'} 的状态转移概率为P(s^{'} | s,a),我们可以得出二者的关系如下:

                                                       

    现在我们已经得出了如下关系公式:

                                                     

    我们可以用q^{\pi }(s,a)替换V^{\pi }(s)中的q^{\pi }(s,a),也可以用V^{\pi }(s)替换q^{\pi }(s,a)中的V^{\pi }(s^{'}),由此有得出下面的公式:

                                    

   我们可以用下面两个关系图来加深理解:

                            

              

    这两个公式就是贝尔曼期望方程。

4.贝尔曼最优方程

   上一小节中,主要介绍了价值函数和状态价值函数之间的关系,并推导出了两个Bellman 期望方程。注意,强化学习的目的就是找到最优的π,算法中可以优化的也只有π。我们把V^{\pi }(s)值最大的价值函数称为最优价值函数。

                                                             

    这个值函数得到的策略就是最佳策略:

                                                

    最优策略可能存在多个。因为两个不同的action可能对应的收益是一样的。

    由上面2个式子我们可以得到:

                                                 

    同时需要注意的是,V ∗(s) 和V π∗(s) 看上去是一模一样的,实际上它们分别属于不同的意义。最优价值函数V ∗(s) 隐去了策略和π 没有关系,它仅仅是一个函数。而V π∗(s) 是一个普通的价值函数,它表示的是由最优的策略π 得出的价值函数。

    我们前面讲到过讲到了V 函数是Q 函数的一个加权平均,他们之间的关系如下:

                                                      

    由于π∗ 是一个最优的策略,所以直觉上我们认为下面等式应该成立:

                                                   

    这个式子是成立,具体的推导过程就不在这展开了,我们可以用一个简单的反证法来证明,如果V π∗(s) < maxa Qπ∗(s, a) 那意味着平均值小于最大值,则说明π∗肯定还有提高的空间,则不是最优策略。必然存在一个πnew ̸= π∗ 使得πnew = max,这显然与π∗ 是最优策略的前提是矛盾的。

                                            

                                                   

    结合上面3个式子我们可以得出:

                                                        

    在加上q*的定义:

                                      

    二者结合,得出了最终的贝尔曼最优方程:                                                      

                                                           

                                                    

                                                              

                                               

    因为只有action是我们可以控制选择的,而且max也是选取价值函数最大的action。所以两个式子max的作用域稍有区别,结合上面两个回溯图可以更好的理解这两个公式。

    Bellman最优方程是非线性的,没有固定的解决方案,通过一些迭代方法来解决:价值迭代、策略迭代,后面的章节我们会一一展开讲解。


http://www.niftyadmin.cn/n/1567523.html

相关文章

Android的Usb设备的监听(Dev)外设端口的判定以及耳机的插拔

最近在公司用到外设&#xff0c;需要判断接入的外设的VendorId和ProductId&#xff0c;然后给大家说一下自己的学习成果把 &#xff0c;首先我门可以通过android.hardware.usb.action.USB_STATE监听自己的Usb连接的设备&#xff0c;只针对Usb设备。而想要监听外部设备的时候却需…

关于ScrollView嵌套GridView和ListView不能完全显示的问题

最近为公司做的一个Demo里面用到了ScrollView嵌套了GridView和ListView&#xff0c;然而在嵌套的时候我发现GridView和ListView都是不能完全显示&#xff0c;显示的基本上都是单行的数据&#xff0c;最后查找资料和翻阅文档看到原因是ListView和GridView的绘制过程中在ScrollVi…

Android事件传递(一View事件的传递)

首先我门先说一下View事件的传递的机制&#xff0c;首先我们先自定义一个类MyView继承自View 然后在MyView中复写父类的两个方法dispatchTouchEvent(MotionEvent event)和onTouchEvent(MotionEvent event)方法 然后在进行实验&#xff0c;我先说说我的实验的结果是 如果是继承…

Android事件传递(二ViewGroup事件的传递)

经过上一篇的实验&#xff0c;我门只是仅仅对View的事件的传递进行了分析&#xff0c;但是还有一个比较厉害的ViewGroup我们肯定是要说一下的&#xff0c;ViewGroup的二叉视图分析 我们能看到&#xff0c;一边是View一边是ViewGroup&#xff0c;而ViewGroup中又可以添加View和V…

ListView设置条目显示四种方案(listView的优化)

Listview是安卓中比不可少的一道风景&#xff0c;但是我用到listView的时候知道ListView容易造成内存的溢出&#xff0c;如果条目很少的话 &#xff0c;我们一般的是直接使用&#xff0c;但是对于现在大量的ListView的显示&#xff0c;造成内存的溢出会很常见。话不多说了&…

手机无线调试方法

是不是还在为了手机usb被占用而不能链接编译器而难过&#xff1f;是不是感觉无线调试遥不可及&#xff1f; 读完下面的几步 让你轻松掌握无线调试。 首先将你的手机连接到无线网将你的手机链接到电脑上Window 配置好adb Linux 安装好adb确认手机链接到无线网络需要和你的电脑在…

Android Q存储SD卡-Android29 存储外置SD卡

最近公司相机升级到AndroidQ 遇到无法存储SD卡&#xff0c;原来是Goole抛弃了原有的API(不是过时,是抛弃,导致之前的存储API不能用)查看Google API 进行了代码更换, 在在更换过程中遇到了比较多的坑&#xff0c;将部分关键代码记录下来&#xff0c;方便下次使用。 如果不使用外…

生成Image对象

Image对象在 拍照的时候在底层可以获取到&#xff0c;主要是拍照的时候用的ZSL拍照需要两次处理&#xff0c;当第一次拍照获取到Image之后然后设置用ImageWrite 的queueInputImage 方法进行降噪处理和曝光值处理&#xff0c;目前公司的需求是需要 第一次拍照的时候 就将一个Ima…