近端策略优化PPO

 ✒️ @halomaster 📅 25 Feb 2023, 09:39 GMT⋮ 【AI】 

PPO随着chatGPT的火爆而再次得到人们的重视。 近端策略优化(Proximal Policy Optimization,PPO)是一种强化学习中的深度学习方法,旨在优化策略神经网络的性能。 PPO的背景是强化学习中策略优化的问题。优化策略的目标是使策略神经网络输出的行动序列,最大程度地增加预先定义的奖励函数的期望值。该问题的解决方法是根据当前策略神经网络所产生的行动序列,计算奖励函数的梯度,并使用该梯度来更新网络权重。然而,此类优化方法通常存在学习效率低下和样本利用率不足等问题。 PPO方法的核心思想是通过监测生成策略的失效区域,避免优化后的策略步进过大。PPO在更新策略时引入了一个重要的概念:剪切比率(Clipping Ratio)。剪切比率是一个介于0和1之间的阈值。在每次更新策略的过程中,使用一个新的策略神经网络来生成一系列新的行动序列,并计算旧的策略神经网络所产生的行动序列和新的行动序列之间的概率比。如果这个比率超过了剪切比率,则将梯度的大小限制为剪切比率的值;否则使用该比率作为权重来更新原来的策略神经网络。 https://zhuanlan.zhihu.com/p/88903948 通过这种方式,PPO在更新策略时可以保证更新步长不会过大,从而避免了过拟合的情况。相比于传统的策略优化算法,PPO使用相同的数据集,可以实现更高效,更具鲁棒性的优化效果。 总而言之,PPO能快速有效地训练强化学习中的控制策略,使得机器可以更好地学习和掌握复杂的任务。 [【详解近端策略优化】](https://zhuanlan.zhihu.com/p/471826751) ----------- PPO算法的思路是:在时刻0,我与环境进行互动,收集了大量的数据。然后,我利用这些数据来更新我的策略,使我变成了时刻1的我。经过更新后,理论上,时刻1的我再次与环境互动,收集数据,然后把我更新到时刻2,这样就一直循环进行迭代。 如果我仍然想要利用时刻0的数据来进行更新,我需要对这些数据进行重要性采样,将它们视为时刻1的我收集的数据。然而,这个过程中可能会存在一些误差,因此我们需要对这个“不像”的程度加以更新时的惩罚(KL)。 在PPO算法中,我们采用每个数据序列的(s,a)的优势程度来评估动作的优劣,并根据优势程度的高低来调整该动作在相应状态下的出现概率。具体而言,我们可以利用后面数据的总折扣奖励来表示策略的优势程度。此外,我们还引入了一个基线“小明”,他只学习每个状态的期望折扣奖励的平均期望,这样在判断优势程度时,我们就可以使用小明对状态s的期望奖励作为基线。优势函数中的前一部分是实际收集的数据中的折扣期望,后一部分则是估计出的折扣期望(小明心中认为s应该得到的分数),如果选取的动作得到的实际奖励比小明心中的奖励高,则我们认为该动作出现概率应当增加。反之,如果该动作实际得到的奖励比小明心中的期望还低,则该动作出现概率应当减小。这样,小明可以成为一个评判官,评估每个动作的好坏。 当然,小明也需要不断提高自己的打分技巧,从数据中学习新的知识,这对于算法的更新来说是非常重要的。


[1] @halomaster • 25 Feb 2023, 11:02 GMT 
马尔科夫决策过程 决策:指动作,定义了在某一个状态应该采取什么样的动作; Q函数:动作价值函数; 奖励函数R:当Agent到达某状态时所能获得的奖励; 贝尔曼方程:V=即时奖励+未来奖励的折扣总和 贝尔曼期望方程:https://blog.csdn.net/qq_34758157/article/details/124805703


[2] @halomaster • 04 Mar 2023, 14:21 GMT 
PPO 的基本概念前面的答者已经概括了. 就是限制 new Policy 的更新幅度, 不让 new Policy 被 learning rate "冲昏了头脑", 导致"物极必反".


[3] @halomaster • 04 Mar 2023, 14:26 GMT 
https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/DPPO


[4] @halomaster • 10 Mar 2023, 11:02 GMT 
影响PPO算法性能的10个关键技巧(附PPO算法简洁Pytorch实现) https://zhuanlan.zhihu.com/p/512327050 DRL算法的简明Pytorch实现,包括REINFORCE,A2C,Rainbow DQN,PPO(离散和连续),DDPG,TD3,SAC,PPO-离散-RNN(LSTM / GRU)。 https://github.com/Lizhi-sjtu/DRL-code-pytorch


[5] @halomaster • 10 Mar 2023, 11:06 GMT 
强化学习之PPO算法 在强化学习中,我们使用一个代理智能体(Agent),根据策略(Policy),在不同的环境状态下选择执行动作。环境反馈新的状态和奖励,Agent再根据新状态选择新动作,这样不停循环,最终结束一次游戏次数,即一次episode。在深度强化学习中,策略由神经网络构成,表示为一组参数,记为θ。对于一个完整的episode,我们可以用s表示。 https://zhuanlan.zhihu.com/p/468828804


[6] @halomaster • 16 Mar 2023, 06:54 GMT 
on-policy和off-policy是强化学习中常见的两种策略评估方法。on-policy方法采用同一略来产生数据样本和更新策略,即所采集的数据样本是由当前策略生的,通常只能进行一次梯度更新。而off-policy方法则可以用一种策略生数据样本,用另一种策略来更新策略,即所采集的数据样本与更新略不一定相同,因此可以进行多次梯度更新。 在on-policy方法中,由数据样本和更新策略相同,因此可以直接使用策略梯度方法进行优化但由于需要不断采集新的数据样本,因此训练过程比较慢,而且可能会因为策略更新导致样本过期,需要重新采集数据。 在off-policy中,可以利用重要性采样的方法将产生的数据样本转化为目标策略下的样本从而可以对目标策略进行多次梯度更新。这种方法的优点是可以快地进行训练,但由于需要进行重要性采样,可能会引入偏差,使得计结果不够准确。 在标准梯度更新算法中,在环境中采集数据的策略与所要估计的策略是同一策略,这种方法被称为 同策略(on-policy)方法,在这种方法中,每进行一次数据采集,通常只能进行一次梯度更新。而在离策略(off-policy)方法中,产生数据样本所使用的策略与要估计的策略不是同一策略,前者被称为行为策略,后者被称为目标策略,由于行为策略并不会因为目标策略的更新而发生改变,因此我们可以利用行为策略产生的数据样本对目标策略进行多次更新。离策略算法中,通常利用 重要性采样(importance sampling)的方法对梯度/目标函数进行修正


[7] @halomaster • 16 Mar 2023, 06:56 GMT 
TRPO和PPO属于on-policy方法,因为他们依然符合on-policy的定义,只不过借用了重要性采样的思想采集的数据来表示所对应的目标函数,使得 每一次策略更新都变成一个优化问题。总结来说,off-policy是带重要性采样系数的梯度上升,它可以使用任意策略的数据来更新当前策略,而TRPO和PPO的每一步更新都是一个优化问题,它只能使用老策略来更新新策略,这是两者的区别所在。


[8] @halomaster • 16 Mar 2023, 08:16 GMT 
PPO是一种非常流行的强化学习算法,但是还有其他的一些算法也非常有效,比如: - 深度确定性策略梯度算法(DDPG):适用于连续动作空间的问题,结合了策略梯度和Q值函数。 - 双重Deep Q网络(DDQN):使用两个深度神经网络,一个用于选择动作,另一个用于评估动作的价值。 - 随机网络蒙特卡罗搜索(MCTS):在树搜索的基础上,使用神经网络来评估动作的价值,适用于复杂的游戏等问题。 - 逆强化学习(IRL):从专家的行为中学习任务的奖励函数,可以用于学习复杂任务的奖励。 这些算法都有其优点和缺点,具体使用哪一种算法取决于问题的特点和需要解决的难度。


[9] @halomaster • 16 Mar 2023, 08:18 GMT 
深度确定性策略梯度算法(Deep Deterministic Policy Gradient,DDPG)是一种适用于连续动作空间的强化学习算法,它结合了策略梯度和Q值函数,通过深度神经网络来学习策略和值函数。 DDPG算法的核心是使用Actor-Critic结构,其中Actor网络用于学习策略,Critic网络用于学习Q值函数。具体来说,Actor网络输出动作,Critic网络输出对应状态下的Q值,两个网络都是基于深度神经网络实现的。 DDPG算法通过以下步骤进行训练: - 从经验池中随机采样一批数据,包括状态、动作、奖励和下一个状态。 - 使用目标Critic网络计算下一个下的Q值,并算Q值的目标值。 - 目标Actor网络计下一个状态下的动作,并计算该动作的Q值。 - 使用Critic网络计算当前状态下的Q值,并使用目标Q值和当前Q值的差值来计算Critic网络的损失函数,反向传播更新Critic网络的。 - 使用Actor网络计算当前状态下的动作,并计算该动作的Q值然后使用该Q值的相反数作为Actor网络的损失函数,反向传播更新Actor网络的参数。 - 使用软(soft update)方法,将Actor和Critic网络的参数更新到目标Actor和目标Critic网络的参数接近的地方,从而使得目标Q值更加准确。 DDPG算法的主要优点是可以处理连续动作空间问题,并且能够实现高效的在线学习。缺点是需要大量的训练数据和计算资源。


[10] @halomaster • 16 Mar 2023, 08:18 GMT 
DDPG算法属于off-policy算法。在强化学习中,on-policy和off-policy是两个重要的概念。on-policy方法是指学习策略的同时使用同一策略来生成样本数据,而off-policy方法是指使用不同于目标策略的数据来学习策略。 DDPG算法使用经验回放机来存储和重用历史的经验数据,从而可以离线训练,这意味着DDPG算法可以使用不同于当前策略的数据进行训练,因此它是一种off-policy算法。 具体来说,DDPG算法使用经验池来存储历史的状态、动作、奖励和下一个状态,然后从中随机采样一批数据进行训练,这些数据不一定来自当前策略,因此它是一种off-policy算法。


[11] @halomaster • 16 Mar 2023, 08:34 GMT 
双重深度Q网络(Double Deep Q-Network,DDQN)是一改进的深度强化学习算法,基于深度Q网络(DQN)的思想,通过使用两个深度神经网络来解决DQN算法中存在的“过高估计”的问题。 在传统的DQN算法中,使用单个神经网络来估计每个动作的价值,并选择价值最高的动作进行执行。而,由于神经网络在训练过程中往往会出现“过高估计”的情况,即对某个动作的价值估计过高,导致智能体在执行动作时出现偏差。 DDQN算法通过使用两个神经网络来解决这个问题,网络用于选择动作(称为“行动者”),另一个网络用于评估动作的价值(称为“评论家”)。具体来说,DDQN算法首先使用动者网络选择一个动作,然后使用评论家网络来评估该动作的价值。这个价值被用于更新行动者网络的权重,这样行动者网络可以更好选择动作。 DDQN算法的优点在于它可以避免DQN算法中存在的“过高估计”的问题,从而提高智能体的执行效果。同时,DDQN算法的使用也比较简单,只需要使用两个神经网络即可,因此也比较容易应用到实际的问题。 此外,DDQN算法还可以通过一些技巧来进一步提高效果,如: 1. 使用经验回放(experience replay):DDQN算法与DQN算法一样,可以采用经验回放技术来提高学习效率,从而加速网络训练。 2. 使用目标网络(target network):与DQN类似,DDQN算法也可以使用目标网络来解决“过高估计”的问题。具体来说,目标网络是评论家网络的一个副本,在更新评论家网络时使用。目标网络的权重较稳定,不像评论家网络那样频繁变化,因此可以减少“过高估计”的问题。 3. 采用贪心策略(epsilon-greedy)选择动作:DDQN算法通常使用一定的贪心策略来选择动作。具体来说,智能体会以一定概率随机选择动作,以便探索行动空间,以此来避免局部最优解。


[12] @halomaster • 16 Mar 2023, 10:33 GMT 
随机网络蒙特卡罗搜索(MCTS)是一种用于解决复杂问题的算法。它将树搜索和神经网络技术结合起来,以更高效地解决问题。 MCTS算法通过建立一棵搜索树来搜索问题的解决方案。搜索树的节点包含当前问题状态和已经探索过的动作的信息,边代表动作。在每个时间步,MCTS会从根节点开始遍历搜索树,并选择一个未探索过的叶子节点。然后,它通过对该节点进行模拟游戏,评估该动作的质量。这个过程被称为模拟。最后,MCTS算法会更新搜索树,并选择下一个未探索的叶子节点,重复这个过程,直到找到最优解。 随机网络蒙特卡罗搜索(MCTS)的优势在于它使用神经网络来评估动作的质量。神经网络可以学习问题的特征,并提供更准确的预测结果。因此,MCTS算法能够更快地找到最优解。 结合树搜索和神经网络技术,随机网络蒙特卡罗搜索(MCTS)适用于解决复杂的游戏问题,如围棋、象棋、扑克等。它还可以用于其他领域,如机器人路径规划、自然语言处理等。


[13] @halomaster • 16 Mar 2023, 11:07 GMT 
逆强化学习是一种机器学习方法,主要用于从专家的行为中学习任务的奖励函数,以此解决强化学习中奖励函数需要手动设计的问题。在复杂任务中,人工设计奖励函数往往非常困难,且设计不当可能导致智能体出现一些不良行为。因此,IRL技术的应用具有广泛的应用前景。 IRL技术是基于以下假设进行的:现实世界中的专家可以使任务的期望奖励最大化。IRL算法会从专家行为中学习期望奖励,并将其近似为一个合适的函数。与各种手工设计的奖励函数相比,学习的奖励函数能够更好地定义任务的目标,因此,智能体学习到的策略往往更加准确可靠。 IRL算法通常包括以下几个步骤: 1. 收集专家示例:使用专家示例,记录其在执行任务时的动作和最终状态。 2. 构建状态转移和动作的概率模型:根据专家示例构建一个动作和状态之间的概率模型。 3. 逆推出奖励函数:从专家示例中逆推出任务的奖励函数。在这个过程中,IRL算法会寻找一组与专家样本数据的行为一致的奖励函数。 4. 训练强化学习代理:使用逆推出的奖励函数训练智能体,使其从环境中学习,并最终形成策略。 总的来说,IRL技术在许多领域中具有广泛的应用前景,如自动驾驶、机器人控制、游戏AI等。


[14] @halomaster • 17 Mar 2023, 05:47 GMT 
PPO(Proximal Policy Optimization)是近年来常用的一种策略优化算法,它基于TRPO(Trust Region Policy Optimization)算法,对其进行改进和简化,目的是提高算法的效率和收敛速度。近端策略优化PPO算法在连续空间上的控制问题中表现优秀,也逐渐被应用于较为复杂的离散空间和高维度问题的控制和学习中。下面详细解析此算法的原理和实现方法。 首先,PPO算法通过定义一个新的损失函数解决了TRPO算法的缺陷。TRPO算法中的目标是最大化目标函数,但是这个问题非常困难,因为目标函数通常是非凸的。为了解决这个问题,PPO算法引入了一种叫做近端策略优化的技术,它能够通过限制每次更新的幅度来保证优化过程的稳定性。 具体来说,近端策略优化技术通过引入一个剪切函数来约束新策略的更新幅度。这个剪切函数一般是一个sigmoid函数,可以使得新策略与原策略之间的差异保持在一定的范围内。这个剪切函数的引入使得PPO算法可以更加稳定地进行更新,避免了一些不稳定的情况出现。此外,为了进一步提高算法的效率,PPO算法还采用了一些更加高效的优化方法,比如mini-batch 和GAE(Generalized Advantage Estimation)估计等方法,从而避免了不必要的计算和空间浪费。具体来说,GAE方法通过引入一个估计函数来计算每个状态的值函数和优势函数,从而更加准确地估计每个状态的价值,并根据这些价值来更新策略。 近端策略优化PPO算法通过引入剪切函数和高效的优化方法,提高了算法的效率和稳定性,适用于各种连续控制问题和一些复杂离散环境的训练和学习。


1 of 1 pages  14 replies