强化学习-----DQN(Deep Q-network)

强化学习-----DQN(Deep Q-network)

一、什么是DQN

DQN(Deep Q-Network)是一种基于深度学习和强化学习的算法,由DeepMind提出,用于解决离散动作空间下的马尔科夫决策过程(MDP)问题。它是首个成功将深度学习应用于解决强化学习任务的算法之一。DQN,即深度Q网络(Deep Q-network),是指基于深度学习的Q-Learing算法。

那什么是Q-leaning?可以看上一篇文章

Q-learning是一种经典的强化学习算法,用于解决马尔可夫决策过程(Markov Decision Process,MDP)中的控制问题。它是基于值迭代(Value Iteration)的思想,通过估计每个状态动作对的价值函数Q值来指导智能体在每个状态下选择最佳的动作。

其算法的基本思想跟主要优势如下:

Q-Learning是强化学习算法中value-based的算法,Q即为Q(s,a),就是在某一个时刻的state状态下,采取动作a能够获得收益的期望,环境会根据agent的动作反馈相应的reward奖赏,所以算法的主要思想就是将state和action构建成一张Q_table表来存储Q值,然后根据Q值来选取能够获得最大收益的动作。

但是这种算法存在很大的局限性。在现实中很多情况下,强化学习任务所面临的状态空间是连续的,存在无穷多个状态,这种情况就不能再使用表格的方式存储价值函数。

为了解决这个问题,我们可以用一个函数Q(s,a;w)来近似动作-价值Q(s,a),称为价值函数近似Value Function Approximation,我们用神经网络来生成这个函数Q(s,a;w),称为Q网络(Deep Q-network),w是神经网络训练的参数。

二、DQN的训练过程

在这里插入图片描述

如上图所示,神经网络的的输入是状态s,输出是对所有动作a的打分

神经网络的训练是一个最优化问题,我们需要表示网络输出和标签值之间的差值,作为损失函数,目标是让损失函数最小化,手段是通过反向传播使用梯度下降的方法来更新神经网络的参数。

那么Q网络的标签值/目标值是什么呢?

TD target:yt=rt+γ⋅max⁡aQ(st+1,a;w)y_{t}=r_{t}+\gamma \cdot \max _{a} Q\left(s_{t+1}, a ; w\right)yt=rt+γmaxaQ(st+1,a;w)

1、初始化网络,输入状态sts_tst,输出sts_tst下所有动作的Q值

2、 利用策略(例如 ε− greddy),选择一个动作 at ,把 at 输入到环境中,获得新状态 st+1 和 r; \text { 利用策略(例如 } \varepsilon-\text { greddy),选择一个动作 } a_{t} \text { ,把 } a_{t} \text { 输入到环境中,获得新状态 } s_{t+1} \text { 和 } \mathrm{r} \text {; } 利用策略(例如 ε greddy),选择一个动作 at ,把 at 输入到环境中,获得新状态 st+1  r

3、 计算TD target: yt=rt+γ⋅max⁡aQ(st+1,a;w)\text { 计算TD target: } y_{t}=r_{t}+\gamma \cdot \max _{a} Q\left(s_{t+1}, a ; w\right) 计算TD target: yt=rt+γmaxaQ(st+1,a;w)

4、 计算损失函数: L=1/2[yt−Q(s,a;w)]2\text { 计算损失函数: } L=1 / 2\left[y_{t}-Q(s, a ; w)\right]^{2} 计算损失函数L=1/2[ytQ(s,a;w)]2

5、更新Q参数,使得Q(st,at)尽可能接近yt,可以把它当做回归问题,利用梯度下降做更新工作;更新 \mathrm{Q} 参数,使得 \mathrm{Q}\left(s_{t}, a_{t}\right) 尽可能接近 y_{t} ,可以把它当做回归问题,利用梯度下降做更新工作;更新Q参数,使得Q(st,at)尽可能接近y

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值