欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。 技术交流QQ群:433250724,欢迎对算法、技术感兴趣的同学加入。

18年新开一个强化学习方法系列,督促自己能够再不断扩充知识并分享给更多的同学。其实前面写的机器学习方法系列和深度学习方法系列,也都还没有写够,平时工作比较忙,更新很慢,但是我还是会努力更新的。今天开始记录一些强化学习的知识,这些内容以前多少都学习过,但是没有系统地整理成文字,现在权当是再复习一下了。

申明:我写的笔记有参考了很多优秀的网络资源,毕竟我是以整理、分享为目的,并没有任何商业目的;引用的地方我会给出原出处,如有不当请指正。


探索-利用困境exploration-exploitation dilemma

强化学习一个非常基础但又非常重要的概念就是探索和利用问题,举个例子来体会一下:

假设你家附近有十个餐馆,到目前为止,你在八家餐馆吃过饭,知道这八家餐馆中最好吃的餐馆可以打8分,剩下的餐馆也许会遇到口味可以打10分的,也可能只有2分,如果为了吃到口味最好的餐馆,下一次吃饭你会去哪里?

所谓探索:是指做你以前从来没有做过的事情,以期望获得更高的回报。所谓利用:是指做你当前知道的能产生最大回报的事情。那么,你到底该去哪家呢?这就是探索-利用困境。

如果你是以每次的期望得分最高,那可能就是一直吃8分那家餐厅;但是你永远突破不了8分,不知道会不会吃到更好吃的口味。所以只有去探索未知的餐厅,才有可能吃到更好吃的,同时带来的风险就是也有可能吃到不和口味的食物。

这个例子只是用于找找感觉,后面会讨论多臂赌博机问题的时候再来多讨论一下。一般基本的最常用的随机策略为 ε−greedy\varepsilon-greedyε−greedy策略(抖动策略):

这里我还没有仔细介绍强化学习的基本概念,我想先给一个很初的印象就行。上面s是指当前的状态,a是采取的行动,|A(s)|是指s状态下可以采取行动的总数量,Q是动作值函数,表示对未来奖励的估计。具体在以后讲到基本强化学习方法的时候会再具体解释。这个策略是比贪婪策略稍微复杂一点,意思是说,我会以ε\varepsilonε概率随机选择任何一个动作,否则选择Q最大的动作。该策略称为抖动策略。

  • 利用抖动策略的好处是:
    (1) 抖动策略计算容易,不需要复杂的计算公式。
    (2) 能保证充分探索所有状态。
  • 当然相应的坏处是:
    (1) 需要大量探索,数据利用率低。
    (2) 需要无限长时间(取决于状态的数量以及ε\varepsilonε大小)。

多臂赌博机问题 Multi-armed Bandit Problem##

假设你面前有一排摇臂机,它们的期望回报有差别,显然你希望在最终博弈时尝试胜率更高的那个。多臂赌博机的问题是:你按压哪个臂能得到最大的回报?(以下分析参考[1])

问题分析:在多臂赌博机问题中,我们有个假设:即按压摇臂后,每个臂获得的回报服从不同的概率分布,在基本问题中,它们的期望是稳定的。比如获得金币的概率是不同的。比如按压摇臂1, 获得金币的概率是0.8;按压摇臂2,获得金币的概率是0.3;按压摇臂3,获得金币的概率是0.6

那么你按压哪个臂能得到最大的回报?很简单:当然选择摇臂1。但是:**问题的难点是你并不知道每个臂获得回报的概率!**那么你该按压哪个臂呢?

这就引出了多臂赌博机的探索-利用困境的问题:刚开始你并不知道哪个臂给出回报的概率大,所以你很可能每个臂都试一试,然后你会记住按压每个臂的结果。根据这些结果,你会粗略的估计每个臂给出回报的概率。假如说你每个臂都按了几次,并观察到按压每个臂时有没有获得回报,那么下一步你该按哪个臂呢?

  • 利用(exploitation): 如果你按压在前几轮中获得回报概率最高的那个臂,这就是你在利用(exploitation)。但是,因为回报是随机的,你对每个臂的回报概率的估计并不准确,或许回报概率最高的那个臂并非当前你用几轮数据估计的那个臂。

  • 探索(exploration):如果你并不去按压在前几轮中获得回报的那个臂,而是继续随机地去按压不同的臂,目的是得到每个臂给出回报更精确的概率估计,从而可能得到真实的那个最优的臂。

现在你只有有限次权限去按压摇臂,为了得到最大的回报,这两种方案你选哪个?
一个折中的策略是:大部分时间你去利用(exploitation),但同时以一定的概率去探索(exploration),这就是探索-利用平衡。现在问题就变成:你应该以多大的概率去利用,以多大的概率去探索呢?

  • 策略(policy):策略是指你怎么选择动作(即你如何选择按压哪个臂。)。
  • 有悔(regret):用来评价策略的好坏。其定义为:你采用一定的策略后获得的回报与最好回报之间的差值。

多臂赌博机的问题引起了很多数学家的兴趣。1985年Lai and Robbins在他们的经典书籍《Bandit Problems: sequential allocation of experiments》中给出数学上的证明,存在一个指标策略(index policy)使得该指标策略渐进收敛到最优策略。所谓指标策略就是:你需要根据以往的试验结果对每个臂构建一个指标(或者是一个函数),根据这些指标选择下一个摇臂。

我们可以这样理解,在贪婪策略(exploitation)中, 每个臂的指标是该臂的平均回报。因此其指标策略就是贪婪策略,即选择指标(平均回报)最大的那个臂作为下一次的摇臂。Lai and Robbins 给出证明,渐进收敛的指标策略应该是上确界(UCB)策略。然而,Lai and Robbins并没有给出一个简单的具有一般性的构造上确界函数的方法,1995年,Agrawal在他的论文《Sample mean based index policies with O(logn) regret for the multi-armed bandit problem》中给出了一般的构造指标策略的方法。直到2002年 Peter Auer在他的论文《Finite-time Analysis of the Multiarmed Bandit Problem》提出一个及其简单而被广泛使用的指标策略UCB1策略:

选择所有臂中,指标 xˉj+2ln⁡nnj\bar{x}_j+\sqrt{\frac{2\ln n}{n_j}}xˉj​+nj​2lnn​​ 最大的臂作为下一次按压的臂,其中 xˉj\bar{x}_jxˉj​ 为观测到的第j个臂的平均回报, njn_jnj​ 为 目前为止按压第j个臂的次数,nnn为到目前为止按压所以臂的次数和。UCB1策略平衡了利用和探索,因为第一项是利用,第二项是探索。UCB1背后的原理是最优化探索。可以证明,采用UCB1策略,Regret的上限是:

其中Δi=μ∗−μi\Delta_i = \mu^* -\mu_iΔi​=μ∗−μi​。可以看到,采用UCB1策略,有悔的值随着按压总次数呈对数增长,即O(ln(n))O(\mathbf{ln}(n))O(ln(n)),而采用常值的探索策略比如前面提到的抖动策略,其有悔的值随按压总次数线性增长,O(n)O(n)O(n)。对数增长啥意思?就是采用UCB1策略,随着摇臂次数线性增长,有悔的增长会越来越缓慢(但还是会一直增长),也就是说获得的回报会更接近最佳回报。

在UCB1的论文中还提到了其他几种UCB策略,以及一种εn−greedy\varepsilon_n-greedyεn​−greedy 策略,具体可以参考论文[2]

下面是一个实验,以作示意:

论文实验部分实际上又稍作修改,把UCB1换成了UCB1-tuned,原因是作者发现UCB1-tuned在实验中的表现总是比UCB1好一些,但是作者没法给出UCB1-tuned的regret bound。UCB1-tuned定义如下:

xˉj+ln⁡nnjmin⁡{1/4,Vj(nj)}Vj(nj)=1s∑τ=1sXj,τ2−Xˉj,s2+2ln⁡ts\bar{x}_j+\sqrt{\frac{\ln n}{n_j}} \min\{1/4, V_j(n_j) \}\\ V_j(n_j) = \frac{1}{s} \sum_{\tau=1}^{s}X_{j,\tau}^2 - \bar{X}_{j,s}^2 + \sqrt{\frac{2\ln t}{s}}xˉj​+nj​lnn​​min{1/4,Vj​(nj​)}Vj​(nj​)=s1​τ=1∑s​Xj,τ2​−Xˉj,s2​+s2lnt​​

Vj(nj)V_j(n_j)Vj​(nj​)as un upper confidence bound for the variance of machine j . As before, this means that machine j , which has been played s times during the first t plays, has a variance that is at most the sample variance plus 2ln⁡ts\sqrt{\frac{2\ln t}{s}}s2lnt​​.


上面介绍的MAB问题以及UCB只是最基本的问题和解法,更详细的发展还有非常多算法,建议参考[3]进行深入阅读,后面我也会在有必要时进行补充解读(工作之余时间太有限了…),本篇入门就先到这里。MAB问题是我觉得非常有趣的一类问题,在现实场景有很多应用。下面若干篇会先介绍一下MCTS和AlphaGo的一些技术知识,让大家对强化学习到底可以做到什么程度有一个了解,然后会回到RL的基本知识从简入深进行算法介绍。

参考资料

[1] 高级强化学习系列 第二讲 探索-利用困境(exploration-exploitation dilemma)
[2] Finite-time Analysis of the Multiarmed Bandit Problem
[3] Bandit Algorithms http://banditalgs.com/
[4] Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto

强化学习方法(一):探索-利用困境exploration exploitation,Multi-armed bandit相关推荐

  1. 配对交易方法_COVID下的自适应配对交易,一种强化学习方法

    配对交易方法 Abstract 抽象 This is one of the articles of A.I. Capital Management's Research Article Series, ...

  2. NeurIPS 2020 | 一种基于动作采样的简单高效的正则化强化学习方法

    编者按:现有的强化学习方法通常通过熵正则化的方式控制最优策略的随机性,以保证训练过程中的良好探索以及目标策略的鲁棒性.然而,熵正则化的强化学习方法通常会面临表达能力有限的策略结构和复杂低效的训练过程之 ...

  3. 基于策略梯度的强化学习方法及算法理论基础

    往期博客: 基于值函数逼近的强化学习方法 Policy gradient 算法思想 基于策略: Policy gradient 是 RL 中另外一个大家族, 他不像 Value-based 方法 (Q ...

  4. 城市轨道交通高峰时段客流协调控制的强化学习方法

    1.文章信息 <Reinforcement learning approach for coordinated passenger inflow control of urban rail tr ...

  5. 论文研读笔记(五)——通过单机器人进化策略搜索增强多机器人导航的深度强化学习方法

    通过单机器人进化策略搜索增强多机器人导航的深度强化学习方法(Enhancing Deep Reinforcement Learning Approaches for Multi-Robot Navig ...

  6. 单轨铁路列车重新调度的强化学习方法

    1. 文章信息 <Reinforcement learning approach for train rescheduling on a single-track railway>是201 ...

  7. 交通流优化:一种强化学习方法

    1. 文章信息 <Traffic flow optimization: A reinforcement learning approach>是2016年发表在Engineering App ...

  8. 机器学习cae_用AI设计微波集成电路,清华大学等提出深度强化学习方法RINN

    选自arXiv,作者:Jie Liu等,机器之心编译. 近日,创天科技.清华大学.杭州电子科技大学.西安电子科技大学发布了一篇论文,提出一种新型神经网络架构 Relational Induction ...

  9. 基于值函数逼近的强化学习方法

    基于值函数逼近的强化学习方法 1.表格型强化学习方法 2.值函数逼近方法理论 2.1 值函数逼近方法的分类 2.2.值函数逼近和表格型强化学习方法的比较 2.3.参数化逼近 2.4.增量式学习方法 2 ...

  10. 图像风格迁移cvpr2020_CVPR 2020 | 浙大李俊成:用无监督强化学习方法来获得迁移能力...

    作者 | 李俊成编辑 | 蒋宝尚 本文是对浙江大学和加州大学圣巴巴拉分校合作完成的,被CVPR 2020收录的论文<Unsupervised Reinforcement Learning of ...

最新文章

  1. MySQL体系结构之物理文件
  2. python有什么用处案例_用实例解释Python中的继承和多态的概念
  3. LeetCode 54. Spiral Matrix--Python解法--螺旋排序
  4. 跨链(2)跨链技术“分布式私钥控制”
  5. ORA-12541:TNS没有监听器
  6. [编程题]表达式合法判断
  7. 您没有足够的全新为该计算机所有用户安装,我用的是admin管理员身份可安装软件弹出你没有足够的权限为该计算机所有用户完成此安装.请以管理员的身份登...
  8. win10下安装mysql5.7.16(解压缩版)
  9. select 与case 以及函数练习
  10. 什么是思考?如何主动思考?
  11. 在vue中使用plupload上传图片到七牛(着重解决moxie is not defined问题)
  12. JDK 安装教程——图文细讲
  13. 如何去掉firefox启动就是360主页 小白实操记录
  14. 微信小程序开发者下不验证https协议的操作
  15. [fairseq] 报错:TypeError: _broadcast_coalesced(): incompatible function arguments
  16. XGBoost股票预测
  17. 学计算机硬盘电脑多大好,笔记本电脑固态硬盘要多大的合适
  18. 关于自建ip池可能出现的问题
  19. 英文pdf文件的翻译问题
  20. 【雷达基础知识】-------德雅村支书第三更(雷达距离方程的讲解,原创内容,转载请标注德雅村支书)

热门文章

  1. 这个社会在极严厉地惩罚不好好读书的人
  2. 【python】案例十 字符串中的逆天函数
  3. python公式_python公式大全
  4. 【转】PIC单片机的 程序存储器,数据存储器,EEPROM区别
  5. 技术类—Java笔试题2018
  6. 计算平均指令时间_上海原油期货将推出TAS指令
  7. 智邦科技亮相2019 ODCC峰会,为开放网络提供弹性解决方案
  8. 转眼间十年过去了,还记得曾经红遍大江南北的这首歌吗?
  9. html5实现图片无缝滚动,原生javascript实现图片无缝滚动效果,javascript无缝滚动...
  10. 去除浏览器的hao123导航主页绑定