当前位置:   article > 正文

强化学习(PPO、DQN、A3C)简述_ppo和dqn

ppo和dqn

        强化学习需要不断与环境交互;开局是智障,装备全靠打;需要大量的模拟数据来训练;训练其实就是不断尝试的过程,慢慢去学习如何才不能撞墙!

       强化学习也就是咱们的一生(经历了学习、学习、学习;与环境交互中不断获得经验)。设置奖励机制,实际中奖励并不是只有最终结果来判断,过程每一步都会有奖励。往哪里走才能获得更多的奖励。

        强化学习智能体(有大脑)和人工智能(AI)很接轨。机器人要不断与环境交互;互动就是得到下一步的指示(Action);按照指示走一步势必会改变环境;继续与环境交互得到新的指示(结合奖励机制来学习要不要这么干!)

1、简介

        1、计算机眼中什么是环境(state)呢?

        在强化学习的应用场景中,计算机眼中的环境(state)通常是指一个能够完整描述当前状态的信息集合。这个信息集合可以包括各种感知到的特征或信号,如传感器数据、图像、声音等。

        在某些情况下,环境的状态可能由固定数量的变量构成,比如位置、速度、方向等。在这种情况下,状态可以表示为一个向量,其中每个变量对应一个状态维度。

        在其他情况下,环境的状态可能由非常大量的变量组成,比如在深度学习中处理图像数据时。这种情况下,需要使用一些特殊的技术来压缩状态,以使得它们可行且易于处理。目前,主要采用的技术是卷积神经网络(CNN)和循环神经网络(RNN)。

        在强化学习中,环境的状态是智能体进行动作选择的基础。智能体会通过观察当前的状态,根据自身的策略来选择最优的动作,以获取最大的奖励。因此,环境的状态设计和表示方式对强化学习的性能和效果有着很大的影响。

        2、Action是什么?

        与环境交互后得到的反应,例如(上,下,左,右),可能是离散,也可能是连续(例如机器人要打我,它不仅能移动(离散)还能出不同的的力度(连续))

        3、如何通过状态得到当前合适的行为呢?

        只需要神经网络就可以啦,输入为state,输出为action。(难点为如何训练网络)

        4、强化学习与深度学习之间的区别:

        强化学习(Reinforcement Learning, RL)与深度学习(Deep Learning, DL)是两种不同的机器学习方法。

        强化学习主要用于解决一系列复杂问题,例如游戏、机器人控制、自然语言处理等。强化学习是一种通过智能体(Agent)与环境交互来进行学习的方法。在强化学习中,智能体采取一系列动作,环境根据智能体采取的动作返回相应的奖励或惩罚,并反馈当前状态智能体根据当前状态和之前的经验,选择最佳的动作,最大化长期累积奖励因此,强化学习的重点在于如何在较长时间内使智能体获得最大的收益,需要考虑长期后果和与环境的交互。

        深度学习则主要用于解决大规模数据分析和处理,例如图像识别、语音识别、自然语言处理等。深度学习是一种使用神经网络进行建模和训练的方法,它可以有效地处理大量复杂的非线性信息,发现数据之间的特征和关系,从而实现自动化分类、识别和预测。深度学习的重点在于如何将原始数据转化为有用的信息,需要考虑数据之间的内在关系和特征抽取。

        因此,强化学习与深度学习之间的区别主要体现在目标和方法上。强化学习主要面向控制领域,强调长期奖励最大化和智能体与环境的交互深度学习主要面向感知领域,强调信息处理和特征抽取。当然,在某些情况下,强化学习和深度学习可以结合使用,例如在机器人控制任务中,使用深度学习进行状态估计和动作预测,使用强化学习进行决策和优化。

        寻找什么样的函数使得收益最大

2、PPO算法

        PPO(Proximal Policy Optimization)算法是一种基于近端策略优化的强化学习算法,用于训练策略网络来解决连续动作空间的强化学习问题。

        核心思想:通过更新策略网络的参数,使得当前策略在当前状态下选择的动作能够得到更高的累积奖励。PPO算法主要关注两个方面:策略更新的稳定性和样本利用率的提高。

        为了提高稳定性,PPO算法使用了两种重要的技术:clippingsurrogate objective。Clipping限制了新旧策略之间的差异,确保每次更新的幅度不会过大。Surrogate objective则是一个被最大化的目标函数,它在更新时考虑了两个策略之间的相对性能。

        为了提高样本利用率,PPO算法使用了多个并行的环境进行交互,并将收集的经验用于多次参数更新。此外,PPO算法还使用了Generalized Advantage Estimation(GAE)来估计每个状态的优势,从而更准确地评估策略的质量。

        PPO算法的训练过程包括两个阶段:采样和优化。在采样阶段,策略网络与环境进行交互并收集经验。在优化阶段,使用收集的经验样本来更新策略网络的参数,使其逐步接近最优策略。

        PPO算法在训练策略网络时具有较高的稳定性和样本利用率,能够有效地处理连续动作空间和高维状态空间的问题。它在各种强化学习任务中取得了很好的性能,并且被广泛应用于机器人控制、自动驾驶等领域。

        PPO算法是一种基于近端策略优化的强化学习算法,通过稳定的策略更新和高效的样本利用来训练策略网络。它在解决连续动作空间的强化学习问题上表现出良好的性能和适应性。

        Off-Policy(离策略)是指训练智能体的策略与生成经验的策略不一致的情况。也就是说,智能体在执行动作时可能采用一个策略,而收集到的训练经验却是由另一个策略生成的。

        与Off-Policy相对的是On-Policy(同策略)方法,即训练和生成经验使用相同的策略。Off-Policy方法具有一些优点,如可以通过利用历史数据进行训练、能够有效利用先前策略的经验等。

PPO2版本:

Actor-Critic(演员-评论家):

        结合了价值函数(Critic)和策略函数(Actor)的训练。它是一种基于价值的方法,旨在同时学习策略和值函数,以提高强化学习的效率和稳定性。

        在Actor-Critic算法中,演员(Actor)负责生成动作,根据当前状态来选择动作。评论家(Critic)则负责评估演员的动作,对其选择的动作进行打分或者估计动作的价值。演员根据评论家的反馈来更新自己的策略,使得选择的动作能够获得更高的回报。

        具体而言,在每个时间步,演员根据当前状态选择一个动作,并执行该动作。评论家根据演员选择的动作和环境给出的奖励信号,计算动作的价值函数或者优势函数。演员使用评论家的反馈作为梯度的估计,通过梯度上升来更新自己的策略,使得选取的动作可以获得更高的回报。

        优势:可以有效地解决强化学习中的延迟回报问题,并且能够充分利用环境的奖励信号来引导策略的学习。此外,演员-评论家框架还可以对值函数进行估计,从而提供更好的状态价值信息,有助于策略的改进。

3、DQN算法

        DQN(Deep Q-Network)算法是一种基于深度强化学习的算法,用于解决值函数近似和动作选择问题。

        核心思想:使用深度神经网络来近似值函数Q(s, a),其中s表示状态,a表示动作。通过训练神经网络来学习Q函数的参数,使其能够根据当前状态选择最优的动作。

        DQN算法主要基于Q-learning算法,并引入了深度神经网络来处理高维状态空间和大规模动作空间的问题。它使用经验回放机制来存储并随机采样历史经验,以减少数据的相关性,提高训练效率和稳定性。此外,DQN算法还采用了目标网络来解决神经网络参数更新时的不稳定性问题。

        DQN算法通过最小化当前估计Q值和目标估计Q值之间的差异来更新神经网络参数。目标估计Q值的计算使用了固定的目标网络,并且通过一定的频率进行更新,从而减少参数更新过程中的波动性。

        DQN算法在解决各种强化学习问题时取得了许多突出的成果,比如在Atari游戏中超过人类水平的表现。它在处理复杂的状态和动作空间时具有较好的适应性和表达能力,并且可以通过增加神经网络的层数和调整超参数来提升算法性能。

1、Double DQN

        用于解决Q-Learning中过高估计Q值的问题的强化学习算法。它是DQN算法的改进版本,在DQN网络基础上引入了一个额外的网络,通过解耦训练和生成目标的方法来减少Q值的过高估计。

        在单纯的DQN算法中,Q-Learning更新Q值时,同时使用当前策略产生的动作和评估产生最大Q值的动作的两个Q值。这样会导致Q值被过高估计,特别是在动作空间较大时更为明显。

        工作原理:在Double DQN中,引入了一个额外的网络,称为“Target Network”,用于生成Q目标值。Target Network与DQN网络拓扑结构相同,但其参数是更新很慢的,如每隔多次更新DQN网络后再同步一次参数,以保证目标Q值的稳定性。在更新Q值时,首先利用DQN网络选择对应状态下的最优动作,并利用“Target Network”生成该动作的Q值。然后,再将此Q值用于更新DQN网络中的Q值函数。这样就能够解决在DQN算法中出现的过高估计Q值的问题。

        Double DQN算法还可以通过经验回放缓冲区进行训练,以提高样本的效率和利用率。此外,引入Double DQN算法还可以减少Q值函数的方差,从而提高强化学习的训练稳定性。

2、Dueling DQN

        用于解决高方差问题和提高学习效率的算法。通过将动作价值函数分解为状态值函数和优势函数,使得网络能够更好地学习不同动作对状态的影响。

        在传统的DQN算法中,通过一个Q值函数来估计每个状态-动作对的价值。然而,对于一些情况下,不同的动作对状态的影响可能是类似的,这就导致了冗余学习。Dueling DQN通过拆分Q值函数,将其表示为状态值函数和优势函数的和,从而减少了学习的复杂度。

        工作原理:Dueling DQN包含两个子网络:状态值网络(Value Network)和优势值网络(Advantage Network)。状态值网络用于估计状态的预期回报,而优势值网络则用于评估每个动作相对于平均水平的优势。通过这种方式,Dueling DQN能够更好地学习状态本身的价值,同时也能学习到每个动作对状态的影响。

        在训练过程中,Dueling DQN使用经验回放缓冲区来存储过去的经验,以提高样本的效率。然后,利用采样的经验生成训练批次,并利用这些批次来更新状态值网络和优势值网络的参数。最后,通过组合两个网络的输出,计算每个动作的Q值函数,并选择产生最大Q值的动作作为当前策略的选择。

        优势:能够更好地学习状态本身的价值,同时对不同的动作进行区分。这种拆分使得Dueling DQN具有更快的学习速度和更高的学习效率,尤其在动作空间较大的问题中表现得更加出色。

3、MultiStep—DQN

        MultiStep-DQN(多步DQN)是一种用于提高强化学习算法效率的改进版本,它通过考虑多个连续时间步的奖励来加速学习过程。传统的DQN算法只关注单个时间步的奖励,而MultiStep-DQN能够更好地利用未来多个时间步的信息。

        在MultiStep-DQN中,我们引入了一个参数n,称为多步数(n-step)。对于每个时间步 t,在选择动作时不仅仅考虑即时奖励和下一个状态的Q值,还会考虑未来 n-1 个时间步的奖励和相应的 Q 值。这样可以更好地估计长期累积奖励,并使得算法更加高效。

        工作原理:MultiStep-DQN在训练过程中使用了一个长度为 n 的奖励轨迹,计算对应的 n-step Q 值。这个 Q 值是通过连续的 n 步获得的累积奖励计算得到的,可以看作是对长期价值的估计。然后,将这个 n-step Q 值用于更新 DQN 网络的参数。通过这种方式,MultiStep-DQN可以更好地利用未来多个时间步的信息,提高学习效率。

        另外,为了减少样本相关性和提高学习效率,MultiStep-DQN还可以结合经验回放缓冲区来进行训练。在经验回放过程中,我们可以选择存储和采样多步轨迹,以获取更多的 n-step Q 值样本,从而进一步增加训练效果。

4、A3C算法

        A3C(Asynchronous Advantage Actor-Critic)算法是一种深度强化学习算法,用于训练神经网络模型来解决强化学习问题。

        核心思想:通过在多个并行的环境中运行多个智能体来进行训练。每个智能体都有自己的一组参数,并且在环境中互相独立地进行交互和学习。这种异步训练方式可以有效地提高样本利用率和计算效率。

        A3C算法结合了Actor-Critic方法和Advantage学习。其中,Actor是策略网络,用于决策每个状态下应该采取的动作;Critic是值函数网络,用于评估状态的价值。通过优化Actor和Critic网络,A3C算法可以同时学习策略和估计状态的价值,从而实现更高效的策略搜索和优化。

        A3C算法使用梯度下降来更新网络参数,并且通过引入一定的随机性来增加探索性,促进模型学习更好的策略。A3C算法还使用了经验回放和共享参数等技术来提高训练效果和收敛速度。

优势函数:

AC的第三代版本。多线程去玩AC。

损失函数:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/928225
推荐阅读
相关标签
  

闽ICP备14008679号