REINFORCE任意学习率收敛性

1. 经典理论的问题

1.1 传统收敛性要求

经典REINFORCE理论要求学习率满足Robbins-Monro条件:

这意味着:

  • 学习率必须趋于零
  • 收敛速度随时间减慢
  • 实践中需要学习率衰减

1.2 矛盾现象

然而,在深度强化学习的实践中:

  • 许多成功的实验使用恒定或周期性衰减的学习率
  • 恒定学习率在某些情况下也能正常工作
  • 学习率衰减的理论必要性一直存疑

2. 突破性结果

2.1 核心定理

定理(Robertson et al., NeurIPS 2025):
对于有限horizon MDPs,使用softmax参数化的REINFORCE算法在任意恒定学习率下几乎必然收敛到最优策略。

2.2 主要贡献

  1. 消除学习率衰减假设:首个证明恒定学习率收敛的工作
  2. SPG条件:每个动作被采样的频率条件
  3. 移除不切实际假设:无需唯一均值奖励假设

2.3 关键创新

传统假设新方法
学习率趋于零恒定学习率
至少两个动作被采样每个动作无限频繁采样
唯一均值奖励一般化到任意奖励分布

3. 技术框架

3.1 问题设置

考虑有限horizon MDP:

  • Horizon: (固定步数)
  • 状态空间:
  • 动作空间:
  • 策略: (softmax参数化)

目标:最大化期望累积回报

3.2 REINFORCE更新

其中 是策略梯度的蒙特卡洛估计:

3.3 Softmax策略

4. SPG (Strong Per-State Greedy) 条件

4.1 定义

定义(SPG条件):
对于所有状态 和时间步

其中 是最优动作。

4.1 物理意义

  • 每个状态的最优动作无限频繁地被采样
  • 不是”至少两个动作”,而是所有动作都无限频繁
  • 即使概率很小,只要不趋于零即可

4.3 满足条件

对于softmax策略,SPG条件等价于:

什么时候满足?

  • 策略熵保持足够大
  • 没有过早收敛到确定性策略
  • 学习率不会导致策略退化

5. 收敛性证明

5.1 证明策略

步骤1:将参数空间划分为区域

  • 区域 :接近最优参数
  • 区域 :远离最优参数

步骤2:分析区域 中的行为

  • 学习方向指向
  • 步长足够大以离开该区域

步骤3:分析区域 中的行为

  • SPG条件保证探索
  • 参数在该区域振荡但不偏离

步骤4:组合论证

  • 几乎必然进入
  • 中保持稳定

5.2 关键引理

引理1(离开速度):
,则:

其中 依赖于学习率和MDP参数。

引理2(SPG保持):
,则:

5.3 主要定理证明

使用耦合方法

  1. 定义耦合的马尔可夫链
  2. 证明耦合链的平稳分布存在
  3. 证明原链收敛到该分布

6. 与Mei et al. (2024)的比较

6.1 开放问题

Mei et al. (2024) 提出了以下开放问题:

  • REINFORCE是否在恒定学习率下收敛?
  • 需要什么条件?

6.2 本文的回答

问题Mei et al.Robertson et al.
学习率需要衰减任意恒定
动作采样至少两个所有动作无限频繁
奖励假设唯一均值一般分布
收敛性未证明证明

6.3 关键差异

Mei et al.要求

本文SPG条件

7. 实践意义

7.1 学习率选择

新视角:学习率的选择不再需要趋于零

场景建议学习率
探索阶段较大(如 0.1)
收敛阶段保持或周期性衰减
微调较小(如 0.001)

7.2 熵正则化

为保证SPG条件,可添加熵奖励:

其中 是策略熵, 是正则化系数。

7.3 实验观察

论文的实验表明:

  • 恒定学习率在各种任务上有效
  • 学习率大小影响收敛速度而非收敛性
  • 熵正则化有助于稳定性

8. 代码示例

import torch
import torch.nn as nn
import numpy as np
 
class ConstantLRREINFORCE:
    def __init__(self, policy, optimizer, entropy_coef=0.01):
        self.policy = policy
        self.optimizer = optimizer
        self.entropy_coef = entropy_coef
        
    def update(self, states, actions, rewards, learning_rate):
        """
        任意学习率REINFORCE更新
        """
        n_steps = len(states)
        returns = []
        G = 0
        
        # 计算回报(从后向前)
        for r in reversed(rewards):
            G = r + G
            returns.insert(0, G)
        
        returns = torch.tensor(returns, dtype=torch.float32)
        
        # 标准化回报
        if len(returns) > 1:
            returns = (returns - returns.mean()) / (returns.std() + 1e-8)
        
        # 计算对数概率
        log_probs = self.policy.log_prob(states, actions)
        
        # 计算熵(SPG条件保持)
        entropies = -log_probs.exp() * log_probs
        
        # 策略梯度 + 熵正则化
        loss = -(log_probs * returns).sum() - self.entropy_coef * entropies.sum()
        
        self.optimizer.zero_grad()
        loss.backward()
        
        # 手动设置学习率(演示)
        for param_group in self.optimizer.param_groups:
            param_group['lr'] = learning_rate
        
        self.optimizer.step()
        
        return loss.item()

9. 局限性

9.1 当前限制

  1. 有限horizon:尚未扩展到无限horizon
  2. 表格型Softmax:对神经网络参数化的扩展尚需研究
  3. 函数近似:需要额外的正则性条件

9.2 开放问题

  1. 神经网络参数化下的恒定学习率收敛性
  2. 与其他策略梯度方法的比较
  3. 最优学习率的理论选择

10. 参考文献


相关主题策略梯度定理 | 无折扣策略梯度理论 | PPO全局收敛性理论