强化学习(二)多臂老虎机 “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.hqwc.cn/news/415224.html

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

相关文章

第8章 通信网络安全

文章目录 8.1 信息系统安全概述8.1.1 信息系统的构成和分类8.1.2 信息系统安全1、信息系统中的安全概念2、信息系统安全问题的发展演变3、信息系统的安全结构 8.1.3 信息系统的安全保护等级1.TCSEC(可信计算机系统评估准则)2. 我国信息安全标准 8.1.4 通…

JVM工作原理与实战(十六):运行时数据区-Java虚拟机栈

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、运行时数据区 二、Java虚拟机栈 1.栈帧的组成 2.局部变量表 3.操作数栈 4.帧数据 总结 前言 JVM作为Java程序的运行环境,其负责解释和执行字节码,管理…

2024年美国各州即将生效的新隐私保护法(上)

2024年美国各州即将生效的新隐私保护法(上) 文章目录 2024年美国各州即将生效的新隐私保护法(上)前言一、2023年隐私保护法开始生效的五个州二、2023年通过了新的隐私保护法的八个州三、2024年确定截止的州及法律法规(…

leetcode234. 回文链表

题目 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2: 输入:hea…

竞赛保研 大数据疫情分析及可视化系统

文章目录 0 前言2 开发简介3 数据集4 实现技术4.1 系统架构4.2 开发环境4.3 疫情地图4.3.1 填充图(Choropleth maps)4.3.2 气泡图 4.4 全国疫情实时追踪4.6 其他页面 5 关键代码最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 大数据疫…

学习k8s的应用(三)

一、k8s部署ngnix 1、一些查看命令 1-1、所有命令空间 kubectl get pod --all-namespaces kubectl get svc --all-namespaces1-2、指定命令空间 kubectl get pod -n yabin kubectl get svc -n yabin2、单节点集群兼容 # 因为目前只有一个master节点,默认安装后…

Java 方法(方法的调用机制、方法的传参机制)

方法 方法就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。 当需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。 修饰符 返回值类型 方法名 (参数列…

C练习——杨辉三角

题目: 打印近似杨辉三角,行数n自选 百度找的杨辉三角,参考一下: 解析: 把它的全部元素左对齐,就可以看成近似杨辉三角的样子 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 …… 每个数等于它上方两数…

excel(vab)删除空行

删除第一、二、三列位空的所有行(8000)行范围以内 代码如下: Sub Macro1()Dim hang As Integer For hang 8000 To 1 Step -1If Sheet1.Cells(hang, 1) "" And Sheet1.Cells(hang, 2) "" And Sheet1.Cells(hang, 3) "&quo…

怎么处理vue项目中的错误详解

文章目录 一、错误类型二、如何处理后端接口错误代码逻辑问题全局设置错误处理生命周期钩子 三、源码分析小结参考文献 一、错误类型 任何一个框架,对于错误的处理都是一种必备的能力 在 Vue 中,则是定义了一套对应的错误处理规则给到使用者&#xff0…

C++ 设计模式之 中介者模式

【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 -- 什么是中介者模式 (第16种模式) 中介者模式(Medi…

如何在 Element Plus 中使用自定义 icon 组件 (非组件库内置icon)

先说原理就是将 svg 文件以 vue 组件文件的方式使用 需求:我想要在 Element Plus 得评分组件中使用自定义得图标。 el-rate v-model"value1" /> 组件本身是支持自定义图标的,但是教程中只说明了如何使用 element-plus/icons-vue 图标库内置…