深度强化学习与控制第二周学习笔记
核心内容:无模型强化学习核心算法、基于策略的深度强化学习算法、基于模型的控制方法及应用
一、无模型强化学习基础
1.1 无模型强化学习概述
现实问题中通常无法直接获取MDP的状态转移概率P和奖励函数R,无模型强化学习直接从与环境交互的经验片段(episode)中学习值函数和策略,无需构建显式的环境模型。
- 核心步骤:(1) 估计值函数;(2) 优化策略
- 经验片段形式:s0→a0/R(s0)s1→a1/R(s1)s2→⋯→sTs_0 \xrightarrow{a_0/R(s_0)} s_1 \xrightarrow{a_1/R(s_1)} s_2 \to \dots \to s_Ts0a0/R(s0)s1a1/R(s1)s2→⋯→sT
1.2 蒙特卡洛(MC)方法
核心思想:通过重复随机采样,用平均累计奖励近似值函数(大数定律)。
- 累计回报:Gt=Rt+1+γRt+2+⋯+γT−1RTG_t = R_{t+1} + \gamma R_{t+2} + \dots + \gamma^{T-1} R_TGt=Rt+1+γRt+2+⋯+γT−1RT
- 值函数估计:Vπ(s)=E[Gt∣st=s,π]≈1N∑i=1NGt(i)V^\pi(s) = \mathbb{E}[G_t | s_t=s, \pi] \approx \frac{1}{N}\sum_{i=1}^N G_t^{(i)}Vπ(s)=E[Gt∣st=s,π]≈N1∑i=1NGt(i)
- 增量更新公式:
V(St)←V(St)+α(Gt−V(St))V(S_t) \leftarrow V(S_t) + \alpha\left(G_t - V(S_t)\right)V(St)←V(St)+α(Gt−V(St)) - 特点:
- 必须从完整片段学习(无bootstrapping)
- 高方差、无偏差
- 仅适用于有终止状态的片段化环境
1.3 时序差分(TD)学习
核心思想:利用自举(bootstrapping),用下一步的价值估计更新当前价值,无需等待片段结束。
- 核心更新公式(TD(0)):
V(St)←V(St)+α(Rt+1+γV(St+1)−V(St))V(S_t) \leftarrow V(S_t) + \alpha\left(R_{t+1} + \gamma V(S_{t+1}) - V(S_t)\right)V(St)←V(St)+α(Rt+1+γV(St+1)−V(St)) - 关键概念:
- TD目标:Rt+1+γV(St+1)R_{t+1} + \gamma V(S_{t+1})Rt+1+γV(St+1)
- TD误差:δt=Rt+1+γV(St+1)−V(St)\delta_t = R_{t+1} + \gamma V(S_{t+1}) - V(S_t)δt=Rt+1+γV(St+1)−V(St)
MC vs TD 核心对比
| 维度 | 蒙特卡洛(MC) | 时序差分(TD) |
|---|---|---|
| 学习时机 | 必须等待片段结束 | 每一步即可在线学习 |
| 适用环境 | 仅片段化(有终止)环境 | 支持连续无终止环境 |
| 偏差与方差 | 高方差、无偏差 | 低方差、有偏差 |
| 收敛性 | 良好,对初始值不敏感 | 通常更高效,对初始值更敏感 |
| 自举 | 无 | 有 |
1.4 SARSA学习
性质:**在线策略(on-policy)**时序差分控制算法,采样和决策使用同一策略。
- 名称由来:状态(S)-动作(A)-奖励®-状态(S’)-动作(A’)
- 状态-动作值函数更新公式:
Q(s,a)←Q(s,a)+α(R+γQ(s′,a′)−Q(s,a))Q(s,a) \leftarrow Q(s,a) + \alpha\left(R + \gamma Q(s',a') - Q(s,a)\right)Q(s,a)←Q(s,a)+α(R+γQ(s′,a′)−Q(s,a)) - 算法流程:
- 初始化Q(s,a)
- 对每个episode:
- 获取初始状态s,用ε-greedy策略选动作a
- 对每个时间步:
- 执行a,得到r和s’
- 用ε-greedy策略在s’选动作a’
- 更新Q(s,a)
- s←s’, a←a’
- 直到到达终止状态
1.5 Q学习
性质:**离线策略(off-policy)**时序差分控制算法,行为策略(采样)和目标策略(决策)分离。
- 核心更新公式:
Q(s,a)←Q(s,a)+α(R+γmaxa′Q(s′,a′)−Q(s,a))Q(s,a) \leftarrow Q(s,a) + \alpha\left(R + \gamma \max_{a'} Q(s',a') - Q(s,a)\right)Q(s,a)←Q(s,a)+α(R+γa′maxQ(s′,a′)−Q(s,a)) - 目标策略:关于Q的贪心策略 π(s′)=argmaxa′Q(s′,a′)\pi(s') = \arg\max_{a'} Q(s',a')π(s′)=argmaxa′Q(s′,a′)
- 行为策略:关于Q的ε-greedy策略(保证探索)
- 理论保证:收敛到最优状态-动作值函数 Q∗(s,a)Q^*(s,a)Q∗(s,a)
SARSA vs Q学习 核心对比
| 维度 | SARSA | Q学习 |
|---|---|---|
| 策略类型 | 在线策略(on-policy) | 离线策略(off-policy) |
| 目标动作选择 | 行为策略实际执行的a’ | 目标策略的最优动作max Q(s’,a’) |
| 风险偏好 | 更保守(风险敏感) | 更激进(追求全局最优) |
| 适用场景 | 机器人控制等安全优先场景 | 环境已知、需找最优路径场景 |
1.6 深度Q网络(DQN)
解决问题:传统Q学习无法处理高维连续状态空间,用深度神经网络近似Q函数 Qθ(s,a)Q_\theta(s,a)Qθ(s,a)。
- 训练不稳定的根源:
- 连续采样的经验不满足独立同分布
- Q网络频繁更新导致目标值不稳定
- 核心解决技术:
- 经验回放:存储所有交互经验(st,at,rt,st+1)(s_t,a_t,r_t,s_{t+1})(st,at,rt,st+1),训练时随机采样
- 双网络结构:
- 评估网络QθQ_\thetaQθ:实时更新,用于选动作
- 目标网络Qθ−Q_{\theta^-}Qθ−:参数固定,每隔C步与评估网络同步,用于计算目标值
- 损失函数:
L(θ)=E[12(rt+γmaxa′Qθ−(st+1,a′)−Qθ(st,at))2]L(\theta) = \mathbb{E}\left[\frac{1}{2}\left(r_t + \gamma \max_{a'} Q_{\theta^-}(s_{t+1},a') - Q_\theta(s_t,a_t)\right)^2\right]L(θ)=E[21(rt+γa′maxQθ−(st+1,a′)−Qθ(st,at))2]
二、基于策略的算法
2.1 基于策略vs基于价值
| 维度 | 基于价值的方法 | 基于策略的方法 |
|---|---|---|
| 学习目标 | 学习值函数,间接导出策略 | 直接显式学习参数化策略$\pi_\theta(a |
| 动作空间 | 主要适用于离散动作 | 天然支持连续动作空间 |
| 优化目标 | 最小化TD误差 | 最大化期望累计回报J(θ)J(\theta)J(θ) |
| 策略表示 | 隐式(由值函数贪心得到) | 显式(参数化函数) |
- 策略梯度定理(核心):
∇θJ(θ)=Eπθ[Qπθ(s,a)∇θlogπθ(a∣s)]\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\left[Q^{\pi_\theta}(s,a) \nabla_\theta \log \pi_\theta(a|s)\right]∇θJ(θ)=Eπθ[Qπθ(s,a)∇θlogπθ(a∣s)]
2.2 REINFORCE算法
性质:蒙特卡洛策略梯度算法,用完整轨迹的累计回报估计Q值。
- 策略梯度估计:
∇θJ(θ)=E[∑t=0T(∑t′=tTγt′−trt′)∇θlogπθ(at∣st)]\nabla_\theta J(\theta) = \mathbb{E}\left[\sum_{t=0}^T \left(\sum_{t'=t}^T \gamma^{t'-t} r_{t'}\right) \nabla_\theta \log \pi_\theta(a_t|s_t)\right]∇θJ(θ)=E[t=0∑T(t′=t∑Tγt′−trt′)∇θlogπθ(at∣st)] - 算法流程:
- 初始化策略参数θ
- 对每个episode:
- 用πθ\pi_\thetaπθ采样完整轨迹
- 计算每个时刻t的累计回报ψt=∑t′=tTγt′−trt′\psi_t = \sum_{t'=t}^T \gamma^{t'-t} r_{t'}ψt=∑t′=tTγt′−trt′
- 更新θ:θ←θ+α∑tψt∇θlogπθ(at∣st)\theta \leftarrow \theta + \alpha \sum_t \psi_t \nabla_\theta \log \pi_\theta(a_t|s_t)θ←θ+α∑tψt∇θlogπθ(at∣st)
- 缺点:方差大,收敛慢
2.3 Actor-Critic框架
核心思想:结合策略梯度和值函数估计,用Critic(评论家)估计值函数,指导Actor(演员)更新策略,降低方差。
- 两个组件:
- Actor:策略网络πθ(a∣s)\pi_\theta(a|s)πθ(a∣s),负责选择动作
- Critic:价值网络Vω(s)V_\omega(s)Vω(s),负责评估动作好坏
- 优势函数(进一步降低方差):
Aπ(s,a)=Qπ(s,a)−Vπ(s)A^\pi(s,a) = Q^\pi(s,a) - V^\pi(s)Aπ(s,a)=Qπ(s,a)−Vπ(s) - 时序差分残差(可直接作为优势函数估计):
δt=rt+γVω(st+1)−Vω(st)\delta_t = r_t + \gamma V_\omega(s_{t+1}) - V_\omega(s_t)δt=rt+γVω(st+1)−Vω(st) - 算法流程:
- 初始化θ(Actor)和ω(Critic)
- 对每个episode:
- 采样轨迹
- 计算每个时刻的TD误差δt\delta_tδt
- 更新Critic:ω←ω+αω∑tδt∇ωVω(st)\omega \leftarrow \omega + \alpha_\omega \sum_t \delta_t \nabla_\omega V_\omega(s_t)ω←ω+αω∑tδt∇ωVω(st)
- 更新Actor:θ←θ+αθ∑tδt∇θlogπθ(at∣st)\theta \leftarrow \theta + \alpha_\theta \sum_t \delta_t \nabla_\theta \log \pi_\theta(a_t|s_t)θ←θ+αθ∑tδt∇θlogπθ(at∣st)
扩展算法
- A2C(优势Actor-Critic):使用优势函数代替原始回报,进一步降低方差
- A3C(异步A2C):多线程并行采样和更新,无需经验回放,训练效率更高
2.4 确定性策略梯度(DPG)
解决问题:随机策略梯度在高维连续动作空间中采样效率低,提出确定性策略a=μθ(s)a=\mu_\theta(s)a=μθ(s)。
- 确定性策略梯度定理:
∇θJ(πθ)=Es∼ρπ[∇θμθ(s)∇aQw(s,a)∣a=μθ(s)]\nabla_\theta J(\pi_\theta) = \mathbb{E}_{s\sim\rho^\pi}\left[\left.\nabla_\theta \mu_\theta(s) \nabla_a Q^w(s,a)\right|_{a=\mu_\theta(s)}\right]∇θJ(πθ)=Es∼ρπ[∇θμθ(s)∇aQw(s,a)∣a=μθ(s)] - 核心优势:无需对动作积分,梯度计算更高效
2.5 DDPG算法
全称:深度确定性策略梯度(Deep Deterministic Policy Gradient),将DPG与深度学习结合。
- 核心改进(解决训练不稳定):
- 经验回放(离线策略)
- 双目标网络(Actor和Critic各有一个目标网络)
- 软更新:θ−←τθ+(1−τ)θ−\theta^- \leftarrow \tau\theta + (1-\tau)\theta^-θ−←τθ+(1−τ)θ−(τ很小,如0.001)
- 动作噪声:在确定性动作上添加噪声(如OU噪声),保证探索
- 算法流程:
- 初始化Actor网络μθ\mu_\thetaμθ、Critic网络QωQ_\omegaQω及对应目标网络
- 初始化经验回放池
- 对每个episode:
- 获取初始状态s
- 对每个时间步:
- 选动作at=μθ(st)+Na_t = \mu_\theta(s_t) + Nat=μθ(st)+N(N为探索噪声)
- 执行a_t,得到r_t和s_{t+1},存入回放池
- 采样N个经验,计算目标值yi=ri+γQω−(si+1,μθ−(si+1))y_i = r_i + \gamma Q_{\omega^-}(s_{i+1}, \mu_{\theta^-}(s_{i+1}))yi=ri+γQω−(si+1,μθ−(si+1))
- 更新Critic:最小化MSE损失1N∑(yi−Qω(si,ai))2\frac{1}{N}\sum(y_i - Q_\omega(s_i,a_i))^2N1∑(yi−Qω(si,ai))2
- 更新Actor:∇θJ≈1N∑∇θμθ(si)∇aQω(si,a)∣a=μθ(si)\nabla_\theta J \approx \frac{1}{N}\sum \nabla_\theta \mu_\theta(s_i) \nabla_a Q_\omega(s_i,a)|_{a=\mu_\theta(s_i)}∇θJ≈N1∑∇θμθ(si)∇aQω(si,a)∣a=μθ(si)
- 软更新目标网络
- 缺点:训练不稳定,对超参数敏感
2.6 SAC算法
全称:软Actor-Critic(Soft Actor-Critic),基于最大熵强化学习的离线策略算法。
- 最大熵目标函数:
π∗=arg maxπEπ[∑tr(st,at)+αH(π(⋅∣st))]\pi^* = \argmax_\pi \mathbb{E}_\pi\left[\sum_t r(s_t,a_t) + \alpha H(\pi(\cdot|s_t))\right]π∗=πargmaxEπ[t∑r(st,at)+αH(π(⋅∣st))]
其中α\alphaα为熵正则项系数,H(π)H(\pi)H(π)为策略熵,鼓励探索 - 核心改进:
- 双Q网络:取两个Q网络的最小值,缓解Q值过估计
- 重参数化技巧:解决连续动作采样不可导问题
- 自动调整熵正则项α:根据策略熵动态调整,平衡探索与利用
- 算法特点:训练稳定、样本效率高、鲁棒性好,是目前连续控制任务的首选算法之一
三、基于模型的控制
3.1 基于模型vs无模型
| 维度 | 无模型方法 | 基于模型方法 |
|---|---|---|
| 核心思路 | 直接从经验学习值函数/策略 | 先学习环境模型$\hat{P}(s’ |
| 样本效率 | 低(需大量交互) | 高(利用模型生成虚拟数据) |
| 模型误差 | 无 | 存在模型累积误差 |
| 适用场景 | 模型难以建模的复杂环境 | 模型可近似、对样本效率要求高的场景 |
3.2 模型预测控制(MPC)
核心思想:迭代式规划,每次决策时:
- 生成N条候选动作序列(长度为H,预测 horizon)
- 用环境模型推演每条序列的累计奖励
- 选择最优序列的第一个动作执行
- 滚动到下一状态,重复上述过程
打靶法(候选序列生成)
- 随机打靶法:随机生成N条动作序列,简单但效率低
- 交叉熵方法(CEM):维护一个动作分布,每次采样后保留最优的M条序列更新分布,逐步收敛到最优动作
3.3 PETS算法
全称:带有轨迹采样的概率集成(Probabilistic Ensembles with Trajectory Sampling)。
- 核心创新:同时处理两种不确定性
- 偶然不确定性:系统本身的随机性,用高斯分布输出建模
- 认知不确定性:模型训练数据不足,用集成神经网络(多个独立网络)建模
- 环境模型损失函数(最大化高斯对数似然):
L(θ)=∑n=1N[(μθ(sn,an)−sn+1)TΣθ−1(sn,an)(μθ(sn,an)−sn+1)+logdetΣθ(sn,an)]\mathcal{L}(\theta) = \sum_{n=1}^N \left[\left(\mu_\theta(s_n,a_n)-s_{n+1}\right)^T \Sigma_\theta^{-1}(s_n,a_n) \left(\mu_\theta(s_n,a_n)-s_{n+1}\right) + \log\det\Sigma_\theta(s_n,a_n)\right]L(θ)=n=1∑N[(μθ(sn,an)−sn+1)TΣθ−1(sn,an)(μθ(sn,an)−sn+1)+logdetΣθ(sn,an)]
3.4 MBPO算法
全称:基于模型的策略优化(Model-Based Policy Optimization)。
- 核心观察:模型推演步数越长,累积误差越大
- 核心创新:分支推演
- 从真实环境采样的状态开始,仅进行短步数(k步)的模型推演
- 用生成的短分支轨迹训练无模型算法(SAC)
- 优势:平衡模型误差和样本效率,在连续控制任务中表现优异
3.5 DRL控制应用案例
案例1:无人机自主导航与避障
- 状态空间:无人机自身状态(位置/速度/姿态)+ 环境感知(目标距离/雷达数据)
- 动作空间:连续三维加速度/角速度
- 核心算法:PPO(稳定高效)、SAC(鲁棒性好)
- 奖励函数设计:
- 朝向目标:rgoal=−distance_to_goalr_{goal} = -distance\_to\_goalrgoal=−distance_to_goal
- 碰撞惩罚:rcollision=−100r_{collision} = -100rcollision=−100
- 能耗惩罚:renergy=−∥a∥2×0.01r_{energy} = -\|a\|^2 \times 0.01renergy=−∥a∥2×0.01
- 成功奖励:rsuccess=+500r_{success} = +500rsuccess=+500
案例2:机械臂轨迹跟踪控制
- 被控对象:机械臂动力学模型 M(θ)θ¨+C(θ,θ˙)θ˙+G(θ)=τM(\theta)\ddot{\theta} + C(\theta,\dot{\theta})\dot{\theta} + G(\theta) = \tauM(θ)θ¨+C(θ,θ˙)θ˙+G(θ)=τ
- 核心任务:精确跟踪预设轨迹(如"8"字曲线)
- 算法对比:SAC vs PID
- 跟踪精度:SAC可达微米级,比PID低一个数量级
- 抗扰动能力:SAC在外部冲击下能快速收敛,PID易振荡
- 自适应能力:SAC对负载变化不敏感,PID性能衰减明显
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)