强化学习基础知识

news/2024/11/7 9:36:03/

请添加图片描述

强化学习是一种机器学习方法,通过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组成的序列,我们定义为τ=(s1,a1,r1,...sT,aT,rT)\tau=(s_1, a_1,r_1,...s_T,a_T,r_T)τ=(s1,a1,r1,...sT,aT,rT)RτR_\tauRτ是整场决策结束后总共的奖励,Rτ=∑t=1TrtR_\tau=\sum_{t=1}^Tr_tRτ=t=1Trt,强化学习的目的是最大化RτR_\tauRτ

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

强化学习的优化目标即为:R(θ)≈1N∑n=1NR(τ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(τ∣θ)∇log(p(τ∣θ))p(τ∣θ)=p(s1)p(a1∣s1)p(s2,r1∣s1,a1)...p(sT,rT−1∣sT−1,aT)log(p(τ∣θ))=log(p(s1))+∑t=1Tlog(p(at∣st,θ))+∑t=1Tlog(p(rt,st−1∣st,at))∇log(p(τ∣θ))=∑t=1T∇log(p(at∣st,θ))\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_\thetaRθ的表达式:∇Rθ≈1N∑n=1N∑t=1TR(τn)∇log(p(at∣st,θ))\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(τ)−bR(\tau)-bR(τ)b进行修正
  3. (*)给每个梯度的权重只考虑了整场决策的reward,忽略了每个action的独特性,对其进行改进,我们引入advantage functionAθ(st,at)A^\theta(s_t,a_t)Aθ(st,at)用于衡量sts_tst状态下采用ata_tat相对于其他action有多好的程度。

实际训练过程

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

重要性采样

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

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

on policy:∇Rθ=Eτ∼pθ(τ)[R(τn)∇log(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θ′(τ)∇log(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来拟合真实的标签即拟合真实的rewardyt=rt+max⁡γQ(st+1,at+1;θ)y_t=r_t+\max \gamma Q(s_{t+1}, a_{t+1}; \theta)yt=rt+maxγQ(st+1,at+1;θ),并使用梯度下降方法来使得Q(st,at;θ)Q(s_t,a_t;\theta)Q(st,at;θ)接近yty_tyt

参考

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

http://www.ppmy.cn/news/26052.html

相关文章

echart在微信小程序的使用

echart在微信小程序的使用 echarts不显示在微信小程序 <!-- 微信小程序的echart的使用 --> <view class"container"><ec-canvas id"mychart-dom-bar" canvas-id"mychart-bar" ec"{{ ec }}"></ec-canvas> &l…

Android 虚拟 A/B 详解(六) SnapshotManager 之状态数据

本文为洛奇看世界(guyongqiangx)原创,转载请注明出处。 原文链接:https://blog.csdn.net/guyongqiangx/article/details/129094203 Android 虚拟 A/B 分区《AAndroid 虚拟 A/B 分区》系列,更新中,文章列表: Android 虚拟分区详解(一) 参考资料推荐Android 虚拟分区详解(二…

pytorch配置—什么是CUDA,什么是CUDNN、在配置pytorch虚拟环境中遇到的问题、在安装gpu—pytorch中遇到的问题

1.什么是CUDA&#xff0c;什么是CUDNN &#xff08;1&#xff09;什么是CUDA CUDA(ComputeUnified Device Architecture)&#xff0c;是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU能够解决复杂的计算问题。 &#xff0…

03_Docker 入门

03_Docker 入门 文章目录03_Docker 入门3.1 确保 Docker 已经就绪3.2 运行我们的第一个容器3.3 使用第一个容器3.4 容器命名3.5 重新启动已经停止的容器3.6 附着到容器上3.7 创建守护式容器3.8 容器内部都在干些什么3.9 Docker 日志驱动3.10 查看容器内的进程3.11 Docker 统计信…

千锋教育+计算机四级网络-计算机网络学习-04

UDP概述 UDP协议 面向无连接的用户数据报协议&#xff0c;在传输数据前不需要先建立连接&#xff1b;目地主机的运输层收到UDP报文后&#xff0c;不需要给出任何确认 UDP特点 相比TCP速度稍快些简单的请求/应答应用程序可以使用UDP对于海量数据传输不应该使用UDP广播和多播应用…

【蓝桥日记⑤】2014第五届省赛(软件类)JavaA组❆答案解析

【蓝桥日记⑤】2014第五届省赛&#xff08;软件类&#xff09;JavaA组☃答案解析 文章目录【蓝桥日记⑤】2014第五届省赛&#xff08;软件类&#xff09;JavaA组☃答案解析1、猜年龄2、李白打酒3、神奇算式4、写日志5、锦标赛6、六角填数7、绳圈8、兰顿蚂蚁9、斐波那契10、波动…

Windows系统扩充C盘空间系列方法总结

目录前言方法一 使用自带的Windows的DiskPart扩充C盘1. 打开cmd2.三步命令方法二&#xff1a;使用Windows系统内置磁盘管理扩展C盘方法三. 使用专业磁盘分区工具总结前言 本教程是总结Windows系统进行C盘&#xff08;系统盘&#xff09;扩充空间的系列方法&#xff0c;一般来讲…

用Three.js搭建的一个艺术场景

本文翻译自于Medium&#xff0c;原作者用 Three.js 创建了一个“Synthwave 场景”&#xff0c;效果还不错&#xff0c;在此加上自己的理解&#xff0c;记录一下。在线Demo. 地形构建 作者想要搭建一个中间平坦、两侧有凹凸山脉效果并且能够一直绵延不断的地形&#xff0c;接下…