1523 words
8 minutes
强化学习价值函数:Q-Learning、SARSA 与 DQN

在了解了强化学习的 基本理论 后,就不难发现,在解决实际问题中,最重要的是要找到合适的 价值函数。 于是基于时序差分学习的思想,又有以下几个常用的价值函数:

Q-Learning#

Q-Learning 在更新时,并不在意下一时刻实际会做什么动作,而是假设下一时刻一定会选择能带来 最大 QQ 值 的动作。

其中,QQ代表质量(Quality),Q(s,a)Q(s,a)代表在当前状态ss下,选择动作aa的质量有多高。

算法步骤:

  1. 初始化:设置学习率 α、折扣因子 γ、探索率 ϵ,并初始化 Q(s,a) 表。

  2. 循环每一个回合(Episode):

    1. 使用策略(如 ϵ-greedy)根据当前的 Q 值表选择动作 a。

    2. 执行动作 a,观测回报 r 和转移后的新状态 s′。

    3. 更新 Q 值(直接取 s′ 状态下最大的 Q 值):Q(s,a)←Q(s,a)+α[r+γa′maxQ(s′,a′)−Q(s,a)]Q(s,a)←Q(s,a)+α[r+γa′maxQ(s′,a′)−Q(s,a)]。

    4. 更新状态:s←s′s←s′。

    5. 如果 s 是终止状态,则跳出该回合循环。

优点:通过异策略(Off-policy)下的最大化算子,具备卓越的 全局寻优能力 与样本重用率,理论上能收敛至确定性的最优决策方案。

缺点:在训练阶段对环境噪声较为敏感,容易产生 价值过估计(Overestimation) 现象,且由于无视探索风险,在复杂环境中的初期训练表现较差。

SARSA#

SARSA 的名称来源于其决策序列:St,At,Rt+1,St+1,At+1S_t,A_t,R_{t+1},S_{t+1},A_{t+1}。它在更新当前状态的 Q 值时,使用的是下一时刻 实际采取 的动作。

算法步骤:

  1. 初始化:设置学习率 α、折扣因子 γ、探索率 ϵ,并初始化 Q(s,a) 表(通常设为 0 或随机值)。

  2. 循环每一个回合(Episode):

    1. 使用策略(如 ϵ-greedy)根据当前的 Q 值表选择动作 a。

    2. 执行动作 a,观测回报 r 和转移后的新状态 s′。

    3. 使用相同的策略(如 ϵ-greedy)在状态 s′ 下选择下一个动作 a′。

    4. 更新 Q 值:Q(s,a)←Q(s,a)+α[r+γQ(s′,a′)−Q(s,a)]Q(s,a)←Q(s,a)+α[r+γQ(s′,a′)−Q(s,a)]。

    5. 更新状态和动作:s←s′,a←a′s←s′, a←a′。

    6. 如果 s 是终止状态,则跳出该回合循环。

优点:采用同策略(On-policy)更新机制,能将探索过程中的 随机风险 纳入价值评估,具有较高的训练稳定性与在线学习安全性。

缺点:受限于对当前探索策略的依赖,其收敛结果通常为 次优策略,且无法直接利用历史数据或异构经验,样本效率较低。

Deep Q-Network(DQN)#

DQN (Deep Q-Network) 的核心思想是将深度学习的强大特征提取能力与 Q-Learning 的决策能力结合。它通过神经网络来拟合价值函数 Q(s,a)Q(s,a),从而解决了传统方法无法处理高维状态空间(如原始图像像素)的问题。

算法步骤:

  1. 初始化:

    • 初始化 经验回放池 DD,用于存储历史经验 (s,a,r,s′)(s,a,r,s') 。

    • 初始化 当前 Q 网络 Q(s,a;θ)Q(s,a;θ),赋予随机权重 θ\theta。

    • 初始化 目标 Q 网络 Q(s,a;θ−)Q(s,a;θ^-),使其权重 θ−=0\theta^-=0(每隔一定步数更新一次)。

    • 设置学习率αα、折扣因子γγ、探索率ϵϵ。

  2. 循环每一个回合(Episode):

    1. 动作选择:使用 ϵ-greedy 策略。以 ϵϵ 的概率随机选动作,以 1−ϵ1-ϵ 的概率根据 当前 Q 网络 选择使 Q 值最大的动作at=argmaxaQ(st,a;θ)a_t=argmax_aQ(s_t,a;θ) 。

    2. 执行与存储:在环境中执行动作ata_t,观测回报rt+1r_{t+1}和转移后的新状态 。将经验st+1s_{t+1}存入经验回放池 。

    3. 样本采样:从DD中随机抽取一个 小批量(Mini-batch) 的经验样本。

    4. 计算目标值:对于每个样本,计算目标 Q 值yjy_j。若sj+1s_{j+1}是终止状态,则yj=rjy_j=r_j;否则:
      yj=rj+γmax⁡a′Q(sj+1,a′;θ−)y_j = r_j + \gamma \max_{a'} Q(s_{j+1}, a'; \theta^-)
      (注:此处使用 目标网络 来计算下一状态的最大价值)

    5. 更新网络:计算yjy_j与当前网络输出Q(sj,aj;θ)Q(s_j, a_j; \theta)之间的均方误差(Loss),通过梯度下降更新θ\theta。

    6. 同步网络:每隔CC步,将当前网络的参数同步给目标网络: θ−←θ\theta^- \leftarrow \theta。

    7. 迭代:更新状态st←st+1s_t \leftarrow s_{t+1},直到回合结束。

优点:

  • 处理高维状态:能够直接以图像、音频等原始感知数据作为输入,具备极强的泛化能力。

  • 训练稳定性高:通过 经验回放 打破了训练数据之间的相关性,通过 目标网络 缓解了更新过程中的震荡和不稳定性。
    例如,赛车正在过一个长左转弯,连续几秒钟看到的全是”左转”画面。如果没有经验回放池,AI 会产生严重的偏见,以为人生只有左转,甚至忘了怎么走直线,导致训练直接跑偏。同时,如果没有经验回放池,AI 在练习时,会根据当下的水平去给自己定目标。这就像赛车手一边开车,一边自己挪动路边的减速桩(目标):我进步一点,目标就动一点。这会导致 AI 陷入”追逐自己影子”的死循环,车头剧烈晃动(震荡),永远练不稳。

  • 样本利用率高:属于离道策略(Off-policy),可以反复利用历史经验进行学习。
    在 SARSA 中,一旦你掉进陷阱并学了一次,这个样本就被扔掉了。但在 DQN 中,那个”掉进陷阱”的样本会保存在经验池中。即使网络已经进化了很多,它依然可以反复抽取出这个样本进行”复习”,确保自己永远记住那个教训。

缺点:

  • 仅限离散动作:原生 DQN 无法直接处理连续动作空间(如控制赛车转弯的精确角度),同时,这也是Q-Learning和SARSA的缺点。

  • Q 值过估计:由于公式中使用了 操作,DQN 往往会倾向于高估某些动作的价值(该问题后来被 Double DQN 优化)。

  • 超参数敏感:神经网络的架构、学习率以及目标网络的更新频率对最终收敛效果影响巨大。

强化学习价值函数:Q-Learning、SARSA 与 DQN
https://blog.emilejones.top/posts/ai/强化学习价值函数/
Author
EmileJones
Published at
2026-02-10
License
CC BY-NC-SA 4.0
评论