机器学习 | 强化学习(4) | 无模型控制(Model-Free Control)
无模型控制(Model-Free Control)
无模型预测概论
- 上一节课:
- 无模型预测
- 用于估计一个未知马尔科夫决策过程的价值函数
 
- 这节课
- 无模型控制
- 最优化一个未知马尔科夫决策过程的价值函数
 
一般在以下两种情况采用无模型预测
- 马尔科夫决策过程是未知的,仅能通过采用得到记录
- 马尔科夫决策过程是已知的,但是过于巨大,仅能通过采样进行
基于策略学习与非基于策略学习(On and Off-Policy Learning)
- 基于策略学习(On-policy learning)
- “实践出真知”(“Learn on the job”)
- 基于策略\(\pi\)的采样结果去学习策略\(\pi\)
 
- 非基于策略学习(Off-policy learning)
- “站在巨人的肩膀上”(”Look over someone's shoulder“)
- 基于策略\(\mu\)的采样结果去学习策略\(\pi\)
 
无模型策略迭代基于动作-状态函数
- 基于\(V(s)\)的贪心策略提升必须要有马尔科夫决策过程的一个模型 \[\pi'(s)= \mathcal{\mathop{\arg\max}_{a\in A}R^a_s+P^a_{ss'}}V(s')
 \]
- 基于\(Q(s,a)\)的贪心策略提升则是无需模型的 \[\pi'(s)= \mathop{\arg\max}_{a\in \mathcal{A}}Q(s,a)
 \]
\(\epsilon\)-贪心探索(\(\epsilon\)-Greedy Exploration)
贪心策略提升的缺陷
- 如果我们始终按照策略\(\pi\)的最优解进行行动,那么极有可能我们会卡在局部最优解当中
我们引入\(\epsilon\)-贪心探索以避免这种局部最优解窘况
- 这是一种简单而有效的方式来提供可控的随机探索 
- 一切行动\(m\)都基于非零的概率得以被执行 
- 有\(1-\epsilon\)的概率选择最优的动作 
- 有\(\epsilon\)的概率随机选择一个行动 \[\pi(a|s) = \Bigg \{
 \begin{align}
 &\frac{\epsilon}{m} + 1-\epsilon\quad & if \quad a^* = \mathop{\arg\max}_{a\in \mathcal{A}}Q(s,a) \\
 & \frac{\epsilon}{m} & otherwise
 \end{align}
 \]
\(\epsilon\)-贪心策略改进
对于任意一个\(\epsilon\)-贪心策略\(\pi\),关于\(q_\pi\)的\(\epsilon\)-贪心策略\(\pi'\)则为一个提升,\(v_{\pi'}(s)\ge v_{\pi}(s)\)
证明如下:
q_\pi(s,\pi'(s)) & = \sum_{a\in\mathcal A}\pi'(a|s)q_\pi(s,a) \\
& = \frac{\epsilon}{m}\sum_{a\in\mathcal A}q_\pi(s,a) + (1-\epsilon)\max_{a\in\mathcal A} q_\pi(s,a) \\
& \ge \frac{\epsilon}{m}\sum_{a\in\mathcal A}q_\pi(s,a) + (1-\epsilon)\sum_{a\in\mathcal A} \frac{\pi(a|s) - \frac{\epsilon}{m}}{1-\epsilon}q_\pi(s,a) \\
& = \sum_{a\in\mathcal A}\pi(a|s)q_\pi(s,a) \\
& = v_\pi(s)
\end{align}
\]
无限制探索的限制性贪心算法(Greedy in the Limit with Infinite Exploration)(GLIE)
定义:
- 所有状态-动作二元匹配都将被不断地被探索 \[\lim_{k\rightarrow\infty} N_k(s,a)=\infty
 \]
- 那么策略将会收敛于一个贪心策略 \[\lim_{k\rightarrow\infty}\pi_k(a|s)=\mathbf1(a=\mathop{\arg\max}_{a'\in \mathcal{A}}Q_k(s,a'))
 \]
- 比如说当\(\epsilon\)-贪心算法为\(\epsilon_k=\frac{1}{k}\)当\(\epsilon\)下降到0,就是GLIE, 
GLIE蒙特卡罗控制(GLIE Monte-Carlo Control)
- 基于策略\(\pi\)采样得到第k个序列:\(\{S_1,A_1,R_2,\dots,S_T\}\sim\pi\) 
- 对于序列中的一切状态\(S_t\)和动作\(A_t\) \[\begin{align}
 N(S,A_t) & \leftarrow N(S_t,A_t) + 1 \\
 Q(S_t,A_t) & \leftarrow Q(S_t,A_t) + \frac{1}{N(S_t,A_t)}(G_t - Q(S_t,A_t))
 \end{align}
 \]
- 再基于新的动作-价值函数去提升策略 \[\begin{align}
 \epsilon & \leftarrow \frac{1}{k} \\
 \pi & \leftarrow \epsilon-greedy(Q)
 \end{align}
 \]
那么GILE蒙特卡罗控制收敛于最优动作-状态函数
- \(Q(s,a)\rightarrow q_\pi(s,a)\)
蒙特卡罗对比时序差分控制
- 时序差分学习对比蒙特卡罗有以下的优点
- 低方差
- 在线学习
- 非完整的序列
 
- 自然启发:采用时序差分取代蒙特卡罗
- 对\(Q(S,A)\)采用时序差分
- 再使用\(\epsilon\)-贪心算法去提升策略
- 每一步时间缀都更新一次
 
基于SARSA算法更新动作-价值函数
\]
因为是基于五元组\(\mathcal{\langle S,A,R,S',A'\rangle}\)去更新动作-价值函数,故称为SARSA算法
基于策略控制的SARSA算法
- 对\(Q(s,a),\forall s\in S,a\in A(s)\)进行任意初始化,并且\(Q\)(终结状态)\(=0\)
- 重复(对每一个序列):
- 初始化\(S\)
- 从基于由\(Q\)(例如\(\epsilon\)-贪心算法)生成的策略的\(S\)中选择\(A\)
- 重复(对序列的每一步)
- 采取动作\(A\),返回得到\(R\),\(S'\)
- 从基于由\(Q\)(例如\(\epsilon\)-贪心算法)生成的策略的\(S'\)中选择\(A'\)
- \(Q(S,A)\leftarrow Q(S,A) + \alpha[R+\gamma Q(S',A')-Q(S,A)]\)
- \(S\leftarrow S';A\leftarrow A'\)
 
- 直到\(S\)到达终结状态
 
SARSA算法的收敛性
如果符合以下条件,那么SARSA将会收敛于最优动作-状态函数\(Q(s,a)\rightarrow q_*(s,a)\)
- 策略\(\pi_t(a|s)\)是一个GLIE序列 
- 步长的大小\(\alpha_t\)是一个罗宾斯-门罗(Robbins-Monro)序列 \[\begin{align}
 \sum^{\infty}_{t=1}\alpha_t = \infty \\
 \sum^{\infty}_{t=1}\alpha ^ 2_t \lt \infty
 \end{align}
 \]
n步SARSA算法(n-Step SARSA)
- 对于n步返回回报其中(\(n = 1,2,\infty\)) \[\begin{align}
 n=1\quad & (SARSA) & q^{(1)}_t & = R_{t+1} + \gamma Q(S_{t+1}) \\
 n=2\quad & & q^{(2)}_t & = R_{t+1} + \gamma R_{t+2} + \gamma^2 Q(S_{t+2}) \\
 \vdots & & \vdots& \\
 n=\infty \quad & (MC) & q^{(\infty)}_t & = R_{t+1} + \gamma R_{t+2} + \dots + \gamma^{T-1}R_T \\- \end{align} 
 \]
- 对于n步\(Q\)-返回回报之定义 \[q_t^{(n)} = R_{t+1} + \gamma R_{t+2} + \dots+\gamma ^ {n-1}R_{t+n} + \gamma ^ nQ(S_{t+n})
 \]
- 那么n步SARSA通过n步\(Q\)-返回回报去更新\(Q(s,a)\) 
\]
Forward View \(SARSA(\lambda)\)
- 对于返回回报\(q^\lambda\)混合了所有的n步\(Q\)-返回回报\(q_t^{(n)}\) 
- 通过权重\((1-\lambda)\lambda^{n-1}\) \[q^\lambda_t = (1-\lambda)\sum^\infty_{n=1}\lambda^{n-1}q^{(n)}_t
 \]
- Forward-view \(SARSA(\lambda)\) \[Q(S_t,A_t)\leftarrow Q(S_t,A_t) + \alpha\Big(q_t^\lambda - Q(S_t,A_t)\Big)
 \]
Backward View \(SARSA(\lambda)\)
- 正如\(TD(\lambda)\)一样,我们采用有效性检测作为一个在线的算法 
- 只不过在\(SARSA(\lambda)\)中每一个动作-状态对都仅有一次有效性检测 \[\begin{align}
 E_0(s,a)& =0\\
 E_t(s,a)& = \gamma\lambda E_{t-1}(s,a) + \mathbf1(S_t=s,A_t=a)
 \end{align}
 \]
- 每个状态\(s\)与动作\(a\)的\(Q(s,a)\)都得以更新 
- 正比于时序差分误差\(\delta_t\)和有效性检测\(E_t(s,a)\) \[\begin{align}
 &\delta_t = R_{t+1} + \gamma Q(S_{t+1}, A_{t+1}) - Q(S_t,A_t) \\
 & Q(s,a)\leftarrow Q(s,a) + \alpha\delta_t E_t(s,a)
 \end{align}
 \]
\(SARSA(\lambda)\)流程(Backward View版本)
随机初始化\(Q(s,a)\),其中\(\mathcal{s\in S,a\in A(s)}\)
重复(对所有序列)
 \(E(s,a) = 0\),其中\(\mathcal{s\in S,a\in A(s)}\)
 初始化\(S,A\)
 重复(对序列中的每一步)
 得到动作\(A\),可以观测到的\(R,S'\)
 基于\(Q\)(比如\(\epsilon\)-贪心算法)生成的策略以及状态\(S'\)得到动作\(A'\)
 \(\delta\leftarrow R+\gamma Q(S',A')-Q(S,A)\)(TD-error)
 \(E(S,A)\leftarrow E(S,A) + 1\)
 对于所有\(\mathcal{s\in S,a\in A(s)}\)
 \(Q(s,a) \leftarrow Q(s,a) + \alpha\delta E(s,a)\)
 \(E(s,a)\leftarrow \gamma\lambda E(s,a)\)
 \(S\leftarrow S';A\leftarrow A'\)
 直到\(S\)为终止状态
[例子时间,基于gridWorld解释了有\(\lambda\)和无\(\lambda\)的区别]
非基于策略学习(Off-Policy Learning)
- 通过评价策略\(\pi(a|s)\)来计算\(v_\pi(s)\)或者\(q_\pi(s,a)\) 
- 当基于行为策略\(\mu(a|s)\) \[\{S_1,A_1,R_2,\dots,S_T\}\sim\mu
 \]
- 为何这样做很重要呢? 
- 通过观察人类专家或者其他agent的作法学习 
- 重新利用基于旧策略\(\pi_1,\pi_2,\dots,\pi_{t-1}\)学到的记录 
- 从探索性的策略中学习最优策略 
- 从一个策略中学到复数个策略 
重要性采样(Importance Sampling)
- 用于估算不同分布的期望
\[\begin{align}
 \mathbb{E}_{X\sim P}[f(X)] & =\sum P(X)f(X)\\
 & = \sum Q(X)\frac{P(X)}{Q(X)}f(X) \\
 & = \mathbb{E}_{X\sim Q}\bigg[\frac{P(X)}{Q(X)}f(X)\bigg]
 \end{align}
 \]
在非基于策略的蒙特卡罗中应用重要性采样
- 利用从\(\mu\)中产生的返回回报去评价\(\pi\) 
- 基于策略之间的相似程度去决定返回回报\(G_t\)的权重 
- 对整个序列乘以一个重要性采样的修正指数 \[G_t^{\pi/\mu}=\frac{\pi(A_t|S_t)\pi(A_{t+1}|S_{t+1})}{\mu(A_t|S_t)\mu(A_{t+1}|S_{t+1})}\cdots\frac{\pi(A_T|S_T)}{\mu(A_T|S_T)}G_t
 \]
- 基于修正过的返回回报去更新价值函数 \[V(S_t)\leftarrow V(S_t) + \alpha\bigg(\color{red}{G_t^{\pi/\mu}}-V(S_t)\bigg)
 \]
- 若\(\mu\)等于\(0\)而\(\pi\)为非零,则该方法无法使用 
- 重要性采样会显著地增加方差 
- 蒙特卡罗真的真的不好用,要用就用TD算法(David Silver语) 
在非基于策略的蒙特卡罗中应用重要性采样
- 利用从\(\mu\)中产生的时序差分目标去评价\(\pi\) 
- 基于重要性采样去决定时序差分目标\(R+\gamma V(S')\)的权重 
- 只需进行一次一个重要性采样修正 \[V(S_t)\leftarrow V(S_t) + \alpha\bigg( \color{red}{\frac{\pi(A_t|S_t)}{\mu(A_{t}|S_{t})}(R_{t+1} + \gamma V(S_{t+1}))} -V(S_t) \bigg)
 \]
- 方差相比于重要性采样的蒙特卡罗要低得多 
- 因为策略只需要在一部内相似 
动作价值学习(Q-Learning)
- 我们定义一个针对于动作-价值函数\(Q(s,a)\)的非基于策略学习 
- 完全不需要重要性采样 
- 基于行为策略去选择下一个动作\(A_{t+1}\sim \mu(\cdot |S_t)\) 
- 但是我们定义一个不一样的后继动作\(A'\sim \pi(\cdot|S_t)\) 
- 同时基于不一样的动作的价值去更新\(Q(S_t,A_t)\) \[Q(S_t,A_t)\leftarrow Q(S_t,A_t) + \alpha(\color{red}{R_{t+1} + \gamma Q(S_{t+1},A')}-Q(S_t,A_t))
 \]
非基于策略的Q-Learning
- 现在我们允许行为策略与目标策略可以同时提升 
- 目标策略\(\pi\)是关于\(Q(s,a)\)的贪心算法 \[\pi(S_{t+1})=\mathop{\arg\max}_{a'}Q(S_{t+1},a')
 \]
- 而行为策略\(\mu\)则例如是关于\(Q(s,a)\)的\(\epsilon\)-贪心算法 
- 那么动作价值学习的目标是简化 \[\begin{align}
 & R_{t+1} + \gamma Q(S_{t+1},A')\\
 = & R_{t+1} + \gamma Q(S_{t+1},\mathop{\arg\max}_{a'}Q(S_{t+1},a')) \\
 = & R_{t+1} + \max_{a'}\gamma Q(S_{t+1},a')
 \end{align}
 \]
Q-Learning算法(或称SARSAMAX)
\]
DP与TD的关系
| 完全备份(DP) | 采样备份(TD) | |
|---|---|---|
| 求解\(v_\pi(s)\)的贝尔曼期望方程 | 迭代策略评价 | 时序差分学习 | 
| 求解\(q_\pi(s,a)\)的贝尔曼期望方程 | Q-策略迭代 | SARSA | 
| 求解\(q_*(s,a)\)的贝尔曼最优方程 | Q-价值迭代 | 动作价值学习 | 
机器学习 | 强化学习(4) | 无模型控制(Model-Free Control)的更多相关文章
- 强化学习之 免模型学习(model-free based learning)
		强化学习之 免模型学习(model-free based learning) ------ 蒙特卡罗强化学习 与 时序查分学习 ------ 部分节选自周志华老师的教材<机器学习> 由于现 ... 
- 强化学习(十七) 基于模型的强化学习与Dyna算法框架
		在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Policy Based RL),本篇我们讨论最后一种强化学习流派,基于模型的强化学习(Model Base ... 
- ICML 2018 | 从强化学习到生成模型:40篇值得一读的论文
		https://blog.csdn.net/y80gDg1/article/details/81463731 感谢阅读腾讯AI Lab微信号第34篇文章.当地时间 7 月 10-15 日,第 35 届 ... 
- AI之强化学习、无监督学习、半监督学习和对抗学习
		1.强化学习 @ 目录 1.强化学习 1.1 强化学习原理 1.2 强化学习与监督学习 2.无监督学习 3.半监督学习 4.对抗学习 强化学习(英语:Reinforcement Learning,简称 ... 
- 【强化学习RL】model-free的prediction和control —— MC,TD(λ),SARSA,Q-learning等
		本系列强化学习内容来源自对David Silver课程的学习 课程链接http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Teaching.html 本文介绍了在m ... 
- 强化学习8-时序差分控制离线算法Q-Learning
		Q-Learning和Sarsa一样是基于时序差分的控制算法,那两者有什么区别呢? 这里已经必须引入新的概念 时序差分控制算法的分类:在线和离线 在线控制算法:一直使用一个策略选择动作和更新价值函数, ... 
- backbone学习笔记:模型(Model)(2)属性验证
		Backbone的属性验证有2种方法: 1.Backbone自带简单的验证方法,但是验证规则需要自己实现 通过validate()方法进行验证,验证规则写在此方法里. var RoomModel = ... 
- backbone学习笔记:模型(Model)(1)基础知识
		backbone为复杂Javascript应用程序提供MVC(Model View Controller)框架,框架里最基本的是Model(模型),它用来处理数据,对数据进行验证,完成后台数据与前台数 ... 
- 伯克利、OpenAI等提出基于模型的元策略优化强化学习
		基于模型的强化学习方法数据效率高,前景可观.本文提出了一种基于模型的元策略强化学习方法,实践证明,该方法比以前基于模型的方法更能够应对模型缺陷,还能取得与无模型方法相近的性能. 引言 强化学习领域近期 ... 
- 深度强化学习资料(视频+PPT+PDF下载)
		https://blog.csdn.net/Mbx8X9u/article/details/80780459 课程主页:http://rll.berkeley.edu/deeprlcourse/ 所有 ... 
随机推荐
- 中电金信:GienTech动态|一波好消息→中标!多领域“开花”
- 走向更强的 Literal 的时代
			正如 声明式编程的没落 - Inshua - 博客园 分析,声明式编程由于不符合软件工程需要,实际上正在淘汰,但与此同时,它的特征被过程式编程吸收为了Literal,中文翻译字面量. 什么是 Lite ... 
- Android7 以上https抓包(无需root)- virtualXposed + justTrustMe
			参考资料: https://www.cnblogs.com/boycelee/p/13418371.html 1. virtualXposed下载地址 https://github.com/andro ... 
- 使用JSch进行sftp的连接运行状况检查
			public boolean checkConnection() throws JSchException { try { JSch jsch = new JSch(); Session sessio ... 
- Qt/C++音视频开发67-保存裸流加入sps/pps信息/支持264/265裸流/转码保存/拉流推流
			一.前言 音视频组件除了支持保存MP4文件外,同时还支持保存裸流即264/265文件,以及解码后最原始的yuv文件.在实际使用过程中,会发现部分视频文件保存的裸流文件,并不能直接用播放器播放,查阅资料 ... 
- Qt编写安防视频监控系统67-跨平台及国产系统
			一.前言 得益于Qt的超强跨平台特性,本系统也是跨平台的,亲测的系统包括windows全系列.ubuntu全系列.centeos.国产系统UOS.国产系统银河麒麟.中标麒麟.嵌入式linux.树莓派. ... 
- com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver的区别
			今天写东西测试的时候发现一个问题,如下: application.yml中数据源是这样配置的: 第一反应就是记忆中连接mysql的驱动不都是com.mysql.jdbc.Driver吗?com.mys ... 
- 零基础快速入门WebRTC:基本概念、关键技术、与WebSocket的区别等
			本文引用自Hussein Nasser的两个视频分享,原文内容由卢冰聪翻译整理,即时通讯网收录时有大量修订和重新排版. 1.内容概述 本文是专为学习开源实时音视频工程WebRTC的入门者编写的速成指南 ... 
- [LC793]阶乘函数后 K 个零
			题目描述 f(x) 是 x! 末尾是 0 的数量.(回想一下 x! = 1 * 2 * 3 * ... * x,且 0! = 1 ) 例如, f(3) = 0 ,因为 3! = 6 的末尾没有 0 : ... 
- Report -「概率数据结构」随机化骗分?我们是专业的!
			\[\mathscr{Lorain~y~w~la~Lora~blea.} \newcommand{\DS}[0]{\displaystyle} % operators alias \newcomman ... 
