Reinforcement Learning: An Introduction读书笔记(2)--多臂机
> 目 录 <
- k-armed bandit problem
- Incremental Implementation
- Tracking a Nonstationary Problem
- Initial Values
- (*) Upper-Confidence-Bound Action Selection(UCB)
- (*) Gradient Bandit Algorithms
- (*) Associative Search (Contextual Bandits)
> 笔 记 <
k-armed bandit problem:
问题定义:重复地从k个options中选择一个,每次都能得到一个reward(每一个option的reward遵循一个稳定的概率),目标是maximize the total reward。
一个形象的比喻: 医生为若干病人选择治疗方案。
假设我们已经提前知道每个option的expected or mean value,那么每次只需要选择highest value对应的那个action即可;然而一开始我们并不知道该信息or只知道estimated values,那么我们该怎么做呢?我们有两种选择:
choice 1—exploiting--选择greedy action(i.e. 选择具有最大估计值的action);
choice 2—exploring---may produce the greater total reward in the long run。
为了平衡exploiting和exploring,我们可以采用near-greedy action selection rule 的$ \varepsilon $ -greedy 方法,即大部分情况下(概率为 1- $ \varepsilon $)采取choice 1,少部分情况下(概率为$ \varepsilon $)采用choice 2 。其好处是可以让agent通过探索来提升发现最佳action的可能性。
那么如何估计action values?可以采用sample-average method,即取多次reward的均值,公式如下:
书中给出了一个 10-armed bandit的例子,总共进行2000次选择,下图给出了前1000次的对比:

得出结论:(1) greedy method在最开始提升的速度最快,但是后期的表现维持在一个较低的程度;(2) 虽然$ \varepsilon $=0.1比$ \varepsilon $=0.01更早找到optimal action,但最终表现不如$ \varepsilon $=0.01(图中没表现出来,因为还未收敛)。
需要说明的是,$ \varepsilon $-greedy和greedy算法的性能与问题本身密切相关。方差比较大时,前者的优势更明显,但当方差为0时,单纯的greedy算法更好,因为只需要试验一次就可以得到最优action。此外,对于本问题而言,它属于deterministic problem,因为reward和转移函数都是固定的。当问题进一步扩展到nonstationary范畴内,就更需要exploring来适应dynamic。
Incremental Implementation:
如何更有效地计算估计的action values呢?我们一直采用的方法是计算平均值的方式,但弊端是我们需要记录每次的reward (i.e. 下图方法1),导致占用内存空间。为了解决这一问题,我们将公式变形,发现每次value可以通过递推的方式实现 (i.e. 下图方法2,constant memory & constant per-time-step computation),这样就不需要多余的空间来存储历史reward了。

可以写成:

至此,可以给出多臂机的伪代码:

Tracking a Nonstationary Problem:
如果环境变得不再nonstationary (比如多臂机例子中reward probabilities可能会随着时间变化),那么相对很早以前的rewards,我们通常会给recent rewards一个更大的权值来给出value的估计值 (i.e. Q value),为此我们引入一个constant step-size parameter $\alpha$,得到

这种方法叫做exponential recency-weighted average。
Initial Values:
设定Initial action values最简单的方法是全部设成0。更好的一种方法是把initial value设置成一个比真实value大的值(比如文中设成5,实际值是一个满足normal 分布(均值=1)的值),这样all action在开始的时候很快都会被尝试一遍。特别的,如果是stationary problem,我们可以只采用greedy 而不是$ \varepsilon $-greedy method就可以达成目标,但不适用于nonstationary problem,因为没有exploring。
(*) Upper-Confidence-Bound Action Selection(UCB):
$ \varepsilon $-greedy可以让我们实现exploit和explore之间的平衡,但是当我们在explore选择non-greedy action时是随机选取的,有没有更好的方式呢?我们可以在选择的时候重点考虑那些有更大概率是最佳action的集合。
(*) Gradient Bandit Algorithms:
Gradient Bandit Algorithms通过学习每个action的numerical preference来选择action。preference的数值越大,表明该action被选中的几率越大。不同于基于评估的action values来选择action的方法,这里preference的值与reward并没有直接关系,它只是表达了对不同action的喜好。
下图是上述几种算法在不同参数下的performance对比图:

(*) Associative Search (Contextual Bandits):
之前讨论的赌博机问题是很基本的,不存在states的概念,agent学习到的是在任何情况下的最优行动。实际上,完整的RL问题比多臂机问题更复杂,它包含环境状态,新状态取决于之前的行动,并且回报在时间上也可能存在延迟性。上下文赌博机(Contextual Bandits)比之前讨论的赌博机问题更贴近于RL,因为它引入了state的概念。Contextual Bandits中包含多台赌博机,每台机器的arms的回报概率都不同,state可以告诉我们正在操作哪一台机器。agent的学习目标不再是针对单一机器的最优行动,而是针对多台机器。很多个性化新闻/广告推荐系统都是基于Contextual Bandits的。
拓展阅读(Thompson Sampling,Gittins index):https://www.sohu.com/a/221811077_775742

Reinforcement Learning: An Introduction读书笔记(2)--多臂机的更多相关文章
- Reinforcement Learning: An Introduction读书笔记(3)--finite MDPs
> 目 录 < Agent–Environment Interface Goals and Rewards Returns and Episodes Policies and Val ...
- Reinforcement Learning: An Introduction读书笔记(1)--Introduction
> 目 录 < learning & intelligence 的基本思想 RL的定义.特点.四要素 与其他learning methods.evolutionary m ...
- Reinforcement Learning: An Introduction读书笔记(4)--动态规划
> 目 录 < Dynamic programming Policy Evaluation (Prediction) Policy Improvement Policy Iterat ...
- 强化学习读书笔记 - 02 - 多臂老O虎O机问题
# 强化学习读书笔记 - 02 - 多臂老O虎O机问题 学习笔记: [Reinforcement Learning: An Introduction, Richard S. Sutton and An ...
- 《Machine Learning Yearing》读书笔记
——深度学习的建模.调参思路整合. 写在前面 最近偶尔从师兄那里获取到了吴恩达教授的新书<Machine Learning Yearing>(手稿),该书主要分享了神经网络建模.训练.调节 ...
- Machine Learning for hackers读书笔记(六)正则化:文本回归
data<-'F:\\learning\\ML_for_Hackers\\ML_for_Hackers-master\\06-Regularization\\data\\' ranks < ...
- Machine Learning for hackers读书笔记(三)分类:垃圾邮件过滤
#定义函数,打开每一个文件,找到空行,将空行后的文本返回为一个字符串向量,该向量只有一个元素,就是空行之后的所有文本拼接之后的字符串 #很多邮件都包含了非ASCII字符,因此设为latin1就可以读取 ...
- Machine Learning for hackers读书笔记_一句很重要的话
为了培养一个机器学习领域专家那样的直觉,最好的办法就是,对你遇到的每一个机器学习问题,把所有的算法试个遍,直到有一天,你凭直觉就知道某些算法行不通.
- Machine Learning for hackers读书笔记(十二)模型比较
library('ggplot2')df <- read.csv('G:\\dataguru\\ML_for_Hackers\\ML_for_Hackers-master\\12-Model_C ...
随机推荐
- UICollectionView添加 HeaderView FooterView
UICollectionView显示HeaderView FooterView 不如UITableView那么容易,常用会有两种做法: 1.Xib或者Storyboard 在属性一栏中设置一下: 如图 ...
- 使用ILSpy软件反编译.Net应用程序的方法及注意事项
今天遇到之前同事写的代码没有源码了,但是客户要在原来的基础上修改程序!好在没有做加壳处理,所以就用了ILSpy软件进行反编译!下面把步骤及遇到的问题写下来: 1.打开ILSpy软件,点击File , ...
- 【DocFX文档翻译】DocFX 入门 (Getting Started with DocFX)
DocFX 入门 1. DocFX 是什么? DocFX 是一个基于.NET的API文档生成器,当前支持 C# 和 VB. 它可以通过你的代码中的三斜杠注释生成 API 参考文档.同样也支持你使用 M ...
- Cobaltstrike、armitage联动
i 春秋作家:fengzi 原文来自:Cobaltstrike.armitage联动 在使用Cobaltstrike的时候发现他在大型或者比较复杂的内网环境中,作为内网拓展以及红队工具使用时拓展能力有 ...
- 第41节:Java当中的类集框架
Java当中的类集框架 类集框架,那么什么是类集框架,集合的种类有哪些,类集框架的基础结构. 类集框架是一组类和接口的集合,位于java.util包当中,是用来用户存储和管理对象的,在这个类集合框架中 ...
- Metasploit Framework(1)基本命令、简单使用
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 基本的控制台命令介绍: banner 查看metasp ...
- Kali学习笔记12:服务扫描
关于什么是服务扫描不多介绍,通俗来看: 我已经扫描到目标机器某个端口开放,接下来我需要知道开放这个端口的是什么应用 情景: 我的Kali机器IP地址:192.168.22.130 我要扫描的Metas ...
- rabbitmq系统学习(三)集群架构
RabbitMQ集群架构模式 主备模式 实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用且简单.主备模式也称为Warren模式 HaProxy配置 listen r ...
- 操作系统下cache的几个概念
Cache是一种容量比较小,但访问速度比较快存储器.由于处理器的速度远高于主存,处理器直接从内存中存取数据要等待一定周期,而Cache位于处理器与主存之间,保存着最近一段时间处理器涉及到的主存块内容. ...
- [部署]CentOS安装PHP环境
环境 虚拟机:VMWare10.0.1 build-1379776 操作系统:CentOS7 64位 HTTP Server:Apache(httpd) 步骤 PHP环境需要HTTP服务器支持,本文使 ...