强化学习(一)—— 基本概念及马尔科夫决策过程(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的更多资料在官方文 ...
随机推荐
- 【Java每日一题】20170322
20170321问题解析请点击今日问题下方的“[Java每日一题]20170322”查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; public cla ...
- python进程池
当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiproce ...
- python中的eval函数
eval() 函数十分强大 -- 将字符串 当成 有效的表达式 来求值 并 返回计算结果 In [1]: eval("1 + 3") Out[1]: 4 In [2]: eval( ...
- matlab rank
k =rank(A) %a is matrix s = svd(A); tol = max(size(A))*eps(max(s)); r = sum(s > tol);
- K8S 基本操作
上一篇文章中,我们一创建了一个简单的 K8S 集群,https://www.cnblogs.com/klvchen/p/9553499.html 这里我们开始使用 kubectl 命令来创建应用,下面 ...
- CSS概念【记录】
1.CSS语法 2.@规则 3.注释 4.层叠 5.优先级 6.继承 7.值 8.块格式化上下文 9.盒模型 10.层叠上下文 11.可替换元素 12.外边距合并 13.包含块 14.视觉格式化模型 ...
- vue.js插入dom节点的方式
html代码: <div id="app"></div> js代码: var MyComponent = Vue.extend({ template: '& ...
- Vue基础01vue的基本示例,vue的双向数据绑定,vue中常见的几种用法,vue相关常见指令
自学vue框架,每天记录重要的知识点,与大家分享!有不足之处,希望大家指正. 本篇将讲述:vue的基本示例,vue的双向数据绑定,vue中常见的几种用法,vue相关常见指令 前期学习基础,使用vue. ...
- wap2app(一)-- 网站快速打包成app
工具:HBuilder,下载地址:http://www.dcloud.io/ 下载并安装HBuilder后,打开编辑器,选择:文件 -> 新建 -> 项目,出现如下图: 选择wap2app ...
- WebStorm File Watchers配置将.less文件编译后的.css输出至指定目录
Arguments:其实是命令行输入“lessc file.less file.css”后者指定路径 Output Paths to refresh:刷新changed后.css文件