Policy Evaluation的收敛性是怎么一回事

深度强化学习:理论与实践的碰撞

完美的学习算法

昨天和同学在群里讨论DRL里bad case的问题。突然有同学提出观点:“bad case其实并不存在,因为一些算法已经理论证明了具有唯一极值点,再加上一些平滑技巧指导优化器,就必然可以收敛。”

当听到这个观点时,我是一时语塞。因为当前深度学习研究的最大问题就是,花了很大资源训练的千万参数神经网络根本不work,一切都白白浪费。因此才有NAS之类方法尝试根据一些训练初期的动力学性质调整结构,找出合适的超参数,但也是效果平平。如果真有一个这么完美的学习算法,那岂不是任何问题都能解决了?但根据我掌握的常识,这是不可能的。且不说学术界根本就没有这种工作。收敛性显然与网络结构和优化器有关,怎么会在无视这些设置的情况下证明出一个forall的结果呢?

我问他这个问题。他说:“根据证明,任务规模只与收敛速度有关,与是否收敛无关。只要接一个足够强的神经网络,就能……”

其实说到这我大概就知道他说的那个“证明”是怎么回事了。不过为了确认一下,我还是把他说的那篇“证明文章”要了过来,一看发现果然是那种车轱辘证明。

压缩映射与线性收敛速度

这篇“证明文章”是DRL的知名工作soft actor-critic。所谓收敛证明在16页paper里占了一页。其实粗读就可以看出,文章中的“收敛证明”是针对“tabular setting”,即离散形式。对于连续形式,文中指出需要使用神经网络对Policy Evaluation进行逼近,后面就转进到神经网络的实现细节上了。而Policy Evaluation能否收敛就决定了整个算法能否收敛,此处Policy Evaluation使用神经网络逼近,核心就转到了神经网络能否收敛。可神经网络一个任务一个样,它能不能收敛才是最核心的问题,然而文章并没有涉及。事实上,现在地球上没有学者能解答这个问题。

说到这,可能有同学在想:如果能保证离散情况下收敛就已经能解决很多问题了。可是你有没有想过,所谓“离散收敛连续不收敛”,里面的gap在哪里?在连续情形下不成立,离散情况下就会那么完美吗?当然不可能。

根据我的理解,SAC论文中收敛性的证明过程实际与

### 策略迭代的收敛性证明 在强化学习领域,策略迭代是一种用于求解马尔可夫决策过程(MDP)的方法。它通过交替执行 **策略评估** 和 **策略改进** 来逐步逼近最优策略。 #### 1. 策略评估 策略评估的目标是计算当前策略 $\pi$ 下的状态价值函数 $V^\pi(s)$ 或动作价值函数 $Q^\pi(s, a)$。对于有限状态和动作空间的情况,可以通过贝尔曼方程反复迭代直到收敛来完成这一目标: $$ V^{\pi}(s) = \sum_{a} \pi(a|s) \left( R(s,a) + \gamma \sum_{s'} P(s'|s,a)V^{\pi}(s') \right) $$ 此步骤的核心在于利用动态规划的思想不断更新估计值直至满足误差阈值条件[^3]。 #### 2. 策略改进 一旦获得了精确的价值函数表示形式,则可以依据贪婪原则定义新的更优策略$\pi'$: 如果存在某个固定折扣因子γ∈[0,1),以及任意初始分布μ₀(x)=Pr[X₀=x],则有如下关系成立: $$ Q^{\pi}(s,a) = R(s,a)+\gamma\sum_{s'\in S}\mathbb{P}_{ss'}^{a}[max_{b}Q^{\pi}(s', b)] $$ 基于上述表达式构建的新策略必然不会劣于旧版方案即π'(·|s)≥π(·|s). #### 3. 收敛性的理论基础 由于每一次政策改善操作都会严格提升整体性能指标或者保持不变当达到全局最大点位置之时停止变化因此整个流程呈现单调递增趋势最终必将抵达稳定终点处也就是最佳解答所在之处[^1]. 同时考虑到每一轮次内部涉及大量重复运算所以实际耗时可能较长特别是针对规模庞大复杂的环境设定而言更是如此不过好在这方面具备良好数学特性便于分析验证其有效性. ```python def policy_iteration(env, gamma=1.0, theta=1e-8): """ 实现基本的策略迭代算法 参数: env: OpenAI Gym 环境实例或其他兼容 MDP 定义的对象. gamma: 折扣率 (默认为 1). theta: 停止标准的小数精度水平. 返回: pi: 最终获得的最佳确定性策略字典 {state -> action}. v: 对应状态下由该策略产生的期望回报数组. """ def one_step_lookahead(state, V): A = np.zeros(env.nA) for a in range(env.nA): for prob, next_state, reward, _ in env.P[state][a]: A[a] += prob * (reward + gamma * V[next_state]) return A nS = env.nS nA = env.nA V = np.zeros(nS) while True: delta = 0 # Policy Evaluation Step for s in range(nS): old_v = V[s] new_values = one_step_lookahead(s, V) best_action_value = max(new_values) V[s] = best_action_value delta = max(delta, abs(old_v - V[s])) if delta < theta: break # Initialize an arbitrary deterministic policy policy = np.ones([nS, nA]) / nA while True: stable_policy = True for s in range(nS): chosen_a = np.argmax(policy[s]) action_values = one_step_lookahead(s, V) best_a = np.argwhere(action_values == np.max(action_values)).flatten() if chosen_a not in best_a: stable_policy = False policy[s] = np.eye(nA)[best_a] if stable_policy: return policy, V ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值