DDPG之OU过程

2023-11-03 23:40
文章标签 过程 ddpg ou

本文主要是介绍DDPG之OU过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Ornstein-Uhlenbeck过程浅析

        上周在实现DDPG的过程中,发现其中用到了一个没见过的随机过程,叫做Ornstein-Uhlenbeck过程,所以简单地去了解了一下,下面我们进行概要讨论。

        OU过程是一种序贯相关的过程,在DDPG中用于实现RL的探索,想想也对,毕竟RL也是一种序贯相关模型,引入序贯噪声也不无道理。先参考维基百科看看OU过程长什么样子,OU过程满足下面的随机微分方程:

                {\displaystyle dx_{t}=\theta (\mu -x_{t})\,dt+\sigma \,dW_{t}}

        其中\theta >0\mu\sigma >0均为参数,W_{t}为维纳过程。

        我们先写个代码试试:

class OrnsteinUhlenbeckActionNoise:def __init__(self, mu, sigma=0.2, theta=0.15, dt=1e-2, x0=None):self.theta = thetaself.mu = muself.sigma = sigmaself.dt = dtself.x0 = x0self.reset()def __call__(self):x = self.x_prev + self.theta * (self.mu - self.x_prev) * self.dt + \self.sigma * np.sqrt(self.dt) * np.random.normal(size=self.mu.shape)self.x_prev = xreturn xdef reset(self):self.x_prev = self.x0 if self.x0 is not None else np.zeros_like(self.mu)def __repr__(self):return 'OrnsteinUhlenbeckActionNoise(mu={}, sigma={})'.format(self.mu, self.sigma)
        这就是上面的公式的代码实现,其中d即增量的意思,所以可以变为x-self.x_prev,也就有了上面的式子。此外,其中维纳过程是利用高斯过程实现的这一点需要注意一下。

        我们画出其图像:

def main():ou_noise=OrnsteinUhlenbeckActionNoise(mu=np.zeros(2))plt.figure('data')y=[]t=np.linspace(0,100,1000)for _ in t:y.append(ou_noise())plt.plot(t,y)plt.show()if __name__=="__main__":main()
        放出几张图看一下:

               

        恩,大概就是长这个样子,其中我们是对两个量施加的噪声,所以有两条曲线。

        随着时间的推移,这个过程将慢慢的漂移到它的long-term mean。

        好了,就这么浅......


这篇关于DDPG之OU过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/341689

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Spring Security注解方式权限控制过程

《SpringSecurity注解方式权限控制过程》:本文主要介绍SpringSecurity注解方式权限控制过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、摘要二、实现步骤2.1 在配置类中添加权限注解的支持2.2 创建Controller类2.3 Us

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea