【OpenAI Q* 超越人类的自主系统】DQN :Q-Learning + 深度神经网络

发布时间:2023年12月27日

?


强化学习介绍

机器学习是把带标签的数据训练模型,使得预测值尽可能接近真实值。

强化学习是通过和环境交互,奖励来训练模型,使得最后获取的奖励最大期望值。

在强化学习中,机器基于环境做出行为,正确的行为能够获得奖励。

以获得更多奖励为目标,实现机器与环境的最优互动。

如教狗子握手的时候,如果狗子正确握手,就能得到骨头奖励,不握手就没有。

如果咬了主人一口,还会受到惩罚。

长此以往,狗子为了得到更多骨头,就能学会握手这个技能。

强化学习和机器学习最大不同在于,环境未知。

因为环境未知,所以我们不能通过大量数据得到决策。

只能通过和环境的交互中,不断改进策略。

强化学习的发展历史:

  • 动态规划:学过数据结构与算法的人,都了解,是传统算法策略中最难的,千变万化。
  • 表格方法:时序差分、Q-Learning 、SARSA
  • 函数逼近:线性函数逼近、多项式函数逼近、基函数逼近
  • 深度强化学习:DQN、DDPG、AlphaStar、A2C、A3C、PPO

强化学习可分为离散、连续场景。

离散场景,使用行为价值方法

离散场景:机器行为的有限的,如动作类游戏。只有向上、向下、向左、向右这 4 个动作,移动也只能一格一格地走。

可以把每个状态下的所有行为列举出来,用评论家为每个行为打分,通过选择最高分的行为实现最优互动。

因为需要评估每个行为的价值,所以这种学习方法被称为基于行为价值的方法。

基于值的方法需要根据每个行为的价值进行打分,选出价值最高的行为。

由于要穷举出所有行为,因此它只适用于离散场景(动作类游戏),无法应对连续场景。

Q-Learning 和 DQN 算法,都属于基于值的强化学习方法。

优势在于,基于行为价值的方法能实时反馈。

可以根据每个行为的价值进行打分,这个分数就相当于每个行为的实时反馈。

连续场景,使用概率分布方法

连续场景:机器的行为是连贯的,如赛车的方向盘转动角度可以在一定区间内任意取值,角度之间可以无限分割。

还有基于行为概率的方法,无需根据每个行为的价值来打分,可以很好地胜任连续场景。

基于行为概率策略的方法并不需要考虑行为的价值,而是反应调整。

机器会在训练过程中随机抽取一些行为,与环境互动。如果行为获得了奖励,就会提高选择它的概率。以后遇到同样的状态时,有更高的概率再次做出这个行为。

相反,如果未获得奖励,或者受到了惩罚,就保持或者降低该行为的概率。

经过大量训练,最终会得出连续行为的概率分布。

基于这样的原理,一个行为能获得越多奖励,被选择的概率就越大,从而实现机器和环境的最优化互动。

PPO 就是能处理连续场景的算法。

优势在于,基于策略的方法能应用连续场景上。但不能实时反馈。

实时反馈连续场景:使用概率分布 + 行为价值方法

机器在与环境互动时,难以得到实时反馈,往往要在整个回合结束后才能获得奖励。

如赢一盘棋是正向奖励,输一盘棋是负面奖励,但棋局中某一颗棋子的价值很难即时评估。

想要提高学习效率,就必须想办法提供实时反馈。

有没有办法可以在应对连续场景上的优点,和离散场景在实时反馈上的优点结合呢?

比如演员-评论家算法。

这个算法分成两半,一半是演员,另一半是评论家。

  • 演员:这一半基于概率分布,策略梯度算法。它有一个神经网络,可以根据行为的概率,选出行为。

  • 评论家:这一半基于行为价值,DQN 算法。它有一个神经网络,可以根据行为的价值进行打分。

将概率分布和行为价值的方法相结合:

  • 由基于概率分布的策略网络在连续场景中选出行为
  • 由基于行为价值的价值网络给行为提供实时反馈

概率分布网络就像写作业的学生,行为价值网络就像批改作业的老师。

二者结合,反复地写作业、改作业,对比方法,找出最好的方法。

DQN(深度 Q 网络)= 深度神经网络 + Q-Learning

DQN 算法全称 深度Q网络,以 Q-Learning 算法为基础,融合了神经网络。

因为传统Q学习,不适合处理大规模数据(连续状态空间)的问题,就可用深度神经网络来近似Q函数。

Q-Learning

Q 值表示做出一个行为后能够获得的累计奖励,越大,越应该选择。

Q 值的组成是:当前状态s下,所有行为 a 的 Q 值。

那优化目标就是,每个状态(s)下都能做出 Q 值最大的行为(a),从而实现机器与环境的最优交互。

我们会使用表格用于存储和更新Q值,是因为这种方法提供了一种直观、清晰的方式来表示和跟踪每个状态和行为组合的预期回报。


当状态和行为的数量非常庞大时,用表格储存所有数据会占用非常多的资源。

一般就会想到状态压缩,只保存与决策相关的几个最优可能来源。

但是在强化学习中,每个状态-动作对的历史信息都可能对学习最优策略至关重要,所以不能用状态压缩。

问题就是,输入状态s、行为a,怎么计算出 Q 值?

使用神经网络可以直接学习状态、行为、Q值的关系,输入状态,就能得到每个行为的Q值。

神经网络在这的功能:从存储 3 个值的排列组合,到只存储状态。

模型结构

  1. 现在的状态(St):

    • 想象你在一个房间里(这就是现在的状态St),你有几个门可以选择出去(这些门是你可以采取的动作A)。
  2. Q网络:

    • Q网络就像一个超级计算机,它能告诉你选择每扇门的好处是什么(这就是Q(St, A),每个动作的预期奖励)。
  3. 选择动作和获得奖励(R):

    • 根据Q网络的建议,你选择了一扇门并通过它(这就是你的动作A),然后你可能会找到一些糖果(这是你的奖励R)。
  4. 下一个状态(St+1):

    • 通过门之后,你来到了另一个房间(这就是下一个状态St+1)。
  5. target Q网络:

    • 这里有另一个类似的超级计算机,它叫做target Q网络。它会计算在新房间里,选择下一扇门的好处,帮助你决定下一次应该选择哪扇门。
  6. 更新Q网络(loss):

    • 你告诉第一个超级计算机你找到的糖果和第二个超级计算机的建议。第一个超级计算机会用这些信息来更新自己,变得更聪明,以便下次能给出更好的建议。

在这个过程中,Q网络不断学习和更新,目的是帮助你在这个房间的世界里找到更多的糖果。

每次你选择了一个动作并看到结果,Q网络都会变得更好,帮助你做出更好的选择。

损失函数

损失函数采用时序差分来,比较两个连续时间步的 Q 值来计算误差,并将这个误差用于更新神经网络的权重。

  • DQN的损失函数用来衡量我们的预测(比如猜测)和实际发生的事情之间的差距。

在DQN中,损失函数特别关注的是预测的奖励(我们认为采取某个动作能得到多少好处)和实际得到的奖励(实际采取动作后得到的好处)之间的差别。

上图有 2 个 Q 网络,目标 Q 网络 是 S t + 1 S_{t+1} St+1?

损失函数更新Q值规则:

  • Q ( s t , a t ) = Q ( s t , a t ) + α [ r t + 1 + γ max ? Q ( s t + 1 , a t + 1 ) ? Target?Value ? Q ( s t , a t ) ] Q(s_t,a_t)=Q(s_t,a_t)+\alpha[\underbrace{r_{t+1}+\gamma\max Q(s_{t+1},a_{t+1})}_{\text{Target Value}}-Q(s_t,a_t)] Q(st?,at?)=Q(st?,at?)+α[Target?Value rt+1?+γmaxQ(st+1?,at+1?)???Q(st?,at?)]

使用均方差误差做损失函数:

  • ω ? = arg ? min ? ω 1 2 N ∑ i = 1 N [ Q ω ( s t i , a t i ) ? ( r t + 1 i + γ max ? a t + 1 Q ω ( s t + 1 i , a t + 1 ) ) ] 2 \omega^*=\arg\min_\omega\frac{1}{2N}\sum_{i=1}^N\left[Q_\omega\left(s_t^i,a_t^i\right)-\left(r_{t+1}^i+\gamma\max_{a_{t+1}}Q_\omega\left(s_{t+1}^i,a_{t+1}\right)\right)\right]^2 ω?=argminω?2N1?i=1N?[Qω?(sti?,ati?)?(rt+1i?+γmaxat+1??Qω?(st+1i?,at+1?))]2

Q w Q_{w} Qw? 网络每步都更新,后面的 目标 Q 网络 隔几步才更新。

隔几步才更新目标Q网络是为了让训练更加稳定和有效,就像你在学习时每隔一段时间才询问朋友一样。

如果每步都听从朋友的建议,就会过于保守,完全用他的经验了,错过更好的动作选择。

经验回放

经验回放就像是给机器一个记事本,它可以在每次玩游戏后记下自己的经验(特别是错误经验)。

这个记事本包含了机器在不同游戏情况下的经验,比如在某个特定情况下采取了哪个动作,以及随后获得了多少奖励。

在执行任务的同时,将一部分数据(通常是状态、动作、奖励和下一个状态等信息)存储到经验池中,以供后续的训练使用。

在训练过程中不仅仅使用当前的经验来更新模型,还要积累更多的经验,以便在训练中使用更多的数据。这可以有几个好处:

  • 稳定性:通过将多个时间步的经验存储到经验池中,可以减少训练数据的相关性,使训练更加稳定。这有助于防止模型陷入局部最优解或出现训练不稳定的情况。

  • 重复利用经验:存储的经验可以多次用于训练,这有助于更有效地学习和提高样本的利用率。有时候,某些经验可能在一开始并不显著,但随着训练的积累,它们可能变得更有价值。

探索策略

但有一个问题:是选择已知的好方法(像一直按同一个按钮),还是尝试新方法(可能有更好的方法)?

探索策略就是决定如何平衡这两种选择的方法。

如果一直按同一个按钮,它可能会错过更好的方法,但如果总是尝试新方法,它可能会很难取得进展。

在 ε-greedy 探索策略下,智能体以ε的概率选择随机动作(探索),以1-ε的概率选择当前认为最优的动作(利用)。

在一部分时间步中会尝试新的动作以发现更多信息,而在另一部分时间步中会选择已知的最佳动作以最大化奖励。

初始的时候,多探索ε要大,经验多了后,多利用ε减少

流程关联

  1. Q-Learning(时间步0):

    • 开始时,我们有一个深度神经网络(DNN),该网络的目标是学习在不同状态下采取不同动作的Q值,以获得最大的累积奖励。
    • 我们初始化Q值网络,并且可以随机选择一个探索策略来探索环境。
  2. 探索策略

    • 在每个时间步骤,智能体使用探索策略来选择一个动作,如ε-greedy策略,这使得智能体有机会尝试新的动作。初始的时候,多探索ε要大,经验多了后,多利用ε减少
  3. 环境交互

    • 智能体采取选定的动作,并与环境互动,从环境中获得奖励(r_t+1)和新的状态(s_t+1)。
  4. 经验回放

    • 智能体将这次互动的信息(状态s_t、动作a_t、奖励r_t+1和下一个状态s_t+1)存储到经验池中。
  5. 损失函数计算

    • 定期或随机地,我们从经验池中抽取一些数据,这些数据用于计算损失函数。
    • 损失函数的目标是调整深度神经网络DNN的参数( ω \omega ω),以使 Q 值网络的预测更接近真实的 Q 值。
    • 损失函数通常是均方差误差(MSE),用来比较 Q 值网络的预测 Q 值和目标 Q 值(根据Q-Learning更新公式计算得出的值)之间的差异。
  6. DNN参数更新

    • 使用损失函数的梯度,我们更新深度神经网络(DNN)的参数( ω \omega ω),以减小预测误差。
  7. Q值网络更新

    • 周期性地或者在一定步骤之后,我们将Q值网络的权重更新为DNN的权重,以确保Q值网络也受到最新的训练影响。
  8. 探索策略更新

    • 随着训练的进行,我们可能会逐渐降低探索策略中的探索比例ε,以便智能体更多地依赖学到的Q值来做出决策,而不是随机探索。
  9. 重复

    • 重复执行上述步骤,不断与环境互动、收集经验、更新网络参数,直到智能体能够获得满意的策略并在任务中表现出色。

DQN 优化

DDQN:双 DQN,实现无偏估计

因为 DQN 的 Q 值更新是以下一个状态为参考,我们是神经网络近似估算给的都是最大值,层层传递,会导致偏大。

DDQN 改变了目标值的计算方法,其他地方与DQN算法完全一致

  • 让Q网络、Q 目标网络,俩个网络相互监督。

Dueling DQN

噪声网络

优先级经验回放

OpenAI Q* :超越人类的自主系统

OpenAI在11月22号,给公司人员发了一封内部信,承认了 Q*,并将这个项目描述为 “超越人类的自主系统”。

Q* 是在搞 过程监督,通过奖励推理的每个正确步骤。

而不仅仅是结果监督,奖励正确的最终答案。

Q* 是 Q-learning 和 A* (可能)的组合,能大幅度提升推理能力,用于解决数学中高难度问题。

openai研究 Q-learning 的成果:https://noambrown.github.io。

Q-learning 需要大量的探索(左图二基本遍历完了),A* (左图三只遍历了一部分)。

Q* 结合了双方的优点(左图四):

  • 更高效选择策略:高效地学习最优策略,并且可以用于部分可观察的环境
  • 自我修剪:评估并去除其模型中不必要的部分,以提高效率和决策的过程,类似于一个人反思自己的思想和行为,实现自我提升。
  • 迁移学习:使 Q-learning 模型在一个领域受过训练后能够将其知识应用于不同但相关的领域的技术,比如会开摩托,学习自行车就很容易
  • 创造和不可知能力:在Q-learning框架中实现元学习可以使人工智能学会如何学习,这是一种自省创造性解决问题,提出以前没有考虑过的新颖的解决方案,如破解密码系统或发明新的数学方法。

最强的是不可知能力,成功破解了现代加密算法 AES,但是不可知。

文章来源:https://blog.csdn.net/qq_41739364/article/details/135245865
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。