强化学习(2)— DQN和Q学习

2.1 DQN
2.1.1 概念回顾:动作价值函数和最优动作价值函数

2.1.2 DQN表达式 Q(s,a;w)
w表示神经网络中的参数,对于所有的s和a,DQN预测的Q(s,a;w)尽可能接近Q*(s,a)
DQN的输入是状态s,输出是离散动作空间A中每个动作的Q值

2.1.3 DQN的梯度
▽w Q(s,a;w)≜𝜕"Q(s,a;w)" /𝜕𝒘,Q(s,a;w)是实数,梯度的形状(维度)与w完全相同

2.2 TD算法
y ̂ ≜ r + (𝑞’) ̂,将y ̂称为TD目标,δ=(𝑞’) ̂ - ( y) ̂称为TD误差

2.3 用TD训练DQN
2.3.1 算法推导
最优贝尔曼公式:Q*(st ,at ) = Est+1~p(• |st , at) [Rt + γ • maxA∈A Q*(st+1 ,A)|St=st , At=at]

与蒙特卡洛方法结合:Q*(st ,at ) ≈ rt + γ • maxa∈A Q*(st+1,a)
将Q*(st ,at )替换成神经网络Q(s,a;w),得到:
Q(st,at;w) ≈ rt+γ•maxa∈A Q*(st+1,a)

定义损失函数L(w)=1/2[Q(st ,at ;w) – y ̂]2
假设y ̂是常数,计算L关于w的梯队:
▽w L(w) = ((𝑞𝑡) ̂ - (𝑦𝑡) ̂)•▽w Q(st ,at ;w)
做一步梯度下降,可以让(𝑞𝑡) ̂更接近 (𝑦𝑡) ̂:
w ← w - α•δt•▽w Q(st ,at ;w)

在这里插入图片描述
2.3.1 训练流程
给定一个四元组(st ,at ,rt ,st+1),可计算出DQN的预测值:𝑞 ̂ = Q(s,a;w)
以及TD目标和TD误差: (𝑦 ) ̂≈ rt+γ•maxa∈A Q*(st+1,w), δt = (𝑞𝑡) ̂- (𝑦𝑡) ̂
TD算法用下式更新DQN的参数:w ← w – α • δt •▽w Q(st ,at ;w)
算法所需的四元组与控制智能体运动的策略无关,DQN训练可分为两部分:
1.收集训练数据(行为策略)
常用ε-greedy策略:

at=

将智能体在一个回合的轨迹:s1 ,a1 ,r1 ,s2 ,a2 ,r2……, sn ,an ,rn
把一条轨迹划分为n个(st ,at ,rt ,st+1)这样的四元组,存入缓存,这个缓存叫经验回放缓存
2.更新参数w
从经验回放缓存随机抽取(sj ,aj ,rj ,sj+1),设DQN当前参数为wnow,执行下面的步骤对参数进行更新,得到新的参数wnew
(1)对DQN做正向传播,得到Q值:
(𝑞𝑗) ̂= Q(sj ,aj ; wnow) , (𝑞"j+1" ) ̂= maxa∈A Q(sj+1 ,a ; wnow)
(2)计算TD目标和TD误差:
(𝑦𝑗) ̂≈ rj+γ • (𝑞"j+1" ) ̂, δt=(𝑞𝑗) ̂ - (𝑦𝑗) ̂
(3)对DQN做反向传播,得到梯度:
gj=▽w Q(sj ,aj ; wnow)
(4)通过做梯度下降更新DQN的参数:
wnew ← wnow - α•δj• gj

在这里插入图片描述
2.4 Q学习算法(表格形式,略)
2.5 同策略和异策略
行为策略:控制智能体与环境交互的策略,用于收集经验,即观测的状态、动作和奖励
目标策略:强化学习的目标是得到一个策略函数,用它来控制智能体,这个策略函数叫目标策略
收集经验的行为策略与控制智能体目标策略相同就称为同策略
收集经验的行为策略与控制智能体目标策略不同就称为异策略
DQN属于异策略,行为策略可以与目标策略不同
经验回放只适合异策略,不适合同策略

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DQN(Deep Q-Network)是一种由深度神经网络(DNNs)支持的Q-learning算法,用于强化学习问题。它的目标是使函数逼近最优策略函数,以便在状态空间中涉及的每个状态下选择正确的动作。这使得DQN成为一种广泛用于游戏AI和机器人技术的强化学习方法。 在matlab中,可以通过编写DQN的代码来实现强化学习。首先,需要定义DNN的体系结构,其中包括输入层、隐层和输出层。在定义DNN的结构后,需要确定状态、行动和奖励,以便在每个状态下进行正向或反向传播。 在DQN中,还需要使用经验回放机制来提高学习效率。这意味着网络将保存先前成功学习到的状态和行动序列。然后,选择一个经验池来训练模型,并在随后的迭代中更新经验以进一步改进模型的精度。 在编写DQN代码时,还需要调整各种参数,例如学习率、随机探索率和折扣率等。这些值可以根据问题的要求和具体的应用场景进行优化。 总的来说,实现DQN的代码需要一定的编程经验和深入的数学知识,包括机器学习、优化算法和深度神经网络。但如果成功实现,该算法可以成为解决各种强化学习问题的有力工具。 ### 回答2: DQN是深度强化学习中非常流行的一种技术,它的主要优势是能够处理离散状态与动作空间。在MATLAB中,有很多可以使用的DQN代码包。下面让我们来讨论一下MATLAB中的DQN算法以及它的实现。 DQN算法 DQN是一种基于Q学习强化学习策略,它主要是通过神经网络来逼近现实生活中的复杂环境,并通过使用经验回放的机制来优化神经网络。DQN算法将Q学习深度学习相结合,以实现更高效的搜索。在这种算法中,一个深度神经网络被用来逼近每个状态的价值函数,并使用经验回放技术来减少样本相关性。 DQN实现 在MATLAB中,一个DQN实现遵循一下几个步骤: 1. 状态表达 在DQN中,状态向量用来表示代理器所处的状态。这个向量可以包含任意的重要信息,比如位置、速度、方向等。在MATLAB中,可以使用预处理的数据或者深度神经网络来构建状态向量。 2. 神经网络构建 神经网络在DQN中用来估计每个状态的价值函数。在MATLAB中,可以使用深度学习工具箱来构建神经网络,该工具箱提供了不同的神经网络模型。 3. 经验回放 由于DQN需要大量的样本数据才能训练神经网络,因此需要使用经验回放技术来减少样本相关性。在MATLAB中,可以使用ReplayBuffer类来实现经验回放。 4. 算法训练 在MATLAB中,可以使用TrainDQN方法来训练DQN算法,该方法会使用神经网络代替具体的深度神经网络。 总结 DQN是一种非常流行的强化学习方法,在MATLAB中也有非常好的支持。使用MATLAB可以轻松地构建DQN模型、训练深度神经网络和实现经验回放技术。使用MATLAB的DQN代码,可以更方便地研究、实现和优化DQN算法。 ### 回答3: DQN是深度强化学习中的一种算法,结合了深度学习强化学习的优点,能够处理高维复杂的状态和动作空间。Matlab是一种流行的数学软件,也可以用来编写DQN算法的代码。下面将介绍一些常用的Matlab强化学习代码DQN。 首先,需要导入一些必要的Matlab函数和工具箱。常用的包括Deep Learning Toolbox、Reinforcement Learning Toolbox等。 接着,需要定义神经网络的结构并将其编译。在DQN算法中,有两个神经网络:一个被称为“目标网络”,用于计算未来的奖励;另一个被称为“评估网络”,用于选择下一个动作。这两个网络的参数会逐渐改变,在每个epoch末尾更新“目标网络”的参数。 然后,需要定义强化学习环境。我们可以选择使用预先定义的环境,比如CartPole或MountainCar。也可以自定义环境,包括状态和动作空间、奖励函数等。 接下来,需要定义一些训练参数,比如学习率、回放缓冲区大小、mini-batch大小等。这些参数也需要根据实际情况进行调整。 在训练过程中,每个epoch开始时,需要执行一些预处理步骤,比如获取当前状态、执行动作并观察奖励、将状态转换成神经网络的输入格式等。然后,需要使用“评估网络”选择下一个动作,以及计算TD误差和损失函数。接着,需要更新“评估网络”的参数。每个epoch末尾,需要使用“目标网络”更新所有TD目标。 最后,需要定义一些测试参数,比如测试次数、测试最长时间等。使用学习后的“评估网络”对测试环境进行测试并计算平均测试分。 综上所述,Matlab强化学习代码DQN的实现方法是相对比较简单的,主要是需要借助一些基础的Matlab函数和工具箱,并根据实际情况进行参数的选择和调整。但是,具体实现过程中也需要注意一些细节和技巧,比如数据预处理、神经网络结构的选择、参数的调整等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值