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章:强化学习与深度学习

策略梯度方法

基本概念

策略梯度方法(Policy Gradient Methods)是强化学习中一类直接优化策略函数的算法。与基于值函数的方法(如DQN)不同,策略梯度方法直接对策略参数进行梯度上升,以最大化期望回报。

核心思想:

  • 策略通常表示为参数化函数 πθ(a∣s)\pi_\theta(a|s)πθ​(a∣s)
  • 通过采样轨迹计算回报的梯度 ∇θJ(θ)\nabla_\theta J(\theta)∇θ​J(θ)
  • 使用梯度上升更新策略参数:θ←θ+α∇θJ(θ)\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)θ←θ+α∇θ​J(θ)

数学推导

目标函数(期望回报):

J(θ)=Eτ∼πθ[R(τ)]J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}[R(\tau)] J(θ)=Eτ∼πθ​​[R(τ)]

策略梯度定理:

∇θJ(θ)=Eτ∼πθ[∑t=0T∇θlog⁡πθ(at∣st)R(τ)]\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) R(\tau) \right] ∇θ​J(θ)=Eτ∼πθ​​[t=0∑T​∇θ​logπθ​(at​∣st​)R(τ)]

主要变体

  1. REINFORCE算法(蒙特卡洛策略梯度):

    • 使用完整轨迹的回报作为估计
    • 高方差但无偏
  2. Actor-Critic方法:

    • 引入值函数作为基线减少方差
    • Actor更新策略,Critic评估状态/动作值
  3. Advantage Actor-Critic (A2C):

    • 使用优势函数 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. Proximal Policy Optimization (PPO):

    • 通过裁剪机制限制策略更新幅度
    • 更稳定的训练过程

实现要点

# Pytorch实现简化版策略梯度
class PolicyNetwork(nn.Module):
    def __init__(self, state_dim, action_dim):
        super().__init__()
        self.fc = nn.Linear(state_dim, action_dim)
    
    def forward(self, state):
        return F.softmax(self.fc(state), dim=-1)

def compute_policy_gradient(trajectories, gamma=0.99):
    rewards = [r for (s,a,r) in trajectories]
    discounted_rewards = [sum(gamma**i * r for i,r in enumerate(rewards[t:])) 
                         for t in range(len(rewards))]
    
    policy_loss = []
    for (s,a,_), G in zip(trajectories, discounted_rewards):
        log_prob = torch.log(policy_net(s)[a])
        policy_loss.append(-log_prob * G)
    
    return torch.stack(policy_loss).mean()

优缺点分析

优势:

  • 直接优化策略,适合连续动作空间
  • 可以学习随机策略
  • 理论保证收敛到局部最优

挑战:

  • 高方差导致训练不稳定
  • 样本效率通常较低
  • 对超参数(如学习率)敏感

典型应用场景

  1. 机器人控制(连续动作空间)
  2. 游戏AI(如AlphaGo的策略网络)
  3. 金融交易策略优化
  4. 自动驾驶决策系统

前沿发展

  • 分布式策略梯度(如A3C)
  • 逆向强化学习结合策略梯度
  • 基于模型的策略梯度方法
  • 分层策略梯度架构

关键提示:实际实现时建议使用现代库(如RLlib或Stable Baselines3),它们提供了优化后的策略梯度实现和自动微分支持。

Last Updated:: 6/17/25, 10:13 AM