深度强化学习中的值函数学习与策略梯度方法
1. 状态建模与状态 - 动作对建模
在值函数学习中,我们可以选择学习特定状态的值,而非状态 - 动作对的值。早期的时间差分学习(TD - learning)方法就是维护状态的值。
例如,SARSA 算法可以通过评估每个可能动作产生的所有状态值,并基于预定义的策略(如 ϵ - 贪心策略)选择一个好的动作来实现。从效率角度看,一次性输出所有动作的值,对于基于值的决策制定更为方便。但当策略无法用状态 - 动作对清晰表达时,使用状态值进行学习会更有用。
假设用 $V(s_t)$ 表示状态 $s_t$ 的值,有一个参数化的神经网络,使用状态 $s_t$ 的观察属性 $X_t$(如 Atari 游戏中最后四个屏幕的像素)来估计 $V(s_t)$。若神经网络计算的函数为 $G(X_t, W)$($W$ 为参数向量),则有:
$G(X_t, W) = \hat{V}(s_t)$
如果执行动作 $a_t$ 获得奖励 $r_t$,产生的新状态为 $s_{t + 1}$,其值为 $V(s_{t + 1})$,那么 $V(s_t)$ 的引导真值估计为:
$V(s_t) = r_t + \gamma V(s_{t + 1})$
用神经网络参数表示为:
$G(X_t, W) = r_t + \gamma G(X_{t + 1}, W)$
在训练阶段,需要调整神经网络的权重,使 $G(X_t, W)$ 接近改进后的“真值” $r_t + \gamma G(X_{t + 1}, W)$。为此,定义 TD 误差 $\delta_t$ 为:
$\delta_t = r_t + \gamma G(X_{t + 1}, W) - G(X_t, W)$
损失函数 $L_t$ 为:
$L_t = \delta_t^2 = \left{r_t + \gamma G(X_{t + 1}, W) - G(X_t, W)\right}^2$
权重更新公式为:
$W \Leftarrow W - \alpha\frac{\partial L_t}{\partial W} = W + \alpha\left{[r_t + \gamma G(X_{t + 1}, W)] - G(X_t, W)\right}\frac{\partial G(X_t, W)}{\partial W} = W + \alpha\delta_t(\nabla G(X_t, W))$
这个算法是 TD(λ) 算法在 $\lambda = 0$ 时的特殊情况。该特殊情况仅根据下一个时间步的评估为当前时间步创建引导“真值”来更新神经网络,是一种短视的近似。
为了改进这种短视问题,可以采用多步引导或使用 TD(λ) 算法。TD(λ) 算法的更新公式为:
$W \Leftarrow W + \alpha\delta_t\sum_{k = 0}^{t}(\lambda\gamma)^{t - k}(\nabla G(X_k, W))$
当 $\lambda = 1$ 时,该方法等价于使用蒙特卡罗评估来计算真值。$\lambda$ 仅用于对步骤进行折扣,而 $\gamma$ 还用于计算 TD 误差 $\delta_t$。$\lambda$ 是算法特定的参数,$\gamma$ 是环境特定的参数。使用 $\lambda = 1$ 或蒙特卡罗采样会导致偏差降低但方差增加;选择非常小的 $\lambda$ 值在学习开局时会有困难,因为具有长期后果的错误将无法被检测到。
以下是这部分内容的流程图:
graph LR
A[开始] --> B[输入状态 $s_t$ 观察属性 $X_t$]
B --> C[神经网络计算 $G(X_t, W)$]
C --> D[执行动作 $a_t$ 获得奖励 $r_t$ 和新状态 $s_{t + 1}$]
D --> E[计算 $G(X_{t + 1}, W)$]
E --> F[计算 TD 误差 $\delta_t$]
F --> G[计算损失函数 $L_t$]
G --> H[更新权重 $W$]
H --> I[结束]
2. 策略梯度方法
值基方法(如 Q - learning)试图用神经网络预测动作的值,并结合通用策略(如 ϵ - 贪心策略)。而策略梯度方法则是估计每个步骤中每个动作的概率,目标是最大化总体奖励。策略本身是参数化的,而不是将值估计作为选择动作的中间步骤。
用于估计策略的神经网络称为策略网络,其输入是系统的当前状态,输出是与视频游戏中各种动作(如向上、向下、向左或向右移动)相关的一组概率。例如,在 Atari 视频游戏中,观察状态可以是最后四个屏幕的像素。
对于每个动作 $a$、观察状态表示 $X_t$ 和当前参数 $W$,神经网络能够计算函数 $P(X_t, W, a)$,即应该执行动作 $a$ 的概率。采样一个动作并观察该动作的奖励,根据执行动作获得的奖励更新权重向量 $W$。
期望折扣奖励 $J$ 为:
$J = E[r_0 + \gamma \cdot r_1 + \gamma^2 \cdot r_2 + \cdots + \gamma^H \cdot r_H] = \sum_{i = 0}^{H}E[\gamma^i r_i]$
权重更新目标为:
$W \Leftarrow W + \alpha\nabla J$
常见的策略梯度方法包括有限差分方法和似然比方法。
2.1 有限差分方法
有限差分方法通过经验模拟来估计梯度,避免了随机性问题。具体做法是对神经网络的权重进行 $s$ 种不同的扰动,观察奖励的期望变化 $\Delta J$。对于每种扰动后的权重,需要运行 $H$ 步的策略(即进行一次滚动)来估计奖励的变化。
会得到 $s$ 个不同的权重变化向量 $\Delta W^1 \cdots \Delta W^s$ 以及对应的总奖励变化 $\Delta J_1 \cdots \Delta J_s$,这些对大致满足关系:
$(\Delta W^r)\nabla J^T \approx \Delta J_r \quad \forall r \in {1 \cdots s}$
将奖励变化组成 $s$ 维列向量 $y = [\Delta J_1 \cdots \Delta J_s]^T$,权重变化向量堆叠成 $N \times s$ 矩阵 $D$($N$ 为神经网络的参数数量),则有:
$D[\nabla J]^T \approx y$
通过线性回归得到策略梯度:
$\nabla J^T = (D^T D)^{-1}D^T y$
该梯度用于更新权重向量 $W$。但这个过程有时会很慢,因为需要对 $s$ 个样本中的每个样本运行 $H$ 步的策略来估计梯度。
以下是有限差分方法的步骤列表:
1. 对神经网络的权重进行 $s$ 种不同的扰动。
2. 对于每种扰动后的权重,运行 $H$ 步的策略,记录奖励变化 $\Delta J_r$。
3. 构建向量 $y$ 和矩阵 $D$。
4. 通过线性回归计算策略梯度 $\nabla J^T$。
5. 更新权重向量 $W$。
2.2 似然比方法
似然比方法是在 REINFORCE 算法的背景下提出的。假设遵循概率向量为 $p$ 的策略,要最大化 $E[Q_p(s, a)]$(状态 $s$ 和每个采样动作 $a$ 的长期期望值)。
通过对数概率技巧,可将期望的梯度转换为梯度的期望:
$\nabla E[Q_p(s, a)] = E[Q_p(s, a)\nabla\log(p(a))]$
每个模拟采样的动作 $a$ 都与长期奖励 $Q_p(s, a)$ 相关联,通过蒙特卡罗模拟获得。根据上述关系,期望优势的梯度通过将动作的对数概率 $\log(p(a))$ 的梯度与长期奖励 $Q_p(s, a)$ 相乘得到。
权重更新公式为:
$W \Leftarrow W + Q_p(s, a)\nabla\log(p(a))$
为了减少方差,可以从长期奖励 $Q_p(s, a)$ 中减去一个基线值来获得其优势。基线理想情况下是特定于状态的,但也可以是一个常数。例如,在 REINFORCE 算法的原始工作中,使用了一个常数基线(通常是所有状态的平均长期奖励的某种度量)。使用状态特定的基线(如状态 $s$ 在采样动作 $a$ 之前的价值 $V^p(s)$)会使优势 $(Q_p(s, a) - V^p(s))$ 与时间差分误差相同。
以下是似然比方法的流程图:
graph LR
A[开始] --> B[输入状态 $s$ 和参数 $W$]
B --> C[神经网络计算动作概率 $p(a)$]
C --> D[采样动作 $a$ 并执行]
D --> E[获得长期奖励 $Q_p(s, a)$]
E --> F[计算 $\nabla\log(p(a))$]
F --> G[计算梯度 $Q_p(s, a)\nabla\log(p(a))$]
G --> H[更新权重 $W$]
H --> I[结束]
综上所述,状态建模和策略梯度方法在深度强化学习中都有重要的应用,不同的方法适用于不同的场景,需要根据具体问题选择合适的方法。
深度强化学习中的值函数学习与策略梯度方法(下半部分)
3. 策略梯度方法的对比与应用场景
策略梯度方法中的有限差分方法和似然比方法各有特点,下面通过表格对比它们的优缺点以及适用场景:
| 方法 | 优点 | 缺点 | 适用场景 |
| — | — | — | — |
| 有限差分方法 | 概念简单,通过经验模拟估计梯度,避免了复杂的理论推导 | 计算速度慢,需要对 $s$ 个样本中的每个样本运行 $H$ 步的策略来估计梯度 | 当对算法的理论理解要求不高,且对计算时间要求不苛刻时适用 |
| 似然比方法 | 可以利用对数概率技巧将期望的梯度转换为梯度的期望,便于计算;可通过减去基线值减少方差 | 涉及蒙特卡罗模拟,结果可能存在一定的随机性 | 适用于需要考虑长期奖励,且希望减少方差以提高学习效率的场景 |
在实际应用中,例如在 Atari 游戏和机器人控制等领域,策略梯度方法都有广泛的应用。在 Atari 游戏中,策略网络可以根据游戏画面(如最后四个屏幕的像素)输出各种动作的概率,通过不断更新权重来提高游戏表现。在机器人控制中,对于连续动作的场景(如机械臂的移动距离),似然比方法可以很好地处理,因为它可以处理连续动作的概率估计。
4. 策略梯度方法的优化与改进
为了进一步提高策略梯度方法的性能,可以从以下几个方面进行优化:
4.1 优化采样策略
在蒙特卡罗模拟中,采样策略对结果的准确性和效率有很大影响。可以采用重要性采样等方法,对不同的样本赋予不同的权重,使得更有价值的样本得到更多的关注,从而提高估计的准确性。
4.2 自适应调整参数
$\lambda$ 和 $\gamma$ 是策略梯度方法中的重要参数。可以根据学习的进展自适应地调整这些参数。例如,在学习初期,为了快速探索环境,可以使用较大的 $\lambda$ 值;在学习后期,为了提高收敛速度和稳定性,可以逐渐减小 $\lambda$ 值。
4.3 结合其他算法
可以将策略梯度方法与其他强化学习算法(如值基方法)相结合。例如,先使用值基方法进行初步的策略学习,然后使用策略梯度方法进行精细调整,这样可以充分发挥两种方法的优势。
以下是策略梯度方法优化的步骤列表:
1. 分析当前策略梯度方法的性能瓶颈,确定需要优化的方向。
2. 根据优化方向选择合适的优化方法,如优化采样策略、自适应调整参数或结合其他算法。
3. 实现优化方法,并进行实验验证。
4. 根据实验结果调整优化方法的参数,直到达到满意的性能。
5. 总结与展望
深度强化学习中的状态建模和策略梯度方法为解决复杂的决策问题提供了强大的工具。状态建模通过学习状态的值或状态 - 动作对的值,结合时间差分学习和 TD(λ) 算法,可以有效地更新神经网络的权重。策略梯度方法则通过直接估计动作的概率,以最大化总体奖励为目标,避免了值基方法中值估计的中间步骤。
有限差分方法和似然比方法是策略梯度方法中的两种重要方法,它们各有优缺点和适用场景。在实际应用中,可以根据具体问题选择合适的方法,并通过优化采样策略、自适应调整参数和结合其他算法等方式进一步提高性能。
未来,深度强化学习有望在更多领域得到应用,如自动驾驶、医疗保健和金融投资等。随着算法的不断改进和硬件性能的提升,深度强化学习将能够处理更加复杂和大规模的问题,为人类社会带来更多的价值。
以下是整个深度强化学习流程的流程图:
graph LR
A[开始] --> B[选择学习方法(状态建模或策略梯度方法)]
B --> C{状态建模}
C -- 是 --> D[输入状态观察属性,神经网络计算值]
D --> E[执行动作,获得奖励和新状态]
E --> F[计算 TD 误差和损失函数,更新权重]
C -- 否 --> G{策略梯度方法}
G -- 是 --> H[选择具体方法(有限差分或似然比)]
H -- 有限差分 --> I[对权重进行扰动,运行策略,估计奖励变化]
I --> J[构建向量和矩阵,线性回归计算梯度,更新权重]
H -- 似然比 --> K[计算动作概率,采样动作,获得长期奖励]
K --> L[计算梯度,更新权重]
F --> M[判断是否达到终止条件]
J --> M
L --> M
M -- 否 --> B
M -- 是 --> N[结束]
通过以上的介绍和分析,我们对深度强化学习中的状态建模和策略梯度方法有了更深入的理解,希望这些内容能为相关领域的研究和应用提供有益的参考。
超级会员免费看
941

被折叠的 条评论
为什么被折叠?



