本篇主要是为了记录UCB策略在解决Multi-Armed Bandit问题时的实现方法,涉及理论部分较少,所以请先阅读Reinforcement Learning: An Introduction (Drfit) 的2.7。为了更深入一点了解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);

UCBq(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,称为 。那么80%分类准确度可以表示为:

那么我们直接看结论吧:

UCB的80%分类准确度始终在90%上下,而epsilon-greedy却只有50%左右。显然,UCB在这方面做的要好于epsilon-greedy。

转载本文请联系原作者获取授权,同时请注明本文来自管金昱科学网博客。

链接地址:http://blog.sciencenet.cn/blog-3189881-1122227.html

上一篇:【RL系列】Multi-Armed Bandit笔记补充(二)—— UCB策略

下一篇:【RL系列】Multi-Armed Bandit笔记——Softmax选择策略

MATLAB写UCB算法,科学网—【RL系列】Multi-Armed Bandit问题笔记——UCB策略实现 - 管金昱的博文...相关推荐

  1. 【RL系列】Multi-Armed Bandit问题笔记

    原文地址:http://blog.sciencenet.cn/home.php?mod=space&uid=3189881&do=blog&id=1121466 这是我学习Re ...

  2. 计算机跨学科 自然科学基金资助率,科学网—国家自科基金项目资助的教育类项目 - 蒋金和的博文...

    负责人:张岩 参与人: 金额:290万 批准时间:2015 学科代码:计算机辅助技术 项目批准号:61532001 申请单位:北京大学 研究类型: 关键词: 负责人:万力勇 参与人: 金额:18万 批 ...

  3. MATLAB马尔科夫决策过程遗传,科学网—【RL系列】马尔可夫决策过程与动态编程笔记 - 管金昱的博文...

    推荐阅读顺序: Reinforcement Learning: An Introduction (Drfit) 本篇 马尔可夫决策过程 马尔可夫决策(MDP)过程为强化学习(RL)提供了理论基础,而动 ...

  4. matlab中如何随机排列,科学网—对图片进行拆分并随机排列的快速算法(MATLAB) - 徐磊的博文...

    我手头快完成的一个改进荧光显微镜图像处理的研究项目需要用到拆分一个图片,并对其进行随机排列的功能.之前我写的程序虽然能够得到想要的结果,但是运行太慢,非常耗时.原方法是计算图片被拆分成的各个方格的位置 ...

  5. matlab聚类算法,科学网—matlab-聚类算法笔记 - 孙月芳的博文

    MATLAB提供了两种方法进行聚类分析: 1.利用clusterdata 函数对数据样本进行一次聚类,这个方法简洁方便,其特点是使用范围较窄,不能由用户根据自身需要来设定参数,更改距离计算方法: 2. ...

  6. matlab音乐键盘模拟,科学网—[原][Matlab][04] Midi音乐键盘 - 王楠的博文

    以前在网上读到一个用matlab播canon音乐的源码感觉很有意思,但声音还不够好. 于是想做个自己的音乐播放器,有键盘,有对应的钢琴声音,读取乐谱就能播.如下. (1)按键的音高与频率 从1到下一个 ...

  7. matlab排序 第二条件,科学网—【MATLAB技术贴】矩阵多条件排序 - 崔健的博文

    针对矩阵的多个条件排序问题,可以采用如下函数(以列为例):sortrows 具体参数如下: 1.先按照第二列的升序排序,然后按照第一列的升序排序:sortrows(a,[2,1]) 2.先按照第二列的 ...

  8. matlab pdepe函数边界,科学网-使用MATLAB中pdepe函数求解一维偏微分方程-邓浩鑫的博文...

    由于自己科研水平较低,记录的各种体会更多的是给自己做个小结,错误之处,欢迎大家指正. 使用MATLAB求解偏微分方程或者方程组,大致有三类方法.第一种是使用MATLAB中的PDE Toolbox,PD ...

  9. matlab程序算天气,科学网-站点气温数据的积温计算(含Matlab程序实现)-朱永超的博文...

    活动温度总和(简称积温)是某一段时间内逐日平均气温≥10℃持续期间日平均气温的总和.是研究温度与生物有机体发育速度之间关系的一种指标,从强度和作用时间两个方面表示温度对生物有机体生长发育的影响.一般以 ...

最新文章

  1. 869所高校上榜!2020中国内地大学第三方综合指数排名出炉
  2. Spring Boot + Redis:模拟 10w 人的秒杀抢单!
  3. 梯度下降,损失函数-讲的很好
  4. 我们一直使用的管理系统oner
  5. html5--6-68 实战前的准备工作:了解HTML5大纲算法
  6. python算法的缺陷和不足_决策树基本概念及算法优缺点
  7. Java proxy 子类代理
  8. d3 v5 api select
  9. LeetCode刷题(25)
  10. vue中element-ui table滚动加载
  11. 网络编程之信号(处理僵尸进程的终极办法)之初识信号捕捉器
  12. Eclipse RCP中Viewer交互的三种方式/Make your Eclipse applications richer with view linking
  13. C# 导入word word导入
  14. WPF调色盘(1):绘制三色轮
  15. 关于裁剪CSV文件中的各类数据的代码
  16. torch.bmm()函数解读
  17. motan学习笔记 二 motan架构分析
  18. 漫漫找工路——百度、移动、华为等公司应聘经历总结
  19. kali 局域网断网
  20. 毕业四年多,如梦初醒

热门文章

  1. 面对已知问题和未知问题的解决思路
  2. 网络基本功(二十四):Wireshark抓包实例分析TCP重传
  3. 安卓手机软件开发_这款安卓神器,让你下片更轻松!千万别滥用
  4. js计算金额精度问题--currency.js(2022.11.10 阴)
  5. SpringBoot-数据库连接池(java配置和Yaml配置)
  6. FPGA电源设计方案
  7. Redis基本数据类型和使用场景
  8. 四川一度智信:如何做好店铺数据运营?
  9. unity 多点触控
  10. html语言中hr是什么意思,网页制作中的hr是什么意思