【强化学习-读书笔记】多臂赌博机 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.mzph.cn/news/215909.shtml

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

相关文章

第21章网络通信

网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。Java 已经将网络程序所需要的元素封 装成不同的类,用户只要创建这些类的对象,使用相应的方法,即使不具备有关的网络支持,也可 以编写出高质量的网络通信程序…

2023年【危险化学品生产单位安全生产管理人员】考试题库及危险化学品生产单位安全生产管理人员考试技巧

题库来源:安全生产模拟考试一点通公众号小程序 危险化学品生产单位安全生产管理人员考试题库是安全生产模拟考试一点通总题库中生成的一套危险化学品生产单位安全生产管理人员考试技巧,安全生产模拟考试一点通上危险化学品生产单位安全生产管理人员作业…

【教程】制作 iOS 推送证书

如需向 iOS 设备推送数据,您首先需要在消息推送控制台上配置 iOS 推送证书。iOS 推送证书用于推送通知,本文将介绍消息推送服务支持的证书类型,并引导您制作 iOS 推送证书。 证书类型 消息推送服务仅支持 Apple Push Service 类型的证书。有…

竞赛保研 LSTM的预测算法 - 股票预测 天气预测 房价预测

0 简介 今天学长向大家介绍LSTM基础 基于LSTM的预测算法 - 股票预测 天气预测 房价预测 这是一个较为新颖的竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 1 基于 Ke…

互联网公司,哪个部门才是鄙视链最顶端?

文章目录 每日一句正能量前言财务部法务部公关部销售部前台行政IT部创意部后记 每日一句正能量 我们必须在失败中寻找胜利,在绝望中寻求希望。 前言 在互联网公司中,不同职位的鄙视链是存在的。有些职位享有高尚的地位,而有些则被看作是次要…

python 爬虫 m3u8 视频文件 加密解密 整合mp4

文章目录 一、完整代码二、视频分析1. 认识m3u8文件2. 获取密钥,构建解密器3. 下载ts文件4. 合并ts文件为mp4 三、总结 一、完整代码 完整代码如下: import requests import re import os from tqdm import tqdm from Crypto.Cipher import AES# 创建临…

Shopify二次开发之五:元字段(Metafields)

目录 解释 操作 1、添加Custom data 2、选择特定类型的数据 3、为Page配置元子段和值 4、模板访问 解释 Shopify Metafields 是一种用于存储和管理自定义数据的功能。它们允许商户在商城中的产品、订单、客户、Page等对象上添加自定义字段,以满足特定业务需求…

c语言->自定义类型联合体和枚举类型

系列文章目录 文章目录 前言 ✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:橘橙黄又青_C语言,函数,指针-CSDN博客 目的:学习联合体和枚举类型的…

Kubernetes实战(八)-防止k8s namespace被误删除

1 背景 运维新同学在预发环境操作删除pod的时候,不知道什么原因把kubectl delete pod命令敲成了kubectl delete ns pre把预发环境删了,几十个模块,将近一个小时才恢复。幸亏是测试环境啊,如果是生产可以可以跑路了。 2 解决方案…

jsonpath:使用Python处理JSON数据

使用Python处理JSON数据 25.1 JSON简介 25.1.1 什么是JSON JSON全称为JavaScript Object Notation,一般翻译为JS标记,是一种轻量级的数据交换格式。是基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清…

计算机网络:应用层(一)

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

C# WPF上位机开发(简易图像处理软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 图像处理是工业生产重要的环节。不管是定位、测量、检测还是识别,图像处理在工业生产中扮演重要的角色。而c#由于自身快速开发的特点&a…

解决微信小程序中 ‘nbsp;‘ 空格不生效的问题

在微信小程序开发中,我们经常会使用 来表示一个空格。这是因为在 HTML 中,空格会被解析为一个普通字符,而不会产生实际的空白间距。而 是一种特殊的字符实体,它被解析为一个不可见的空格,可以在页面上产生真正的空…

Axure RP 9 入门教程

1. Axure简介 Axure 是一个交互式原型设计工具,可以帮助用户创建复杂的交互式应用程序和网站。Axure 能够让用户快速构建出具有高度可交互性的原型,可以在团队中进行协作、分享和测试。 使用 Axure 可以设计出各种不同类型的原型,包括网站、移…

系列十五、搭建redis集群

一、概述 上篇文章介绍了redis集群的相关知识,本章实战演示redis的集群环境的详细搭建步骤。如果帮助到了你,请点赞 收藏 关注!有疑问的话也可以评论区交流。 二、搭建步骤 2.1、预备知识 判断一个集群中的节点是否可用,是集群…

【SpringBoot篇】详解基于Redis实现短信登录的操作

文章目录 🥰前言🛸StringRedisTemplate🌹使用StringRedisTemplate⭐常用的方法 🛸为什么我们要使用Redis代替Session进行登录操作🎆具体使用✨编写拦截器✨配置拦截器🌺基于Redis实现发送手机验证码操作&am…

EarCMS 前台任意文件上传漏洞复现

0x01 产品简介 EarCMS是一个APP内测分发系统的平台。 0x02 漏洞概述 EarCMS前台put_upload.php中,存在pw参数硬编码问题,同时sql语句pdo使用错误,没有有效过滤sql语句,可以控制文件名和后缀,导致可以任意文件上传。 0x03 复现环境 FOFA:app="EearCMS" 0x0…

Flutter实现自定义二级列表

在Flutter开发中,其实系统已经给我们提供了一个可靠的二级列表展开的API(ExpansionPanelList),我们先看系统的二级列表展开效果,一次只能展开一个,用ExpansionPanelList.radio实现 由此可见,已经…

容器化升级对服务有哪些影响?

容器技术是近几年计算机领域的热门技术,特别是随着各种云服务的发展,越来越多的服务运行在以 Docker 为代表的容器之内。 本文我们就来分享一下容器化技术相关的知识。 容器化技术简介 相比传统虚拟化技术,容器技术是一种更加轻量级的操作…

分治法求最大子列和

给定N个整数的序列{ A1, A2, …, AN},其中可能有正数也可能有负数,找出其中连续的一个子数列(不允许空序列),使它们的和尽可能大,如果是负数,则返回0。使用下列函数,完成分治法求最大…