深度强化学习DQN

一、Q-Learning 概述

Q-Learning 可以参考 强化学习 Q-learning 算法举例
在这里插入图片描述

二、DQN

Q-Learning算法利用Q table来记录和检索 Q value,在状态空间较小的情况下可以适用,但是当状态空间很大的时候,利用Q table来维护数据就不太可行,所以就诞生了DQN算法(deep Q learning),用神经网络代替了Q table。将输入数据输入神经网络,神经网络会输出对应的Q value。

下图是DQN算法的结构图,输入数据仅仅只是当前的state,经过deep NN之后,输出是Q value。在很多时候,action的个数是固定的,所以神经网络的输出个数也是固定的,它的输出是n个数字,n表示的是action的维度,每个输出表示的是action对应的Q value。
在这里插入图片描述
下面是DQN的损失函数。损失函数是要最小化predicted Q valuetarget Q value之间的error。右边是predicted Q value,它就是神经网络的输出,表示的是状态为s,动作为a的时候神经网络的预测值。左边是target Q value,它是指当选择动作a时实际观测到的值。当agent选择一个动作,它会得到一个reward,然后我们可以它存下来,我们同样可以把every action after that的discounted reward存下来。它们两的和就是target Q value,是给一个动作实际获得的所有reward。

可以用predicted Q value去做回归问题,然后用和普通神经网络里一样的反向传播去训练损失函数,然后根据损失函数去训练神经网络使得predicted Q value尽量接近target Q value。

在这里插入图片描述

三、DQN 应用

下面是一张游戏的画面截图,左边的输入是游戏的状态state,经过一系列卷积层和RuLU函数,然后经过全连接层,最后在输出层得到一列Q值。每一个Q值对应一个agent可能采取的动作。

DQN算法虽然可以在多个不同的atari游戏中表现不错,但是它也有自己的缺点。

在复杂性方面,它能解决动作空间是较少且离散的问题,它不能解决连续动作空间的问题。
比如在自动驾驶时,方向盘的转动角度是连续的,这时候就不能用DQN,因为它的输出是有限的个数。当然也可以把连续的空间分割成很小的bins,然后学习这些bins的Q value,但是也存在一些问题,如将bin划分为多小,bin越小,计算越复杂等。

在灵活性方面,它不能学习随机的policy,因为在DQN中policy都是由Q 函数很确定地计算出来的。因为在DQN中,action都是由Q value决定,选择最大Q value对应的action。关于这两个问题,可以用Policy Gradient(PG)算法来解决。

在这里插入图片描述

四、DQN 几点把握
  • DQN 是对 Q-Learning Table 的神经网络化
  • Q-Learning Table是 特殊的 DQN
  • DQN 是更一般化的 Q-Learning
  • DQN 出现的目的是为了解决 Q-Learning 无法解决的维度爆炸问题
Ref:

  [1].Deep Q Network(DQN)算法
  [2].强化学习 Q-learning 算法举例

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值