机器学习(三十三)——价值函数的近似表示
价值函数的近似表示
之前的内容都是讲解一些强化学习的基础理论,这些知识只能解决一些中小规模的问题。很多价值函数需要用一张大表来存储。当获取某一状态或行为的价值的时候,通常需要一个查表操作(Table Lookup),这对于那些状态空间或行为空间很大的问题几乎无法求解。
在实际应用中,对于状态和行为空间都比较大的情况,精确获得各种v(s)和q(s,a)几乎是不可能的。这时候需要找到近似的函数。具体来说,可以使用线性组合、神经网络以及其他方法来近似价值函数:
v^(s,w)≈vπ(s)q^(s,a,w)≈qπ(s,a)\hat v(s,w)\approx v_\pi(s)\\ \hat q(s,a,w)\approx q_\pi(s,a) v^(s,w)≈vπ(s)q^(s,a,w)≈qπ(s,a)
其中w是该近似函数的参数。
线性函数
这里仍然从最简单的线性函数说起:
v^(S,w)=x(S)Tw=∑j=1nxj(S)wj\hat v(S,w)=x(S)^Tw=\sum_{j=1}^nx_j(S)w_jv^(S,w)=x(S)Tw=j=1∑nxj(S)wj
目标函数为:
J(w)=Eπ[(vπ(S)−x(S)Tw)2]J(w)=E_\pi[(v_\pi(S)-x(S)^Tw)^2]J(w)=Eπ[(vπ(S)−x(S)Tw)2]
更新公式为:
Δw=α(vπ(S)−v^(S,w))x(S)\Delta w=\alpha (v_\pi(S)-\hat v(S,w))x(S)Δw=α(vπ(S)−v^(S,w))x(S)
上述公式都是基本的ML方法,这里不再赘述。
最简单的一类线性函数,被叫做Table Lookup Features:
xtable(S)=(1(S=s1)⋮1(S=sn))x^{table}(S)=\begin{pmatrix} 1(S=s_1) \\ \vdots \\ 1(S=s_n) \end{pmatrix}xtable(S)=⎝⎜⎛1(S=s1)⋮1(S=sn)⎠⎟⎞
则:
v^(S,w)=(1(S=s1)⋮1(S=sn))(w1⋮wn)\hat v(S,w)=\begin{pmatrix} 1(S=s_1) \\ \vdots \\ 1(S=s_n) \end{pmatrix}\begin{pmatrix} w_1 \\ \vdots \\ w_n \end{pmatrix}v^(S,w)=⎝⎜⎛1(S=s1)⋮1(S=sn)⎠⎟⎞⎝⎜⎛w1⋮wn⎠⎟⎞
Incremental Prediction Algorithms
事实上,之前所列的公式都不能直接用于强化学习,因为公式里都有一个实际价值函数vπ(S)v_\pi(S)vπ(S),或者是一个具体的数值,而强化学习没有监督数据,因此不能直接使用上述公式。
因此,我们需要找到一个替代vπ(S)v_\pi(S)vπ(S)的目标函数。
MC | Δw=α(Gt−v^(St,w))∇wv^(St,w)\Delta w=\alpha (\color{red}{G_t}-\hat v(S_t,w))\nabla_w \hat v(S_t,w)Δw=α(Gt−v^(St,w))∇wv^(St,w) | 有噪声、无偏采样 | 收敛至一个局部最优解 |
TD(0) | Δw=α(Rt+1+γv^(St+1,w)−v^(St,w))∇wv^(St,w)\Delta w=\alpha (\color{red}{R_{t+1}+\gamma\hat v(S_{t+1},w)}-\hat v(S_t,w))\nabla_w \hat v(S_t,w)Δw=α(Rt+1+γv^(St+1,w)−v^(St,w))∇wv^(St,w) | 有噪声、有偏采样 | 收敛至全局最优解 |
TD(λ\lambdaλ) | Δw=α(Gtλ−v^(St,w))∇wv^(St,w)\Delta w=\alpha (\color{red}{G_t^\lambda}-\hat v(S_t,w))\nabla_w \hat v(S_t,w)Δw=α(Gtλ−v^(St,w))∇wv^(St,w) | 有噪声、有偏采样 |
上面公式中,红色的部分就是目标函数。
对于q^(S,A,w)\hat q(S,A,w)q^(S,A,w),我们也有类似的结论:
MC | Δw=α(Gt−q^(St,At,w))∇wq^(St,At,w)\Delta w=\alpha (\color{red}{G_t}-\hat q(S_t,A_t,w))\nabla_w \hat q(S_t,A_t,w)Δw=α(Gt−q^(St,At,w))∇wq^(St,At,w) | 有噪声、无偏采样 | 收敛至一个局部最优解 |
TD(0) | Δw=α(Rt+1+γq^(St+1,At+1,w)−q^(St,At,w))∇wq^(St,At,w)\Delta w=\alpha (\color{red}{R_{t+1}+\gamma\hat q(S_{t+1},A_{t+1},w)}-\hat q(S_t,A_t,w))\nabla_w \hat q(S_t,A_t,w)Δw=α(Rt+1+γq^(St+1,At+1,w)−q^(St,At,w))∇wq^(St,At,w) | 有噪声、有偏采样 | 收敛至全局最优解 |
TD(λ\lambdaλ) | Δw=α(qtλ−q^(St,At,w))∇wq^(St,At,w)\Delta w=\alpha (\color{red}{q_t^\lambda}-\hat q(S_t,A_t,w))\nabla_w \hat q(S_t,A_t,w)Δw=α(qtλ−q^(St,At,w))∇wq^(St,At,w) | 有噪声、有偏采样 |
下面给出各种算法的收敛特性。
预测算法的收敛性:
On/Off-Policy | Algorithm | Table Lookup | Linear | Non-Linear |
---|---|---|---|---|
On-Policy |
MC TD(0) TD(λ\lambdaλ) Gradient TD |
Yes Yes Yes Yes |
Yes Yes Yes Yes |
Yes No No Yes |
On-Policy |
MC TD(0) TD(λ\lambdaλ) Gradient TD |
Yes Yes Yes Yes |
Yes No No Yes |
Yes No No Yes |
Gradient TD中的Gradient指的是PBE(projected Bellman error)的梯度。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z01jLDz1-1571014572380)(/images/img3/PBE.png)]
控制算法的收敛性:
Algorithm | Table Lookup | Linear | Non-Linear |
---|---|---|---|
Monte-Carlo Control Sarsa Q-learning Gradient Q-learning |
Yes Yes Yes Yes |
Yes’ Yes’ No Yes |
No No No No |
Yes’ = chatters around near-optimal value function
Batch Methods
前面所说的Incremental算法都是基于数据流的,经历一步,更新算法后,我们就不再使用这步的数据了,这种算法简单,但有时候不够高效。与之相反,Batch Methods则是把一段时期内的数据集中起来,通过学习来使得参数能较好地符合这段时期内所有的数据。这里的训练数据集Batch相当于个体的一段经验。
Least Squares Prediction
假设存在一个价值函数的近似:v^(s,w)≈vπ(s)\hat v(s,w)\approx v_\pi(s)v^(s,w)≈vπ(s)和一个经验集D={<s1,v1π>,<s2,v2π>,…,<sT,vTπ>}\mathcal{D}=\{<s_1,v_1^{\pi}>,<s_2,v_2^{\pi}>,\dots,<s_T,v_T^{\pi}>\}D={<s1,v1π>,<s2,v2π>,…,<sT,vTπ>},则Least Squares Error为:
LS(w)=∑t=1T(vtπ−v^(st,w))2LS(w)=\sum_{t=1}^T(v_t^{\pi}-\hat v(s_t,w))^2LS(w)=t=1∑T(vtπ−v^(st,w))2
使用LSE的Prediction被称为Least Squares Prediction,针对不同方向衍生还出了LSMC、LSTD、LSTD(λ\lambdaλ)等算法。
LSE亦可推广到Q函数,即所谓的LS Q-Learning。
Experience Replay
为了充分利用经验集,我们还可以使用Experience Replay技术,即:随机从D\mathcal{D}D中采样<s,vπ><s,v^{\pi}><s,vπ>,然后使用SGD最小化LSE。
这一点和普通的监督学习很类似,梯度下降从原理上来说,本就不可能一个epoch就达到最优,而需要多跑几个epoch,这里的Experience Replay也是类似的道理。
Experience Replay还可用来消除训练数据间的相关性。例如,1个agent在1个episode中产生的experience就是相关的,<st,at><s_t,a_t><st,at>和和和<st+1,at+1><s_{t+1},a_{t+1}><st+1,at+1>显然存在着一定的逻辑关系。训练数据间的相关性会影响算法收敛到最优解。
机器学习(三十三)——价值函数的近似表示相关推荐
- 吴恩达机器学习训练秘籍整理三十三到三十五章(五)
第三十三章 为何与人类表现水平进行对比: 许多机器学习系统的设计目的是想要自动化一些人类可以处理得很好的事情,可举的例子有图像识别.语音识别以及垃圾邮件分类等等.此外,有许多理由表明在处理人类擅长的任 ...
- [系统安全] 三十三.恶意代码检测(3)基于机器学习的恶意代码检测技术
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- [Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- 机器学习三要素之数据、模型、算法
参考:https://gitbook.cn/gitchat/column/5ad70dea9a722231b25ddbf8/topic/5b1086eccad6fe44db4c1268 1. 机器学习 ...
- NeHe OpenGL第三十三课:TGA文件
NeHe OpenGL第三十三课:TGA文件 加载压缩和未压缩的TGA文件: 在这一课里,你将学会如何加载压缩和为压缩的TGA文件,由于它使用RLE压缩,所以非常的简单,你能很快地熟悉它的. 我见 ...
- ASP.NET程序中常用的三十三种代码(转载)
asp.net程序中最常用的三十三种编程代码,为初学者多多积累经验,为高手们归纳总结,看了觉得很有价值~,大家不妨参考下! 1. 打开新的窗口并传送参数: 传送参数: response.write(& ...
- 前端工程师和设计师必读文章推荐【系列三十三】
<Web 前端开发精华文章推荐>自2011年6月20号发布第一期以来,历经三年半,总共发布了30多期.今天这篇是2015年第2期(总第33期),希望你能在这里发现有用的资料. 梦想天空专注 ...
- javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD
javaweb学习总结(三十三)--使用JDBC对数据库进行CRUD 一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过 ...
- 强化学习(八)价值函数的近似表示与Deep Q-Learning
在强化学习系列的前七篇里,我们主要讨论的都是规模比较小的强化学习问题求解算法.今天开始我们步入深度强化学习.这一篇关注于价值函数的近似表示和Deep Q-Learning算法. Deep Q-Lear ...
最新文章
- Ejabberd源码解析前奏--配置
- 分组表管理之获取用户组表列表数据
- PHP实现MVC开发: 一个简单的MVC(转)
- Mocha and Math 运算
- 《Linux内核设计与实现》读书笔记(十八)- 内核调试
- 相依關係: XXXXXXXXX但它卻無法安裝
- 物联网标准NB-IoT和LoRa,究竟谁能更胜一筹?
- UML用例图分析——铁路售票系统
- JAVA:实现Gaussian高斯算法(附完整源码)
- viper4android脉冲样本,V4A脉冲反馈样本第一弹 爽爆
- Solidworks默认模板无效问题?修改字体问题
- 计算机打印机无法打印,电脑打印机无法打印怎么办 打印机无法打印解决教程...
- 锁定计算机和睡眠有什么区别,电脑休眠和睡眠哪个好?电脑计算机睡眠和休眠有什么区别...
- 留给19371213看的
- 华夏ERP前端的问题解决
- 自然语言处理研究报告
- 计算机网络工程和网络工程的区别,网络工程专业和计算机网络专业有什么区别?...
- ABAP - OO ALV基本实现步骤
- 5906. 【NOIP2018模拟10.15】传送门 (portal)
- 《Python源码剖析》读书笔记
热门文章
- Enterprise Library 企业库 向Oracle数据库中 写日志的 存储过程
- arch linux 安装 arm,给树莓派安装 Arch Linux ARM
- 8运行不了_好消息!十堰新建28座充电站,年底投入运行
- LeetCode-19 删除链表的倒数第N个节点
- unslider制作轮播图
- uni-app echart 使用mpvueEcharts踩坑与流程
- OpenCV实现连通域
- open source project for recommendation system
- 关于Android软件更新
- Python中的装饰器,迭代器,生成器