强化学习------DDPG算法

一、前言

Deep Deterministic Policy Gradient (DDPG)算法是DeepMind团队提出的一种专门用于解决连续控制问题的在线式(on-line)深度强化学习算法,它其实本质上借鉴了Deep Q-Network (DQN)算法里面的一些思想。论文和源代码如下:
论文:https://arxiv.org/pdf/1509.02971.pdf

代码:https://github.com/indigoLovee/DDPG

本文将会介绍其基本原理,并实现DDPG算法来训练游戏的例子
二、基本原理

DDPG(Deep Deterministic Policy Gradient)是一种用于解决连续动作空间问题的深度强化学习算法,结合了确定性策略和经验回放的思想。下面是DDPG算法的主要特点和步骤:

    Actor-Critic架构:DDPG算法基于Actor-Critic框架,其中Actor负责学习确定性策略,即在给定状态下直接输出动作值;Critic负责学习值函数,评估当前状态的价值。

    确定性策略:与传统的策略梯度方法不同,DDPG使用确定性策略,即直接输出动作值而不是动作的概率分布。这有助于在连续动作空间中更好地学习策略。

    经验回放:为了解决样本相关性和稳定性问题,DDPG引入了经验回放机制,将Agent与环境交互得到的经验存储在经验回放缓冲区中,然后从中随机采样进行训练。

    目标网络:为了稳定训练,DDPG使用目标网络来估计目标Q值和目标策略。目标网络的参数是通过软更新的方式从主网络的参数逐渐更新得到的。

    噪声探索:确定性策略输出的动作为确定性动作,缺乏对环境的探索。在训练阶段,给Actor网络输出的动作加入噪声,从而让智能体具备一定的探索能力。

为什么引入目标网络?

    在深度强化学习中,引入目标网络是为了解决训练过程中的不稳定性和提高算法的收敛性。具体来说,引入目标网络主要有以下两个作用:

    稳定训练:在训练深度强化学习模型时,目标网络的引入可以减少训练过程中的“moving target”问题。在训练Q网络或者Actor网络时,如果每次更新都直接影响到当前的网络参数,会导致目标值的变化,从而使得训练不稳定。通过引入目标网络,可以固定目标网络的参数一段时间,使得目标值更加稳定,有利于训练的收敛。

    减少估计误差:在深度强化学习中,通常会使用TD目标来更新Q值或者Actor策略。而直接使用当前的网络来估计TD目标可能会引入较大的估计误差,导致训练不稳定。通过引入目标网络,可以使用目标网络来估计TD目标,减少估计误差,从而提高算法的稳定性和收敛性。

DDPG 算法的原理如下图所示:

2.1、经验回放

经验回放就是一种让经验概率分布变得稳定的技术,可以提高训练的稳定性。经验回放主要有“存储”和“回放”两大关键步骤:

存储:将经验以 ( s t , a t , r t + 1 , s t + 1 , d o n e ) (s_{t},a_{t},r_{t+1},s_{t+1},done) (st​,at​,rt+1​,st+1​,done)形式存储在经验池中。

回放:按照某种规则从经验池中采样一条或多条经验数据。

本质上就是与DQN算法一样的经验回放操作
2.2、更新过程

DDPG 共包含 4 个神经网络,用于对 Q 值函数和策略的近似表示。

由于DDPG算法是基于AC框架,因此算法中必然含有Actor和Critic网络。另外每个网络都有其对应的目标网络,所以DDPG算法中包括四个网络,分别是Actor网络 μ ( ⋅ ∣ θ μ ) μ(·| θ^μ) μ(⋅∣θμ),Critic网络 Q ( ⋅ ∣ θ Q ) Q(·| θ^Q) Q(⋅∣θQ),Target Actor网络 μ ′ ( ⋅ ∣ θ u ′ ) μ^{'}(·| θ^{u'}) μ′(⋅∣θu′)和Target Critic网络 Q ′ ( ⋅ ∣ θ Q ′ ) Q^{'}(·| θ^{Q'}) Q′(⋅∣θQ′) 。

算法更新主要更新的是Actor和Critic网络的参数,其中Actor网络通过最大化累积期望回报来更新,Critic网络通过最小化评估值与目标值之间的误差来更新。在训练阶段,我们从Replay Buffer中采样一个批次的数据,假设采样到的一条数据为,Actor和Critic网络更新过程如下。
2.2.1、Critic网络更新过程

1、利用Target Actor网络计算出状态 s ′ s^{'} s′(下一个状态)下的动作:

    a ′ a^{'} a′ = μ ′ ( s ′ ∣ θ u ′ ) μ^{'}(s^{'}| θ^{u'}) μ′(s′∣θu′)

2、然后利用Target Critic网络计算出状态动作对(s,a)的目标值:

    y = r + γ ( 1 − d o n e ) Q ′ ( s ′ , a ′ ∣ θ Q ′ ) y=r+γ(1-done)Q^{'}(s^{'},a^{'}| θ^{Q'}) y=r+γ(1−done)Q′(s′,a′∣θQ′)

3、接着利用 Critic网络计算出状态动作对(s,a)的评估值:

    a = Q ( s , a ∣ θ Q ) a=Q(s,a| θ^Q) a=Q(s,a∣θQ)

4、最后利用梯度下降算法最小化评估值和期望值

DDPG(Deep Deterministic Policy Gradient)算法是一种深度强化学习算法,它可以在连续动作和状态空间中进行决策。PID控制器是一种经典的控制器,它通过测量误差、积分误差和微分误差来计算控制量,从而实现对被控对象的控制。 将DDPG算法应用于PID控制器的训练,其原理是通过DDPG算法学习到一个最优的策略,使得PID控制器可以在不同的工况下自适应地调整控制参数Kp、Ki和Kd,从而实现对被控对象的精准控制。 具体实现过程如下: 1. 定义状态空间、动作空间和奖励函数 在PID控制器中,状态空间是指被控对象的状态,动作空间是指控制器的三个参数Kp、Ki、Kd,奖励函数是指控制器对被控对象控制的效果。 2. 训练一个DDPG智能体 DDPG智能体由一个Actor和一个Critic组成。Actor负责输出动作,Critic则负责评估Actor输出的动作的价值。在PID控制器中,Actor负责输出控制器的三个参数,Critic则评估控制器的控制效果。 3. 优化Actor和Critic 使用DDPG算法对Actor和Critic进行优化,目标是最大化Critic的输出价值,从而得到最优的控制器参数。 4. 在仿真环境中测试控制器 使用训练好的控制器参数,在仿真环境中进行测试,评估其控制效果。 总之,DDPG算法训练PID控制器的参数Kp、Ki、Kd的原理是通过DDPG算法学习到一个最优的策略,使得控制器可以在不同的工况下自适应地调整控制参数,从而实现对被控对象的精准控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值