强化学习(一)—— 基本概念及马尔科夫决策过程(MDP)
1、策略与环境模型
强化学习是继监督学习和无监督学习之后的第三种机器学习方法。强化学习的整个过程如下图所示:

具体的过程可以分解为三个步骤:
1)根据当前的状态 $s_t$ 选择要执行的动作 $ a_t $。
2)根据当前的状态 $s_t $ 和动作 $ a_t$ 选择转移后的状态 $s_{t+1} $。
3)根据在当前状态 $s_t$ 采取动作 $a_t$ 给出对应的奖励 $ r_{t+1} $。
因此我们可以得到强化学习中三个重要的要素:环境的状态 $S$,个体的动作 $A$,环境的奖励 $R$。
通过不断的重复上述三个过程就可以得到一条状态—动作链,其表示如下:
$ {s_0, a_0, s_1, a_1, ......s_{t-1}, a_{t-1}, s_t} $
现在我们来具体看看是如何生成动作—状态链的:
1)从状态到动作
从状态到动作是有Agent 的策略 $\pi$ 决定的,从条件概率上来说当前的动作选择应该和之前的所有状态和动作都有关系,如下在时刻 $t$ 的动作应该是:
$ {a_t}^* = argmax_{a_{t, i}} p(a_{t, i}|{s_0, a_0, ..., s_t}) $
然而对于上面的式子计算复杂度太高了,引入马尔科夫理论,认为当前的动作选择之和当前的状态有关,于是上面的公式就变成了:
$ {a_t}^* = argmax_{a_{t, i}} p(a_{t, i}|s_t) $
个体的策略函数 $\pi$ 可以表示为:
$ \pi(a|s) = P(A_t=a | S_t=s)$
2)从状态到状态
在当前状态转移到下一状态时,我们同样假设下一状态之和当前状态以及当前动作相关,具体表达式如下:
$ P(S_{t+1} | S_t, a_t)$
2、值函数与贝尔曼公式
在强化学习中我们该如何评价我们每一步动作的好坏呢?这就需要值函数了。在执行每一个动作时都会有一个对应的奖赏,我们的目的就是要使得最终的加起来的奖赏最高。表达式如下:
$ max \sum\limits_{t=0}^n r_t $
当n无限大时,上链的式子是一个无穷数列,且无法收敛,因此我们也无法计算出最高的奖赏。针对这个问题引入了奖励衰减因子 $\gamma$,表达式变成:
$ max \sum\limits_{t=0}^n \gamma^t\, r_t $
根据上面的结果可以给出 $t$ 时刻的状态价值函数,状态价值函数是期望值。在下式中的$G_t$表示从状态$S_t$出发到终点一条完整的序列的回报值,从$S_t$通过随机性采样到终点会得到无数条随机的$G_t$,而我们要得到一个确定的状态价值函数,那就是对随机值取期望即可。
$ v_{\pi}(s) = \mathbb{E}_{\pi}(G_t|S_t=s ) = \mathbb{E}_{\pi}(r_{t+1} + \gamma r_{t+2} + \gamma^2r_{t+3}+...|S_t=s) $
上面的公式又可以称为贝尔曼公式。对状态价值函数使用代换消元法可以推导出状态价值函数 $ v_{\pi}(s)$ 的递推关系:
$ v_{\pi}(s) = \mathbb{E}_{\pi}(r_{t+1} + \gamma v_{\pi}(S_{t+1}) |S_t=s) $
根据上式可知在 $t$ 时刻的状态 $S_T$ 和 $t+1$ 时刻的状态 $S_{T+1}$ 是满足递推关系的。
除了上述的状态价值函数之外,还有一个状态-动作价值函数 $q_{\pi}(s,a)$,其表达式如下:
$ q_{\pi}(s,a) = \mathbb{E}_{\pi}(G_t|S_t=s, A_t=a) = \mathbb{E}_{\pi}(r_{t+1} + \gamma r_{t+2} + \gamma^2r_{t+3}+...|S_t=s,A_t=a) $
$ q_{\pi}(s,a) = \mathbb{E}_{\pi}(r_{t+1} + \gamma q_{\pi}(S_{t+1},A_{t+1}) | S_t=s, A_t=a) $
状态价值函数和状态-动作价值函数之间也存在递推关系,状态价值函数可以用状态-动作价值函数表示:
$v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)q_{\pi}(s,a)$
根据上面式子可知状态价值函数其实就是在该状态下基于策略 $\pi$ 得到的所有动作的状态-动作价值函数的期望。
反过来,状态-动作价值函数也可以用状态价值函数表示:
$q_{\pi}(s,a) = r_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{\pi}(s')$
将上面两个式子相结合又可以得到:
$ v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)(R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{\pi}(s'))$
$ q_{\pi}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^a\sum\limits_{a' \in A} \pi(a'|s')q_{\pi}(s',a')$
3、策略迭代与值迭代
解决强化学习的一个问题就是要寻找最优策略使得个体在与环境的交互过程中获得最高的奖赏。用 $\pi^*$ 来表示这个最优策略,一旦找到该最优策略,强化学习的问题就解决了。
首先提出强化学习的两个基本问题:
1)预测问题。给定强化学习的状态集$S$, 动作集 $A$ ,模型状态转化概率矩阵 $ P$,即时奖励 $R$,奖励衰减因子 $\gamma$,策略 $\pi$。求解该策略的状态价值函数 $v(\pi)$。
2)控制问题。也就是求解最优的价值函数和策略。只给定了强化学习的状态集$S$, 动作集 $A$ ,模型状态转化概率矩阵 $ P$,即时奖励 $R$,奖励衰减因子 $\gamma$。求解最优策略 $\pi^*$ 和最优状态价值函数 $v^*$。
现在来看看如何解决这些问题:
1)预测问题也称为策略评估。
其整体步骤如下:
首先给定策略,状态转移概率,回报和衰减因子,对状态集中的所有状态初始化状态价值。
然后从$t=0$时刻开始迭代:
假设在第 $t$ 轮迭代已经计算出所有的状态的状态价值,那么在 $t+1$轮就可以利用之前计算出的状态价值计算当前的状态价值,在已知状态转移概率的情况下,可以通过贝尔曼方程来实现:
$v_{t+1}(s) = \sum\limits_{a \in A} \pi(a|s)(r_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{t}(s'))$
因此策略评估的求解问题本质上迭代解法,而且用的是高斯-赛德尔迭代法。
2)控制问题的解决方案有两个:策略迭代和值迭代。这个两个方法都包含策略评估和策略改善两个步骤,具体的解决方案如下:
策略迭代的过程:
1)初始化策略 $\pi = \pi_0$,$t=0$时刻的状态集合中各状态的价值函数。
2)for 1 to l(策略更新迭代至收敛的步数):
3)for 1 to m(高斯-赛德尔迭代求解的步数):
4)根据下面的方程更新状态空间中状态的价值函数:
$v_{t+1}(s) = \max_{a \in A}(r_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{t}(s'))$
5)利用该状态价值函数计算出状态-动作价值函数 $q(s, a)$,然后找到更好的策略 $\pi^*$(备注:此时的状态价值函数是完全收敛的结果,求解方案和上面的策略评估是完全一样的)。
$\pi' = argmax_{a} q(s, a)$
6)重复2)到5),直至$\pi_{l+1} = \pi+l$,则得到最优策略 $\pi^* = \pi_l$。
策略迭代在每一个策略下都要得到收敛后的状态价值函数,然后根据该状态价值函数来更新策略(实际上是一个策略评估过程),因此收敛会比较慢。
值迭代的过程:
1)初始化策略 $\pi = \pi_0$,$t=0$时刻的状态集合中各状态的价值函数。
2)for 1 to l(策略更新迭代至收敛的步数):
3)for 1 to m(高斯-赛德尔迭代求解的步数):
4)根据下面的方程更新状态空间中状态的价值函数:
$v_{t+1}(s) = \max_{a \in A}(r_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{t}(s'))$
5)利用该状态价值函数计算出状态-动作价值函数 $q(s, a)$,然后找到更好的策略 $\pi^*$(备注:此时的状态价值函数是完全收敛的结果,求解方案和上面的策略评估是完全一样的)。
$\pi' = argmax_{a} q(s, a)$
6)重复2)到5),直至$\pi_{l+1} = \pi+l$,则得到最优策略 $\pi^* = \pi_l$。
值迭代和策略迭代唯一不同的是随着状态价值的迭代及时调整策略,也就是上面第5步时紧跟着第4步发生的,而不是等到第3步循环完,即状态价值函数收敛的情况下才更新策略。这种做法的收敛更快。
强化学习(一)—— 基本概念及马尔科夫决策过程(MDP)的更多相关文章
- 强化学习(二)马尔科夫决策过程(MDP)
在强化学习(一)模型基础中,我们讲到了强化学习模型的8个基本要素.但是仅凭这些要素还是无法使用强化学习来帮助我们解决问题的, 在讲到模型训练前,模型的简化也很重要,这一篇主要就是讲如何利用马尔科夫决策 ...
- 【转载】 强化学习(二)马尔科夫决策过程(MDP)
原文地址: https://www.cnblogs.com/pinard/p/9426283.html ------------------------------------------------ ...
- 【强化学习】MOVE37-Introduction(导论)/马尔科夫链/马尔科夫决策过程
写在前面的话:从今日起,我会边跟着硅谷大牛Siraj的MOVE 37系列课程学习Reinforcement Learning(强化学习算法),边更新这个系列.课程包含视频和文字,课堂笔记会按视频为单位 ...
- 强化学习 1 --- 马尔科夫决策过程详解(MDP)
强化学习 --- 马尔科夫决策过程(MDP) 1.强化学习介绍 强化学习任务通常使用马尔可夫决策过程(Markov Decision Process,简称MDP)来描述,具体而言:机器处在一个环境 ...
- 隐马尔科夫模型HMM学习最佳范例
谷歌路过这个专门介绍HMM及其相关算法的主页:http://rrurl.cn/vAgKhh 里面图文并茂动感十足,写得通俗易懂,可以说是介绍HMM很好的范例了.一个名为52nlp的博主(google ...
- PGM学习之七 MRF,马尔科夫随机场
之前自己做实验也用过MRF(Markov Random Filed,马尔科夫随机场),基本原理理解,但是很多细节的地方都不求甚解.恰好趁学习PGM的时间,整理一下在机器视觉与图像分析领域的MRF的相关 ...
- 自然语言处理(1)-HMM隐马尔科夫模型基础概念(一)
隐马尔科夫模型HMM 序言 文本序列标注是自然语言处理中非常重要的一环,我先接触到的是CRF(条件随机场模型)用于解决相关问题,因此希望能够对CRF有一个全面的理解,但是由于在学习过程中发现一个算法像 ...
- 隐马尔科夫模型(HMM)的概念
定义隐马尔科夫模型可以用一个三元组(π,A,B)来定义:π 表示初始状态概率的向量A =(aij)(隐藏状态的)转移矩阵 P(Xit|Xj(t-1)) t-1时刻是j而t时刻是i的概率B =(bij) ...
- 用hmmlearn学习隐马尔科夫模型HMM
在之前的HMM系列中,我们对隐马尔科夫模型HMM的原理以及三个问题的求解方法做了总结.本文我们就从实践的角度用Python的hmmlearn库来学习HMM的使用.关于hmmlearn的更多资料在官方文 ...
随机推荐
- js 正则表达式之环视结构
一.环视 1:环视不“占用”字符,只匹配字符所在的特定位置. 2:正则表达式是从左向右进行匹配的. 二.肯定顺序环视(?=....) 子表达式匹配当前位置的右侧字符 图中:红色表示当前位置,绿色表示正 ...
- javascript 里面 with 关键字
1.with的基本概念 with语句的作用是将代码的作用域设置到一个特定的作用域中,目的是为了简化多次编写访问同一对象的工作.基本语法如下: with (expression) statement 下 ...
- Android面试题总结(不定期更新、附答案)
1.Activity的启动模式? activity一共有4种启动模式:standard.singleTop singleTask .singleInstance standard:(标准模式)默认的就 ...
- java垃圾回收机制GC
记得第一次总结java 的GC的时候,是刚开始在课堂上学习GC的时候,那时候许老师第一节java课 课后老师说同学们可以去深入理解一下java的GC机制: 但是是花费了三四个小时,翻看了<Thi ...
- 品牌电脑硬盘损坏后,使用MediaCreationTool从微软官方下载正版Windows到USB做安装盘
最近我的一台台式机电脑的硬盘损坏了.一开始是速度逐渐变慢,后来慢得难以忍受,有时半天无响应.查看 Windows event ,发现有 id 为 7 的磁盘报错.使用 Windows 8.1 家庭版自 ...
- Spark Standalone 提交模式
一.Client提交模式 提交命令: ./spark-submit --master spark://node1:7077 --class org.apache.spark.examples.Spar ...
- [20190213]学习bbed-恢复删除的数据.txt
[20190213]学习bbed-恢复删除的数据.txt --//以前也做过类似测试,当时在用bbed做verify时错误都不处理,当时的想法就是能读出就ok了.--//而且当时也做成功,纯粹是依葫芦 ...
- 虚拟机-linux系统中图形界面和命令行界面切换
linux系统中图形化界面和命令行界面之间的切换可以分为两种,临时性切换和永久性切换. 临时性切换即切换后只对本次生效,系统重启后界面还是默认界面. 永久性切换即切换后系统开机后永远处于的界面. 临时 ...
- mssql sqlserver 从指定字符串中获取数字的方法
转自:http://www.maomao365.com/?p=6410 摘要: 下文主要分享从指定字符串或列中获取数字信息,如下所示: 实验环境:sql server 2000 ----编写sql函数 ...
- java单元测试
单元测试 1.简介 在日常开发中,我们编写的任何代码都需要经过严谨的测试才可以发布.以往的测试方法都是通过编写一个main函数进行简单的测试,并使用大量的print语句输出结果,这种方法其实是不可取的 ...