深度强化学习中的知识点-DQN、DDPG、AC-贪心算法

DRL学习时总结的一些知识点

最近在学习使用凸优化和DRL来解决通信领域中的资源分配问题。

#近期研究领域:

1.边缘计算;
2. MEC;
3. 数字孪生;
4. 任务卸载;
5. 凸优化、深度强化学习;
如果有人喜欢会继续进行分享,以及相关代码

1.Deep Q Network (DQN)

深度Q网络(DQN)算法(Mnih等人,2015年),该算法能够在许多使用未处理像素作为输入的雅达利电子游戏中达到人类水平。为此,使用深度神经网络函数逼近器来估计动作值函数。

Q学习的主要思想是在State和Action之间构造一个Q表来存储Q值,然后选择最大Q值对应的动作。每个状态-行动对都有一个值Q(s, a),可以视为长期奖励。在连续训练过程中,我们可以通过TD-error来更新Q值,直到Q表收敛。(如果问题的状态和动作空间非常大,用Q表记录所有的Q(s, a)是不现实的。因此,使用一个深度神经网络来估计Q(s,a),而不是为每个状态-动作对计算Q值,这也是深度Q网络(DQN)的基本思想。)

然而,DQN虽然解决了高维观测空间的问题,但它只能处理离散和低维的动作空间。许多有趣的任务,尤其是物理控制任务,具有连续(实值)和高维的操作空间。DQN不能直接应用于连续域,因为它依赖于找到使动作值函数最大化的动作,在连续值的情况下,每一步都需要迭代优化过程。

Deep Deterministic Policy Gradient (DDPG)

DDPG论文中使用Ornstein-Uhlenbeck噪声用于探索,为什么不用高斯噪声呢?

OU过程是时序相关的,所以在强化学习的前一步和后一步的动作选取过程中可以利用OU过程产生时序相关的探索,以提高在惯性系统(即环境)中的控制任务的探索效率。(注:高斯噪声是时序上不相关的,前一步和后一步选取动作的时候噪声都是独立的。前后两动作之间也只是通过状态使其独立。)
所以OU过程的适用场景有:相比于独立噪声,OU噪声适合于惯性系统,尤其是时间离散化粒度较小的情况。可以保护实际系统,如机械臂。

Actor-Critic

DDPG算法,会训练两个网络,一个策略网络(actor),另一个估值网络(critic)。策略网络的输入是状态state,输出是动作action。估值网络的输入是 成对的 state-action,输出是 成对的state-action 的Q值估计。可以把 critic看成是 actor 的损失函数loss function,只不过critic不是MSE那样固定不变的损失函数 ,而是一个可以被持续训练的神经网络。在对抗网络里,用来给生成器 generator 提供梯度的 判别器 discriminator 有时候也被成为 critic。

critic的优化目标是:最小化critic loss;而actor的优化目标是:最大化 critic网络给出的Q值估计(相当于最小化 critic网络给出的Q值估计的负值)。

Critic网络的优化目标 objective 是:根据损失函数 loss function(MSE)提供的梯度,更新critic网络的参数,最小化网络输出的Q值与标签的距离。也可以说成是:通过训练让 critic loss 接近于 0。

Actor网络的优化目标 objective 是:根据损失函数 loss function(critic网络)提供的梯度,更新actor网络的参数,最大化 critic网络给出的Q值估计值。也可以说成是:通过训练让critic 网络的Q值估计尽可能大。

e-贪心算法

ϵ-贪心算法基于一个概率来对探索和利用进行折中:
每次尝试时以ϵ的概率进行探索(试探,不一定从最优的选,所有样本随机选择),以1-ϵ的概率进行利用(开发,只从最大化收益的动作里面进行选择)。

算法流程

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
DQN算法是一种基于Q-learning的深度强化学习算法,其目标是学习一个Q函数,使得该函数能够最大化累积奖励。DDQN算法是对DQN算法的改进,通过解决DQN算法过高估计Q值的问题,提高了算法的性能。Dueling DQN算法则是在DDQN算法的基础上,提出了一种新的神经网络结构,使得算法的学习效率更高。 下面是DQN算法的公式推导分析: 1. Q-learning的更新公式为:$Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha(r_{t+1} + \gamma \max_{a} Q(s_{t+1},a) - Q(s_t,a_t))$ 2. DQN算法使用了深度神经网络来逼近Q函数,将更新公式改为:$Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha(r_{t+1} + \gamma \max_{a} Q(s_{t+1},a; \theta^-) - Q(s_t,a_t; \theta))$,其$\theta$为当前网络的参数,$\theta^-$为目标网络的参数,$\max_{a} Q(s_{t+1},a; \theta^-)$表示在下一个状态$s_{t+1}$,选择动作$a$所得到的最大Q值。 3. DDQN算法DQN算法的基础上,使用了双网络结构,解决了DQN算法过高估计Q值的问题。更新公式为:$Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha(r_{t+1} + \gamma Q(s_{t+1},\arg\max_{a} Q(s_{t+1},a; \theta); \theta^-) - Q(s_t,a_t; \theta))$,其$\arg\max_{a} Q(s_{t+1},a; \theta)$表示在下一个状态$s_{t+1}$,选择动作$a$所得到的最大Q值对应的动作。 4. Dueling DQN算法在DDQN算法的基础上,提出了一种新的神经网络结构,使得算法的学习效率更高。具体来说,Dueling DQN算法的输出包括两个分支,分别是该状态的状态价值V(标量)和每个动作的优势值A(与动作空间同维度的向量)。网络结构如下图所示: [Dueling DQN网络结构](https://img-blog.csdn.net/20170727145756345?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbnhpYW9fYmFpZHUx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 更新公式为:$Q(s_t,a_t) \leftarrow V(s_t) + (A(s_t,a_t) - \frac{1}{|\mathcal{A}|} \sum_{a} A(s_t,a))$,其$V(s_t)$表示状态$s_t$的价值,$A(s_t,a_t)$表示在状态$s_t$下选择动作$a_t$的优势值,$\frac{1}{|\mathcal{A}|} \sum_{a} A(s_t,a)$表示所有动作的平均优势值。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值