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 = theta
        self.mu = mu
        self.sigma = sigma
        self.dt = dt
        self.x0 = x0
        self.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 = x
        return x

    def 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。

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


OU(Ornstein-Uhlenbeck)过程是一种连续时间随机过程,常用于描述具有回归到均值的趋势的现象。它是一种强平稳过程,其数学期望和协方差函数不随时间变化。 假设OU过程由以下随机微分方程描述: dX(t) = θ(μ - X(t))dt + σdW(t) 其中,X(t)是OU过程在时间t的取值,μ是均值,θ是回归速度(回归到均值的速度),σ是扰动项的强度,W(t)是标准布朗运动,即满足dW(t) ~ N(0, dt)的随机过程。 首先,我们来计算OU过程的数学期望和协方差函数。根据随机微分方程,我们可以得到: dX(t) - θμdt = θX(t)dt + σdW(t) 对其两边积分,得到: X(t) = X(0)e^(-θt) + μ(1 - e^(-θt)) + σ∫e^(-θ(t-s))dW(s) 由于标准布朗运动的数学期望为0,因此OU过程的数学期望为: E[X(t)] = μ 而协方差函数为: Cov[X(t), X(s)] = E[(X(t) - μ)(X(s) - μ)] = σ^2/(2θ) * (e^(-θ|t-s|) - e^(-θ(t+s))) 可以看出,OU过程的数学期望和协方差函数都不随时间变化,因此是严平稳过程。 接下来,我们来计算OU过程的条件分布。条件分布表示给定过程在一些时刻的取值,过程在其他时刻的取值的条件概率分布。由于OU过程是严平稳过程,因此其条件分布也是严平稳的。 具体来说,假设我们已知OU过程在时刻0的取值为x0,那么在时刻t的条件分布为: p(X(t)|X(0)=x0) = N(X(t); μ + (x0 - μ)e^(-θt), σ^2/(2θ) * (1 - e^(-2θt))) 其中,N(μ, σ^2)表示均值为μ,方差为σ^2的正态分布。可以看出,条件分布的均值会随着时间的推移逐渐回归到均值μ,方差也会逐渐减小。这与OU过程的回归到均值的趋势是一致的。
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值