Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第8章:强化学习与深度学习

第8章:强化学习与深度学习

策略梯度方法

1. 基本概念

策略梯度方法(Policy Gradient Methods)是一类直接优化策略函数的强化学习算法。与基于值函数的方法(如DQN)不同,策略梯度方法通过调整策略参数来最大化预期回报,适用于连续动作空间和随机策略场景。

2. 核心原理

  • 策略参数化:使用神经网络表示策略函数 πθ(a∣s)\pi_\theta(a|s)πθ​(a∣s),输出动作的概率分布。
  • 目标函数:最大化累积奖励的期望 J(θ)=Eπθ[∑trt]J(\theta) = \mathbb{E}_{\pi_\theta}[\sum_t r_t]J(θ)=Eπθ​​[∑t​rt​]。
  • 梯度上升:通过计算目标函数对参数 θ\thetaθ 的梯度 ∇θJ(θ)\nabla_\theta J(\theta)∇θ​J(θ) 来更新策略。

梯度公式推导

策略梯度定理给出梯度的无偏估计:

∇θJ(θ)=Eπθ[∇θlog⁡πθ(a∣s)⋅Qπθ(s,a)]\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta} \left[ \nabla_\theta \log \pi_\theta(a|s) \cdot Q^{\pi_\theta}(s,a) \right] ∇θ​J(θ)=Eπθ​​[∇θ​logπθ​(a∣s)⋅Qπθ​(s,a)]

其中 Qπθ(s,a)Q^{\pi_\theta}(s,a)Qπθ​(s,a) 是状态-动作值函数。

3. 经典算法

REINFORCE(蒙特卡洛策略梯度)

  • 通过完整轨迹的蒙特卡洛采样估计梯度。
  • 更新公式:

    θ←θ+α∑t∇θlog⁡πθ(at∣st)⋅Gt\theta \leftarrow \theta + \alpha \sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t θ←θ+αt∑​∇θ​logπθ​(at​∣st​)⋅Gt​

    其中 GtG_tGt​ 是从时刻 ttt 开始的累积折扣奖励。

Actor-Critic 方法

  • 结合策略梯度(Actor)和值函数近似(Critic):
    • Actor:更新策略参数 θ\thetaθ。
    • Critic:估计 Q(s,a)Q(s,a)Q(s,a) 或优势函数 A(s,a)A(s,a)A(s,a) 以减少方差。
  • 优势函数常用形式:

    A(s,a)=Q(s,a)−V(s)A(s,a) = Q(s,a) - V(s) A(s,a)=Q(s,a)−V(s)

4. 改进与变体

  • PPO(近端策略优化):通过裁剪策略更新步长避免剧烈波动。
  • A3C(异步优势Actor-Critic):多线程并行采样提升训练效率。
  • SAC(柔性Actor-Critic):引入熵正则化鼓励探索。

5. 实现示例(伪代码)

初始化策略网络参数 θ 和Critic网络参数 φ
for episode in range(max_episodes):
    采样轨迹 {(s_t, a_t, r_t)} ~ π_θ
    计算优势估计 A_t = ∑_{k=t}^T (γ^{k-t} r_k) - V_φ(s_t)
    更新Critic:φ ← φ - α_critic ∇_φ (A_t)^2
    更新Actor:θ ← θ + α_actor ∇_θ log π_θ(a_t|s_t) · A_t

6. 应用场景

  • 机器人控制:如机械臂抓取、双足行走。
  • 游戏AI:训练智能体在复杂环境中长期规划(如《Dota 2》)。
  • 金融交易:优化连续动作空间的交易策略。

7. 挑战与解决方案

挑战解决方案
高方差使用基线(Baseline)或Critic
样本效率低并行采样(A3C)或经验回放
局部最优熵正则化(SAC)

延伸阅读

  • 原始论文:《Policy Gradient Methods for Reinforcement Learning with Function Approximation》(Sutton et al., 2000)
  • 代码实践:OpenAI Spinning Up 中的 PPO实现
Last Updated:: 5/20/25, 7:33 PM