强化学习基础知识

news2024/9/28 17:24:56

请添加图片描述

强化学习是一种机器学习方法,通过agent与environment的互动,学习适当的action policy以取得更大的奖励reward。本篇博客介绍强化学习的基础知识,与两类强化学习模型。

目录

  • 强化学习的基础设定
  • policy based 强化学习的目标
    • 3个注意事项
    • 实际训练过程
    • 重要性采样
  • value based 强化学习的目标
    • Temporal Differential learning (TD learning)
  • 参考

强化学习的基础设定

强化学习和监督学习,非监督学习一样是一种基本学习模式,在强化学习的框架中,一共有2个主体:agentenvironmentenvironment会给agent一些状态信息stateagent可以根据state的情况进行action的选择,并从environment获得一些奖励reward
请添加图片描述
强化学习分为2类:policy basedvalue based。二者并非互斥关系,存在一些模型既是policy based又是value based 例如:A3C[ICML2016]。

policy based 强化学习的目标

强化学习的目标是学习一个policy使得最终全场决策下来得到的总reward最大。具体展开而言,给定一个state,agent决策采取action的策略模型,用 π \pi π表示, π \pi π的参数是 θ \theta θ,由于policy根据state采取action,我们可以用公式: a = π θ ( s ) a=\pi_\theta(s) a=πθ(s)表示。当agent做出action操作后,environment会给出一个reward并更新状态,至此一轮决策结束。多轮决策组成一个由state, action, reward组成的序列,我们定义为 τ = ( s 1 , a 1 , r 1 , . . . s T , a T , r T ) \tau=(s_1, a_1,r_1,...s_T,a_T,r_T) τ=(s1,a1,r1,...sT,aT,rT) R τ R_\tau Rτ是整场决策结束后总共的奖励, R τ = ∑ t = 1 T r t R_\tau=\sum_{t=1}^Tr_t Rτ=t=1Trt,强化学习的目的是最大化 R τ R_\tau Rτ

在实际决策过程中,即便 π \pi π和environment不变,每一步的action依旧有随机性,因而最终的奖励 R τ R_\tau Rτ也不会完全一致,而是具有一些随机性。因此强化学习的目标为最大化一个 π \pi π下的平均 R τ R_\tau Rτ,即 E [ R τ ] = ∑ τ R ( τ ) p ( τ ∣ θ ) E[R_\tau]=\sum_{\tau}R(\tau)p(\tau|\theta) E[Rτ]=τR(τ)p(τθ),很显然我们无法得到准确的期望,因为我们无法把一个参数设定下所有的决策路径全都取一个遍,因而实际使用中,通过采样取平均值的方法得到一个期望的近似值。 R ( θ ) ≈ 1 N ∑ n = 1 N R ( τ n ) R(\theta)\approx \frac{1}{N}\sum_{n=1}^{N}R(\tau_n) R(θ)N1n=1NR(τn)

强化学习的优化目标即为: R ( θ ) ≈ 1 N ∑ n = 1 N R ( τ n ) R(\theta)\approx \frac{1}{N}\sum_{n=1}^{N}R(\tau_n) R(θ)N1n=1NR(τn)

通过梯度下降提升优化目标,这一步需要求 R ( θ ) R(\theta) R(θ)的导数。 ∇ R θ = ∑ τ R ( τ ) ∇ p ( τ ∣ θ ) = ∑ τ R ( τ ) p ( τ ∣ θ ) ∇ p ( τ ∣ θ ) p ( τ ∣ θ ) = ∑ τ R ( τ ) p ( τ ∣ θ ) ∇ l o g ( p ( τ ∣ θ ) ) p ( τ ∣ θ ) = p ( s 1 ) p ( a 1 ∣ s 1 ) p ( s 2 , r 1 ∣ s 1 , a 1 ) . . . p ( s T , r T − 1 ∣ s T − 1 , a T ) l o g ( p ( τ ∣ θ ) ) = l o g ( p ( s 1 ) ) + ∑ t = 1 T l o g ( p ( a t ∣ s t , θ ) ) + ∑ t = 1 T l o g ( p ( r t , s t − 1 ∣ s t , a t ) ) ∇ l o g ( p ( τ ∣ θ ) ) = ∑ t = 1 T ∇ l o g ( p ( a t ∣ s t , θ ) ) \nabla R_\theta=\sum_{\tau}R(\tau)\nabla p(\tau|\theta)=\sum_{\tau} R(\tau)p(\tau|\theta)\frac{\nabla p(\tau|\theta)}{p(\tau|\theta)}=\sum_{\tau}R(\tau)p(\tau|\theta)\nabla log(p(\tau|\theta))\\ p(\tau|\theta)=p(s_1)p(a_1|s_1)p(s_2,r_1|s_1,a_1)...p(s_T,r_{T-1}|s_{T-1},a_{T})\\ log(p(\tau|\theta))=log(p(s_1))+\sum_{t=1}^Tlog(p(a_t|s_t,\theta))+\sum_{t=1}^Tlog(p(r_t,s_{t-1}|s_t,a_t))\\ \nabla log(p(\tau|\theta))=\sum_{t=1}^T\nabla log(p(a_t|s_{t},\theta)) Rθ=τR(τ)p(τθ)=τR(τ)p(τθ)p(τθ)p(τθ)=τR(τ)p(τθ)log(p(τθ))p(τθ)=p(s1)p(a1s1)p(s2,r1s1,a1)...p(sT,rT1sT1,aT)log(p(τθ))=log(p(s1))+t=1Tlog(p(atst,θ))+t=1Tlog(p(rt,st1st,at))log(p(τθ))=t=1Tlog(p(atst,θ))
最终得到 ∇ R θ \nabla R_\theta Rθ的表达式: ∇ R θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T R ( τ n ) ∇ l o g ( p ( a t ∣ s t , θ ) ) \nabla R_\theta \approx \frac{1}{N}\sum_{n=1}^N\sum_{t=1}^TR(\tau_n) \nabla log(p(a_t|s_{t},\theta)) RθN1n=1Nt=1TR(τn)log(p(atst,θ)) (*)

3个注意事项

  1. 为什么要构成log的形式:进行归一化,降低采样偶然性对于低reward但高频对梯度的影响
  2. 由于采样具有偶然性,考虑到不被采样到的点以及 R ( τ ) R(\tau) R(τ)有时候可能一直取正数,将公式里的 R ( τ ) R(\tau) R(τ)替换为 R ( τ ) − b R(\tau)-b R(τ)b进行修正
  3. (*)给每个梯度的权重只考虑了整场决策的reward,忽略了每个action的独特性,对其进行改进,我们引入advantage function A θ ( s t , a t ) A^\theta(s_t,a_t) Aθ(st,at)用于衡量 s t s_t st状态下采用 a t a_t at相对于其他action有多好的程度。

实际训练过程

给定初始化的参数 θ 0 \theta_0 θ0,采样 N N N τ \tau τ计算每个 τ \tau τreward,计算当前参数下的 ∇ l o g ( p ( a t ∣ s t , θ ) ) \nabla log(p(a_t|s_{t},\theta)) log(p(atst,θ)),进行参数 θ \theta θ的梯度更新得到 θ 1 \theta_1 θ1,然后对新得到的参数进行下一轮的采样与梯度更新直至训练停止。
请添加图片描述
这种训练方法被有一个问题:每次更新参数都需要重新采样,消耗了大量的时间。因而提出了off policy的方法减少采样带来的时间开销。

重要性采样

重要性采样(importance sampling)方法可以减小采样的个数,极大地提升了采样的效率。其具体实现如下:假定我们有一个分布 p p p,我们从分布 p p p中进行采样得到 x x x,我们希望计算得到函数 f ( x ) f(x) f(x)的期望值,即 E x ∼ p [ f ( x ) ] E_{x\sim p}[f(x)] Exp[f(x)]。一个直观的思路是我们先根据分布 p p p采样 N N N个点,然后计算这 N N N个点的均值作为期望的估计。然而有时候我们无法直接从分布 p p p进行采样,这种时候可以从一个与分布 p p p接近的分布 q q q进行采样,然后将结果转化为依据分布 p p p采样的均值。
E x ∼ p [ f ( x ) ] = E x ∼ q [ f ( x ) p ( x ) q ( x ) ] E_{x\sim p}[f(x)]=E_{x\sim q}[f(x)\frac{p(x)}{q(x)}] Exp[f(x)]=Exq[f(x)q(x)p(x)]这里的分布 q q q应该尽可能接近分布 p p p时,公式才能在采样意义下成立

off policy的方法使用重要性采样的方法降低了采样的次数进而减小了采样带来的时间开销。on policy方法与off policy方法最大的区别就是二者采样的方式是不同的,on policy方法使用梯度下降方法更新参数后按照新参数进行采样,而off policy方法依旧使用之前旧参数采样的结果(这里假设了参数更新并未很多因而分布变化并不大)。

on policy: ∇ R θ = E τ ∼ p θ ( τ ) [ R ( τ n ) ∇ l o g ( p θ ( τ ) ) ] \nabla R_\theta=E_{\tau \sim p_\theta(\tau)}[R(\tau_n)\nabla log(p_\theta(\tau))] Rθ=Eτpθ(τ)[R(τn)log(pθ(τ))]
off policy: ∇ R θ = E τ ∼ p θ ′ ( τ ) [ R ( τ n ) p θ ( τ ) p θ ′ ( τ ) ∇ l o g ( p θ ( τ ) ) ] \nabla R_\theta=E_{\tau \sim p_{\theta '}(\tau)}[R(\tau_n)\frac{p_\theta(\tau)}{p_{\theta '}(\tau)}\nabla log(p_\theta(\tau))] Rθ=Eτpθ(τ)[R(τn)pθ(τ)pθ(τ)log(pθ(τ))]

可以发现off policy在参数设定为 θ ′ \theta ' θ下进行采样,梯度下降更新的是 θ \theta θ而非 θ ′ \theta ' θ,因此采样可以复用。

value based 强化学习的目标

与policy based强化学习不同,value based模型通过神经网络学习environment针对给定state以及action的reward,帮助agent进行当前state进行action的决策。value based强化学习假定存在一个类似于先知的函数 Q ( s , a ; θ ) Q(s,a;\theta) Q(s,a;θ)它可以在给定state的条件下计算出每个action的奖励期望是多大,并且用一个神经网络来学习它。有了这样的先知后,模型自然可以通过选择当前state下reward最高的action进行操作。

Temporal Differential learning (TD learning)

TD learning是训练上述 Q ( s , a ; θ ) Q(s,a;\theta) Q(s,a;θ)模型的方法,其训练思想基于监督学习,需要一个“真实标签”。但由于真实标签在这个训练场景下获取需要大量时间开销,因此我们会用TD target来拟合真实的标签即拟合真实的reward y t = r t + max ⁡ γ Q ( s t + 1 , a t + 1 ; θ ) y_t=r_t+\max \gamma Q(s_{t+1}, a_{t+1}; \theta) yt=rt+maxγQ(st+1,at+1;θ),并使用梯度下降方法来使得 Q ( s t , a t ; θ ) Q(s_t,a_t;\theta) Q(st,at;θ)接近 y t y_t yt

参考

  1. 价值学习__Value-Based_Reinforcement_Learning(ps:这个up也出了视频介绍policy-based reinforcement learning视频不长,讲的很清晰)
  2. 李弘毅老师强化学习教学视频合集(ps:里面有一些视频内容是重合的可以挑着看)

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

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

相关文章

Python:跳蚱蜢(BFS判重)

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 如下图所示: 有 9 只盘子,排成 1 个圆圈。 其中 8 只盘子内装着 8 只蚱蜢,有一个是空盘。 我们把这些蚱蜢顺时针编号为 1 ~ 8。 …

Java【数据结构】—— 冒泡排序、选择排序、直接插入排序

Java实现冒泡排序、选择排序、直接插入排序一、排序的概念及稳定性二、冒泡排序1.基本思想2.代码实现三、选择排序1.基本思想2.代码实现四、直接插入排序1.基本思想2.代码实现五、复杂度及稳定性分析1.冒泡排序2.选择排序3.直接插入排序一、排序的概念及稳定性 - 概念&#xf…

文件断点续传

1、前端上传文件前请求媒资接口层检查文件是否存在,如果已经存在则不再上传。 2、如果文件在系统不存在前端开始上传,首先对视频文件进行分块 3、前端分块进行上传,上传前首先检查分块是否上传,如已上传则不再上传,如…

奇舞周刊第482期:每天都在用,也没整明白的 React Hook

记得点击文章末尾的“ 阅读原文 ”查看哟~下面先一起看下本期周刊 摘要 吧~奇舞推荐■ ■ ■每天都在用,也没整明白的 React Hook推荐理由:针对我们经常使用的 React Hook,本文详细介绍了 useState、useEffect、useContext、useCallback、use…

IP协议格式、IP地址管理、路由选择

目录 一、IP协议格式 16位总长度 ip协议针对传输层的UCP协议或者TCP协议,进行传输的时候,需不需要进行分片传输(拆包传输) 如何进行分片 和 组合分片 8位生存时间: 8位协议、16位校验和、32位源端口、32位目的端…

Agilent E4982A、Keysight E4982A、LCR 表,1 MHz 至 3 GHz

Agilent E4982A、Keysight E4982A、HP E4982A LCR 表,1 MHz 至 3 GHz 产品概览 KEYSIGHT E4982A(安捷伦) Keysight E4982A LCR 表为需要高频(1 MHz 至 3 GHz)阻抗测试的无源元件制造行业提供一流的性能&#xff0c…

Redis实战11-实现优惠券秒杀下单

本篇,咱们来实现优惠券秒杀下单功能。通过本篇学习,我们将会有如下收获: 1:优惠券领券业务逻辑; 2:分析在高并发情况下,出现超卖问题产生的原因; 3:解决超卖问题两种方…

快速排序算法原理 Quicksort —— 图解(精讲) JAVA

快速排序是 Java 中 sort 函数主要的排序方法&#xff0c;所以今天要对快速排序法这种重要算法的详细原理进行分析。 思路&#xff1a;首先快速排序之所以高效一部分原因是利用了离散数学中的传递性。 例如 1 < 2 且 2 < 3 所以可以推出 1 < 3。在快速排序的过程中巧…

C++——C++11 第一篇

目录 统一的列表初始化 &#xff5b;&#xff5d;初始化 decltype ​编辑 nullptr STL中一些变化 右值引用和移动语义 左值引用和右值引用 总结 左值引用优缺点 右值引用&#xff08;将亡值&#xff09; 拷贝赋值和移动赋值 万能引用|完美转发 移动构造和移动赋值注意…

C#操作字符串方法 [万余字总结 · 详细]

C#操作字符串方法总结C#常用字符串函数大全C#常用字符串操作方法C#操作字符串方法总结C#常用字符串函数大全 Compare 比较字符串的内容&#xff0c;考虑文化背景(场所)&#xff0c;确定某些字符是否相等 CompareOrdinal 与Compare一样&#xff0c;但不考虑文化背景 Format 格…

5.3 BGP路由黑洞

5.2.3实验3:BGP路由黑洞 1. 实验目的 熟悉BGP路由黑洞的应用场景掌握BGP水平分割的配置方法2. 实验拓扑 实验拓扑如图5-3所示: 图5-3:BGP路由黑洞 3. 实验步骤 配置IP地址 R1的配置 <Huawei>syst

前端开发常用案例(一)

前端开发常用案例1.实现三角形百度热榜样式分页效果小米商城自动轮播图效果二级下拉菜单效果时间轴效果展示音乐排行榜效果鼠标移入文字加载动画鼠标悬停缩放效果1.实现三角形 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8…

CCNP350-401学习笔记(51-100题)

51、Which statement about a fabric access point is true?A. It is in local mode and must be connected directly to the fabric edge switch. B. It is in local mode and must be connected directly to the fabric border node C. It is in FlexConnect mode and must …

LVGL开发教程:二、ESP-IDF 使用CmakeList管理自己的文件以及文件夹

本文需要已经安装了Vscode+IDF插件没有安装的请提前安装一下,IDF插件为乐鑫的插件不需要翻墙。需要环境搭建请看下面链接。 环境搭建: VScode+platformIO和Vscode+ESP-IDF两种开发环境搭建 项目例程下载地址: IDF-CmakeTes,密码:8888 另外,由于你和我的路径不一致,下载的工…

富足金字塔:人的努力是为了扩大选择的范围

人的努力是为了扩大选择的范围&#xff0c;这是熵减的另一种表述。富足金字塔代表着人生的三重境界。第一层是温饱。人需要食物、水、住所。第二层是品质。能源、ICT、教育带来更有品质的生活&#xff0c;如智能门锁、智能马桶、扫地机、洗碗机、洗衣烘衣机。第三层是梦想。包括…

netty群聊系统

1设计思路&#xff1a;启动一个服务端&#xff0c;多个客户端第一个客户端启动时&#xff0c;会告诉服务器上线了第二个客户端启动时&#xff0c;告诉服务器上线&#xff0c;并且通知第一个启动的客户端第三个客户端启动时&#xff0c;告诉服务器上线&#xff0c;并且通知第一个…

应用上架小技能:2.1 蓝牙权限使用说明和5.1.1权限使用说明

文章目录 引言I Guideline 2.1 - Information NeededII Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage引言 App是用来蓝牙进行打印小票,需要提供演示视频摄像头、位置和蓝牙的使用场景需要在应用配置文件Info.plist进行说明。uniapp权限说明配置界面 I G…

利尔达在北交所上市:总市值突破29亿元,叶文光为董事长

2月17日&#xff0c;利尔达科技集团股份有限公司&#xff08;下称“利尔达”&#xff0c;BJ:832149&#xff09;在北京证券交易所上市。本次上市&#xff0c;利尔达的发行价格为5.00元/股&#xff0c;发行数量为1980万股&#xff0c;发行市盈率为12.29倍&#xff0c;募资总额为…

2023情人节正经性生活调研报告

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2023年1月份热门报告合集ChatGPT的发展历程、原理、技术架构及未来方向2023年&#xff0c;如何科学制定年度规划&#xff1f;《底层逻辑》高清配图今天给大家带来丁香医生最新…

Java Number Math 类,超详细整理,适合新手入门

目录 一、什么是Java Number类&#xff1f; 二、Java Number类提供了哪些基本的数字操作&#xff1f; 三、什么是包装类&#xff1f; 所有的包装类都是抽象类 Number 的子类。 四、什么是Java Math 类 Test类案例&#xff1a;&#xff08;Math.PI 表示一个圆的周长与直径…