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 ...
随机推荐
- 【.NET Core项目实战-统一认证平台】第五章 网关篇-自定义缓存Redis
[.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我们介绍了2种网关配置信息更新的方法和扩展Mysql存储,本篇我们将介绍如何使用Redis来实现网关的所有缓存功能,用到的文档及源码 ...
- 腾讯技术分享:微信小程序音视频技术背后的故事
1.引言 微信小程序自2017年1月9日正式对外公布以来,越来越受到关注和重视,小程序上的各种技术体验也越来越丰富.而音视频作为高速移动网络时代下增长最快的应用形式之一,在微信小程序中也当然不能错过. ...
- HBuilder+eclipse开发:使用ajax异步传值生成首字母索引
使用ajax异步传值生成首字母索引大致有以下几个步骤: 1.服务器端使用servlet提取出数据库里的数据; 2.使用首字母工具类对数据进处理得到首字母; 3.再将首字母和数据一一对应存入json数组 ...
- 提纲挈领webrtc音频处理算法之写在前面的话
最近工作用到了webrtc,发现webrtc是个宝库,里面有很多东西值得好好研究. 搜了这方面不少资料,发现介绍使用webrtc的不少,但是针对里面一些算法研究的 不多.特别是能把算法说的简洁明了的更 ...
- vue axios 简单封装以及思考
先安装 axios npm install axios axios的详细介绍以及用法 就不多说了请 移步 github ➡️ https://github.com/axios/axios 下面是简单 ...
- redis 系列4 数据结构之链表
一. 概述 链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可能通过增删节点来灵活地调整链表的长度.作为一种数据结构,在C语言中并没有内置的这种数据结构.所以Redis构建了自己的链表实现 ...
- Android内存管理篇 - adj的概念与进程adj级别控制
本文主要介绍Android的lowmemorykiller的oom_adj的相关概念,以及根据一些案例来阐述了解oom_adj对于做Android应用开发的重要意义. 一.lowmeorykiller ...
- 扒光IT界江湖骗子巴蜀万明的底裤
扒光IT界江湖骗子巴蜀万明的底裤 北京IT界出了个江湖骗子,名叫万明,常年在北京IT界乃至中国IT界招摇撞骗.因其姓名太过大众化,容易误伤他人,对搜索引擎也不够友好,所以前缀以其招摇撞骗常用的一家空壳 ...
- 我在Fackbook的这三年[转]
本周开始是我在Facebook的第四个年头.我的经验在这里发生了巨大的变化:退学后我就来到了这里,在这里遇到了前所未有的挑战.单从这方面讲,我经历和遇到的挑战比这里4/5的人都要多.所以,我想分享一些 ...
- Python程序员常用的IDE和其它开发工具
概述 “工欲善其事,必先利其器”,如果说编程是程序员的手艺,那么IDE就是程序员的吃饭家伙了. IDE的全称是Integration Development Environment(集成开发环境),一 ...