强化学习(二)多臂老虎机 “Multi-armed Bandits”——1

将强化学习与机器学习、深度学习区分开的最重要的特征为:它通过训练中信息来评估所采取的动作,而不是给出正确的动作进行指导,这极大地促进了寻找更优动作的需求。

1、多臂老虎机(Multi-armed Bandits)问题

在这里插入图片描述
赌场的老虎机有一个绰号叫单臂强盗(single-armed bandit),因为它即使只有一只胳膊,也会把你的钱拿走。而一排老虎机就引申出多臂强盗(多臂老虎机)。

多臂老虎机(Multi-armed Bandits)问题可以描述如下:一个玩家走进一个赌场,赌场里有 k k k 个老虎机,每个老虎机的期望收益不一样。假设玩家总共可以玩 t t t 轮, 在每一轮中,玩家可以选择这 k k k 个老虎机中的任一个,投入一枚游戏币,拉动摇杆,观察是否中奖以及奖励的大小。
问题,玩家采取怎么样的策略才能最大化这 t t t 轮的总收益?

k k k 个老虎机(对应 k k k 个动作选择),每一个动作都有其预期的奖励,称其为该动作的价值。记第 t t t 轮选择的动作为 A t A_t At,相应的奖励为 R t R_t Rt,那么任意动作 a a a 的价值记为 q ∗ ( a ) q_\ast(a) q(a),即动作 a a a 的期望奖励:
q ∗ ( a ) ≐ E [ R t ∣ A t = a ] q_\ast(a)\doteq\Bbb{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 t ( a ) Q_t(a) Qt(a) 尽可能地接近 q ∗ ( a ) q_\ast(a) q(a)

2、动作价值方法

通过估计动作价值,然后依据动作价值作出动作选择的方法,统称为动作价值方法。某个动作的真实价值应当是该动作被选择时的期望奖励,即
Q t ( a ) ≐ t 时刻之前, a 被选中的总奖励 t 时刻之前, a 被选中的次数 = ∑ i = 1 t − 1 R i ⋅ I A i = a ∑ i = 1 t − 1 I A i = a Q_t(a)\doteq\dfrac{t\ 时刻之前,a\ 被选中的总奖励}{t\ 时刻之前,a\ 被选中的次数}=\dfrac{\sum_{i=1}^{t-1}R_i\cdot\Bbb{I}_{A_i=a}}{\sum_{i=1}^{t-1}\Bbb{I}_{A_i=a}} Qt(a)t 时刻之前,a 被选中的次数t 时刻之前,a 被选中的总奖励=i=1t1IAi=ai=1t1RiIAi=a

其中,若 A i = a A_i=a Ai=a,则 I A i = a = 1 \Bbb{I}_{A_i=a}=1 IAi=a=1,否则 I A i = a = 0 \Bbb{I}_{A_i=a}=0 IAi=a=0,若分母为 0,则定义 Q t ( a ) Q_t(a) Qt(a) 为一默认值(例如 0),根据大数定律,当分母趋于无穷时, Q t ( a ) Q_t(a) Qt(a) 收敛于 q ∗ ( a ) q_\ast(a) q(a),称这种方法为样本平均法(sample-average method),这是估计动作价值的一种方法,当然并不一定是最好的方法,下面我们使用该方法来解决问题。

最简单的动作选择就是选择价值估计值最大的动作,称为贪心方法,其数学表示为:
A t ≐ arg max ⁡ a Q t ( a ) A_t\doteq\argmax_a Q_t(a) AtaargmaxQt(a)

另一种替代的方法是,大多数情况是贪心的,偶尔从动作空间中随机选择,称为 ϵ \epsilon ϵ -贪心方法。这种方法的优点是,随着步数增加,每个动作会被无限采样,则 Q t ( a ) Q_t(a) Qt(a) 会逐渐收敛到 q ∗ ( a ) q_\ast(a) q(a),也意味着选择最优动作的概率收敛到 1 − ϵ 1-\epsilon 1ϵ

3、贪心动作价值方法有效性

在 2000 个随机生成的 10 臂老虎机问题中,其动作价值 q ∗ ( a ) , a = 1 , ⋯ , 10 q_\ast(a),a=1,\cdots,10 q(a),a=1,,10,服从期望为 0,方差为 1的正态分布;另外每次动作 A t A_t At 的实际奖励 R t R_t Rt 服从期望为 q ∗ ( A t ) q_\ast(A_t) q(At) ,方差为 1 的正态分布。
在这里插入图片描述

部分代码

import numpy as npstep = 1000
q_true = np.random.normal(0, 1, 10)  # 真实的动作价值
q_estimate = np.zeros(10)  # 估计的动作价值
epsilon = 0.9  # 贪心概率
action_space = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
action_count = np.zeros(10)
reward_sum = 0
for i in range(step):if (np.random.uniform() > epsilon1) or (q_estimate1.all() == 0):machine_name = np.random.choice(action_space)reward_sum += np.random.normal(q_true[machine_name], 1, 1)action_count[machine_name] += 1q_estimate[machine_name] = reward_sum / action_count[machine_name]else:machine_name = np.argmax(q_estimate)reward_sum += np.random.normal(q_true[machine_name], 1, 1)action_count[machine_name] += 1q_estimate[machine_name] = reward_sum / action_count[machine_name]

在这里插入图片描述

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

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

相关文章

WPF入门到跪下 第十一章 Prism(一)数据处理

官网:https://primslibrary.com 源码地址:https://guthub.com/PrismLibrary/prism Prism是由微软发布、维护的开源框架,提供了一组设计模式的实现,有助于编写结构良好的且可维护的XAML应用程序,包括MVVM、依赖注入、命…

实验三 Oracle数据库的创建和管理

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

HackTheBox - Medium - Linux - Health

Health Health 是一台中型 Linux 计算机,在主网页上存在 SSRF 漏洞,可利用该漏洞访问仅在 localhost 上可用的服务。更具体地说,Gogs 实例只能通过 localhost 访问,并且此特定版本容易受到 SQL 注入攻击。由于攻击者可以与 Gogs …

Redis基础知识(一)

一 Redis的数据类型 1.1 基本数据类型: String(字符串) Hash(哈希表) List(列表) Set(集合) ZSet(有序集合) 1.2 特殊类型 GEO(地理空间) HyperLogLog(基数统计) bitMap(位图) bitField(位域…

架构的演进

1.1单体架构 单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。 存在的问题: 代码耦合:模块的边界模糊、依赖关系不清晰,整个项目非常复杂,每次修改代码都心惊胆战迭代困…

RabbitMQ 部署与配置[CentOS7]

# RabbitMQ,Erlang 版本包对应 https://rabbitmq.com/which-erlang.html#eol-seriescd /usr/local/src# Erlang下载 # https://github.com/rabbitmq/erlang-rpm/releases https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.5/erlang-23.3.4.5-1.el7.x86_64.rp…

NTFS 磁盘管理器---NTFS Disk by Omi NTFS中文

NTFS Disk by Omi NTFS是一款专为Mac用户设计的NTFS磁盘管理工具。它可以帮助用户方便地访问和管理NTFS格式的硬盘、U盘、移动硬盘以及其他存储设备,并提供高效稳定的NTFS卷管理功能。该软件具有简单的用户界面,使用户能够快速访问和管理NTFS磁盘上的文件…

ChatGPT给出的前端面试考点(Vue.js)

ChatGPT给出的前端面试考点(Vue.js) 答案 1. Vue.js是什么?它的主要特点是什么? Vue.js是一个渐进式JavaScript框架,用于构建用户界面。它的主要特点包括: 数据绑定:Vue.js使用双向数据绑定&…

图灵日记之java奇妙历险记--String类

目录 String常用方法字符串构造String对象的比较字符串查找char charAt(int index)int indexOf(int ch)int indexOf(int ch, int fromIndex)int indexOf(String str)int indexOf(String str, int fromIndex)int lastIndexOf(String str)int lastIndexOf(String str, int fromIn…

OceanBase集群扩缩容

​ OceanBase 数据库采用 Shared-Nothing 架构,各个节点之间完全对等,每个节点都有自己的 SQL 引擎、存储引擎、事务引擎,天然支持多租户,租户间资源、数据隔离,集群运行的最小资源单元是Unit,每个租户在每…

OPC UA 开源库编译方法及通过OPC UA连接西门S7-1200 PLC通信并进行数据交换

前言 在现代工业自动化领域,OPC UA(开放性生产控制和统一架构)是一种广泛应用的通信协议。本文将以通俗易懂的方式解释OPC UA的含义和作用,帮助读者更好地理解这一概念。 一、OPC UA的定义 OPC UA全称为“开放性生产控制和统一…

Labview实现用户界面切换的几种方式---通过VI间相互调用

在做用户界面时我们的程序往往面对的对象是程序使用者,复杂程序如果放在同一个页面中,往往会导致程序冗长卡顿,此时通过多个VI之间的切换就可以实现多个界面之间的转换,也会显得程序更加的高大上。 本文所有程序均可下载&#xff…

【Python机器学习】多分类问题的不确定度

decision_function和predict_proba也适用于多分类问题。还是以鸢尾花数据集为例: from sklearn.ensemble import GradientBoostingClassifier from sklearn.datasets import make_circles,load_iris import numpy as np from sklearn.model_selection import train_…

【总结】Dinky学习笔记

概述 Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践 官网:Dinky 核心特性 沉浸式:提供专业的 DataStudio 功能&a…

1979-A threshold selection method from gray-level histograms

1 论文简介 《A threshold selection method from gray-level histograms》是由日本学者大津于 1979 年发表在 IEEE TRANSACTIONS ON SYSTEMS 上的一篇论文。该论文提出了一种基于图像灰度直方图的阈值化方法,计算简单,且不受图像亮度和对比度的影响&am…

64.Spring事件监听的核心机制是什么?

Spring事件监听的核心机制是什么? spring的事件监听有三个部分组成 事件(ApplicationEvent) 负责对应相应监听器 事件源发生某事件是特定事件监听器被触发的原因监听器(ApplicationListener) 对应于观察者模式中的观察者。监听器监听特定事件,并在内部定义了事件发生后的响应…

【论文阅读】ControlNet、文章作者 github 上的 discussions

文章目录 IntroductionMethodControlNetControlNet for Text-to-Image DiffusionTrainingInference Experiments消融实验定量分析 在作者 github 上的一些讨论消融实验更进一步的探索Precomputed ControlNet 加快模型推理迁移控制能力到其他 SD1.X 模型上其他 Introduction 提…

烟火检测/区域人流统计/AI智能分析网关V4如何配置通道?

TSINGSEE青犀智能分析网关(V4版)是一款高性能、低功耗的软硬一体AI边缘计算硬件设备,硬件内部署了近40种AI算法模型,支持对接入的视频图像进行人、车、物、行为等实时检测分析,并上报识别结果,并能进行语音…

【征服redis2】redis的事务介绍

目录 目录 1.redis事务介绍 2 事务出错的处理 3.Java如何使用redis事务 1.redis事务介绍 在前面我们介绍了redis的几种典型数据结构和应用,本文我们来看一下redis的事务问题。事务也是数据库的重要主题,熟悉关系型数据库的读者应该对事务比较了解&a…

erlang (OS 操作模块)学习笔记

cmd: env: 返回所有环境变量的列表。 每个环境变量都表示为元组 {VarName,Value},其中 VarName 是 变量和 Value 其值。 例: {VarName,Value} {"ERLANG_HOME","C:\\Program Files\\erl-24.3.4.2\\bin\\erl-24.3.4.2"}…