强化学习算法

news2025/1/16 3:58:21

强化学习算法

游戏模型如下:
在这里插入图片描述

策略网络输入状态s,输出动作a的概率分布如下: π ( a ∣ s ) \pi(a|s) π(as)

多次训练轨迹如下

  • r表示回报
  • 横轴为T, 1个回合的步骤数
  • 纵轴为N, 回合数,1行代表1条轨迹,符合概率分布P

[ s 11 a 11 r 11 … … s 1 t a 1 t r 1 t … … s 1 T a 1 T r 1 T … … … … … … s n 1 a n 1 r n 1 … … s n t a n t r n t … … s n T a n T r n T … … … … … … s N 1 a N 1 r N 1 … … s N t a N t r N t … … s N T a N T r N T ] \begin{bmatrix} s_{11} a_{11} r_{11} …… s_{1t} a_{1t} r_{1t} …… s_{1T} a_{1T} r_{1T}\\ …… …… ……\\ s_{n1} a_{n1} r_{n1} …… s_{nt} a_{nt} r_{nt}…… s_{nT} a_{nT} r_{nT} \\ …… …… ……\\ s_{N1} a_{N1} r_{N1} …… s_{Nt} a_{Nt} r_{Nt} …… s_{NT} a_{NT} r_{NT}\\ \end{bmatrix} s11a11r11……s1ta1tr1t……s1Ta1Tr1T………………sn1an1rn1……sntantrnt……snTanTrnT………………sN1aN1rN1……sNtaNtrNt……sNTaNTrNT

策略轨迹 τ = s 1 a 1 , s 2 a 2 , … … , s T a T \tau = s_{1} a_{1} , s_{2} a_{2},……,s_{T} a_{T} τ=s1a1,s2a2……sTaT

发生的概率
P ( τ ) = P ( s 1 a 1 , s 2 a 2 , … … , s T a T ) P(\tau) = P(s_{1} a_{1} , s_{2} a_{2},……,s_{T} a_{T}) P(τ)=P(s1a1,s2a2……sTaT)
= P ( s 1 ) π ( a 1 ∣ s 1 ) P ( s 2 ∣ s 1 , a 1 ) π ( a 2 ∣ s 2 ) P ( s 3 ∣ s 1 , a 1 , s 2 , a 2 ) … … = P(s_{1})\pi(a_{1}|s_{1})P(s_{2}|s_{1},a_{1})\pi(a_{2}|s_{2})P(s_{3}|s_{1},a_{1},s_{2},a_{2})…… =P(s1)π(a1s1)P(s2s1,a1)π(a2s2)P(s3s1,a1,s2,a2)……
= P ( s 1 ) ∏ t = 1 T − 1 π ( a t ∣ s t ) P ( s t + 1 ∣ s 1 , a 1 , . . . . . . , s t , a t ) = P(s_{1})\prod_{t=1}^{T-1}\pi(a_{t}|s_{t})P(s_{t+1}|s_{1},a_{1},......,s_{t},a_{t}) =P(s1)t=1T1π(atst)P(st+1s1,a1,......,st,at)

根据 马尔科夫性(Markov Property),简化为:
P ( τ ) = P ( s 1 ) ∏ t = 1 T − 1 π ( a t ∣ s t ) P ( s t + 1 ∣ s t , a t ) P(\tau) = P(s_{1})\prod_{t=1}^{T-1}\pi(a_{t}|s_{t})P(s_{t+1}|s_{t},a_{t}) P(τ)=P(s1)t=1T1π(atst)P(st+1st,at)

奖励

在每次智能体与环境的交互过程中,均会得到一个滞后的奖励
r t = r ( s t , a t ) r_{t} = r(s_{t},a_{t}) rt=r(st,at)

一次交互轨迹𝜏的累积奖励:
R τ = ∑ t = 1 T − 1 r t R_{\tau } = \sum_{t=1}^{T-1} r_{t} Rτ=t=1T1rt
其中𝑇为轨迹的步数。 如果只考虑从轨迹的中间状态𝑠𝑡开始𝑠𝑡, 𝑠𝑡+1, . . . , 𝑠𝑇的累积奖励:
R ( s t ) = ∑ k = 1 T − t − 1 r t + k R(s_{t}) = \sum_{k=1}^{T-t-1} r_{t+k} R(st)=k=1Tt1rt+k

为了权衡近期奖励与长期奖励的重要性, 更多地使用随着时间衰减的折扣奖励:

R τ = ∑ t = 1 T − 1 γ t − 1 r t R_{\tau } = \sum_{t=1}^{T-1} \gamma ^{t-1} r_{t} Rτ=t=1T1γt1rt
其中𝛾 ∈ [0,1]叫做折扣率.
我们希望找到一个策略𝜋(𝑎|𝑠)模型,使得在策略𝜋(𝑎|𝑠)控制下的智能体与环境交互产
生的轨迹𝜏的总奖励𝑅(𝜏)越高越好。由于环境状态转移和策略都具有随机性, 同样的策略模
型作用于同初始状态的同一环境,也可能产生截然不同的轨迹序列𝜏。 因此,强化学习的目
标是最大化期望奖励(Expected Return):
J ( π ( θ ) ) = E τ ∼ P ( τ ) [ R ( τ ) ] = E τ ∼ P ( τ ) [ ∑ t = 1 T − 1 γ t − 1 r t ] J(\pi (\theta )) = E_{\tau \sim P(\tau) } \left [ R(\tau) \right ] = E_{\tau \sim P(\tau) }\left [ \sum_{t=1}^{T-1} \gamma ^{t-1} r_{t} \right ] J(π(θ))=EτP(τ)[R(τ)]=EτP(τ)[t=1T1γt1rt]
把期望写成求和平均形式:
J ( π ( θ ) ) = 1 N ∑ n = 1 N ( P ( τ n ) R ( τ n ) ) ,其中 τ n 表示第 n 条轨迹 J(\pi (\theta )) =\frac{1}{N}\sum_{n=1}^{N} \left ( P(\tau ^{n}) R\left ( \tau ^{n} \right ) \right ) ,其中 \tau ^{n} 表示 第n条轨迹 J(π(θ))=N1n=1N(P(τn)R(τn)),其中τn表示第n条轨迹

训练的目标是寻找一组参数𝜃代表的策略网络𝜋𝜃,使得𝐽(𝜋𝜃)最大:
θ ∗ = a r g m a x θ E τ ∼ P ( τ ) [ R ( τ ) ] \theta ^{*} = \underset{\theta }{argmax} E_{\tau \sim P(\tau) } \left [ R(\tau) \right ] θ=θargmaxEτP(τ)[R(τ)]
其中𝑝(𝜏)代表了轨迹𝜏的分布, 它由状态转移概率𝑝(𝑠′|𝑠, 𝑎)和策略𝜋(𝑎|𝑠)共同决定。 策略𝜋
的好坏可以通过𝐽(𝜋𝜃)衡量,期望奖励越大,策略越优良; 反之则策略越差。

梯度更新

∂ J ∂ θ = 1 N ∑ n = 1 N ∂ ∂ θ ( ( P ( s 1 ) ∏ t = 1 T − 1 π ( a t ∣ s t ) P ( s t + 1 ∣ s t , a t ) ) R ( n )   ) \frac{\partial J}{\partial \theta } = \frac{1}{N}\sum_{n=1}^{N} \frac{\partial}{\partial \theta } \left ( \left ( P(s_{1})\prod_{t=1}^{T-1}\pi(a_{t}|s_{t})P(s_{t+1}|s_{t},a_{t}) \right ) R(n) \ \right ) θJ=N1n=1Nθ((P(s1)t=1T1π(atst)P(st+1st,at))R(n) )

考虑
d log ⁡ f ( x ) d x = 1 f ( x ) d f ( x ) d x \frac{d\log_{}{f(x)} }{dx} = \frac{1}{f(x)} \frac{df(x)}{dx} dxdlogf(x)=f(x)1dxdf(x)
将log ∏∙转换为∑ log(∙)形式

∂ J ∂ θ = 1 N ∑ n = 1 N R ( n ) ∂ ∂ θ ( log ⁡ p ( s 1 ) + ∑ t = 1 T − 1 log ⁡ π θ ( a t ∣ s t ) + log ⁡ p ( s t + 1 ∣ s t , a t ) ) \frac{\partial J}{\partial \theta } = \frac{1}{N}\sum_{n=1}^{N} R(n) \frac{\partial}{\partial\theta }\left ( \log_{}{p(s_{1}) } +\sum_{t=1}^{T-1} \log_{}{\pi _{\theta } (a_{t}| s_{t} )} + \log_{}{p(s_{t+1}|s_{t},a_{t})} \right ) θJ=N1n=1NR(n)θ(logp(s1)+t=1T1logπθ(atst)+logp(st+1st,at))
第n条轨迹分布𝑝(n)与𝜃 无关,奖励R(n)与𝜃 无关,看成常数:
∂ J ∂ θ = 1 N ∑ n = 1 N R ( n ) ( ∑ t = 1 T − 1 ∂ ∂ θ log ⁡ π θ ( a t ∣ s t ) ) \frac{\partial J}{\partial \theta } = \frac{1}{N}\sum_{n=1}^{N}R(n) \left ( \sum_{t=1}^{T-1} \frac{\partial}{\partial\theta }\log_{}{\pi _{\theta } (a_{t}| s_{t} )} \right ) θJ=N1n=1NR(n)(t=1T1θlogπθ(atst))
写成期望形式:

∂ J ∂ θ =   E τ ∼ P ( τ ) [ ( ∑ t = 1 T − 1 ∂ ∂ θ log ⁡ π θ ( a t ∣ s t ) ) R ( τ ) ] \frac{\partial J}{\partial \theta } = \ E_{\tau \sim P(\tau) }\left [ \left ( \sum_{t=1}^{T-1} \frac{\partial}{\partial\theta }\log_{}{\pi _{\theta } (a_{t}| s_{t} )} \right ) R(\tau)\right ] θJ= EτP(τ)[(t=1T1θlogπθ(atst))R(τ)]

有了上述的表达式后,我们就可以通过 TensorFlow 的自动微分工具方便地求解出𝐽(𝜋𝜃)的最大值
最后利用梯度上升算法更新即可

强化学习算法(REINFORCE 算法)

start : 随机初始化参数𝜽

for :

    根据策略𝝅𝜽(𝒂𝒕|𝒔𝒕)与环境交互, 生成多条轨迹{𝝉(𝒏)}
    计算𝑹(𝝉(𝒏))
    计算𝝏𝑱(𝜽)
    更新网络参数𝜽′ ← 𝜽 + 𝜼 ∙ 𝝏𝑱(𝜽)

end : 训练回合数达到要求

out : 策略网络𝝅𝜽(𝒂𝒕|𝒔𝒕)

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

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

相关文章

DatawhaleAI夏令营第三期机器学习用户新增预测挑战赛baseline新手教程

本教程会带领大家项目制学习,由浅入深,逐渐进阶。从竞赛通用流程与跑通最简的Baseline,到深入各个竞赛环节,精读Baseline与进阶实践技巧的学习。 千里之行,始于足下,从这里,开启你的 AI 学习之旅…

wifi列表消失 后总结

故障现象: 管理源身份打开cmd ,然后重启网络服务 Fn 加信号塔 开启二者为自动: 刷新网络: Fn 加信号塔 重启的时间可以放长一些 半个小时左右

【数据结构与算法】十大经典排序算法-选择排序

🌟个人博客:www.hellocode.top 🏰Java知识导航:Java-Navigate 🔥CSDN:HelloCode. 🌞知乎:HelloCode 🌴掘金:HelloCode ⚡如有问题,欢迎指正&#…

ping是什么

一.什么是ping 命令 在网络中 ping 是一个十分强大的 TCP/IP 工具,ping是定位网络通不通的一个重要手段。 ping 命令是基于 ICMP 协议来工作的,「 ICMP 」全称为 Internet 控制报文协议(Internet Control Message Protocol)。ping 命令会发…

恒温碗语音芯片,具备数码管驱动与温度传感算法,WT2003H-B012

近年来,随着科技的飞速发展,智能家居产品已然成为了现代生活的一部分,为人们的生活带来了更多的便利和舒适。在这个不断演进的领域中,恒温碗多功能语音芯片——WT2003H-B012成为众多厂商的首选,为智能家居领域注入了全…

数据库中的连表更新和连表删除

1.连表更新 准备两张表,id一样,但是姓名不一样, 需求根据id让姓名保持一致 执行的sql UPDATE teacher_copy1 AS b INNER JOIN teacher c ON b.TId c.TId set b.tnamec.tname 执行结果 2.连接删除 DELETE a FROMteacher_copy1 AS aINNER JOIN teacher b ON a.TId b.TId

【从零开始学习JAVA | 第四十五篇】动态代理

目录 前言: 动态代理: 动态代理实现步骤: 动态代理的应用场景: 总结: 前言: 动态代理作为一种强大的编程技术,不仅为我们提供了灵活性和可扩展性,还为软件开发和系统设计带来了…

在Linux虚拟机内配置nginx以及docker

目录 1、nginx源码包编译以及安装依赖 1、配置安装所需的编译环境 2、安装函数库(pcre、zlib、openssl) 2、安装nginx 1、获取源码包 2、解压编译 3、启动nginx服务 1、关闭防火墙 2、运行nginx 3、使用本地浏览器进行验证 3、安装docker 1、…

章节7:XSS检测和利用

章节7&#xff1a;XSS检测和利用 测试payload <script>alert(XSS)</script> <script>alert(document.cookie)</script> ><script>alert(document.cookie)</script> ><script>alert(document.cookie)</script> &qu…

【数据结构】“栈”的模拟实现

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

java线程的优先级、守护线程的概念

1.线程的调度 抢占式调度 非抢占式调度 1.1 抢占式调度 优先级越高&#xff0c;抢到cpu的概率越高 1.2 守护线程 守护线程&#xff0c;非守护线程。当其他的非守护线程执行完毕以后&#xff0c;守护线程会陆续结束。 守护线程的应用场景

SpringBoot06---前端路由VueRouter

单页面应用&#xff0c;意思是只有一个html&#xff0c;变化的内容是不同组件进行切换&#xff0c;每个组件加载网络请求&#xff0c;渲染对应的数据&#xff0c;这个内容就是学习怎么完成组件切换 以网易云音乐为例&#xff1a; 网易云音乐 (163.com) 现在无需注册&#xf…

力扣 377. 组合总和 Ⅳ

题目来源&#xff1a;https://leetcode.cn/problems/combination-sum-iv/description/ C题解&#xff08;来源代码随想录&#xff09;&#xff1a; 本题求的是排列总和&#xff0c;而且仅仅是求排列总和的个数&#xff0c;并不是把所有的排列都列出来。动规五部曲分析如下&…

【STM32】FreeRTOS消息队列和信号量学习

一、消息队列&#xff08;queue&#xff09; 队列是一种用于实现任务与任务之间&#xff0c;任务与中断之间消息交流的机制。 注意&#xff1a;1.数据的操作是FIFO模式。 2.队列需要明确数据的大小和队列的长度。 3.写和读都会出现堵塞。 实验&#xff1a;创建一个消息队列…

keil下载程序具体过程:概述

一、前言 keil下载程序具体过程将由一系列的博客组成&#xff0c;将深入探讨keil这种IDE下载镜像文件时具体做了哪些事情。我们平常下载镜像的时候&#xff0c;只是点击了一下Download按钮&#xff0c;剩下的都由keil替代我们完成了。本系列博客将揭示这一过程&#xff0c;keil…

Dynamic Web TWAIN Crack,文档扫描SDK

Dynamic Web TWAIN Crack,文档扫描SDK Dynamic Web TWAIN用于快速部署 Web 应用程序的文档扫描 SDK&#xff0c;文档扫描SDK&#xff0c;&#xff0c;超过 5300 家公司信任 Dynamic Web TWAIN &#xff0c;因其稳健性和安全性而受到超过 5300 家公司的信赖&#xff0c;Dynamic …

大数据-玩转数据-Flink RedisSink

一、添加Redis Connector依赖 具体版本根据实际情况确定 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-redis_2.11</artifactId><version>1.1.5</version> </dependency>二、启动redis 参…

JVM 基础

巩固基础&#xff0c;砥砺前行 。 只有不断重复&#xff0c;才能做到超越自己。 能坚持把简单的事情做到极致&#xff0c;也是不容易的。 JVM 类加载机制 JVM 类加载机制分为五个部分&#xff1a;加载&#xff0c;验证&#xff0c;准备&#xff0c;解析&#xff0c;初始化&am…

手把手带你跑通网站上线全流程(一个简单的HTML和Python服务端完整上线流程)

我将向你介绍如何将一个网站部署到公网&#xff0c;包含完整流程。 前端静态网站 静态网站文件 首先需要准备一个简单的网页文件用于展示页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&quo…

docker 安装elasticsearch、kibana

下载es镜像 docker pull elasticsearch 启动es容器 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -d elasticsearch 验证es界面访问 ​​​​​http://节点ip:9200/ ​…