【强化学习-读书笔记】多臂赌博机 Multi-armed bandit

参考 
Reinforcement Learning, Second Edition  
An Introduction 
By Richard S. Sutton and Andrew G. Barto

强化学习与监督学习

强化学习与其他机器学习方法最大的不同,就在于前者的训练信号是用来评估(而不是指导)给定动作的好坏的。

强化学习:评估性反馈
有监督学习:指导性反馈


价值函数

最优价值函数,是给定动作 a a a 的期望,可以理解为理论最优
q ∗ ( a ) ≐ E [ R t ∣ A t = a ] q_*(a) \doteq\mathbb{E}[R_t|A_t=a] q(a)E[RtAt=a]
我们将算法对动作 a a a 在时刻 t t t 时的价值的估计记作 Q t ( a ) Q_t(a) Qt(a),我们希望它接近 q ∗ ( a ) q_*(a) q(a)


利用(Exploit)与探索(Explore

利用:选择最高估计价值的动作(贪心)
探索:选择非贪心的动作


动作-价值方法(基于价值的方法)

思想:对价值进行估计,来选择动作。

采样平均方法

Q t ( a ) ≐ t 时刻前执行动作 a 得到的收益总和 t 时刻前执行动作 a 的次数 = ∑ i = 1 t − 1 R i 1 A i = a ∑ i = 1 t − 1 1 A i = a Q_t(a)\doteq \frac{t时刻前执行动作a得到的收益总和}{t时刻前执行动作a的次数}=\frac{\sum_{i=1}^{t-1} R_i \mathbf{1}_{A_i=a}}{\sum_{i=1}^{t-1} \mathbf{1}_{A_i=a}} Qt(a)t时刻前执行动作a的次数t时刻前执行动作a得到的收益总和=i=1t11Ai=ai=1t1Ri1Ai=a

贪心动作选择

最简单的动作选择规则是选择具有最高估计值的动作,即贪心动作
A t ≐ arg ⁡ max ⁡ a Q t ( a ) A_{t}\ \doteq \ {\arg \max_a}\ Q_{t}(a) At  argamax Qt(a)
缺点:不能持续探索(虽然可以乐观初始化在开始阶段进行探索)
乐观初始化:对于纯粹贪心策略,可以把每一个初始值 Q 0 ( a ) Q_0(a) Q0(a)都设置得更大,从而鼓励算法在算法刚开始的时候尝试其他状态。因为一开始获得奖励之后都把 Q 0 ( a ) Q_0(a) Q0(a)降低了。

ϵ \epsilon ϵ-贪心方法

以小概率 ϵ \epsilon ϵ随机选择动作, 1 − ϵ 1-\epsilon 1ϵ 贪心选择
在这里插入图片描述

在这里插入图片描述

两者都并不是完美的

贪心动作虽然在当前时刻看起来最好,但实际上其他一些动作可能从长远看更好
ϵ \epsilon ϵ-贪心算法会尝试选择非贪心的动作,但是这是一种盲目的选择,因为它不大会去选择接近贪心或者不确定性特别大的动作


增量更新、平稳/非平稳问题

为了计算效率,采用增量更新:
Q n + 1 = Q n + 1 n [ R n − Q n ] Q_{n+1} = Q_n + \frac{1}{n}[R_n - Q_n ] Qn+1=Qn+n1[RnQn]

此时 α = 1 n \alpha = \frac{1}{n} α=n1,适合平稳分布的问题,但是如果 bandit 背后的分布是会变化的,那么 α \alpha α 应该采用 > 1 n >\frac{1}{n} >n1 ,从而给更靠近的奖励更大的权重。


UCB

置信度上界 (upper confidence bound, UCB)——平衡了 探索与利用
A t ≐ a r g max ⁡ a [ Q t ( a ) + c ln ⁡ t N t ( a ) ] A_{t}\ \doteq \ {\mathrm{arg}}\max_a\left[Q_{t}(a)+c\sqrt{\frac{\ln t}{N_{t}(a)}}\,\right] At  argamax[Qt(a)+cNt(a)lnt ]

左边:利用平均奖励大的动作
右边:鼓励探索访问次数少的动作,但是同时要考虑到其他非 a a a 的状态的访问次数,用 t t t近似。每次选 a a a之外的动作时,在分子上的 ln ⁡ t \ln t lnt增大,而 N t ( a ) N_t(a) Nt(a) 却没有变化,所以不确定性增加了

UCB一般来说比贪心、 ϵ \epsilon ϵ-贪心 要好。

在这里插入图片描述

UCB 的缺点:

  1. 处理非平稳问题时,需要一些更复杂的 tricks, 不能仅仅使用这样的策略。
  2. 处理不了很大的状态空间。

上下文赌博机(Contextual Bandit)

普通的赌博机:算法每一次选择新动作的时候,没有额外的环境信息。
上下文赌博机:算法每一次选择新动作的时候,有额外的环境信息

也许你面对的是一个真正的老虎机、它的外观颜色与它的动作价值集合一一对应,动作价值集合改变的时候,外观颜色也会改变.那么,现在你可以学习一些任务相关的操作策略,例如,用你所看到的颜色作
为信号,把每个任务和该任务下最优的动作直接关联起来,比如,如果为红色, 则选择1号臂 ;如果为绿色,则选择2号臂。有了这种任务相关的策略,在知道任务编号信息时,你通常要比不知道任务编号信息时做得更好。
——《RL》

上下文赌博机介于多臂赌博机问题和完整强化学习问题之间。它与完整强化学习问题的相似点是,它需要学习一种策略,但它又与多臂赌博机问题相似,体现在每个动作只影响即时收益。

总结

在多臂赌博机问题来说,一般来说,UCB是比贪心, ϵ \epsilon ϵ-贪心更好的
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/267822.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

酒店管理平台

SSM MySQL Spring SecurityLayui等技术实现的管理系统 技术栈 后端: 核心框架:SSM 持久层框架:MyBatis 权限框架:Spring Security 分页插件:PageHelper 数据库&#xff…

react中img引入本地图片的方式

在html文件中&#xff0c;可以直接<img src./roadBook.png /> 但是在jsx文件中&#xff0c;不支持这种写法 必须这样写 在css样式中 App.css .img{background: url(./img/roadBook.png) }App.js import ./App.css;<div classNameimg></div> 1.基于es6Mod…

uniCloud(二) 使用数据库、前端展示数据

一、在云服务空间的云数据库中新建一张表 &#xff08;1&#xff09;它有两种方式&#xff0c;我暂时手动创建一张表 &#xff08;2&#xff09;修改表结构&#xff1a;权限read为true &#xff08;3&#xff09;添加数据记录 注意&#xff1a;需要一条一条的加入 二、在前端…

宿舍智能电能表预付费系统的费控策略及应用

安科瑞电气股份有限公司 上海嘉定 201801 摘要:基于智能电能表的预付费系统平台可以实现对预付费客户的适时算费、远程费控和服务。预付费系统的费控策略包括算费子策略、催费预警提醒子策略、欠费停电子策略,介绍3个子策略的制定原则、设计流程,并以示例说明策略的实现方式,通…

Kubeadm 方式部署K8s集群

环境 主节点CPU核数必须是 ≥2核且内存要求必须≥2G&#xff0c;否则k8s无法启动 主机名地址角色配置kube-master192.168.134.165主节点2核4Gkube-node1192..168.134.166 工作节点2核4Gkube-node2192.168.134.163工作节点2核4G 1.获取镜像 谷歌镜像[由于国内网络原因…

C++ 指针常量和常量指针的区别

指针常量 指针常量&#xff1a;顾名思义它就是一个常量&#xff0c;但是是指针修饰的。 格式为&#xff1a; int * const p //指针常量在这个例子下定义以下代码&#xff1a; int a&#xff0c;b&#xff1b; int * const p&a //指针常量 //那么分为一下两种操作 *p9;//操…

Dockerfile创建镜像介绍

1.介绍 Docker 提供了一种更便捷的方式&#xff0c;叫作 Dockerfile&#xff0c;docker build命令用于根据给定的Dockerfile构建Docker镜像。 docker build语法&#xff1a; # docker build [OPTIONS] <PATH | URL | -> 常用选项说明 --build-arg&#xff0c;设置构建时的…

【matlab】拆雷的程序

前言 法术的仙意&#xff0c;无法遮盖你千年的痴迷。——《仙逆》 \;\\\;\\\; 目录 前言拆雷 拆雷 function Bomb(n,mm) clear; close; if nargin ~ 2n [22,18];mm 65; end if mm 1 > n(1) * n(2)error(Setting error); endf1 figure(Name,Bombs,NumberTitle,off,Colo…

亚马逊S3V4验签与MINIO验签区别

1、先看下官方文档 AWS S3V4 DEMO 2、实际调用试试 1&#xff09;代码 // 计算auth// for a simple GET, we have no body so supply the precomputed empty hashMap<String, String> headers new HashMap<String, String>();headers.put("x-amz-content…

2024年程序员必须掌握的10款开发工具

Chat GPT的升级节奏让人们越来越惊讶的同时&#xff0c;也让大家感觉到了压力&#xff0c;在如此快节奏的互联网世界中&#xff0c;开发人员需要不断学习与更新知识&#xff0c;保持领先地位并高效地交付高质量软件。 无论是集成开发环境 (IDE)、版本控制系统、测试工具、协作…

gcc tips - GCC使用技巧与高级特性

目录 1. 获取 GCC 编译器预定义的宏 2. 列出依赖的头文件 3. 保存预处理结果到文件&#xff08;展开define, 展开include header&#xff09; 4. 写回调跟踪记录函数运行 -finstrument-functions 5. -fdump-rtl-expand 画函数调用关系图 GCC&#xff0c;全称GNU Compiler …

利差是什么?anzo Capital昂首资本换个角度学利差

在交易论坛上最常问也是问的最多的一个问题就是“外汇中的利差是多少?”&#xff0c;今天让anzo Capital昂首资本换个角度试着找出答案。 在现代生活中&#xff0c;我们必须为商品和服务付费&#xff0c;包括金融市场上提供的商品和服务。同样的在金融市场中也需要为商品和服…