目录

  • 简介
  • k臂老虎机问题
  • 动作-价值方法
  • 10臂测试平台
  • 增量式实现
  • 跟踪一个非平稳问题
  • 乐观初始值
  • 基于置信度上界的动作选择
  • 梯度赌博机算法
  • 关联搜索(上下文相关的赌博机)

简介

强化学习与机器学习最大的不同,在于前者的训练信号是用来评估给定动作的好坏的,而不是通过给出正确动作范例来进行直接的指导。“评估性反馈”,表明当前采取的动作的好坏程度,但无法确定最好和最坏。“指导性反馈”表示应该选择的正确动作是什么,这是监督学习的基本方式,被广泛用于模式分类、人工神经网络等。

k臂老虎机问题

假设要重复地在k个选项中进行选择。每次做出选择之后,都会得到一定数值的收益,收益值由所选择的动作的平稳概率分布产生。每一次选择相当于拉动老虎机的一个操纵杆,通过多次的重复动作选择,你要学会将动作集中在最好的操作杆上,从而最大化你的奖金。

在这个问题中,每个动作被选择时都有一个期望或者平均收益,可以称之为动作的“价值”,收益和价值是不一样的,收益一般被认为是短期的,而价值是长期的。假设在某时刻t选择的动作记作AtA_tAt​,对应的收益记作RtR_tRt​。任一动作aaa对应的价值,记作q∗(a)q_*(a)q∗​(a),则给定动作aaa时,收益的期望是:

假设RtR_tRt​未知,可以先做估计。将动作aaa在时刻ttt时的价值估计记作Qt(a)Q_t(a)Qt​(a),我们希望它接近q∗(a)q_*(a)q∗​(a)。

如果持续对动作的价值进行估计,那么在任一时刻都会至少有一个动作的估计价值是最高的,我们将这些对应最高估计价值的动作称为贪心的动作。当选择了这些动作时,我们称为“开发”,否则,称为“探索”。为了获得大量的收益,强化学习智能体一定会喜欢那些在过去为它有效产生过收益的动作。但为了发现高收益动作,往往需要尝试为选择过的动作。所谓“开发”已有的经验的同时,进行“探索”。但是我们应该“探索”还是“开发”?这点取决于我们得到的函数估计、不确定性和剩余时刻的精确数值。

动作-价值方法

动作-价值方法,指的是使用价值的估计进行动作的选择。一种自然的方式是通过计算实际收益的平均值来估计动作的价值。

红色框部分的符号表示如果Ai=aA_i=aAi​=a为真,值为1,反之为0。
分子:ttt时刻前通过执行动作aaa得到的收益总和。
分母:ttt时刻前执行动作aaa的次数。
价值函数定义完之后,就需要定义如何根据价值函数选择动作,最简单的方法是选择具有最高估计值的动作,即“贪心动作”。

这种方法利用当前知识来最大化眼前的收益,这种方法根本不花时间去尝试那些劣质动作。贪心策略的一个简单替代策略是大部分时间都表现得贪心,但偶尔(比如以一个很小的概率ε)做出其他选择(等概率的),这种方法称为ε-贪心方法。这个方法的好处是,如果时刻无限长,则每一个动作都会被无限次采样,从而确保所有的Qt(a)Q_t(a)Qt​(a)都能收敛到q∗(a)q_*(a)q∗​(a)。也意味着选择最优动作的概率会收敛到大于1-ε。

10臂测试平台


假设共有10个动作,其动作收益期望q∗(1),q∗(2),...,q∗(10)q_*(1),q_*(2),...,q_*(10)q∗​(1),q∗​(2),...,q∗​(10)由均值为0,方差为1的正态分布生成,每个动作的实际以各自的收益期望为均值,1为方差的正态分布生成,符合上图的灰色部分的数据分布。

如下图所示。

在一个10臂测试平台上比较上述的贪心方法和两种ε贪心方法,贪心方法表现最差,因为它陷入了局部最优解。上图的下半部分也显示了贪心方法只在大约三分之一的任务中找到最优的动作,表明了贪心方法一直局限无法跳出来寻找最优动作。ε-贪心方法会表现得更好。ε=0.1的情况下探索的更多,所以它比ε=0.01更早发现最优解,但从趋势来看,ε=0.01最终会超越ε=0.1。

定性来看,如果动作收益的分布方差更大,说明收益的噪声更多,为了找到最优解,则需要更多的试探(试探),此时ε-贪心方法会比贪心方法好很多,方差为0,那么贪心方法在尝试一次后便能找到最优解。

增量式实现

前面讨论的动作-价值方法都把动作价值作为观测的收益的样本均值来估计,下面讨论如何在保持常数级的内存需求和常数级的单时刻计算量。假设RiR_iRi​表示这一动作被选择i次后获得的收益,QnQ_nQn​表示被选择n-1次后它估计的动作价值,可以简单写作:

但是这种简明的实现需要维护所有这些收益,然后每次估计价值时都需要进行计算。随着已知的收益越来越多,内存和计算量会随着时间增长,每增长一次收益就需要更多的内存存储和计算资源。所以可改成:

使用这个式子对于每一个新的收益,只需要存储QnQ_nQn​和n。表达式Rn−QnR_n-Q_nRn​−Qn​是估计值的误差。误差会随着向“目标”(Target)靠近的每一步而减少。虽然“目标”可能充满噪声,但我们还是假设“目标”会告诉我们可行的方向。一个完整使用增量式计算的样本均值和ε-贪心动作选择的赌博机问题算法的伪代码如下所示,bandit(a)表示接受一个动作并且返回一个对应的收益。

跟踪一个非平稳问题

对于收益的概率分布不随着时间变化的赌博机问题,采取平均方法是可以的,但如果赌博机的收益概率随时间变化,该方法就不合适。如果我们遇到非平稳的强化学习问题。在这种情形下,给近期的收益赋予比过去很久的收益更高的权值可能会更好。例如用于更新n-1个过去的收益的均值QnQ_nQn​的规则改为

这里的aaa是固定步长,aaa的区间是(0,1],这使得Qn+1Q_{n+1}Qn+1​成为对过去的收益和初始的估计Q1的加权平均

上面的式子中,首先有下面的结论

赋给收益RiR_iRi​的权值依赖于它被观测到的当前时刻与具体时刻的差,即n−in-in−i。1−a1-a1−a小于1,因此赋予给RiR_iRi​的权值会随着相隔次数的增加而递减,也就是离现在越远的收益造成的影响越小。所以这个方法也称为“指数近因加权平均”。

乐观初始值

以上讨论的方法都一定程度上依赖于初始动作值Q1(a)Q_1(a)Q1​(a)的选择。如下图所示。

假设初始值从一开始的0,设为+5,+5是乐观的估计,但是这种估计最中还是会被动作-价值方法去探索,因为无论是哪一种动作被选,收益都比最开始的估计值要小,从而转向另一个动作。所以可以看到它的曲线一开始比较不稳定,因为它需要多迭代几次。

基于置信度上界的动作选择

因为对动作-价值的估计总会存在不确定性,所以探索是必须的。贪心动作虽然在当前时刻看起来最好,但实际上其他一些动作可能从长远看更好。ε-贪心算法可能会盲目地选择非贪心的动作,但是最好是能根据动作的潜力来选择。这就要考虑它们的估计有多接近最大值,以及这些估计的不确定性。可以使用下面这个公式选择动作

lntln tlnt表示时刻t的自然对数,Nt(n)N_t(n)Nt​(n)表示在时刻t之前动作aaa被选择的次数。c是一个大于0的数,它控制试探的程度。如果Nt(a)=0N_t(a)=0Nt​(a)=0,则a就被认为是满足最大化条件的动作。
基于置信度上界(upper confidence bound,UCB)的动作选择的思想是,平方根项是对a动作值估计的不确定性或方差的度量。

上图展示了在10臂测试平台上采用UCB算法的结果,并且表现良好,但是和ε-贪心算法相比,它更难推广到更一般的强化学习问题。

梯度赌博机算法

除了可以通过评估动作价值,继而使用估计值选择动作之外。还可以考虑针对每一个动作a,学习一个数值化的偏好函数Ht(a)H_t(a)Ht​(a)。偏好函数越大,动作就越频繁地被选择,但偏好函数的概念并不是从“收益”的意义上提出的。只有一个动作对另一动作的相对偏好才是重要的。如果我们给每一个动作的偏好函数都加上1000,那么按照如下softmax分布确定的动作概率没有影响

πt(a)π_t(a)πt​(a)是一个新的定义,用来表示动作a在时刻t被选择的概率。所有偏好函数的初始值都是一样的,例如对于所有的aaa,其偏好函数都是0。所以每个动作被选择的概率是相同的。

基于梯度上升的思想,在每个步骤,在选择动作AtA_tAt​并获得收益RtR_tRt​之后,偏好函数将会按如下方式更新。

平均收益作为一个基准项,如果收益高于它,那么在未来选择动作At的概率就会增加,反之概率就会降低。未选择的动作被选择的概率上升。

上图是含基准项与不含收益基准项的梯度赌博机算法在10臂测试平台上的平均表现。它们真实的期望收益是按照平均值为+4而不是0的正态分布来选择。所有收益的这种变化对梯度赌博机算法没有影响,因为收益基准项让它可以马上适应新的收益水平。如果没有基准项,那么性能将显著降低。

关联搜索(上下文相关的赌博机)

前面所述皆为非关联任务,对它们来说,没有必要将不同的动作与不同的情境联系起来。当任务是平稳的时候,学习器会试图寻找一个最佳的动作,当任务是非平稳的时候,最佳动作会随着时间的变化而改变,此时它会试着去追踪最佳动作。然而,在一般的强化学习任务中,往往有不止一种情境,它们的目标是学习一种策略:一个从特定情境到最优动作的映射。

假设有一系列不同的k臂赌博机任务,每一步你都要随机地面对其中一个。因此,赌博机任务在每一步都是随机变化的。从观察者的角度来看,这是一个单一的,非平稳的k臂赌博机任务,因为真正的动作价值是每步随机变化的。你可以尝试使用前面描述的处理非平稳情况的方法,但是除非真正的动作价值的改变是非常缓慢,否则这些方法不会有很好的效果。

假设老虎机的外观颜色与它的动作价值集合一一对应,动作价值集合改变的时候,颜色也会改变。现在开始学习一些任务的策略,例如,用你所看到的颜色作为信号,把每个任务和该任务下最优的动作关联起来,比如,如果为红色,则选择1号臂,如果为绿色,则选择2号

【强化学习】多臂老虎机相关推荐

  1. 利用强化学习控制机械臂

    机械臂的组成 三个关节和两个链接组成 Robotics environments 在这篇文章中,我们将抽象化在现实世界中构建机械臂的复杂性.我们将使用一个模拟机器人环境的程序代替实际的硬件. 无论您是 ...

  2. 强化学习的学习之路(十)_2021-01-10:K臂老虎机介绍及其Python实现

    作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助.这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学 ...

  3. 从多臂老虎机开始学习强化学习中的探索与利用

    从多臂老虎机开始学习强化学习中的探索与利用 \quad 目录 从多臂老虎机开始学习强化学习中的探索与利用 多臂老虎机问题 形式化描述 估计期望奖励 代码实现 策略中的探索与利用 ϵ\epsilonϵ- ...

  4. 强化学习——day31 多臂老虎机MAB的代码实现(Python)

    多臂老虎机MAB的代码实现 2.3 算法基本框架搭建 2.4 epsilon贪心算法 2.4.1 参数为0.01的绘图 2.4.2 不同的参数 2.4.3 值随时间衰减的 epsilon-贪婪算法 2 ...

  5. 【科普】强化学习之多臂老虎机问题(bandit算法:softmax,random,UCB)

    本博客上的文章分为两类:一类是科普性文章,以通俗易懂的语言风格介绍专业性的概念及其应用场景(公式极少或没有),适合入门阶段.另一类是专业性文章,在科普阶段上做出详细的专业性数学推导,深刻理解其概念的内 ...

  6. 强化学习笔记:多臂老虎机问题(2)--Python仿真

    目录 0. 前言 1. k_armed_bandit function 2. The first trial 2.1 Optimal selection ratio along the time 2. ...

  7. 强化学习笔记:多臂老虎机问题(4)--跟踪非平稳环境

    目录 0. 前言 1. 问题描述 2. 练习1 3. 练习2 3.1 k_armed_bandit_one_run()接口扩张 3.2 Comparison in stationary environ ...

  8. 强化学习笔记:多臂老虎机问题(7)--Gradient Bandit Algorithm

    目录 0. 前言 1. 算法原理 2. Python仿真 2.1 函数改造 2.2 softmax() 2.3 改造后的k_armed_bandit_one_run() 2.4 对比仿真 2.5 一点 ...

  9. 强化学习笔记:多臂老虎机问题(6)--Upper Confidence Bound

    目录 0. 前言 1. 算法原理 2. Python仿真 2.1 k_armed_bandit_one_run()改造 2.2  仿真对比Epsilon-greedy方法和UCB方法 3. 习题 0. ...

  10. 强化学习の学习笔记(一)——多臂老虎机、ε-greedy策略、乐观初始值、增量式实现、梯度赌博机

    文章目录 前言 符号约定 多臂老虎机 基于平均学习Q函数 ε-greedy策略 乐观初始值 增量式实现 梯度赌博机 前言 因为毕设的关系,要学习点强化学习的内容.我采用的教材是Richard S. S ...

最新文章

  1. 【解决方案】from pip import main
  2. SQLI_LAB——Less7~15
  3. 在Tomcat上跑东西时遇到的对我这样新手来说很难找到的问题
  4. test6 3-21 2021省选模拟赛six
  5. 通过修改注册表,实现网页链接中的私有协议启用本地exe进程
  6. linux 关闭自动升级,开启关闭Centos的自动更新(转)
  7. 软件设计师考试笔记:UML统一建模语言
  8. 计算机组成原理运算器设计,计算机组成原理2_5教学计算机运算器设计.ppt
  9. 缩放浏览器不会换行_深入解析 EventLoop 和浏览器渲染、帧动画、空闲回调的关系...
  10. 原型图APP尺寸大小
  11. 目前网站挂马检测工具有哪些?如何防止网站被挂马!
  12. PLC中忘记cpu密码怎么办?
  13. 排队叫号python编程_排队叫号系统源程序
  14. 声音均衡器怎么调好听_酷狗均衡器怎么调好听 - 卡饭网
  15. Codeforces 596D Wilbur and Trees
  16. java导出excel表格设置行高_EasyExcel之不使用对象灵活生成Excel,并且调整行高、自动列宽与自由合并...
  17. 攻防世界各类题目相关
  18. web课程设计网页规划与设计:个人毕设网站设计 —— 二手书籍(11个页面) HTML+CSS+JavaScript
  19. 科创人·36氪副总裁王坤:企服产品应重视使用者体验,36氪将推出中国版「魔力象限」
  20. 游戏党注意了,超80款Steam游戏可在优麒麟上畅玩

热门文章

  1. 文科生都能看得懂的贝叶斯定理,从白袜到飞机失事再到人工智能
  2. 山大中心校区计算机课在哪,山东大学有几个校区,哪个校区最好及各校区介绍...
  3. 京瓷TCL太阳能在日本福井县建设共计3.4MW光伏电站
  4. Java身份证号码校验
  5. HTML页面基本结构浅谈
  6. 湖南工业大学计算机学院有哪些社团,湖南工业大学学生社团联合会
  7. 2019零售业9大新知洞察发布,零售服务在线采购节启动
  8. 字节二面、三面面经及内推
  9. 【UE4】 自定义编辑器的放置Actor窗口
  10. keil4 代码折叠功能的使用