目录

  • Multi-armed Bandits 多臂老虎机
    • 问题描述
    • 动作选择
      • ϵ−greedy\epsilon-greedyϵ−greedy
      • UCB算法
      • 梯度赌博机算法
    • 小结

Multi-armed Bandits 多臂老虎机

本节主要是对sutton大神的《强化学习》这本书的相关内容,做了一些笔记,简单介绍了bandits问题的解决思路。

问题描述

多臂老虎机问题即Multi-armed Bandits。是强化学习当中非常经典的问题。

多臂老虎机源于赌博学,问题的描述是这样子的:

一个赌徒,要去赌场玩老虎机,他发现赌场里有一排老虎机,外表长得是一模一样,但是每个老虎机赢钱的概率却不一样,他不知道每个老虎机赢钱的概率分布是什么,那么对这个想要发大财的赌徒来说,每次该选择哪个老虎机才可以做到最大化奖励呢?

我们把选择哪个老虎机看成一个动作 aaa,每个动作对应一个价值 q(a)q(a)q(a),用该动作产生的奖励的期望来表示。那么可以把问题写成数学形式:
q(a)=E[Rt∣At=a]q(a)=E[R_t|A_t=a] q(a)=E[Rt​∣At​=a]
其中,AtA_tAt​ 表示t时刻执行的动作,RtR_tRt​ 表示奖励。那这个期望要如何进行估计?最简单的方法就是计算实际奖励的平均值:
Qt(a)=t时刻前执行动作a得到的收益总和t时刻前执行a的次数Q_t(a)=\dfrac{t时刻前执行动作a得到的收益总和}{t时刻前执行a的次数} Qt​(a)=t时刻前执行a的次数t时刻前执行动作a得到的收益总和​
这种估计方法也叫采样平均法。因为每一次的估计都是对相关奖励的平均。我们进一步只考虑动作 aaa,简化一下符号,假设 RiR_iRi​ 表示该动作被执行 iii 次后获得的奖励,QnQ_nQn​ 表示该动作被选择执行 n−1n-1n−1 次后,第 nnn 次被执行的价值的估计值,则有
Qn+1=1n∑i=1nRi=1n(Rn+(n−1)1n−1∑i=1n−1Ri)=1n(Rn+(n−1)Qn)=Qn+1n[Rn−Qn]=Qn+α[Rn−Qn]\begin{aligned} Q_{n+1}&= \dfrac{1}{n}\sum_{i=1}^n R_i \\ &= \dfrac{1}{n}( R_n+(n-1)\dfrac{1}{n-1}\sum_{i=1}^{n-1} R_i) \\ &= \dfrac{1}{n}( R_n+(n-1)Q_n) \\ &=Q_n+\dfrac{1}{n}[R_n-Q_n] \\ &=Q_n+\alpha[R_n-Q_n] \end{aligned} Qn+1​​=n1​i=1∑n​Ri​=n1​(Rn​+(n−1)n−11​i=1∑n−1​Ri​)=n1​(Rn​+(n−1)Qn​)=Qn​+n1​[Rn​−Qn​]=Qn​+α[Rn​−Qn​]​

此处的步长 α\alphaα 就是 1n\frac{1}{n}n1​ 。像这样步长固定且统一,也就是采样平均法,可以消除采样的偏差。此外,步长也可以是其它的[0,1]区间的参数

动作选择

在动作选择上有两个比较重要的概念,一个是试探(exploration),一个是开发(exploitation)。我们在动作选择时,经常会对每个动作进行估值,以方便衡量动作的好坏。而价值高的动作称为贪心的动作。开发就是选择当前你所知道的关于动作的价值的全部知识,也就是选择贪心的动作,试探则是表示选择非贪心的动作。

在试探过程中,短期的奖励可能较低,但是长期来看,当试探到更优的更优的动作时,带来的收益要比一直按当前策略开发动作的收益大。但是试探也有个缺点,就是需要花很多时间。开发和试探是不可能在一次动作选择中同时进行的,所以如何平衡好试探和开发,也是动作选择里面的一个重要问题。

ϵ−greedy\epsilon-greedyϵ−greedy

前面所讲的动作的选择上采用一种贪心算法,其实就叫 ϵ−greedy\epsilon-greedyϵ−greedy 算法。
At=arg⁡max⁡aQt(a)A_t=\arg\max_a Q_t(a) At​=argamax​Qt​(a)
具体来说就是最大化当前奖励, 大多数下对动作进行贪心的选择,只有在极小的概率 ϵ\epsilonϵ 时才跳出贪心,在其它动作中随机选择。

UCB算法

还有一种动作选择的算法,叫UCB算法(upper confidence bound),即基于置信度上界的方法。因为贪心动作总是只顾眼前的最大奖励,缺少对长远动作的试探,可能会错过最优的动作,而且 ϵ−greedy\epsilon-greedyϵ−greedy 在探索上是随机的,实际上有些动作已经被选择多次了,相对来说不确定性小,而那些不确定的动作还需要被多次探索。UCB则是考虑这一点,将奖励值与动作的不确定性也考虑进去,如下形式:
At=arg⁡max⁡a[Qt(a)+clntNt(a)]A_t=\arg\max_a [Q_t(a)+c\sqrt{\dfrac{lnt}{N_t(a)}}] At​=argamax​[Qt​(a)+cNt​(a)lnt​​]
其中,c表示一个大于0 的常数,用于控制试探的程度,Nt(a)N_t(a)Nt​(a) 表示t时刻前动作a被选择的次数。若 Nt(a)=0N_t(a)=0Nt​(a)=0 ,则a就是满足最大化的动作。UCB的基本思想是,引入置信区间。参数c决定置信水平,简单来说就是决定不确定性的程度。式中右边的平方根项是对动作a的估计值的不确定性度量。随着a被选择的次数增加,也就是 Nt(a)N_t(a)Nt​(a) 增大,右边项就会减小,置信区间就变窄,不确定性就减小,就是说a不再容易被选中,而均值大的也就是价值大的动作则倾向于被选择。另外,如果每次a都没被选择,但随着时间t的增长,右边项的分子也增大,置信区间就变宽,后面再进行选择时a的不确定性就得到增加,也就是说a也有可能再被选中。

梯度赌博机算法

以上的算法都是考虑每个动作的价值来选择动作,梯度赌博机算法换了个思路,不直接考虑动作的价值,而是针对每个动作a,引入一个数值化的偏好函数 Ht(a)H_t(a)Ht​(a),考虑一个动作对另一个动作的相对偏好。Ht(a)H_t(a)Ht​(a) 越大,动作就越倾向于被选择。不过值得注意的是 Ht(a)H_t(a)Ht​(a) 与奖励值无关了,只和一个动作对另一个动作有关。ttt 时刻动作 aaa 被选取的概率可以用一个softmax分布来表示:
Pr(At=a)=eHt(a)∑b=1keHt(b)=πt(a)Pr(A_t=a)=\dfrac{e^{H_t(a)}}{\sum^k_{b=1}e^{H_t(b)}}=\pi_t(a) Pr(At​=a)=∑b=1k​eHt​(b)eHt​(a)​=πt​(a)
随机梯度上升更新偏好函数:
Ht+1(At)=Ht(At)+α(Rt−R‾t)(1−π(At))Ht+1(a)=Ht(a)+α(Rt−R‾t)π(a)foralla≠AtH_{t+1}(A_t)=H_t(A_t)+\alpha(R_t-\overline{R}_t)(1-\pi(A_t)) \\ H_{t+1}(a)=H_t(a)+\alpha(R_t-\overline{R}_t)\pi(a) \;for\; all\;a\neq A_t Ht+1​(At​)=Ht​(At​)+α(Rt​−Rt​)(1−π(At​))Ht+1​(a)=Ht​(a)+α(Rt​−Rt​)π(a)foralla​=At​
R‾t\overline{R}_tRt​ 表示t时刻奖励的均值,如果选择了动作 AtA_tAt​ 后奖励大于当前均值,那该动作下一时刻被选择的概率就会增加,同时其它没有被选择的动作的概率就反方向更新,反之概率降低。这部分可以参考书上的详细推导。

还有一种贝叶斯方法(也叫Thompson采样、后验采样),先假定已知动作价值的初始分布,再每次动作选择后更新分布。

小结

试探和开发如何平衡是一个重要的问题。ϵ−greedy\epsilon-greedyϵ−greedy 贪心算法,就是随机进行动作选择,不考虑试探;UCB算法将动作的不确定性考虑进去,通过每个时刻对那些那些较少样本的动作进行优先选择来实现试探。梯度赌博机算法换了个思路,不估计动作价值了,引入偏好函数,使用softmax分布来概率性的选择动作。

参考

  1. sutton.Barto.《强化学习(第二版)》

强化学习入门1—多臂老虎机Multi-armed Bandits相关推荐

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

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

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

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

  3. 强化学习笔记:多臂老虎机问题(1)

    目录 1. 前言 2. 多臂老虎机问题描述 3. Conlict between exploitation and exploring 4. Action-Value method, 行动-价值方法 ...

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

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

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

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

  6. 强化学习入门及其实现代码

    作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai 介绍 目前,对于全球科学家而言,"如何去学习一种新技能"成为了一个最基本的研究问题. ...

  7. 用深度强化学习玩atari游戏_(一)深度强化学习·入门从游戏开始

    1.在开始正式进入学习之前,有几个概念需要澄清,这样有利于我们对后续的学习有一个大致的框架感 监督型学习与无监督型学习 深度强化学习的范畴 监督型学习是基于已有的带有分类标签的数据集合,来拟合神经网络 ...

  8. 【强化学习入门】梯度赌博机算法中,偏好函数更新:梯度上升公式是精确梯度上升的随机近似的证明

    本文证明强化学习入门问题:K摇臂赌博机的梯度赌博机算法中,偏好函数更新公式:Ht+1(At)=Ht(At)+α(Rt−Rt‾)(1−πt(At))H_{t+1}(A_t) = H_t(A_t) + \ ...

  9. 多智能体强化学习入门

    参考文章:万字长文:详解多智能体强化学习的基础和应用 .多智能体强化学习入门(一)--基础知识与博弈 推荐文章:多智能体强化学习路线图 (MARL Roadmap) 推荐综述论文:An Overvie ...

  10. 强化学习入门这一篇就够了!!!万字长文

    强化学习 强化学习入门这一篇就够了万字长文带你明明白白学习强化学习... 强化学习入门这一篇就够了 强化学习 前言 一.概率统计知识回顾 1.1 随机变量和观测值 1.2 概率密度函数 1.3 期望 ...

最新文章

  1. CMS 被废弃了,该怎么办呢?
  2. Rusty String
  3. 关于正则表达式,我所知道的都在这里
  4. C#正则表达式编程(二):Regex类用法
  5. vue @input带参数_Vue 全家桶开发的一些小技巧和注意事项
  6. visual studio如何中止正在运行的程序
  7. python实现队列_Python学习教程:用队列实现栈
  8. 时间序列-N-CNN-LSTM
  9. 「 机器人学 」“机器人导航技术”浅谈
  10. 龟兔赛跑Description乌龟与兔子在马路上赛跑,马路边可以随地进行休息。
  11. 来自腾讯的高性能服务器架构思路
  12. 6月3日至5日 服务器信息维修,2015年6月3日维护公告
  13. Thinkphp5添加谷歌双重验证
  14. iOS 如何连接打印机
  15. 华为p50预计售价鸿蒙是什么,华为p50预计售价多少_华为p50价格预测
  16. Stream Collectors - joining
  17. vsCode 快捷键
  18. PHP特性整合 php7特性
  19. 张艾迪(创始人):世界最高级创始人
  20. SQL去重是用DISTINCT好,还是GROUP BY好?

热门文章

  1. 直播系统 java_直播系统软件定制开发
  2. python ppt 图片_Python批量导出多个PPT\/PPTX文件中每个幻灯片为独立JPG图片
  3. python 网页设计实践报告_网页设计实习报告范文
  4. IAR for STM8的简介、下载、安装及注册教程
  5. centos 查看版本号方法
  6. 新知实验室--腾讯云TRTC体验
  7. OPTIMIZING DNN COMPUTATION WITH RELAXED GRAPH SUBSTITUTIONS
  8. ISBN号编码规则【转载】
  9. 金蝶移动bos开发教程_移动BOS开发技巧
  10. python字符串赋值列表_Python 第二篇:python字符串、列表和字典的基本操作方法...