深入理解强化学习——多臂赌博机:梯度赌博机算法的数学证明

分类目录:《深入理解强化学习》总目录


通过将梯度赌博机算法理解为梯度上升的随机近似,我们可以深人了解这一算法的本质。在精确的梯度上升算法中,每一个动作的偏好函数 H t ( a ) H_t(a) Ht(a)与增量对性能的影响成正比:
H t + 1 ( a ) = H t ( a ) + α ∂ E [ R t ] ∂ H t ( a ) H_{t+1}(a)=H_t(a)+\alpha\frac{\partial E[R_t]}{\partial H_t(a)} Ht+1(a)=Ht(a)+αHt(a)E[Rt]

这里性能的衡量指标定义为总体的期望收益:
E [ R t ] = ∑ x π t ( x ) q ∗ ( x ) E[R_t]=\sum_x\pi_t(x)q_*(x) E[Rt]=xπt(x)q(x)

而增量产生的影响就是上述性能衡量指标对动作偏好的偏导数。当然,我们不可能真的实现精确的梯度上升,因为真实的 q ∗ ( x ) q_*(x) q(x)是不知道的。但是事实上,前面的更新公式采用期望价值时是等价的,即随机梯度上升方法的一个实例。对这个关系的证明只需要用初等的微积分推导几步。首先,我们仔细分析一下精确的性能梯度的定义:
∂ E [ R t ] ∂ H t ( a ) = ∂ ∂ H t ( a ) ∑ x π t ( x ) q ∗ ( x ) = ∑ x q ∗ ( x ) ∂ π t ( x ) ∂ H t ( a ) = ∑ x ( q ∗ ( x ) − B t ) ∂ π t ( x ) ∂ H t ( a ) \begin{aligned} \frac{\partial E[R_t]}{\partial H_t(a)}&=\frac{\partial}{\partial H_t(a)}\sum_x\pi_t(x)q_*(x)\\ &=\sum_xq_*(x)\frac{\partial \pi_t(x)}{\partial H_t(a)}\\ &=\sum_x(q_*(x)-B_t)\frac{\partial \pi_t(x)}{\partial H_t(a)} \end{aligned} Ht(a)E[Rt]=Ht(a)xπt(x)q(x)=xq(x)Ht(a)πt(x)=x(q(x)Bt)Ht(a)πt(x)

其中, B t B_t Bt被称为“基准项”,可以是任何不依赖于 x x x的标量。我们可以把它加进来,因为所有动作的梯度加起来为0, ∑ x ∂ π t ( x ) ∂ H t ( a ) \sum_x\frac{\partial \pi_t(x)}{\partial H_t(a)} xHt(a)πt(x),即随着 H t ( a ) H_t(a) Ht(a)的变化,一些动作的概率会增加或者减少,但是这些变化的总和为0,因为概率之和必须是1。然后我们将求和公式中的每项都乘以 π t ( x ) π t ( x ) \frac{\pi_t(x)}{\pi_t(x)} πt(x)πt(x),等式保持不变:
∂ E [ R t ] ∂ H t ( a ) = ∑ x π t ( x ) ( q ∗ ( x ) − B t ) ∂ π t ( x ) ∂ H t ( a ) 1 π t ( x ) = E [ ( q ∗ ( A t ) − B t ) ∂ π t ( A t ) ∂ H t ( a ) 1 π t ( A t ) ] = E [ ( R t − R ˉ t ) ∂ π t ( A t ) ∂ H t ( a ) 1 π t ( A t ) ] = E [ ( R t − R ˉ t ) π t ( A t ) ( I ( a = A t ) − π t ( a ) ) 1 π t ( A t ) ] = E [ ( R t − R ˉ t ) ( I ( a = A t ) − π t ( a ) ) ] \begin{aligned} \frac{\partial E[R_t]}{\partial H_t(a)}&=\sum_x\pi_t(x)(q_*(x)-B_t)\frac{\partial \pi_t(x)}{\partial H_t(a)}\frac{1}{\pi_t(x)}\\ &=E[(q_*(A_t)-B_t)\frac{\partial \pi_t(A_t)}{\partial H_t(a)}\frac{1}{\pi_t(A_t)}]\\ &=E[(R_t-\bar{R}_t)\frac{\partial \pi_t(A_t)}{\partial H_t(a)}\frac{1}{\pi_t(A_t)}]\\ &=E[(R_t-\bar{R}_t)\pi_t(A_t)(\mathbb{I}(a=A_t)-\pi_t(a))\frac{1}{\pi_t(A_t)}]\\ &=E[(R_t-\bar{R}_t)(\mathbb{I}(a=A_t)-\pi_t(a))] \end{aligned} Ht(a)E[Rt]=xπt(x)(q(x)Bt)Ht(a)πt(x)πt(x)1=E[(q(At)Bt)Ht(a)πt(At)πt(At)1]=E[(RtRˉt)Ht(a)πt(At)πt(At)1]=E[(RtRˉt)πt(At)(I(a=At)πt(a))πt(At)1]=E[(RtRˉt)(I(a=At)πt(a))]

注意,上面的公式其实是一个“求期望"的式子:对随机变量所有可能的取值进行函数求和,然后乘以对应取值的概率。在上面我们选择 B t = R ˉ t B_t=\bar{R}_t Bt=Rˉt,并且将 R ˉ t \bar{R}_t Rˉt q ∗ ( A t ) q_*(A_t) q(At)代替。这个选择是可行的,因为 E [ R t ∣ A t ] = q ∗ ( A t ) E[R_t|A_t]=q_*(A_t) E[RtAt]=q(At),而且 R t R_t Rt在给定 A t A_t At的情况下与任何其他东西都不相关。很快我们就可以确定 ∂ π t ( x ) ∂ H t ( a ) = π t ( x ) ( I ( a = A t ) − π t ( a ) ) \frac{\partial \pi_t(x)}{\partial H_t(a)}=\pi_t(x)(\mathbb{I}(a=A_t)-\pi_t(a)) Ht(a)πt(x)=πt(x)(I(a=At)πt(a)),表示如果 a = x a=x a=x就取1,否则取0。回想一下,我们的计划是把性能指标的梯度写为某个东西的期望,这样我们就可以在每个时刻进行采样,然后再进行与采样样本成比例地更新。将公式 H t + 1 ( a ) = H t ( a ) + α ∂ E [ R t ] ∂ H t ( a ) H_{t+1}(a)=H_t(a)+\alpha\frac{\partial E[R_t]}{\partial H_t(a)} Ht+1(a)=Ht(a)+αHt(a)E[Rt]中的性能指标的梯度用一个单独样本的期望值代替,可以得到:
H t + 1 ( a ) = H t ( a ) + α ( R t − R ˉ t ) ( I ( a = A t ) − π t ( a ) ) H_{t+1}(a)=H_t(a)+\alpha(R_t-\bar{R}_t)(\mathbb{I}(a=A_t)-\pi_t(a)) Ht+1(a)=Ht(a)+α(RtRˉt)(I(a=At)πt(a))

我们发现这和我们在文章《深入理解强化学习——多臂赌博机:梯度赌博机算法的基础知识》中给出的原始算法是一致的。现在我们只需要证明我们的假设 ∂ π t ( x ) ∂ H t ( a ) = π t ( x ) ( I ( a = A t ) − π t ( a ) ) \frac{\partial \pi_t(x)}{\partial H_t(a)}=\pi_t(x)(\mathbb{I}(a=A_t)-\pi_t(a)) Ht(a)πt(x)=πt(x)(I(a=At)πt(a))就可以了,在本文中就不详细阐述该假设的证明,但可以告诉大家这个假设是正确的。

上文我们已经证明了梯度赌博机算法的期望更新与期望收益的梯度是相等的,因此该算法是随机梯度上升算法的一种。这就保证了算法具有很强的收敛性。需要注意的的是,对于收益基准项,除了要求它不依赖于所选的动作之外,不需要其他任何的假设。例如,我们可以将其设置为0或1000,算法仍然是随机梯度上升算法的一个特例。基准项的选择不影响算法的预期更新,但它确实会影响更新值的方差,从而影响收敛速度。采用收益的平均值作为基准项可能不是最好的,但它很简单,并且在实践中很有效。

参考文献:
[1] 张伟楠, 沈键, 俞勇. 动手学强化学习[M]. 人民邮电出版社, 2022.
[2] Richard S. Sutton, Andrew G. Barto. 强化学习(第2版)[M]. 电子工业出版社, 2019
[3] Maxim Lapan. 深度强化学习实践(原书第2版)[M]. 北京华章图文信息有限公司, 2021
[4] 王琦, 杨毅远, 江季. Easy RL:强化学习教程 [M]. 人民邮电出版社, 2022

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

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

相关文章

基于SSM和vue的在线购物系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SSM和vue的在线购物系统,java项目。…

FlinkSQL聚合函数(Aggregate Function)详解

使用场景: 聚合函数即 UDAF,常⽤于进多条数据,出⼀条数据的场景。 上图展示了⼀个 聚合函数的例⼦ 以及 聚合函数包含的重要⽅法。 案例场景: 关于饮料的表,有三个字段,分别是 id、name、price&#xff0…

BI 数据可视化平台建设(1)—交叉表组件演变实战

作者:vivo 互联网大数据团队 - Zhu Jianchen 本文是vivo互联网大数据团队《BI数据可视化平台建设》系列文章第1篇 - 交叉表组件。 交叉表在数据分析里应用广泛,通过本文,你将了解到: 交叉表的基本概念,以及BI可视化平…

【狂神说Java】Nginx详解

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :狂神说Java 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远…

数据代理机制

目录 前言 Object.defineProperty() 语法 第三个参数配置项 数据代理机制的实现 MVVM分层思想 前言 本文介绍Vue的数据代理机制,也就是通过vue实例对象来代理data对象中的属性的操作 Object.defineProperty() 在介绍vue的数据代理机制前,我们需要…

JVM字符串常量池StringTable

目录 一、StringTable为什么要调整 二、String的基本特性 三、String的内存分配 四、字符串拼接操作 五、intern()方法 六、Stringtable的垃圾回收 七、G1中String去重操作 一、StringTable为什么要调整 jdk7之前,hotspot对于方法区的实现是永久代&#xff…

【算法】算法题-20231113

这里写目录标题 一、判断是否为回文数二、编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串(力口14)。三、在排序数组中查找元素的第一个和最后一个位置(力扣34题)四、删除排序数组中的…

【图像处理:OpenCV-Python基础操作】

【图像处理:OpenCV-Python基础操作】 1 读取图像2 显示图像3 保存图像4 图像二值化、灰度图、彩色图,像素替换5 通道处理(通道拆分、合并)6 调整尺寸大小7 提取感兴趣区域、掩膜8 乘法、逻辑运算9 HSV色彩空间,获取特定…

burpsuite安装详细教程

要安装 Burp Suite,可以按照以下步骤操作: 首先从官方网站 https://portswigger.net/burp/communitydownload 下载 Burp Suite 安装文件,选择适合自己操作系统的版本。 下载后,找到下载的安装文件,然后右键点击以管理员…

layui控件开发,实现下拉搜索从数据库获取数据

1 标签部分使用带搜索的下拉框 <div class"layui-inline"><label class"layui-form-label">单位</label><div class"layui-input-inline"><select name"org" lay-search id"org_dwbh" lay-filt…

ENVI IDL:如何基于气象站点数据进行反距离权重插值?

01 前言 仅仅练习&#xff0c;大可使用ArcGIS或者已经封装好的python模块进行插值&#xff0c;此处仅仅从底层理解如何从公式和代码理解反距离权重插值的过程&#xff0c;从而更深刻的理解IDL的使用和插值的理解。 02 函数说明 2.1 Read_CSV()函数 官方语法如下&#xff1a…

概念解析 | 菲涅尔方程 Fresnel Equations :揭示光的奥秘面纱

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:菲涅尔方程 菲涅尔方程:揭示光的奥秘面纱 背景介绍 当光从一种介质传播到另一种介质时,部分光会折射进入新介质,部分会反射回原介质。这一现象被称为光的折射和反射。 19世纪…

Python---字典---dict

1、为什么需要字典 如果想要存储一个人的信息&#xff0c;姓名&#xff1a;Tom&#xff0c;年龄&#xff1a;20周岁&#xff0c;性别&#xff1a;男&#xff0c;如何快速存储。 person [Tom, 20, 男] 在日常生活中&#xff0c;姓名、年龄以及性别同属于一个人的基本特征。 但…

爬虫之数据解析

何为数据解析 概念&#xff1a;就是将爬取到数据中局部的指定的数据进行提取作用&#xff1a;实现聚焦爬虫数据解析通用原理&#xff1a; html是用来展示数据&#xff0c;html中展示的数据正是我们要爬取或者采集的数据数据解析的通用原理&#xff1a; 标签定位提取标签中存储…

Please No More Sigma(构造矩阵)

Please No More Sigma 给f(n)定义如下&#xff1a; f(n)1 n1,2; f(n)f(n-1)f(n-2) n>2; 给定n&#xff0c;求下式模1e97后的值 Input 第一行一个数字T&#xff0c;表示样例数 以下有T行&#xff0c;每行一个数&#xff0c;表示n。 保证T<100&#xff0c;n<100000…

使用Filter实现登录验证

1、什么是Filter Filter可认为是Servlet的一种特殊用法&#xff0c;主要是对用户发起的请求进行预处理或后处理&#xff0c;意思就是在请求到达用户想请求的地址之前先进入Filter&#xff0c;或者在离开用户请求之后进入Filter。Filter类似于门卫&#xff0c;你在进入之前门卫…

51单片机入门

一、单片机以及开发板介绍 写在前面&#xff1a;本文为作者自学笔记&#xff0c;课程为哔哩哔哩江协科技51单片机入门教程&#xff0c;感兴趣可以看看&#xff0c;适合普中A2开发板或者HC6800-ESV2.0江协科技课程所用开发板。 工具安装请另行搜索&#xff0c;这里不做介绍&…

数值分析算法(简介)

数值分析是研究使用数值计算方法解决数学问题的领域。当在比赛中使用高级语言进行编程时&#xff0c;可以编写相应的库函数来实现数值分析中常用的算法&#xff0c;如方程组求解、矩阵运算和函数积分等算法。下面我将介绍一些常用的数值分析算法以及可能需要编写的库函数。 方…

CompareM-平均氨基酸一致性(AAI)计算

文章目录 Comparem简介比较基因组统计基因组使用模式其他 安装使用基于基因组计算氨基酸一致性基于基因组蛋白计算氨基酸一致性 结果转变成矩阵参考 Comparem简介 CompareM 是一个支持进行大规模基因组比较分析的软件工具包。它提供跨基因组&#xff08;如氨基酸一致性&#x…

《未来之路:技术探索与梦想的追逐》

创作纪念日 日期&#xff1a;2023年07月05日文章标题&#xff1a;《从零开始-与大语言模型对话学技术-gradio篇&#xff08;1&#xff09;》成为创作者第128天 在这个平凡的一天&#xff0c;我撰写了自己的第一篇技术博客&#xff0c;题为《从零开始-与大语言模型对话学技术-…