1 Q-learning与Deep Q-learning
Q-learning是一种用来练习Q函数的算法,Q 函数是一个动作-价值函数,用于确定处于特定状况和在s该状况下采纳特定举动的价值。其间的Q函数被以表格的方式展示出来,横轴表明状况,纵轴表明动作,表格中的每一个数据都对应了某一状况下采纳某一动作所对应的价值。可是当状况多到无法以表格或数组的方式表现时,最好的方法便是用一个参数化的Q函数去得到近似Q值。因为神经网络在杂乱函数建模方面表现出色,咱们能够运用神经网络(Deep Q-Networks)来估算 Q 函数。
DQN的基本原理与Q-learning算法十分相似。它从任意 Q 值估量开端,运用-greedy战略探索环境。其间心是在迭代更新中运用双举动概念,即具有当时 Q 值的当时举动Q(St,At)Q(S_t, A_t)和具有方针 Q 值的方针举动Q(St+1,a)Q(S_{t+1}, a),以改善其 Q 值估量。
2 DQN的结构组成
DQN主要由三部分组成:Q network、Target network和经历回放(Experience Replay )组件。
其间,Q神经网络用于练习发生最佳状况-动作价值,Target神经网络用于核算下一状况下采纳的动作所对应的Q值,Experience Replay用于与环境进行交互并发生数据用于练习神经网络。
3 DQN创新技能(重点)
DQN中主要有三个颠覆性创新技能:
- Experience Replay:更有效地运用过往经历数据;
- Fixed Q-Target:用于安稳练习,加速收敛;
- Double Deep Q-Learning:用于解决Q值过高估量的问题。
3.1 Experience Replay(经历回放)
如图所示,Experience Replay组件选用-greedy战略与环境进行交互(当时状况下采纳可能得到最高收益的动作),并得到环境反应的奖励和下一状况,并将这一观察成果保存为练习数据样本(Current State, Action, Reward, Next State)。练习神经网络时,将随机从练习数据样本中抽取数据进行练习。那这时就发生了一个问题,为什么不让智能体与环境不断交互发生新数据并将其用于神经网络的练习呢?
回想一下,当咱们练习神经网络时,通常是在随机打乱练习数据后挑选一批样本。这样能够确保练习数据有满足的多样性,然后让网络学习到有意义的权重,使其具有杰出的泛化能力,并能处理一系列数据值。
以机器人学习在工厂车间内导航为例,假设在某个时刻点,它正企图绕过工厂的某个角落,在接下来的几回移动中,它所采纳的一切举动都局限于工厂的这一区域。假如神经网络企图从这批操作数据中学习,它就会更新权重以专门处理工厂中的这一局部方位。而它不会学习到任何有关工厂其他当地的信息。一段时刻后,把机器人搬到了另一个当地,网络在这一段新的时刻内的学习都将会集在那个新的当地,它又可能把在本来地点学到的知识悉数忘掉。
3.2 Fixed Q-Target(固定Q方针)
在DQN中有两个神经网络,但却只有Q神经网络不断学习更新,而Target神经网络只是在每隔一段时刻后仿制一次Q神经网络参数,用于核算Q-Target。那么为什么不只运用一个网络来构建DQN呢?
首先,咱们能够用一个 Q 网络而不运用方针网络来构建 DQN。在这种情况下,咱们经过 Q 网络进行两次传递,首先输出Q Predict值[ Q(St,At)Q(S_t, A_t) ],然后输出Q Target值[ RT+1+maxQ(St+1,a)R_{T+1}+gamma max Q(S_{t+1}, a) ]。但这可能会带来一个潜在的问题:Q 神经网络的权重在每个时刻步都会更新,然后改善对Q Target值的猜测。可是因为网络及其权重是相同的,这也会改动咱们猜测的Q Target值。每次更新后,它们都不会坚持安稳,这就像是在追逐一个移动的方针。
经过运用第二个不经过练习的网络,咱们能够确保Q Target值在短时刻内坚持安稳。但这些Q Target值也是猜测值,也需要有所迭代,因而在预设的时刻步之后,Q 网络的权重会被仿制到Target网络。
3.3 Double Deep Q-Learning(两层深度Q学习方法)
在核算 Q Target时会遇到一个简略的问题:咱们如何确定下一个状况的最佳举动便是 Q 值最高的举动?
Q 值的准确性取决于咱们尝试了哪些动作以及探索了哪些状况。可是在练习开端时,咱们没有满足的信息来确定最佳举动,因而将最大 Q 值(噪音较大)作为最佳举动可能会导致误报。假如非最佳操作的 Q 值经常高于最佳操作的 Q 值,学习就会变得杂乱。
解决方法是:在核算 Q 方针值时,咱们运用两个网络将动作挑选与方针 Q 值生成别离开来。
- 运用 DQN 网络核算当时状况下采纳当时动作的Q值[ Q(St,At)Q(S_t, A_t) ]。
- 运用方针网络核算鄙人一状况下能得到的最大方针 Q 值以及奖励[ RT+1+maxQ(St+1,a)R_{T+1}+gamma max Q(S_{t+1}, a) ]。
因而,Double DQN 能够帮助咱们减少对 Q 值的高估,然后帮助咱们更快地进行练习,并取得更安稳的学习效果。
4 DQN运转进程
如上图所示,DQN运转分为以下几步:
-
初始化Experience Replay组件。其经过与环境进行交互堆集部分练习样本(Current State, Action, Reward, Next State),并将之保存为练习数据。
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/911d36f7b6df4cb2b1d7d1b1bf5d53fd~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1012&h=241&s=75476&e=png&b=fcfcfc" alt="” loading=”lazy”>
-
初始化Q网络网络参数,并将之拷贝给方针网络。
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/21fb0a01f96846e1ae10db9ae6fae8b3~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=1023&h=183&s=59674&e=png&b=f8f8f8" alt="” loading=”lazy”>
-
运用初始化后的Q网络配合Experience Replay组件进行练习数据生成(这一步并不练习网络)。由Experience Replay回来当时状况作为Q网络输入,Q网络运用随机初始化后的参数得到当时状况下能够选用的一切动作所对应的Q值,并依照-greedy战略挑选要履行的动作输出给Experience Replay,其得到动作后与环境进行交互并得到下一状况以及奖励,并将这一系列数据作为练习数据与第一步发生的部分数据进行存储。
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1d13d38fbbe34427acbd30b08141f12c~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=910&h=418&s=143929&e=png&b=fbfafa" alt="” loading=”lazy”>
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cd84916804d94c05982700fa83474b9a~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=916&h=463&s=140019&e=png&b=fdfcfc" alt="” loading=”lazy”>
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bde5e365391e40a1b96325973776790b~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=918&h=429&s=155594&e=png&b=fcfbfb" alt="” loading=”lazy”>
-
在已存储数据中随机挑选一批练习数据(S1,a4, R1, S2),将当时状况S1输入Q网络得到当时状况下一切动作对应的Q值,并挑选a4对应的Q值q4hat {q_4}存储备用,后续将运用其核算丢失值(loss)。
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8ee4c8dde4fd4cfe82f3b2e038456baf~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=903&h=409&s=164329&e=png&b=fbfafa" alt="” loading=”lazy”>
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1a49f591ed0f4b988d208a7156a7c684~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=898&h=400&s=149937&e=png&b=fbfafa" alt="” loading=”lazy”>
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7bf6f6abb91b49179aec86506a554647~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=910&h=418&s=143929&e=png&b=fbfafa" alt="” loading=”lazy”>
-
将练习数据(S1,a4, R1, S2)中的下一状况S2输入方针网络核算下一状况下一切可执举动作对应的Q值,并依照-greedy战略挑选最大Q值q9q_9,核算TargetQValue=RT+1+maxQ(St+1,a)Target Q Value = R_{T+1}+gamma max Q(S_{t+1}, a),即R1+q9R_1+gamma q_9。
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b770c146a6c8480cad41219033431747~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=720&h=400&s=18954&e=webp&b=fdfcfc" alt="” loading=”lazy”>
-
运用之前Q网络输出的q4hat{q_4}(Predicted Q-Value)和方针网络得到的q9q_9(Target Q-Value)核算均方差丢失(MSE Loss)。
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ee4c40f2d71b4ed5bdc1b3207b06ca8c~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=720&h=400&s=20136&e=webp&b=fdfcfc" alt="” loading=”lazy”>
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/62d8f5187af64ef2bc1e1b2a237fbfc5~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=601&h=205&s=91683&e=png&b=fdfbfb" alt="” loading=”lazy”>
-
运用梯度下降法反向传达丢失并更新 Q 网络的权重。方针网络没有经过练习,坚持固定,因而不会核算丢失,也不会进行反向传达。
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c258d1a7d6984d9b8cc783bddc3136f2~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=793&h=276&s=84440&e=png&b=faf9f9" alt="” loading=”lazy”>
-
不断重复进程3到进程8,练习更新Q网络参数,坚持方针网络参数不变,不然咱们就像是在追逐一个不断移动的方针。
-
T 个时刻步后,将 Q 网络权重仿制到方针网络。方针网络就能取得改善后的权重,然后也能猜测出更准确的 Q 值。处理进程继续进行。
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/58b9be531d484ccc9424d758af62409b~tplv-k3u1fbpfcp-jj-mark:3024:0:0:0:q75.awebp#?w=720&h=300&s=7128&e=webp&b=fdfcfc" alt="” loading=”lazy”>