Q‑Learning

一、背景与概念

  • 强化学习(Reinforcement Learning, RL)
    强化学习研究的是智能体(agent)在环境(environment)中通过试错交互,以最大化累积奖励(cumulative reward)的问题。智能体每一步观察状态sss,选择动作 aaa,获得即时奖励rrr,并转移到下一个状态s′s's
  • 马尔可夫决策过程(Markov Decision Process, MDP)
    强化学习通常建模为 MDP,定义为五元组(S,A,P,R,γ)(\mathcal{S}, \mathcal{A}, P, R, \gamma)(S,A,P,R,γ)
    • S\mathcal{S}S:状态空间
    • A\mathcal{A}A:动作空间
    • P(s′∣s,a)P(s'|s,a)P(ss,a):状态转移概率
    • R(s,a)R(s,a)R(s,a):即时奖励函数
    • γ∈[0,1)\gamma\in[0,1)γ[0,1):折扣因子

二、Q‑Learning 的核心思想

  • 动作价值函数(Action-Value Function)
    定义 Q 函数Qπ(s,a)=Eπ[∑t=0∞γt rt+1 ∣ s0=s, a0=a]Q^\pi(s,a) = \mathbb{E}_\pi\bigl[\sum_{t=0}^\infty \gamma^t\,r_{t+1}\,\big|\,s_0=s,\,a_0=a\bigr]Qπ(s,a)=Eπ[t=0γtrt+1 s0=s,a0=a]

    表示在状态sss采取动作aaa,随后按策略π\piπ行动时,所能获得的折扣累积奖励期望。

  • 最优 Q 函数

    Q∗(s,a)=max⁡πQπ(s,a)Q^*(s,a) = \max_{\pi} Q^\pi(s,a)Q(s,a)=πmaxQπ(s,a)

    满足贝尔曼最优性方程(Bellman Optimality Equation):
    Q∗(s,a)=Es′[ r+γmax⁡a′Q∗(s′,a′) ∣ s,a]Q^*(s,a) = \mathbb{E}_{s'}\Bigl[\,r + \gamma\max_{a'} Q^*(s',a')\,\Big|\,s,a\Bigr]Q(s,a)=Es[r+γamaxQ(s,a) s,a]

  • 核心思想:通过不断地“自举”(bootstrapping),利用当前对QQQ的估计来更新自身,最终收敛到最优函数Q∗Q^*Q

三、Q‑Learning 算法流程

  1. 初始化

    • 对所有状态—动作对(s,a)(s,a)(s,a)初始化Q(s,a)Q(s,a)Q(s,a)(可设为 0 或小随机值)。
  2. 循环直至收敛(或达到最大迭代次数)

    1. 在当前状态sss下,根据 ε-贪婪策略(或其他探索策略)选择动作aaaa={随机选择以概率 ε,arg⁡max⁡a′Q(s,a′)以概率 1−ε.a = \begin{cases} \text{随机选择}\quad& \text{以概率 }\varepsilon,\\ \arg\max_{a'} Q(s,a')\quad& \text{以概率 }1-\varepsilon. \end{cases}a={随机选择argmaxaQ(s,a)以概率 ε,以概率 1ε.

    2. 执行动作aaa,观察即时奖励rrr和下一个状态s′s's

    3. Q 值更新Q(s,a)←Q(s,a)+α[ r+γmax⁡a′Q(s′,a′)−Q(s,a)]Q(s,a) \gets Q(s,a) + \alpha \bigl[\,r + \gamma\max_{a'} Q(s',a') - Q(s,a)\bigr]Q(s,a)Q(s,a)+α[r+γamaxQ(s,a)Q(s,a)]

      • α∈(0,1]\alpha\in(0,1]α(0,1]:学习率
      • γ∈[0,1)\gamma\in[0,1)γ[0,1):折扣因子
    4. 状态转移:s←s′s \leftarrow s'ss

    5. s′s's为终止状态,则重置为初始状态,继续下一回合。

  3. 输出 最终的QQQ函数,可用于派生最优策略:
    π∗(s)=arg⁡max⁡aQ(s,a).\pi^*(s) = \arg\max_a Q(s,a).π(s)=argmaxaQ(s,a).率低,可结合基于模型或信息论的方法。

四、通俗解释

Q‑Learning 就像训练一个小伙伴在迷宫里找宝藏:它通过不断试错,在每一步记录「在某个位置做某个动作能拿到多少回报」(也就是 Q 值),然后根据“这一步拿到的奖励+预测下步最大奖励”的总和来更新记录。随着尝试越来越多,小伙伴就能学会在每个位置选最有可能通向宝藏的动作,最终找到最优路径。

DQN

一、背景与动机

传统 Q‑Learning 需用表格存储Q(s,a)Q(s,a)Q(s,a),当状态空间或动作空间很大(如图像输入、复杂连续空间)时,表格法无法扩展。DQN 的核心思想是用深度神经网络来 近似 Q 函数,即用参数化模型Q(s,a;θ)Q(s,a;\theta)Q(s,a;θ)代替传统的查表,从而能处理高维、连续的状态表示。

二、核心组成

  1. Q 网络
    输入当前状态(如游戏帧堆叠后的图像),输出对每个动作的QQQ值估计:
    Q(s,a;θ)≈Q∗(s,a)Q(s,a;\theta)\approx Q^*(s,a)Q(s,a;θ)Q(s,a)

  2. 经验回放(Experience Replay)

    • 将智能体与环境交互得到的四元组(s,a,r,s′)(s,a,r,s')(s,a,r,s)存入一个“回放缓冲区”
    • 每次训练时,从缓冲区中随机抽取小批量样本,打破样本间的时序相关,提升数据利用率和收敛稳定性
  3. 目标网络(Target Network)

    • 除了主QQQ网络θ\thetaθ,还维护一份延迟更新的目标网络参数θ−\theta^-θ
    • 用目标网络来计算TDTDTD目标:
      y=r+γmax⁡a′Q(s′,a′;θ−)y = r + \gamma \max_{a'} Q(s',a';\theta^-)y=r+γamaxQ(s,a;θ)
    • 每隔固定步数,将θ−←θ\theta^-\leftarrow \thetaθθ,再继续训练,防止自举目标变化过快导致的不稳定

三、DQN 算法流程

  1. 初始化

    • 初始化主网络参数θ\thetaθ
    • 复制得到目标网络参数θ−=θ\theta^- = \thetaθ=θ
    • 构建经验回放池D\mathcal{D}D
  2. 与环境交互并存储经验

    • 在状态sss下,采用 ε‑贪婪策略从Q(s;θ)Q(s;\theta)Q(s;θ)中选动作aaa,执行得到(r,s′)(r,s')(r,s)
    • (s,a,r,s′)(s,a,r,s')(s,a,r,s)存入D\mathcal{D}D
  3. 采样与训练(每步或每KKK步执行一次)

    1. D\mathcal{D}D中随机抽取一个小批量{(si,ai,ri,si′)}\{(s_i,a_i,r_i,s'_i)\}{(si,ai,ri,si)}
    2. 计算目标值
      yi={ri,若 si′ 为终止状态,ri+γ max⁡a′Q(si′,a′;θ−),否则.y_i = \begin{cases} r_i, & \text{若 } s'_i \text{ 为终止状态,}\\ r_i + \gamma\,\max_{a'}Q(s'_i,a';\theta^-), & \text{否则.} \end{cases}yi={ri,ri+γmaxaQ(si,a;θ), si 为终止状态,否则.
    3. 对主网络最小化均方误差损失
      L(θ)=1N∑i(yi−Q(si,ai;θ))2L(\theta) = \frac{1}{N}\sum_i\bigl(y_i - Q(s_i,a_i;\theta)\bigr)^2L(θ)=N1i(yiQ(si,ai;θ))2
    4. 使用梯度下降更新θ\thetaθ
  4. 周期性同步

    • 每隔CCC步,将目标网络参数θ−←θ\theta^-\leftarrow \thetaθθ
  5. 重复

    • 直到训练结束或达到性能要求

四、通俗解释

DQN 就像给小伙伴装上了“脑力相机”(神经网络),它一边玩游戏一边把每一步的画面、动作和得分(经验)存到“回放盒子”里,然后随机拿出过去的片段来复习,让他学到哪些操作最划算;与此同时,还用一个“慢动作回放机”(目标网络)来帮他稳定地估算下步最优得分,避免他因为自己连连更新脑力相机而走火入魔。这样,小伙伴就能快速又稳健地从高维画面中学会最聪明的动作策略。

DDPG

一、背景与动机

  • 连续动作空间挑战
    传统DQN及其变体擅长离散动作,但面对高维、连续动作(如机械臂角度、油门刹车力度)则难以直接套用。
  • 确定性策略梯度(Deterministic Policy Gradient, DPG)
    与随机策略梯度不同,DPG 直接学习一个确定性策略μ(s;θμ)\mu(s;\theta^\mu)μ(s;θμ),输出连续动作,目标是最大化长期期望回报:J(θμ)=Es∼ρμ[Q(s,μ(s;θμ);θQ)].J(\theta^\mu) = \mathbb{E}_{s\sim \rho^\mu}\bigl[Q(s,\mu(s;\theta^\mu);\theta^Q)\bigr].J(θμ)=Esρμ[Q(s,μ(s;θμ);θQ)].

二、算法总体架构

DDPG 是结合DPG与深度网络的离线、基于价值的 Actor‑Critic 框架,包含:

  1. Actor 网络 μ(s;θμ)\mu(s;\theta^\mu)μ(s;θμ)
    接收状态sss,输出确定性动作a∈Rna\in\mathbb{R}^naRn

  2. Critic 网络Q(s,a;θQ)Q(s,a;\theta^Q)Q(s,a;θQ)
    接收状态-动作对(s,a)(s,a)(s,a),估计其动作价值。

  3. 经验回放池D\mathcal{D}D
    存储交互四元组(s,a,r,s′)(s,a,r,s')(s,a,r,s),用于打破时序相关、提升样本效率。

  4. 目标网络
    为 Actor 和 Critic 各维护一份延迟更新的副本Q−θμ−Q−\theta^{\mu^-}Qθμ, θQ−\theta^{Q^-}θQ,保证训练稳定。

三、核心更新公式

  1. Critic 更新
    以目标网络计算的 TD 目标yyy进行最小二乘回归:
    y=r+γ Q(s′, μ(s′;θμ−);θQ−)y = r + \gamma\,Q(s',\,\mu(s';\theta^{\mu^-});\theta^{Q^-})y=r+γQ(s,μ(s;θμ);θQ)L(θQ)=E(s,a,r,s′)∼D ⁣[(Q(s,a;θQ)−y)2]. L(\theta^Q) = \mathbb{E}_{(s,a,r,s')\sim\mathcal{D}}\!\bigl[\bigl(Q(s,a;\theta^Q)-y\bigr)^2\bigr].L(θQ)=E(s,a,r,s)D[(Q(s,a;θQ)y)2].
  2. Actor 更新
    应用确定性策略梯度定理,最大化 Critic 对 Actor 输出动作的QQQ值:
    ∇θμJ≈Es∼D ⁣[∇aQ(s,a;θQ)∣a=μ(s) ∇θμμ(s;θμ)].\nabla_{\theta^\mu}J \approx \mathbb{E}_{s\sim\mathcal{D}}\!\Bigl[\nabla_a Q(s,a;\theta^Q)\bigl|_{a=\mu(s)} \,\nabla_{\theta^\mu}\mu(s;\theta^\mu)\Bigr].θμJEsD[aQ(s,a;θQ) a=μ(s)θμμ(s;θμ)].
  3. 目标网络软更新
    对目标网络参数做“软替换”:
    θQ−←τ θQ+(1−τ) θQ−,θμ−←τ θμ+(1−τ) θμ−\theta^{Q^-} \leftarrow \tau\,\theta^Q + (1-\tau)\,\theta^{Q^-},\quad \theta^{\mu^-} \leftarrow \tau\,\theta^\mu + (1-\tau)\,\theta^{\mu^-}θQτθQ+(1τ)θQ,θμτθμ+(1τ)θμ
    其中τ≪1\tau\ll1τ1(如 10−310^{-3}103)保证平滑更新。

四、通俗解释

DDPG 就像给小伙伴装了两个“大脑”——一个“演戏大脑”(Actor),负责根据当前情况直接给出最合适的连续动作;另一个“鉴赏大脑”(Critic),负责评估这些动作有多好。小伙伴一边尝试动作一边把经历(你做了什么、得了多少分、看到了什么)存进“回放盒子”,然后随机复习,借助“慢动作回放机”(目标网络)稳定地算出下次应该怎么调整这两颗大脑的参数。这样,他就能在连续、细腻的操作空间里快速又稳健地学会最赚钱的动作策略。

PPO

一、背景与动机

在策略梯度(Policy Gradient)方法中,传统的REINFORCE虽然能直接优化策略,但容易出现“策略更新步幅过大导致性能剧烈波动甚至崩溃”的问题;而信赖域策略优化(TRPO)虽能保证更新的稳定性,却需要二阶近似与复杂的约束优化,计算开销高。PPO(Proximal Policy Optimization)由 OpenAI 提出,旨在兼顾稳定性计算效率,成为目前深度强化学习中应用最广泛的策略优化算法之一。

二、核心思想

PPO 的核心在于对原始策略梯度目标函数做裁剪(clipping)或罚项(penalty),以限制新旧策略差异,从而在每次更新时避免策略更新过大。它以一种一阶方法实现对 KL 散度的隐式控制,既保留了 TRPO 的稳定性,又不需要复杂的二阶求解。

三、目标函数形式

1. 裁剪目标(Clipped Surrogate Objective)

LCLIP(θ)=Et[min⁡(rt(θ) At,  clip(rt(θ),1−ϵ,1+ϵ) At)]L^{\text{CLIP}}(\theta) = \mathbb{E}_{t}\Bigl[\min\bigl(r_t(\theta)\,A_t,\;\text{clip}(r_t(\theta),1-\epsilon,1+\epsilon)\,A_t\bigr)\Bigr]LCLIP(θ)=Et[min(rt(θ)At,clip(rt(θ),1ϵ,1+ϵ)At)]

rt(θ)=πθ(at∣st)πθold(at∣st)是策略比率r_t(\theta)=\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)}是策略比率rt(θ)=πθold(atst)πθ(atst)是策略比率

  • ϵ\epsilonϵ是超参数(如 0.1 或 0.2),表示允许的策略变动幅度。
  • AtA_tAt是优势函数估计(Advantage Estimate),通常用 GAE(Generalized Advantage Estimation)计算。
    这一项会在rt(θ)r_t(\theta)rt(θ)超出[1−ϵ,1+ϵ][1-\epsilon,1+\epsilon][1ϵ,1+ϵ]时,将其拉回该区间,从而对梯度贡献做截断

2. 价值函数损失(Value Function Loss)

LVF(θ)=Et[(Vθ(st)−Vttarget)2]L^{\text{VF}}(\theta) = \mathbb{E}_{t}\bigl[\bigl(V_\theta(s_t)-V^{\text{target}}_t\bigr)^2\bigr]LVF(θ)=Et[(Vθ(st)Vttarget)2]

  • VttargetV^{\text{target}}_tVttarget 可用蒙特卡洛回报或时序差分回报计算。

3. 熵正则化(Entropy Bonus)

LS(θ)=Et[H(πθ(⋅∣st))]L^{\text{S}}(\theta) = \mathbb{E}_{t}\bigl[\mathcal{H}\bigl(\pi_\theta(\cdot|s_t)\bigr)\bigr]LS(θ)=Et[H(πθ(st))]

鼓励策略输出分布的熵,促进探索。

4. 总目标

L(θ)=−LCLIP(θ)+c1 LVF(θ)−c2 LS(θ)L(\theta) = -L^{\text{CLIP}}(\theta) + c_1\,L^{\text{VF}}(\theta) - c_2\,L^{\text{S}}(\theta)L(θ)=LCLIP(θ)+c1LVF(θ)c2LS(θ)

  • c1,c2c_1, c_2c1,c2分别是价值函数损失与熵正则化的权重。

四、算法流程

  1. 数据收集
    使用当前策略πθold\pi_{\theta_{\text{old}}}πθold在环境中运行TTT步,收集{(st,at,rt,st+1)}\{(s_t,a_t,r_t,s_{t+1})\}{(st,at,rt,st+1)}t=1T_{t=1}^Tt=1T

  2. 优势估计
    采用 GAE 计算优势函数:A^t=∑l=0∞(γλ)lδt+l,δt=rt+γVθold(st+1)−Vθold(st)\hat A_t = \sum_{l=0}^{\infty} (\gamma\lambda)^l \delta_{t+l},\quad \delta_t = r_t + \gamma V_{\theta_{\text{old}}}(s_{t+1}) - V_{\theta_{\text{old}}}(s_t)A^t=l=0(γλ)lδt+lδt=rt+γVθold(st+1)Vθold(st)

  3. 多轮小批量更新
    将数据随机打乱后分成若干 mini‑batch,重复KKK次对参数θ\thetaθ进行梯度上升/下降:

    • 计算裁剪目标LCLIPL^{\text{CLIP}}LCLIP、价值损失LVFL^{\text{VF}}LVF、熵bonus。
    • 梯度更新:
      θ←θ−α ∇θL(θ)\theta \leftarrow \theta - \alpha\,\nabla_\theta L(\theta)θθαθL(θ)
  4. 策略替换
    更新完毕后,将θold←θ\theta_{\text{old}}\leftarrow \thetaθoldθ,进入下一轮数据收集。

五、通俗解释

PPO 就像带狗散步时,你给了它自由去探索,但又不想它走得太远跑飞了——你用一根“隐形牵引绳”限制它每一步的偏移。具体来说,PPO 在更新策略时会计算新旧策略的概率比率,如果比率变化超出设定范围(比如±20%),就把它“夹住”不让它动太大;这样既能让策略稳步改进,又能防止一次性更新过猛把好成果全部破坏。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐