线性函数近似,如我们所见,提供了一种利用特征在不同状态间泛化价值估计的方法。然而,现实(以及许多有趣的模拟环境)常常表现出状态与其长期价值之间复杂、非线性的关联。简单的特征线性组合可能不足以表示这些复杂模式。例如,一个状态的价值可能取决于特征之间难以被线性模型表示的精细影响。当面对复杂且非线性的数据模式时,神经网络(NNs)是强大的函数近似器,以其直接从数据中学习复杂非线性映射的能力而闻名。它们在计算机视觉和自然语言处理等许多应用中取得的成就源于此能力。在强化学习中,我们可以借助神经网络来近似价值函数,这可能在复杂环境中带来更好的表现。使用神经网络近似价值函数我们可以使用神经网络,而不是线性函数 $\hat{v}(s, \mathbf{w}) = \mathbf{w}^T \mathbf{x}(s)$。该网络将状态表示作为输入,并输出估计价值。现在,令 $\mathbf{w}$ 表示神经网络内部的全部权重和偏差。对于状态价值函数: 网络接收状态 $s$(或其特征向量 $\mathbf{x}(s)$)作为输入,并输出一个单一的标量值,表示估计的状态价值 $\hat{v}(s; \mathbf{w})$。对于动作价值函数: 网络通常将状态 $s$ 作为输入,并输出多个值,每个可能动作 $a$ 对应一个值。该输出表示状态 $s$ 中所有可用动作的估计Q值 $\hat{q}(s, a; \mathbf{w})$。另外,网络也可以同时接收状态 $s$ 和特定动作 $a$ 作为输入,并输出这对组合的单一Q值。前一种方法在DQN等方法中更为常见。digraph G { rankdir=LR; node [shape=rect, style=filled, fillcolor="#e9ecef", fontname="sans-serif"]; edge [arrowhead=vee]; subgraph cluster_input { label = "输入状态 (s)"; style=filled; color="#dee2e6"; node [fillcolor="#a5d8ff"]; s [label="状态\n(特征或原始像素)"]; } subgraph cluster_nn { label = "神经网络 (权重 w)"; style=filled; color="#dee2e6"; node [shape=circle, fillcolor="#bac8ff", label=""]; h1 [label="隐藏层 1"]; h2 [label="隐藏层 2"]; } subgraph cluster_output { label = "输出动作价值"; style=filled; color="#dee2e6"; node [fillcolor="#96f2d7"]; q_a1 [label="Q(s, a1)"]; q_a2 [label="Q(s, a2)"]; q_dots [label="..."]; q_aN [label="Q(s, aN)"]; } s -> h1 [label="输入特征"]; h1 -> h2 [label="非线性变换"]; h2 -> q_a1; h2 -> q_a2; h2 -> q_dots [style=invis]; h2 -> q_aN; {rank=same; q_a1; q_a2; q_dots; q_aN}; }一个图表显示神经网络接收状态表示作为输入,并输出多个动作的估计Q值。权重 $\mathbf{w}$ 对网络内的连接进行参数化。使用神经网络的优势捕捉非线性: 带有隐藏层和非线性激活函数(如ReLU)的神经网络可以近似任意复杂的函数。这使它们能够建立比线性方法更复杂的价值函数模型。自动特征表示: 深度神经网络,特别是处理图像输入(如游戏屏幕)时的卷积神经网络(CNN),可以直接从原始数据中学习分层特征。这减少或消除了手动、领域特定特征工程的必要性,而这可能是应用强化学习的一个重要瓶颈。网络学会了对价值最具预测性的特征。神经网络的价值函数近似训练基本目标与线性价值函数近似(VFA)相同:调整参数 $\mathbf{w}$(现在是网络的权重),以使预测值与目标值之间的差异最小化。我们通常使用时序差分(TD)学习的变体。例如,在Q学习中使用神经网络时,经验元组 $(S_t, A_t, R_{t+1}, S_{t+1})$ 的目标值通常为:$$ Y_t = R_{t+1} + \gamma \max_{a'} \hat{q}(S_{t+1}, a', \mathbf{w}) $$网络预测 $\hat{q}(S_t, A_t, \mathbf{w})$。目标是最小化目标与预测之间的平方误差,这通常被称为TD误差:$\delta_t = Y_t - \hat{q}(S_t, A_t, \mathbf{w})$。我们使用随机梯度下降(SGD)或其变体(如Adam)来更新权重 $\mathbf{w}$。更新旨在使预测更接近目标:$$ \mathbf{w} \leftarrow \mathbf{w} + \alpha \delta_t \nabla_{\mathbf{w}} \hat{q}(S_t, A_t, \mathbf{w}) $$这里,$\nabla_{\mathbf{w}} \hat{q}(S_t, A_t, \mathbf{w})$ 是网络输出(对于特定动作 $A_t$)相对于其权重 $\mathbf{w}$ 的梯度。这个梯度是使用反向传播算法高效计算的,这是深度学习中的一种标准方法。幸运的是,现代深度学习库,如TensorFlow或PyTorch,为我们处理自动微分和反向传播。我们只需要定义网络架构和损失函数(通常是基于TD误差的均方误差)。请注意,这仍然是一种半梯度方法,因为目标 $Y_t$ 本身取决于当前的权重 $\mathbf{w}$(除非使用目标网络,这将在后面讨论),并且在计算梯度时,我们不对目标计算进行微分。挑战与展望尽管功能强大,但将神经网络与TD学习直接结合会在训练期间引入潜在的不稳定性。两个主要问题随之出现:关联数据: 强化学习经验 $(S_t, A_t, R_{t+1}, S_{t+1})$ 是连续且高度关联的。这违反了标准SGD所依赖的独立同分布(IID)样本假设,可能导致学习效率低下或不稳定。移动目标: TD目标 $Y_t$ 取决于网络自身的估计 $\hat{q}(S_{t+1}, a', \mathbf{w})$。由于权重 $\mathbf{w}$ 在每一步都被更新,目标值本身会持续变化。这就像追逐一个移动的目标,可能导致震荡或发散。此外,神经网络引入了更多超参数(网络架构、层大小、学习率、激活函数),这些参数需要仔细选择和调整。使用神经网络进行价值函数近似标志着向**深度强化学习(DRL)**的转变。下一章“深度Q网络(DQN)简介”将通过介绍经验回放(Experience Replay)和固定Q目标(Fixed Q-Targets)等方法直接解决上述稳定性挑战,这些方法对早期DRL算法的成功起到了重要作用。这些方法使我们能够有效地训练深度神经网络来解决复杂的强化学习任务。