基于策略的深度强化学习

基于策略的深度强化学习


1 算法介绍:基于策略的强化学习

想象一下,你正在教一个机器人学习如何走路。在基于策略的强化学习方法中,你直接告诉这个机器人在每一步该如何行动。这种指导是通过一个概率模型来实现的,即策略函数。策略函数考虑当前的环境(即机器人的当前状态),然后输出每一个可能动作的概率。机器人根据这些概率来选择其动作。因此,在每个状态下,机器人有一个清晰的概率指导它决定下一步如何行动。这种方法的关键优势是可以处理更加复杂和多样的动作选择,例如在连续动作空间中选择合适的动作力度和方向。

相比之下,在DQN这类基于值的强化学习方法中,我们不是直接告诉机器人每一步怎么做,而是给它一个评分系统:对于每一个可能的动作,DQN评估其带来的预期回报(即Q值)。机器人的任务是在每一步选择那个预期回报最高的动作。这就好比不是告诉机器人具体怎么走,而是给每一步一个分数,让它自己找出得分最高的步骤。这种方法在离散动作空间中表现得非常好,因为可以轻松比较和选择有限个动作中的最佳选项。

现在,如果动作空间变得非常大或者是连续的(想象让机器人学习怎样以任意速度和方向跑步),基于值的方法就变得复杂且效率不高了。因为对于每一个可能的动作,你都需要计算一个预期回报,并从中选择最佳的。但在连续动作空间中,可能的动作是无限的,这使得找出最佳动作变得非常困难。

相反,基于策略的方法则可以更自然地处理这种情况。因为你不需要为每个可能的动作分别计算一个值,而是直接根据当前状态生成动作的概率分布。这使得机器人能够在连续的动作空间中平滑地选择动作,而不是在有限的选项中做出选择。

2 策略优化

DQN(Deep Q-Network)算法使用了一种被称为TD(时序差分)学习的技术。在TD学习中,我们利用贝尔曼方程来迭代地更新动作值函数(Q值)。这里的关键点是Q值的计算和更新:对于一个给定的状态(比如机器人在特定的位置)和一个动作(比如向前移动一步),Q值是表示执行这个动作并且之后遵循最优策略所能获得的预期总回报。 在DQN中,这个Q值是通过神经网络来估计的,网络的输入是状态和动作,输出是对应的Q值。当机器人观察到新的状态和回报时,DQN使用这些信息来更新神经网络,以便更好地估计Q值。通过不断的学习,DQN逐渐学会预测哪些动作会带来最大的总回报。

图片[1]-基于策略的深度强化学习-点头深度学习网站
策略梯度方法指导动作的选择

相比之下,基于策略的强化学习方法采用了不同的途径。这里,我们直接对策略本身进行优化,而不是像在DQN中那样间接通过Q值来推导策略。策略本身通常由一个神经网络表示,输入是状态,输出是在这个状态下采取每个可能动作的概率。策略梯度方法是通过调整策略网络的参数来直接最大化累积回报的期望值。其中,REINFORCE 算法是一种经典的策略梯度方法。在REINFORCE中,我们让策略网络指导动作的选择,然后根据实际获得的回报来调整网络参数。简短说,如果一个动作导致了正的回报,那么我们就增加未来选择这个动作的概率;反之,如果导致了负面的回报,那么选择这个动作的概率就会减少。具体的算法步骤如下:

1. 初始化策略模型:策略通常由一个参数化的模型表示,比如一个神经网络。这个网络根据输入的状态来输出每个可行动作的概率。

2. 生成一个或多个片段:在每个迭代中,使用当前的策略在环境中执行多个完整的轨迹(Trajectory),直到达到终止状态。每个轨迹是一个状态、动作和回报的序列。

3. 计算回报:对于片段中的每个步骤,计算从当前状态到片段结束所获得的累积回报。这个累积回报通常是对未来回报的一个折扣累计和,其中折扣因子 γ 决定了未来回报的权重。

4. 策略梯度更新:对于轨迹中的每个步骤,调整策略模型的参数,以增加在给定状态下选择实际执行的动作的概率。这个调整是根据策略梯度进行的,通常使用梯度上升法来实现。策略梯度由每个步骤的累积回报和动作概率的梯度的乘积给出。 重复上述步骤直到策略收敛或达到某个性能标准。

策略梯度的基本形式可以表示为:

\nabla_\theta J(\theta)=\mathbb{E}\left[\sum_{t=0}^T G_t \cdot \nabla_\theta \log \pi_\theta\left(a_t \mid s_t\right)\right]

从直观上我们可以这些解释上述公式:

1. 期望回报: \(J(\theta)\) 是在策略 \(\pi_\theta\) 下的期望回报。我们的目标是调整 \(\theta\) 来最大化 \(J(\theta)\) 。

2. 梯度上升: 由于我们要最大化 \(J(\theta)\) ,我们需要朝着梯度 \(\nabla_\theta J(\theta)\) 的方向调整 \(\theta\) 。这意味着如果某个方向上的梯度为正,增加 \(\theta\) 在这个方向上的值会增加期望回报。

3. 策略概率的对数: \(\log \pi_\theta\left(a_t \mid s_t\right)\) 是在给定状态 \(s_t\) 下选择动作 \(a_t\) 的策略概率的自然对数。对数运算使得梯度计算更为稳定和高效。

4. 梯度 \(\nabla_\theta \log \pi_\theta\left(a_t \mid s_t\right)\) :这部分表明策略概率对参数 \(\theta\) 的敏感程度。直观上说,它告诉我们,微小地调整 $\theta$ 会如何影响在状态 \(s_t\) 下选择动作 \(a_t\) 的概率。

5. 累积回报 \(G_t\) : 这是从时间 \(t\) 到轨迹结束的累积折扣回报。 \(G_t\) 的引入确保了动作的选择不仅考虑立即回报,而是基于其长期影响。通过 \(G_t\) ,策略梯度方法可以促进那些可能立即回报不高,但长期效果好的动作。

6. 期望: 外层的期望 \(\mathbb{E}\) 表示这个梯度是在所有可能轨迹下的平均梯度。由于直接计算整个期望通常不可行,实践中常常通过从当前策略中采样一个或多个轨迹来估计这个期望。

针对上述解释,需要注意三个问题:

  • 策略概率的对数是神经网络的输出结果乘 log 的意思吗?

是的,策略概率的对数指的是将神经网络输出的动作概率取自然对数。在策略梯度方法中,如REINFORCE算法,神经网络通常输出的是一个概率分布,表示在给定状态下采取各个可能动作的概率。例如,如果策略由神经网络 \(\pi_\theta(a \mid s)\) 表示,其中 \(\theta\) 是网络参数,那么对于在状态 \(s\) 下选择动作 \(a\) 的概率 \(p\) ,它的对数就是 \(\log p=\log \pi_\theta(a \mid s)\) 。

  • 为什么要将策略概率对数的梯度与累积回报 $G_t$ 相乘?

策略概率对数的梯度 \(\nabla_\theta \log \pi_\theta\left(a_t \mid s_t\right)\) 指示了如何调整策略参数 \(\theta\) 来增加在状态 \(s_t\) 下选择动作 \(a_t\) 的概率。而累积回报 \(G_t\) 作为一个权重与之相乘,用于调整每个动作的重要性。这样做的原因主要是强化学习的目标是最大化累积回报,我们想要的是使得获得更高回报的动作被更频繁地选择。通过将策略梯度与累积回报相乘,我们实际上在告诉算法,如果某个动作导致了高回报,那么增加这个动作的选择概率;反之,如果动作导致了低回报或负回报,那么降低这个动作的选择概率。

  • 由于直接计算整个期望通常不可行,实践中常常通过从当前策略中采样一个或多个轨迹来估计这个期望,这个操作是蒙特卡洛采样吗?

这种方法属于蒙特卡洛采样。由于直接计算整个期望通常是不可行的(因为它涉及到所有可能的状态和动作),我们通常通过采样的方法来估计它。在这里,蒙特卡洛采样指的是从当前策略 \(\pi_\theta\)中采样一个或多个完整的轨迹,然后根据这些轨迹来估计期望值。这种方法的好处是它不需要一个模型来表示环境(即无模型方法),并且能够处理连续的状态和动作空间。然而,它的缺点是可能需要大量的样本来获得准确的估计,特别是在环境变化复杂或者回报函数波动较大的情况下。

3 对比梯度上升和时序差分

梯度上升和时序差分学习(TD-Learning)是强化学习中的两种不同的优化策略,它们各有优势和局限性。下面对这两种方法进行对比:

在基于策略的强化学习方法中使用梯度上升的优点主要体现下以下三方面:

1.直接优化策略:梯度上升直接对策略进行优化,使得学习过程更直接和高效,特别是在复杂或连续的动作空间中。

2.更好的探索:策略梯度方法通常能更好地探索动作空间,因为它们通过概率性策略来选择动作,这意味着总有一定的概率去尝试不同的动作,而不是一直选择最大的概率动作。

3. 避免局部最优:由于其探索特性和直接优化策略的能力,策略梯度方法可能更容易跳出局部最优解。

在基于策略的强化学习方法中使用梯度上升的缺点如下:

1. 高方差:策略梯度方法特别是基于蒙特卡洛的策略梯度,可能会受到较高方差的影响,从而影响学习的稳定性和收敛速度。

2. 样本效率低:这些方法通常需要更多的样本来准确估计梯度,尤其是在复杂环境中。

3. 调参敏感:策略梯度方法在实践中可能更依赖于调参(如学习率、策略网络的结构等)。

在DQN中使用时序差分学习的优点如下:

1. 样本效率高:TD-Learning通过使用每个步骤的更新,而不是等待整个轨迹完成,通常更加样本效率高。

2. 稳定性:相比于蒙特卡洛方法的策略梯度,TD-Learning通常能提供更稳定的学习更新,因为Q值的更新不完全依赖于实际获得的长期回报,而是部分地依赖于对未来价值的现有估计,加上当前状态的观测价值,从而使学习更新更加平滑和稳定。

3. 低方差:方差这里指的是从一个更新到下一个更新估计值变化的不确定性。在蒙特卡洛方法中,值函数的每次更新是完全基于整个轨迹的实际回报,这导致了估计的方差较高,尤其是在回报信号变化较大或轨迹很长时。而在TD-Learning中,由于每次更新部分基于当前的值函数估计,这意味着每个更新更加平稳,对于单一异常的状态转换或回报不会过度反应,从而导致整体的估计方差较低。

在DQN中使用时序差分学习的缺点如下:

1. 在TD-Learning中,”双重利用” (double sampling) 问题指的是在同一过程中对同一个样本数据 (比如状态转移) 的重复使用。例如,在Q学习这种TD-Learning方法中,Q值的更新是基于当前 \(\mathrm{Q}\) 值 \((Q(s, a))\) 和下一状态的最大 \(\mathrm{Q}\) 值 \(\left(\max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime}\right)\right)\) 进行的。这里, \(Q(s, a)\)和 \(\max _{a^{\prime}} Q\left(s^{\prime}, a^{\prime}\right)\) 都是基于相同的经验 (状态转移) 估计的,因此可能会导致对于未来回报的过度乐观估计

这种过度估计可能导致学习的偏差,因为算法可能会过分强化那些其实并不是最优的策略或动作。这个问题在有噪声或者探索不充分的环境中尤其显著。当然,在后续的DQN改进算法中,这个双重利用的问题可以通过划分评价网络和目标网络来缓解。

2. 探索问题涉及到强化学习中的一个核心问题:探索(exploration)和利用(exploitation)的平衡。探索是指尝试新的、不熟悉的动作来获得更多信息,而利用是指基于已有的信息来选择看似最优的动作。

在基于值的方法如DQN中,通常使用贪心策略(总是选择当前估计值最高的动作)或  ϵ-贪心策略(大部分时间选择最优动作,但有一个小概率  ϵ 随机选择其他动作)来平衡这两者。然而,这种方法可能不够灵活,特别是在动作空间很大或连续的环境中,因为它们可能会忽视那些短期内看起来不是最优,但长期来看可能更好的策略

相比之下,概率性策略(比如策略梯度方法中使用的)允许算法在每个状态下根据某种概率分布来选择动作,这种方法可能更能鼓励算法探索不同的动作,尤其是在初期或当环境变化时。

3.需要值函数逼近:TD-Learning方法通常依赖于值函数(如Q函数)的估计来指导策略的选择。在简单或低维的状态空间中,这种估计相对容易。然而,在高维状态空间或复杂环境中(例如,拥有大量状态和动作的游戏),准确估计值函数变得非常具有挑战性。值函数逼近(function approximation)就是在这样的情况下使用的技术,比如使用神经网络来近似复杂的值函数。 值函数逼近的一个关键挑战是如何保证估计的准确性和泛化能力。如果值函数逼近做得不好,可能会导致学习过程不稳定或收敛到次优策略。此外,在高维空间中,值函数逼近可能需要大量的数据和计算资源。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容