强化学习之 免模型学习(model-free based learning)
强化学习之 免模型学习(model-free based learning)
------ 蒙特卡罗强化学习 与 时序查分学习
------ 部分节选自周志华老师的教材《机器学习》
由于现实世界当中,很难获得环境的转移概率,奖赏函数等等,甚至很难知道有多少个状态。倘若学习算法是不依赖于环境建模,则称为“免模型学习(model-free learning)”,这比有模型学习要难得多。
1. 蒙特卡罗强化学习:
在免模型学习的情况下,策略迭代算法会遇到几个问题:
首先,是策略无法评估,因为无法做全概率展开。此时 只能通过在环境中执行相应的动作观察得到的奖赏和转移的状态、一种直接的策略评估代替方法就是“采样”,然后求平均累积奖赏,作为期望累积奖赏的近似,这称为“蒙特卡罗强化学习”。
第二,就是策略迭代算法估计的是 状态值函数(state value function) V,而最终的策略是通过 状态动作值函数(state-action value function) Q 来获得。模型已知时,有很简单的从 V 到 Q 的转换方法,而模型未知 则会出现困难。所以我们将估计对象从 V 转为 Q,即:估计每一对 “状态-动作”的值函数。
总而言之,就是在模型未知的时候,我们从初始状态出发,使用某种策略进行采样,执行该策略 T 步并获得轨迹:
$x_0, a_0, r_1, x_1, a_1, r_2, ... , x_{T-1}, a_{T-1}, r_{T-1}, x_T$
然后,记录轨迹中每一个 状态-动作对 的奖赏之和,作为该 状态-动作对 的一次累积奖赏采样值。多次采样得到多条轨迹,对其求平均 作为状态-动作值函数的估计。
此外,为了得到较好的奖赏,仅仅依靠某一个策略进行采样是不充分的,需要额外的采用其他策略来进行探索,类似于 K-摇臂赌博机,以一定的概率随机的选择一个动作执行,然后以 另一个概率 从当前的动作集合中进行选择 奖赏最大的动作,进行执行。
在策略评估完毕后,同样要进行策略改进,这里由于“被评估”和“被改进”的是同一个策略,因此称为“on-policy(同策略)”蒙特卡洛强化学习算法。
此处需要注意的是:我们将确定性的策略 $\pi$ 称为“原始策略”,而原始策略上使用贪心算法之后的策略记为:$\epsilon-贪心$。
2. 时序差分学习(TD):
与基于 策略迭代 和 值迭代的算法相比,蒙特卡洛算法需要采样完成一个轨迹之后,才能进行值估计(value estimation),这样看,就感觉蒙特卡洛速度很慢啊!据说主要原因在于 蒙特卡洛没有充分的利用强化学习任务的 MDP 结构。但是, TD 充分利用了 “MC”和 动态规划的思想,做到了更加高效率的免模型学习。
MC 的本质是通过多次采样后计算平均 作为期望累积奖赏的近似。但是由于是 一个轨迹采样完成后 才对各个 状态-动作对进行更新,所以是属于“批处理”的方式,那么怎么将其改成 online版本的呢?从而实现 增量的更新?
众所周知 Online版本的算法与 批处理很大的不同在于, online可以实现 一个一个的递增的更新,那么此处就有:
不妨假设在 第 t 次采样的时候,已经估计出 值函数 Q(s, a),则在第 t + 1 次采样的时候,就有:
$Q_{t+1}^{\pi} (x, a) = Q_{t}^{\pi} (x, a) + \frac{1}{t+1}(r_{t+1} - Q^{\pi}_t (x, a)) $
3. 策略评估 与 策略改进:
策略评估是为了检查当前策略是否是最优策略,若不是最优策略,需要对当前策略进行改进。
当模型已知的时候,对任意策略都可以估计出该策略可以带来的 期望累积奖励。
此处有两个估计函数,即:state-action value function Q(s, a) 以及 state value function V(s):
state value function V(s) 是从状态 s 出发,按照某策略,所能够得到的累积奖励;
state-action value function Q(s, a) 是从状态 s 出发,执行动作 a 之后,再使用当前策略,所能够得到的累积奖赏。
利用这两个 value function 就可以对策略进行测试 或者讲是评估,那么,如果并非最优策略,那么如何对其进行改进呢?
迭代的求解最优值函数 就可以得到最大化的累积奖赏。
最优贝尔曼等式(Bellman Equation)解释了非最优策略的改进方式:
将策略选择的动作 改变为 当前最优的动作。
4. 策略迭代 与 值迭代:
所谓策略迭代 也就是将策略评估 和 策略改进 组合起来使用,即首先进行策略评估,然后进行策略改进,在评估,再改进,直到达到最优策略。
那么,什么是 值迭代呢?
由于 策略改进 和 值函数的改进是一致的,因此 可以将策略改进 看做是 值函数的改善。所以,值迭代其实就是以更新 值函数的形式 对策略进行改善,这也就是值迭代的定义。
强化学习之 免模型学习(model-free based learning)的更多相关文章
- backbone学习笔记:模型(Model)(2)属性验证
Backbone的属性验证有2种方法: 1.Backbone自带简单的验证方法,但是验证规则需要自己实现 通过validate()方法进行验证,验证规则写在此方法里. var RoomModel = ...
- backbone学习笔记:模型(Model)(1)基础知识
backbone为复杂Javascript应用程序提供MVC(Model View Controller)框架,框架里最基本的是Model(模型),它用来处理数据,对数据进行验证,完成后台数据与前台数 ...
- keras模块学习之泛型模型学习笔记
本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! Keras泛型模型接口是: 用户定义多输出模型.非循环有向模型或具有共享层的模型等复杂模型的途径 适用于实现:全连接网络和多输入 ...
- keras模块学习之Sequential模型学习笔记
本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! Sequential是多个网络层的线性堆叠 可以通过向Sequential模型传递一个layer的list来构造该模型: from ...
- 强化学习(十七) 基于模型的强化学习与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 届 ...
- GAN︱生成模型学习笔记(运行机制、NLP结合难点、应用案例、相关Paper)
我对GAN"生成对抗网络"(Generative Adversarial Networks)的看法: 前几天在公开课听了新加坡国立大学[机器学习与视觉实验室]负责人冯佳时博士在[硬 ...
- 深度学习在美团点评推荐平台排序中的应用&& wide&&deep推荐系统模型--学习笔记
写在前面:据说下周就要xxxxxxxx, 吓得本宝宝赶紧找些广告的东西看看 gbdt+lr的模型之前是知道怎么搞的,dnn+lr的模型也是知道的,但是都没有试验过 深度学习在美团点评推荐平台排序中的运 ...
- [Django]模型学习记录篇--基础
模型学习记录篇,仅仅自己学习时做的记录!!! 实现模型变更的三个步骤: 修改你的模型(在models.py文件中). 运行python manage.py makemigrations ,为这些修改创 ...
随机推荐
- C# MP3文件属性读取
using (TempFile tempFile = new TempFile()) { using (FileStream fs = new FileStream(tempFile.FileName ...
- js 弹出div窗口 可移动 可关闭 (转)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- HTML--2图片热点,网页划区,拼接
图片热点: 规划出图片上的一个区域,可以做出超链接,直接点击图片区域就可以完成跳转的效果. 示例: 网页划区: 在一个网页里,规划出一个区域用来展示另一个网页的内容. 示例: 网页的拼接: 在一个网络 ...
- <矩阵的基本操作:矩阵相加,矩阵相乘,矩阵转置>
//矩阵的基本操作:矩阵相加,矩阵相乘,矩阵转置 #include<stdio.h> #include<stdlib.h> #define M 2 #define N 3 #d ...
- LNK1104:无法打开文件'mfc90.lib“
检查Project->Properties->Configuration Properties->C/C++->Code Generation->Runtime Libr ...
- python随笔
1. 使用iter实现接收用户多行输入 stopword = '' str = '' print('请将要添加的内容输入下方,输入空白行按回车退出程序:') for line in iter(inpu ...
- XML JSON解析--基本功能
一,json的解析 json文件: {"code": "cn","cities": [{"name": " ...
- JLOI 斯迈利的赌注
直接高精度模拟,加上简单贪心 Program XJOI2263; ..] of longint; var a,b:arr; s1,s2:ansistring; i,j:longint; sum:int ...
- PHP 防范xss攻击
XSS 全称为 Cross Site Scripting,用户在表单中有意或无意输入一些恶意字符,从而破坏页面的表现! 看看常见的恶意字符XSS 输入: 1.XSS 输入通常包含 JavaScript ...
- SQL 存储过程中in
存储过程中用in,如果将条件(1,2,3)这样的集合当成参数传进来的话是不能执行的,因为集合转成一个变量是出错 解决办法拼接SQL字符串传进来,后者在存过中拼接字符串都可以如: ALTER PROCE ...