【RL系列】Multi-Armed Bandit笔记——UCB策略与Gradient策略
本篇主要是为了记录UCB策略与Gradient策略在解决Multi-Armed Bandit问题时的实现方法,涉及理论部分较少,所以请先阅读Reinforcement Learning: An Introduction (Drfit) 的2.7,2.8的内容。为了更深入一点了解UCB策略,可以随后阅读下面这篇文章:
【RL系列】Multi-Armed Bandit笔记补充(二)—— UCB策略
UCB策略需要进行初始化工作,也就是说通常都会在进入训练之前先将每个动作都测试一变,保证每个动作被选择的次数都不为0且都会有一个初始的收益均值和置信上限,一般不会进行冷启动(冷启动的话,需要在开始时有一定的随机动作,会降低动作选择的效率)。我们可以设初始化函数UCBinitial,将其表现为Matlab:
function [Q UCBq] = UCBInitial(Q, Reward, UCBq)
% CurrentR: Current Reward
% CurrentA: Current Action
% RandK: K-Armed Bandit
% Q: Step-size Average Reward
% UCBq: Q + Upper Confidence Bound RandK = length(Reward);
for n = 1:RandK
CurrentA = n;
CurrentR = normrnd(Reward(CurrentA), 1); Q(CurrentA) = (CurrentR - Q(CurrentA))*0.1 + Q(CurrentA);
UCBq(CurrentA) = Q(CurrentA) + c*(2*log(n))^0.5;
end
在训练中,UCB动作选择策略和置信上限值的更新策略可以写为:
% UCBq: Q + Upper Confidence Bound
% TotalCalls(Action): The Cumulative call times of Action
% c: Standard Deviation of reward in theorical analysis [MAX CurrentA] = max(UCBq);
MAXq(CurrentA) = Q(CurrentA) + c*(2*log(n)/TotalCalls(CurrentA))^0.5;
注意公式里的c应为理论上收益的标准差,但因为收益分布是一个黑箱,所以这个参数只能从实际实验中测试推断出来。这里我们假设收益标准差为1,所以为了实验效果,设c=1
接下来,我们就看一看UCB策略的测试效果吧。这里我们将其与epsilon-greedy策略进行对比(epsilon = 0.1),首先是Average Reward的测试结果:
UCB算法在前1000次的学习中可以得到比epsilon-greedy更高的均值收益评价。那么这是否就代表了UCB策略可以更高概率的选取最优动作?下面我们看Optimal Action Rate的测试结果:
可以发现学习次数较少时,UCB策略可以比epsilon-greedy策略更快的获得较高概率的最优解,但最优动作选择率始终维持在60%左右,是低于epsilon-greedy策略在1000次学习时接近90%的数值的。这也直接的反映出UCB并不适合求解最优。那为什么最优动作选择率不高,但平均收益却较高呢?UCB大概率选择的优先动作通常是排名靠前的动作,也就是说动作选择并不一定是最优,但大概率是最佳的3个或2个动作中的一个,所以UCB也可用作二元分类策略,将表现较好的(大概率选择的动作)分为一类,表现较差的动作分为一类。
我们来看看UCB在分类中的表现,用80%分类准确度来进行评价。如果经过UCB策略学习后得到的估计收益均值中的前5位中有超过或等于4位与实际的收益均值相符的频率,以此近似为分类的准确度。也就是说,如果有10个bandit,我们将其分为两类,收益高的一类(前5个bandit)与收益低的一类(后5个bandit),80%分类准确度可以以此计算:估计的前5个bandit与实际的有超过4个相符的概率。用数学表述出来就是,如果有一个Reward集合R:
将其分为两类,按数值大小排序,前五名为一类,归为集合G,G是R的子集。通过学习估计出的G,称为AG 。那么80%分类准确度可以表示为:
那么我们直接看结论吧:
UCB的80%分类准确度始终在90%上下,而epsilon-greedy却只有50%左右。显然,UCB在这方面做的要好于epsilon-greedy。
【RL系列】Multi-Armed Bandit笔记——UCB策略与Gradient策略的更多相关文章
- 【RL系列】Multi-Armed Bandit笔记补充(一)
在此之前,请先阅读上一篇文章:[RL系列]Multi-Armed Bandit笔记 本篇的主题就如标题所示,只是上一篇文章的补充,主要关注两道来自于Reinforcement Learning: An ...
- 【RL系列】Multi-Armed Bandit笔记补充(二)
本篇的主题是对Upper Conference Bound(UCB)策略进行一个理论上的解释补充,主要探讨UCB方法的由来与相关公式的推导. UCB是一种动作选择策略,主要用来解决epsilon-gr ...
- 【RL系列】Multi-Armed Bandit问题笔记
这是我学习Reinforcement Learning的一篇记录总结,参考了这本介绍RL比较经典的Reinforcement Learning: An Introduction (Drfit) .这本 ...
- 【RL系列】MDP与DP问题
推荐阅读顺序: Reinforcement Learning: An Introduction (Drfit) 有限马尔可夫决策过程 动态编程笔记 Dynamic programming in Py ...
- 【RL系列】从蒙特卡罗方法步入真正的强化学习
蒙特卡罗方法给我的感觉是和Reinforcement Learning: An Introduction的第二章中Bandit问题的解法比较相似,两者皆是通过大量的实验然后估计每个状态动作的平均收益. ...
- 【RL系列】马尔可夫决策过程——状态价值评价与动作价值评价
请先阅读上两篇文章: [RL系列]马尔可夫决策过程中状态价值函数的一般形式 [RL系列]马尔可夫决策过程与动态编程 状态价值函数,顾名思义,就是用于状态价值评价(SVE)的.典型的问题有“格子世界(G ...
- (zhuan) 一些RL的文献(及笔记)
一些RL的文献(及笔记) copy from: https://zhuanlan.zhihu.com/p/25770890 Introductions Introduction to reinfor ...
- 【RL系列】马尔可夫决策过程中状态价值函数的一般形式
请先阅读上一篇文章:[RL系列]马尔可夫决策过程与动态编程 在上一篇文章里,主要讨论了马尔可夫决策过程模型的来源和基本思想,并以MAB问题为例简单的介绍了动态编程的基本方法.虽然上一篇文章中的马尔可夫 ...
- Hibernate学习笔记二:Hibernate缓存策略详解
一:为什么使用Hibernate缓存: Hibernate是一个持久层框架,经常访问物理数据库. 为了降低应用程序访问物理数据库的频次,从而提高应用程序的性能. 缓存内的数据是对物理数据源的复制,应用 ...
随机推荐
- 三、Hadoop 的 API
1.环境搭建 <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop- ...
- Java之变量
Java变量分为类变量.实例变量.局部变量: 类变量包括静态变量: 局部变量:就是本地变量,使用范围:方法,构造器(构造方法),块:销毁:程序执行完或退出立即销毁:局部变量没有默认值,声明的同时必须赋 ...
- netstat命令的用法
netstat用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.利用netstat指令可让你得知整个Linux系统的网络情况.参数:-a或–all 显示 ...
- MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述 # Time: :: # User@Host: **[**] @ [**] Id: ** # Killed: # Query_time: Rows_examined: Rows_affect ...
- python+selenium webdriver.firefox()方式配置浏览器设置
webdriver.firefox() 爬虫需求: (其实是输入参数可获取.zip/pdf 文件,然后点击下载) ——但是firefox浏览器有Bug,点击下载之后会有弹出窗口,需要你点击确定,这怎 ...
- fiddler响应报文的headers属性详解
fiddler响应报文的headers属性详解 (1)Cache头域 1. Cache-Control 在请求报文已经说过了,用于设置缓存的属性,浏览内容不被缓存. 2. Data 生成消息的具体时间 ...
- Artistic Style 3.1
Artistic Style 3.1 Tab 选项 下面的示例显示空白字符.一个空格(space)用一个 . 表示,一个制表符(tab)用 > (大于号) 表示. ** 默认缩进 ** 如果没有 ...
- msys2-x86_64 Mingw64 编译openssl
windows 刚开始编译时提示找不到gcc 添加环境变量export PATH=$PATH:/mingw64/bin$source /etc/profile 将openssl源码复制到C:\msys ...
- 20145202马超《网络对抗》Exp6 信息搜集与漏洞扫描
本实践的目标是掌握信息搜集的最基础技能.具体有(1)各种搜索技巧的应用(2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点(4)漏洞扫描:会扫 ...
- Caliburn.Micro 杰的入门教程5,Window Manager 窗口管理器
Caliburn.Micro 杰的入门教程1(翻译)Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译)Caliburn.Micro 杰的入门教程3, ...