目录
MDP(马儿可夫决策过程)Markov Decision Process
Sersa(State-Action-Reward-State-Action)
Double DQN(Double Deep Q-Network)
概述
什么是强化学习?
强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。
以上是百度百科中对强化学习的描述,从这样一句话中我们能捕捉到几点信息:
1.强化学习是一种机器学习方法
2.强化学习关注智能体与环境之间的交互
3.强化学习的目标一般是追求最大回报
换句话说,强化学习是一种学习如何从状态映射到行为以使得获取的奖励最大的学习机制。这样的一个agent需要不断地在环境中进行实验,通过环境给予的反馈(奖励)来不断优化状态-行为的对应关系。因此,反复实验(trial and error)和延迟奖励(delayed reward)是强化学习最重要的两个特征。
发展历程
1956年Bellman提出了动态规划方法。
1977年Werbos提出只适应动态规划算法。
1988年sutton提出时间差分算法。
1992年Watkins 提出Q-learning 算法。
1994年rummery 提出Saras算法。
1996年Bersekas提出解决随机过程中优化控制的神经动态规划方法。
2006年Kocsis提出了置信上限树算法。
2009年kewis提出反馈控制只适应动态规划算法。
2014年silver提出确定性策略梯度(Policy Gradients)算法。
2015年Google-deepmind 提出Deep-Q-Network算法。
强化学习的发展可以分为以下几个阶段:
早期阶段(1950-1980年代):在这个阶段,强化学习的概念还没有被明确提出,但是一些早期的学习算法已经涉及了强化学习的一些基本思想。例如,Sutton和Barto在他们的书《强化学习导论》中提到的最早的学习算法TD(Temporal Difference)就是在这个时期提出的。
基本理论阶段(1990-2000年代):在这个阶段,强化学习的理论基础逐渐被建立。例如,Sutton和Barto在1998年提出了Q-learning算法,这是一种基于价值迭代的经典强化学习算法。同时,一些基础的强化学习理论也被提出,例如贝尔曼方程、马尔可夫决策过程(MDP)等。
深度学习和强化学习结合阶段(2012年至今):在这个阶段,深度学习和强化学习开始结合起来,使得强化学习在处理高维、复杂的任务上取得了显著进展。例如,DeepMind提出的AlphaGo和AlphaZero就是基于深度强化学习算法的。此外,一些深度强化学习算法也被提出,例如深度Q网络(DQN)、策略梯度(Policy Gradient)等。
递归强化学习阶段(2019年至今):在这个阶段,递归强化学习(Reinforcement Learning)成为了强化学习领域的一大热点。递归强化学习旨在利用环境中的递归结构和层次结构,将复杂的任务分解为多个子任务,并通过学习子任务之间的关系来提高整个任务的性能。例如,DeepMind提出的Meta-RL算法就是一种递归强化学习算法。
与其他机器学习方法的区别
这里其他机器学习方法主要是监督学习和无监督学习,也是我们在理解强化学习的过程中最容易发生混淆的地方。
监督学习是机器学习领域研究最多的方法,已经十分成熟,在监督学习的训练集中,每一个样本都含有一个标签,在理想情况下,这个标签通常指代正确的结果。监督学习的任务即是让系统在训练集上按照每个样本所对应的标签推断出应有的反馈机制,进而在未知标签的样本上能够计算出一个尽可能正确的结果,例如我们熟悉的分类与回归问题。在强化学习中的交互问题中却并不存在这样一个普适正确的“标签”,智能体只能从自身的经验中去学习。
但是强化学习与同样没有标签的无监督学习也不太一样,无监督学习是从无标签的数据集中发现隐藏的结构,典型的例子就是聚类问题。但是强化学习的目标是最大化奖励而非寻找隐藏的数据集结构,尽管用无监督学习的方法寻找数据内在结构可以对强化学习任务起到帮助,但并未从根本上解决最大化奖励的问题。
当然还有让学习器不依赖外界交互、自动地利用未标记样本来提升学习性能的半监督学习,它与强化学习也有着本质的差别。
因此,强化学习是除了监督学习和无监督学习之外的第三种机器学习范式。
强化学习是做出最佳决策的科学。它可以帮助我们制定活的物种所表现出的奖励动机行为。比方说,你想让一个孩子坐下来学习考试。要做到这一点非常困难,但是如果每次完成一章/主题时都给他一块巧克力,他就会明白,如果他继续学习,他会得到更多的巧克力棒。所以他会有一些学习考试的动机。
孩子代表着Agent代理 。奖励制度和考试代表了Environment环境。今天的题目是类似于强化学习的States状态。所以,孩子必须决定哪些话题更重要(即计算每种行为的价值)。这将是我们的工作的 Value-Function价值方程。所以,每次他从一个国家到另一个国家旅行时,他都会得到Reward奖励,他用来在时间内完成主题的方法就是我们的Policy决策。
MDP(马儿可夫决策过程)Markov Decision Process
MDP(Markov Decision Process)是一种数学框架,用于描述具有随机性和序列决策的问题。在MDP中,智能体(agent)通过与环境的交互,不断地采取行动和观察环境的反馈,从而学习在不同状态下采取最优行动的策略。MDP通常用于强化学习领域中。
MDP包含以下几个要素:
状态(state):智能体在某个时刻所处的状态。
行动(action):智能体在某个状态下采取的行动。
奖励(reward):智能体在某个状态下采取某个行动后获得的奖励或惩罚。
转移概率(transition probability):智能体从一个状态转移到另一个状态的概率。
折扣因子(discount factor):用来衡量未来奖励的价值,通常取值在0到1之间。
策略(policy):智能体在每个状态下采取行动的规则。
在MDP中,智能体的目标是找到一个最优策略,使得其在长期累计的奖励最大化。为了达到这个目标,智能体需要通过试错学习出不同状态下采取不同行动的价值,并根据这些价值来选择最佳行动。值函数(value function)和Q函数(Q function)是MDP中常用的表示价值的函数。
MDP是一种广泛应用的数学模型,可以用于解决许多复杂的决策问题,例如机器人控制、自动驾驶、金融交易等。
强化学习特点
强化学习的特点总结为以下四点:
- 没有监督者,只有一个奖励信号
- 反馈是延迟的而非即时(当前所做的动作可能很多步之后才会产生相应的结果)
- 具有时间序列性质
- 智能体的行为会影响后续的数据
目标:
- 获取更多的累积奖励
- 获得更可靠的估计
强化学习的要素与架构
四个基本要素
强化学习系统一般包括四个要素:策略(policy),奖励(reward),价值(value)以及环境或者说是模型(model)。接下来我们对这四个要素分别进行介绍。
策略(Policy)
策略定义了智能体对于给定状态所做出的行为,换句话说,就是一个从状态到行为的映射,事实上状态包括了环境状态和智能体状态,这里我们是从智能体出发的,也就是指智能体所感知到的状态。因此我们可以知道策略是强化学习系统的核心,因为我们完全可以通过策略来确定每个状态下的行为。我们将策略的特点总结为以下三点:
1.策略定义智能体的行为
2.它是从状态到行为的映射
3.策略本身可以是具体的映射也可以是随机的分布
奖励(Reward)
奖励信号定义了强化学习问题的目标,在每个时间步骤内,环境向强化学习发出的标量值即为奖励,它能定义智能体表现好坏,类似人类感受到快乐或是痛苦。因此我们可以体会到奖励信号是影响策略的主要因素。我们将奖励的特点总结为以下三点:
1.奖励是一个标量的反馈信号
2.它能表征在某一步智能体的表现如何
3.智能体的任务就是使得一个时段内积累的总奖励值最大
价值(Value)
接下来说说价值,或者说价值函数,这是强化学习中非常重要的概念,与奖励的即时性不同,价值函数是对长期收益的衡量。我们常常会说“既要脚踏实地,也要仰望星空”,对价值函数的评估就是“仰望星空”,从一个长期的角度来评判当前行为的收益,而不仅仅盯着眼前的奖励。结合强化学习的目的,我们能很明确地体会到价值函数的重要性,事实上在很长的一段时间内,强化学习的研究就是集中在对价值的估计。我们将价值函数的特点总结为以下三点:
1.价值函数是对未来奖励的预测
2.它可以评估状态的好坏
3.价值函数的计算需要对状态之间的转移进行分析
环境(模型)
最后说说外界环境,也就是模型(Model),它是对环境的模拟,举个例子来理解,当给出了状态与行为后,有了模型我们就可以预测接下来的状态和对应的奖励。但我们要注意的一点是并非所有的强化学习系统都需要有一个模型,因此会有基于模型(Model-based)、不基于模型(Model-free)两种不同的方法,不基于模型的方法主要是通过对策略和价值函数分析进行学习。我们将模型的特点总结为以下两点:
1.模型可以预测环境下一步的表现
2.表现具体可由预测的状态和奖励来反映
强化学习的架构
强化学习求解方法
1.动态规划方法
动态规划方法通常用于求解马尔可夫决策过程(Markov Decision Process,简称MDP)的最优策略。具体来说,动态规划方法可以通过反复迭代更新每个状态的价值函数或Q函数,从而得到最优的策略。动态规划方法通常有以下两种形式:
值迭代(Value Iteration):值迭代算法通过反复迭代更新每个状态的价值函数,直到收敛为止。具体来说,每次迭代都将每个状态的价值函数更新为其可能的后继状态的最大值加上当前状态的即时奖励。
策略迭代(Policy Iteration):策略迭代算法首先通过随机初始化一个策略,然后反复迭代更新策略和价值函数,直到收敛为止。具体来说,每次迭代都先根据当前策略计算每个状态的价值函数,然后根据价值函数更新策略。
动态规划方法的优点是可以保证得到全局最优解,而且收敛速度较快。但是,动态规划方法的缺点是需要完整的环境模型,即需要知道每个状态的转移概率和即时奖励,这在实际问题中往往是难以满足的。
2.蒙特卡洛方法
上面的动态规划方法,是一种较为理想的状态,即所有的参数都提前知道,比如状态转移概率,及奖励等等。然而显示情况是未知的,这时候有一种手段是采用蒙特卡洛采样,基于大数定律,基于统计计算出转移概率值;比如当你抛硬币的次数足够多,那么正面和反面的概率将会越来越接近真实情况。
蒙特卡洛方法是一种基于随机采样的数值计算方法,常用于求解复杂的数学问题。蒙特卡洛方法的基本思想是通过随机采样的方式来估计一个函数的值或求解一个概率分布的特征。
在强化学习中,蒙特卡洛方法通常用于评估一个策略的质量,即在给定策略下,智能体能够获得的期望累积奖励。具体来说,蒙特卡洛方法会通过与环境的交互来生成一条轨迹,然后根据轨迹中的奖励值来估计该策略的价值。重复进行多次采样后,可以得到该策略的平均累积奖励,从而评估该策略的质量。
蒙特卡洛方法的优点是可以处理高维、复杂的问题,而且不需要对问题的结构和特点做出太多的假设。但是,蒙特卡洛方法的缺点是随机性较强,需要进行大量的采样才能得到准确的结果,计算效率较低
3.时间差分方法
基于动态规划和蒙特卡洛
时间差分(Temporal Difference,简称TD)方法是一种基于样本的强化学习方法,它可以在不需要完整的环境模型的情况下学习最优策略。
时间差分方法的基本思想是通过不断更新每个状态的价值函数或Q函数,从而逼近最优策略的价值函数或Q函数。具体来说,时间差分方法会在每个时间步根据当前状态、采取的动作、获得的即时奖励和下一个状态的估计价值函数或Q函数来更新当前状态的价值函数或Q函数,这个估计值就是时间差分误差(Temporal Difference Error,简称TDE)
时间差分方法的优点是可以处理高维、复杂的问题,而且不需要完整的环境模型。此外,时间差分方法可以在线更新价值函数或Q函数,即在每个时间步都可以进行更新,可以更好地适应动态环境。时间差分方法的缺点是容易受到初始值和采样噪声的影响,需要进行调参和采样优化。
强化学习算法分类
分类一:
基于理不理解所处环境来进行分类:
Model-free:环境给了我们什么就是什么. 我们就把这种方法叫做 model-free, 这里的 model 就是用模型来表示环境
Model-based:那理解了环境也就是学会了用一个模型来代表环境, 所以这种就是 model-based 方法
2.分类二:
一类是直接输出各个动作概率,另一个是输出每个动作的价值;前者适用于连续动作情况,后者无法表示连续动作的价值。
3.分类三:
强化学习还能用另外一种方式分类, 回合更新和单步更新, 想象强化学习就是在玩游戏, 游戏回合有开始和结束. 回合更新指的是游戏开始后, 我们要等待游戏结束, 然后再总结这一回合中的所有转折点, 再更新我们的行为准则. 而单步更新则是在游戏进行中每一步都在更新, 不用等待游戏的结束, 这样我们就能边玩边学习了.
4.分类四:
判断on-policy和off-policy的关键在于,你所估计的policy或者value-function和你生成样本时所采用的policy是不是一样。如果一样,那就是on-policy的,否则是off-policy的。
总结各常用算法的分类:
主要算法
Q-Learning
Q学习(Q-Learning)是一种基于值迭代的强化学习算法,用于求解马尔可夫决策过程(Markov Decision Process,简称MDP)中的最优策略,即最大化期望累积奖励。
Q学习的核心思想是通过学习一个Q函数,即状态-动作对的价值函数,来指导智能体的决策。具体来说,Q学习算法会在智能体与环境的交互过程中不断更新Q函数,从而逼近最优策略的Q函数。
Q学习算法的更新规则表明,Q值的更新是基于当前状态下采取的动作和后继状态的最大Q值之间的差异。这个差异被称为时序差分误差(Temporal Difference Error,简称TDE),Q学习算法的更新过程类似于时间差分(Temporal Difference,简称TD)方法。
Q学习算法的优点;可以处理高维、复杂的问题,而且不需要完整的环境模型。此外,Q学习算法可以在线学习,即在智能体与环境的交互过程中不断更新Q函数,可以更好地适应动态环境。
缺点;容易受到初始值和采样噪声的影响,需要进行调参和采样优化。
算法公式
这一张图概括了之前所有的内容. 这也是 Q learning 的算法, 每次更新都用到了 Q 现实和 Q 估计, 而且 Q learning 的迷人之处就是 在 Q(s1, a2) 现实 中, 也包含了一个 Q(s2) 的最大估计值, 将对下一步的衰减的最大估计和当前所得到的奖励当成这一步的现实, 这套算法中一些参数的意义. Epsilon greedy 是用在决策上的一种策略, 比如 epsilon = 0.9 时, 就说明有90% 的情况会按照 Q 表的最优值选择行为, 10% 的时间使用随机选行为. alpha是学习率, 来决定这次的误差有多少是要被学习的, alpha是一个小于1 的数. gamma 是对未来 reward 的衰减值. 可以这样想象.
QLearning 决策过程
假设我们的行为准则已经学习好了, 现在我们处于状态s1, 我在写作业, 我有两个行为 a1, a2, 分别是看电视和写作业, 根据我的经验, 在这种 s1 状态下, a2 写作业 带来的潜在奖励要比 a1 看电视高, 这里的潜在奖励我们可以用一个有关于 s 和 a 的 Q 表格代替, 在我的记忆Q表格中, Q(s1, a1)=-2 要小于 Q(s1, a2)=1, 所以我们判断要选择 a2 作为下一个行为. 现在我们的状态更新成 s2 , 我们还是有两个同样的选择, 重复上面的过程, 在行为准则Q 表中寻找 Q(s2, a1) Q(s2, a2) 的值, 并比较他们的大小, 选取较大的一个. 接着根据 a2 我们到达 s3 并在此重复上面的决策过程. Q learning 的方法也就是这样决策的. 看完决策, 我看在来研究一下这张行为准则 Q 表是通过什么样的方式更改, 提升的.
QLearning 更新
所以我们回到之前的流程, 根据 Q 表的估计, 因为在 s1 中, a2 的值比较大, 通过之前的决策方法, 我们在 s1 采取了 a2, 并到达 s2, 这时我们开始更新用于决策的 Q 表, 接着我们并没有在实际中采取任何行为, 而是再想象自己在 s2 上采取了每种行为, 分别看看两种行为哪一个的 Q 值大, 比如说 Q(s2, a2) 的值比 Q(s2, a1) 的大, 所以我们把大的 Q(s2, a2) 乘上一个衰减值 gamma (比如是0.9) 并加上到达s2时所获取的奖励 R (这里还没有获取到我们的棒棒糖, 所以奖励为 0), 因为会获取实实在在的奖励 R , 我们将这个作为我现实中 Q(s1, a2) 的值, 但是我们之前是根据 Q 表估计 Q(s1, a2) 的值. 所以有了现实和估计值, 我们就能更新Q(s1, a2) , 根据 估计与现实的差距, 将这个差距乘以一个学习效率 alpha 累加上老的 Q(s1, a2) 的值 变成新的值. 但时刻记住, 我们虽然用 maxQ(s2) 估算了一下 s2 状态, 但还没有在 s2 做出任何的行为, s2 的行为决策要等到更新完了以后再重新另外做. 这就是 off-policy 的 Q learning 是如何决策和学习优化决策的过程.
Sersa(State-Action-Reward-State-Action)
Sarsa(State-Action-Reward-State-Action)算法是一种基于时间差分(Temporal Difference,简称TD)学习的强化学习算法,用于求解马尔可夫决策过程(MDP)的最优策略。它通过不断地更新估计值来近似最优策略。
Sarsa算法的基本思路是,从任意一个状态开始,执行策略π,不断地与环境交互,记录下每个状态、动作、奖励以及下一个状态和动作的值,然后用这些信息来更新每个状态、动作对的价值函数。具体来说,Sarsa算法的更新公式为:
Q(s, a) = Q(s, a) + α * [r + γ * Q(s', a') - Q(s, a)]
其中,Q(s, a)表示在状态s下采取动作a的价值函数,r表示在状态s下采取动作a后获得的即时奖励,s'表示采取动作a后转移到的下一个状态,a'表示在状态s'下执行的动作,α和γ分别是学习率和折扣因子。
Sarsa算法是一种在线学习算法,它可以逐步地更新状态-动作对的价值函数,并且可以保证在有限步骤内收敛到最优策略。它可以应用于解决各种强化学习问题,如游戏、机器人控制、自动驾驶等。
Sarsa 决策
Sarsa 的决策部分和 Q learning 一模一样, 因为我们使用的是 Q 表的形式决策, 所以我们会在 Q 表中挑选值较大的动作值施加在环境中来换取奖惩. 但是不同的地方在于 Sarsa 的更新方式是不一样的.
Sarsa 更新行为准则
同样, 我们会经历正在写作业的状态 s1, 然后再挑选一个带来最大潜在奖励的动作 a2, 这样我们就到达了 继续写作业状态 s2, 而在这一步, 如果你用的是 Q learning, 你会观看一下在 s2 上选取哪一个动作会带来最大的奖励, 但是在真正要做决定时, 却不一定会选取到那个带来最大奖励的动作, Q-learning 在这一步只是估计了一下接下来的动作值. 而 Sarsa 是实践派, 他说到做到, 在 s2 这一步估算的动作也是接下来要做的动作. 所以 Q(s1, a2) 现实的计算值, 我们也会稍稍改动, 去掉maxQ, 取而代之的是在 s2 上我们实实在在选取的 a2 的 Q 值. 最后像 Q learning 一样, 求出现实和估计的差距 并更新 Q 表里的 Q(s1, a2).
对比 Sarsa 和 Qlearning 算法
从算法来看, 这就是他们两最大的不同之处了. 因为 Sarsa 是说到做到型, 所以我们也叫他 on-policy, 在线学习, 学着自己在做的事情. 而 Q learning 是说到但并不一定做到, 所以它也叫作 Off-policy, 离线学习. 而因为有了 maxQ, Q-learning 也是一个特别勇敢的算法.
与Q-learning的区别:Sarsa是on-policy的,Q-learning是off-policy的
代码中展现不同:
Sarsa:
Q-learning:
DQN(Deep Q-Network)
DQN(Deep Q-Network)是一种基于深度神经网络的强化学习算法,由DeepMind在2013年提出。DQN基于Q-learning算法,使用深度神经网络来逼近Q值函数,从而解决了传统Q-learning算法无法处理高维状态空间的问题。
DQN的核心思想是使用深度神经网络来逼近Q值函数,其中,深度神经网络用于估计每个状态下采取不同动作的Q值。DQN的训练过程包括两个阶段:经验回放和固定Q目标。经验回放是指在训练过程中,将之前的经验存储在一个经验回放缓冲区中,然后从中随机抽样进行训练,以避免过度拟合和相关性问题。固定Q目标是指在训练过程中,使用一个固定的目标网络来计算目标Q值,以避免目标Q值的变化导致的不稳定性。
DQN的训练过程可以简化为以下几个步骤:
初始化深度神经网络,并将其用于估计Q值函数。
初始化经验回放缓冲区,以及固定Q目标网络。
进行若干次交互,将状态、动作、奖励和下一状态存储在经验回放缓冲区中。
从经验回放缓冲区中随机抽样一批数据,用于训练深度神经网络,更新Q值函数。
使用固定Q目标网络计算目标Q值,并根据目标Q值和当前Q值更新深度神经网络的参数。
重复步骤3-5,直到收敛。
DQN算法具有广泛的应用,如游戏智能、机器人控制、自动驾驶等领域。它的主要优点是能够处理高维状态空间和连续动作空间的强化学习问题,并且具有较好的效果和泛化能力。
由来
1.DQN(Deep Q Network)是一种融合了神经网络和Q learning的方法.
2.有些问题太复杂,Q表无法存储,即使可以存储,搜索也很麻烦。故而,将Q表用神经网络进行替代。
两个新特性
Experience replay:每次DQN更新的时候,随机抽取一些之前的经历进行学习。随机抽取这种打乱了经历之间的相关性,使得神经网络更新更有效率。
Fixed Q-targets:使用两个结构相同但参数不同的神经网络,预测Q估计的神经网络具备最新的参数,而预测Q现实的神经网络使用的参数则是很久以前的。
算法公式
整个算法乍看起来很复杂, 不过我们拆分一下, 就变简单了. 也就是个 Q learning 主框架上加了些装饰.
这些装饰包括:
记忆库 (用于重复学习)
神经网络计算 Q 值
暂时冻结 q_target 参数 (切断相关性)
DQN代码实现框架
可以看到基本上Q-learning一模一样,只是有一处不一样,就是多了存储记忆,并且批量进行学习。
Double DQN(Double Deep Q-Network)
Double DQN(Double Deep Q-Network)是DQN(Deep Q-Network)算法的一个变种,由Hasselt等人在2015年提出。Double DQN通过解决DQN算法中的过估计问题,进一步提高了算法的性能。
DQN算法的核心思想是使用深度神经网络逼近Q值函数,但在实际应用中,DQN算法容易出现过估计(overestimation)的问题,即Q值函数被过高估计,而无法准确地反映真实的Q值。这是因为在DQN算法中,最大化Q值的动作是基于当前深度神经网络所预测的动作Q值来进行的,而这些预测值可能存在噪声或偏差。
Double DQN算法通过使用两个独立的深度神经网络,分别用于估计动作价值和选择最佳动作,解决了DQN算法中的过估计问题。具体来说,Double DQN算法的训练过程包括两个阶段:估计当前状态下的最佳动作和计算最佳动作的Q值。在估计当前状态下的最佳动作时,Double DQN使用一个深度神经网络估计动作价值;在计算最佳动作的Q值时,Double DQN使用另一个独立的深度神经网络来选择最佳动作,并计算它的Q值。
Double DQN的训练过程可以简化为以下几个步骤:
初始化两个独立的深度神经网络,分别用于估计动作价值和选择最佳动作。
进行若干次交互,将状态、动作、奖励和下一状态存储在经验回放缓冲区中。
从经验回放缓冲区中随机抽样一批数据,用于训练动作价值网络,更新Q值函数。
使用动作价值网络选择最佳动作,并使用另一个独立的深度神经网络计算最佳动作的Q值。
重复步骤2-4,直到收敛。
Double DQN算法能够有效地解决DQN算法中的过估计问题,提高算法的性能和稳定性,适用于各种实际问题中,如游戏智能、机器人控制、自动驾驶等。
Poilcy Gradients
策略梯度(Policy Gradients)是一类强化学习算法,它直接优化策略函数,以最大化累计奖励。与值函数方法不同,策略梯度不需要估计状态或状态-动作对的值函数,而是直接学习如何在每个状态下采取最优的动作。
策略梯度方法的核心思想是使用梯度上升法来更新策略函数,以最大化累积奖励。
具体来说,策略梯度方法的训练过程包括以下步骤:
初始化策略函数,并指定一个策略分布。
进行若干次交互,记录状态、动作和奖励。
使用当前的策略函数和交互数据,计算策略梯度,并使用梯度上升法更新策略函数参数。
重复步骤2-3,直到收敛。
在策略梯度方法中,策略函数通常使用神经网络来表示,即将当前状态作为输入,输出一个动作分布。在训练过程中,使用交叉熵损失函数来衡量策略分布和实际动作的差异,并使用梯度上升法来最大化累积奖励。
优点是可以处理连续动作空间和高维状态空间的强化学习问题,并且可以直接优化策略函数,避免了值函数方法中需要更新值函数的问题。
常见的策略梯度方法包括REINFORCE、Actor-Critic等。
区别:
Q-learning、DQN:学习奖惩值, 根据自己认为的高价值选行为。
Policy Gradients:不通过分析奖励值, 直接输出行为的方法。
Policy Gradients 直接输出动作的最大好处就是, 它能在一个连续区间内挑选动作, 而基于值的, 比如 Q-learning, 它如果在无穷多的动作中计算价值, 从而选择行为, 这, 它可吃不消.
REINFORCE算法
policy gradient 的第一个算法是一种基于 整条回合数据 的更新, 也叫 REINFORCE 方法. 这种方法是 policy gradient 的最基本方法, 有了这个的基础, 我们再来做更高级的.
Actor-critic
Actor-Critic是一种基于策略梯度的强化学习算法,它结合了策略和值函数的优点,可以有效地解决策略梯度算法中的方差问题。
Actor-Critic算法中有两个部分:
Actor:策略函数,它决定在给定状态下,智能体应该采取哪个动作。
Critic:值函数,它评估在给定状态下,策略函数的质量如何,即预测在当前状态下累积奖励的价值。
Actor-Critic算法的训练过程包括以下步骤:
初始化策略函数和值函数。
进行若干次交互,记录状态、动作和奖励。
对于每个状态动作对,计算其对应的回报G,并使用值函数估计其价值,并计算策略梯度。
使用策略梯度更新策略函数参数,并使用回归方法更新值函数参数。
重复步骤2-4,直到收敛。
在Actor-Critic算法中,策略函数和值函数通常使用神经网络来表示,分别输出动作分布和状态值。在训练过程中,使用交叉熵损失函数来衡量策略分布和实际动作的差异,并使用回归损失函数来衡量值函数和实际回报的差异。
Actor-Critic算法的优点是可以有效地解决策略梯度算法中的方差问题,并且能够处理连续动作空间和高维状态空间。常见的Actor-Critic算法包括A2C、A3C、DDPG等。
为什么要有 Actor 和 Critic
我们有了像 Q-learning 这么伟大的算法, 为什么还要瞎折腾出一个 Actor-Critic? 原来 Actor-Critic 的 Actor 的前生是 Policy Gradients, 这能让它毫不费力地在连续动作中选取合适的动作, 而 Q-learning 做这件事会瘫痪. 那为什么不直接用 Policy Gradients 呢? 原来 Actor Critic 中的 Critic 的前生是 Q-learning 或者其他的 以值为基础的学习法 , 能进行单步更新, 而传统的 Policy Gradients 则是回合更新, 这降低了学习效率.
Actor 和 Critic
现在我们有两套不同的体系, Actor 和 Critic, 他们都能用不同的神经网络来代替 . 在 Policy Gradients 的影片中提到过, 现实中的奖惩会左右 Actor 的更新情况. Policy Gradients 也是靠着这个来获取适宜的更新. 那么何时会有奖惩这种信息能不能被学习呢? 这看起来不就是 以值为基础的强化学习方法做过的事吗. 那我们就拿一个 Critic 去学习这些奖惩机制, 学习完了以后. 由 Actor 来指手画脚, 由 Critic 来告诉 Actor 你的那些指手画脚哪些指得好, 哪些指得差, Critic 通过学习环境和奖励之间的关系, 能看到现在所处状态的潜在奖励, 所以用它来指点 Actor 便能使 Actor 每一步都在更新, 如果使用单纯的 Policy Gradients, Actor 只能等到回合结束才能开始更新.
增加单步更新属性
但是事物终有它坏的一面, Actor-Critic 涉及到了两个神经网络, 而且每次都是在连续状态中更新参数, 每次参数更新前后都存在相关性, 导致神经网络只能片面的看待问题, 甚至导致神经网络学不到东西. Google DeepMind 为了解决这个问题, 修改了 Actor Critic 的算法,
改进版 Deep Deterministic Policy Gradient (DDPG)
将之前在电动游戏 Atari 上获得成功的 DQN 网络加入进 Actor Critic 系统中, 这种新算法叫做 Deep Deterministic Policy Gradient, 成功的解决的在连续动作预测上的学不到东西问题
优缺点
Actor Critic 方法的优势: 可以进行单步更新, 比传统的 Policy Gradient 要快.
Actor Critic 方法的劣势: 取决于 Critic 的价值判断, 但是 Critic 难收敛, 再加上 Actor 的更新, 就更难收敛. 为了解决收敛问题, Google Deepmind 提出了 Actor Critic 升级版 Deep Deterministic Policy Gradient. 后者融合了 DQN 的优势, 解决了收敛难的问题.
算法
DDPG
DDPG(Deep Deterministic Policy Gradient)是一种Actor-Critic算法,旨在解决连续动作空间和高维状态空间中的强化学习问题。
DDPG算法中有两个部分:
Actor:策略函数,它决定在给定状态下,智能体应该采取哪个动作。
Critic:Q函数,它评估在给定状态下,采取某个动作的价值。
DDPG算法的训练过程包括以下步骤:
初始化Actor网络和Critic网络。
进行若干次交互,记录状态、动作和奖励。
使用Critic网络计算出每个状态动作对的Q值,并计算目标Q值。
使用目标Q值和当前Q值计算Critic网络的损失,并使用反向传播算法更新Critic网络参数。
使用Actor网络计算出每个状态的动作,并使用Critic网络计算其Q值。
使用Actor网络和Critic网络计算Actor的策略梯度,并使用反向传播算法更新Actor网络参数。
重复步骤2-6,直到收敛。
在DDPG算法中,Actor网络和Critic网络通常使用神经网络来表示,分别输出动作和Q值。在训练过程中,使用均方误差损失函数来衡量Critic网络的Q值和目标Q值之间的差异,并使用策略梯度损失函数来衡量Actor网络的策略梯度。
DDPG算法的优点是可以处理连续动作空间和高维状态空间的强化学习问题,并且可以学习到连续动作的策略。常见的DDPG算法包括TD3、SAC等。
拆分细讲
它吸收了 Actor-Critic 让 Policy gradient 单步更新的精华, 而且还吸收让计算机学会玩游戏的 DQN 的精华, 合并成了一种新算法, 叫做 Deep Deterministic Policy Gradient. 那 DDPG 到底是什么样的算法呢, 我们就拆开来分析, 我们将 DDPG 分成 ‘Deep’ 和 ‘Deterministic Policy Gradient’, 然后 ‘Deterministic Policy Gradient’ 又能被细分为 ‘Deterministic’ 和 ‘Policy Gradient
Deep 顾名思义, 就是走向更深层次, 我们在 DQN 的影片当中提到过, 使用一个记忆库和两套结构相同, 但参数更新频率不同的神经网络能有效促进学习. 那我们也把这种思想运用到 DDPG 当中, 使 DDPG 也具备这种优良形式. 但是 DDPG 的神经网络形式却比 DQN 的要复杂一点点.
DDPG 神经网络
现在我们来说说 DDPG 中所用到的神经网络. 它其实和我们之前提到的 Actor-Critic 形式差不多, 也需要有基于 策略 Policy 的神经网络 和基于 价值 Value 的神经网络, 但是为了体现 DQN 的思想, 每种神经网络我们都需要再细分为两个, Policy Gradient 这边, 我们有估计网络和现实网络, 估计网络用来输出实时的动作, 供 actor 在现实中实行. 而现实网络则是用来更新价值网络系统的. 所以我们再来看看价值系统这边, 我们也有现实网络和估计网络, 他们都在输出这个状态的价值, 而输入端却有不同, 状态现实网络这边会拿着从动作现实网络来的动作加上状态的观测值加以分析, 而状态估计网络则是拿着当时 Actor 施加的动作当做输入.在实际运用中, DDPG 的这种做法的确带来了更有效的学习过程.
算法