完美的学习算法

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

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

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

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

压缩映射与线性收敛速度

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

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

根据我的理解,SAC论文中收敛性的证明过程实际与传统策略迭代收敛的证明类似,只是它补充了他们工作带来的改动(最大熵项等)不影响原先证明的成立。所以我直接使用传统策略迭代收敛证明来说明问题——很多年前读到这个证明时我还是个中学生,当时就是一眼一过:哦,它能收敛。然后就没再管了。可是现在再去看就不禁会想到问题,就像那位同学说的一样,这个证明过程是压根不考虑任务的,只是基于强化学习的假设,(你要做的这个任务的)状态划分符合马尔可夫过程,然后直接给出证明:在这个马尔科夫链上迭代,策略估计必然收敛。然后基于策略估计收敛推出算法整体收敛。实际上做过强化学习的同学都会有感觉,策略估计是非常关键的一步,也是非常容易出错的一步(动不动就训不动了)。它在压根不考虑任务的情况下,轻飘飘地就给出了收敛的结论,而且是“线性速度收敛”,这么好的事,它到底是怎么做的?它证明的“收敛”和我们说的是一回事吗?

对于策略估计的证明有一点复杂。我们尽量聚焦于需要关注的两个关键点:

1. 贝尔曼方程是个压缩映射

2. 如果是压缩映射,服从压缩映射定理,以线性速度收敛到唯一不动点

这个证明网上的解释有很多,但大多不直观。我用一个我的直观理解来不太严格地解释这两点。对于第一点,原证明过程为:

第一步中, 与  分别为  与  下的最优动作。第二步中,将后项放到前项的  中,相当于选择了一个在  下更不好的动作。因此后项价值变小,整体变大,引入了不等号。把这个过程反过来思考就可以理解,应用贝尔曼算子后值会被压缩的关键原因就在于更优的动作会被更频繁选择(更优的策略会被更频繁应用),也就是Exploitation。实际做过强化学习的都知道,只有Exploitation不可能那么完美。

那该证明中是怎么处理Exploration的呢?这是在另一个部分,证明策略提升的过程:

说白了就是遍历每个状态,然后又在每个状态下,遍历每个动作,分别计算被遍历到的状态下每个动作对应的价值 ,取使得价值最大的动作作为当前状态的最新策略——说到这你就知道为啥他这“证明”不用考虑任务而且只能用于离散情况了。因为他就是暴力把所有情况都看了一遍,连续的你就没法都看一遍了啊;P

再看看压缩映射定理中的所谓线性收敛速度:

这个就很好理解了。寻找不动点的迭代过程是在函数  的定义域上的(可以理解为状态空间或者策略空间)。这个所谓“线性收敛速度”给出的是一个上界,这个“线性复杂度”的n(式中的)实际等同于定义域大小,即问题规模,虽然说起来是线性,但计算出这个组合数的过程是个指数!贴着这个上界实现的“强化学习算法”说白了和把“所有组合都试一遍就能找到最大最小值”没啥区别,所以这个上界对于大部分问题都没有实际意义。

相信大家都记得很多年前AI攻破国际象棋后,很多下围棋的人说计算机永远不可能攻破围棋,因为围棋的状态数比全宇宙粒子数都多。他们把状态数等同于问题难度,就和这个式子中的所谓“线性上界”没区别。但我们真的需要遍历每个状态吗?使用专门设计的算法,alphago只探测了状态空间的很小一部分,就成为了世界第一。这也是强化学习的核心:如何设计算法更高效地探测状态空间、更新策略。可能我们设计的算法不是线性复杂度,但我们的算法却比这个上界更快,因为二者的n根本就是不一样的!我们关心复杂度的目的是让它最后跑起来更快,而并非是那个式子表面上是个什么形状。这也是为什么我说前段时间很多OIer在空间刷屏的近似多项式最大流算法并不会对OI有什么改变(笑),因为里面用的技巧过于复杂,即使实现出来真实速度大概也不会快于当前主流方法。我们关心的“收敛性”,也是我们设计的这个探测算法是否能够收敛,而不是在考虑“把所有情况都看一遍”这个傻方法。如果有人看了这个看起来很高深的证明,就感觉所有强化学习算法都能收敛、所有强化学习算法都是线性复杂度,只能说他根本没搞清楚自己在干嘛。

数学家的炼丹

虽然那位同学不是数学工作者,我也不是数学工作者。但很多数学工作者也犯过类似的错误。相信大家都看过“计算机的终点是数学”这种说法,然后对搞数学的人很迷信。但真学数学的人就一定明白自己在干嘛吗?我看不是。不管是什么领域,真正懂的人都是很少的。我和很多学数学比较入魔的同学交流过类似神经网络的优化问题,但我非常坏,没告诉他我说的是神经网络,很多人就被我骗了,斩钉截铁地给我一个高深的手法:加这个约束,加那个平滑,然后根据某个高深的理论,就肯定能收敛。可是为什么机器学习界从来没有这种完美的方法,是因为搞计算机的对这些数学理论都一窍不通吗?其实道理很简单,任何东西都不是free的。只要加了约束,就必然会限制表达能力,限制了表达能力,就会影响梯度分布——就算待优化的流形再平滑,但大部分区域梯度都是0,在实际数据上没法work,又有什么用呢?他们之所以会犯这种错误,其实也是不明白自己在干嘛——我不说“神经网络”这个名词,光凭符号描述,他们就根本不知道面前的这个复杂系统到底是什么样的,从来没实现过自己的算法,不借助计算机的力量去看一看、试一试,只会用纸笔和脑子,这样是没法摸到复杂系统的形状的。这也是为什么那位同学能那么坚定地说出“存在完美学习算法”这种匪夷所思的结论——因为他也一样,压根没试过这些算法,没观察过训练过程,自己一想当然,就张冠李戴了。

还有一些同学是只能看到自己眼前的一点东西,搞一些真空中的球形理论,然后鄙视搞机器学习人,说他们都是“炼丹”。可炼丹是基于一些生产环境目前用不了的trick把效果提了几个点,你搞的是基于一些不现实的假设搞出的一些不知道什么时候才能用上的理论,谁又比谁高多少呢?在我看来,这些一瓶不满半瓶晃的数学学生搞的就是数学界的“炼丹”,和工业界胡写代码满嘴设计模式,机器学习界乱搭模型炼丹的计算机学生没什么区别。

我认识的一些同学,CMO获奖之后去了姚班,从此戴上了痛苦面具——自己数学那么好,搞数学不就完了,学这些计算机的东西干嘛?相信很多喜爱数学的同学都有这种想法。可是我觉得学习很重要的一点就是对知识要谦虚,永远保持好奇。很多人看了很多书和论文,记住了一些表面知识和吓人的术语,可是却没有深刻的理解它们后面的涵义。这时候编程其实是一个认识到自己错误的很好工具,因为你能用满嘴的术语骗过身边的同学,却骗不过计算机。即使是纯数学的理论,也可以用coq等定理证明器辅助学习。但你要是动手能力不高,遇到编程这类一点点困难就往后缩,长此以往,就很难学会真正的知识了。

我相信,在现在,一个不会写程序的“数学家”,成就永远无法超过计算机科学家。因为面对实际的复杂问题,很多东西不借助计算机的帮助,是根本无法看到的。认为数学不需要计算机、甚至鄙视计算机的人,其实只是被书本知识打倒,然后就臣服于它,可却没想到,从此被一叶障目,看不到背后更大的世界。

Policy Evaluation收敛性、炼丹与数学家相关推荐

  1. 强化学习总结(1-2)——model-base(policy evaluation;policy control)

    文章目录 强化学习总结(1-4) 马尔科夫决策过程 policy evaluation policy control policy iteration value iteration 两种方法的区别 ...

  2. 转载 actor-critic的收敛性问题

    原文:https://blog.csdn.net/jinzhuojun/article/details/72851548 记笔记 分为critic-only方法和actor-only方法两类.前者基于 ...

  3. 2021-03-28 收敛性常用一阶微分方程

    收敛性常用一阶微分方程 零 方程:x˙(t)=−cx1n(t)\dot{x}(t)=-c x^{\frac{1}{n}}(t)x˙(t)=−cxn1​(t),其中n是大于等于2的整数,c大于0 解:x ...

  4. 梯度下降(Gradient Descent)的收敛性分析

    ©作者 | 黄秋实 单位 | 香港中文大学(深圳) 研究方向 | 智能电网 梯度下降是一种简单且常用的优化方法,它可以被用来求解很多可导的凸优化问题(如逻辑回归,线性回归等).同时,梯度下降在非凸优化 ...

  5. 文献记录(part49)--极大熵聚类算法的收敛性定理证明

    学习笔记,仅供参考,有错必纠 关键词:熵:不动点:聚类算法:收敛 极大熵聚类算法的收敛性定理证明 摘要 有关极大熵聚类算法收敛性的研究是理论研究的一个热点问题,有的学者认为迭代序列的极限点有可能不是目 ...

  6. 再论EM算法的收敛性和K-Means的收敛性

    标签(空格分隔): 机器学习 (最近被一波波的笔试+面试淹没了,但是在有两次面试时被问到了同一个问题:K-Means算法的收敛性.在网上查阅了很多资料,并没有看到很清晰的解释,所以希望可以从K-Mea ...

  7. 数值分析(12):Rung-Kutta法及单步法的收敛性和稳定性分析

    Rung-Kutta法及单步法的收敛性和稳定性分析 1. 引言 2. Runge-Kutta法 2.1 一阶RK方法 2.2 二阶RK方法 2.3 三阶RK方法 2.4 四阶RK方法 3. 单步法收敛 ...

  8. Policy Evaluation之Doubly Robust论文讲解

    ● 每周一言 不用担心自己有多努力,因为每个人身边总会有个人比你更努力. 导语 前一篇文章已经铺垫好了增强学习评估的概念,几乎所有对强化学习策略评估的方法都是基于重要性采样展开.其中最经典的方法,莫过 ...

  9. 【机器学习基础】EM算法详解及其收敛性证明

    EM算法详解 (一)单高斯模型 1.1 一维高斯分布: 1.2 多维高斯分布: (二)最大似然估计 2.1 最大似然估计的数学概念: 2.2 最大似然估计的基本步骤: 2.2.1 构造似然函数: 2. ...

最新文章

  1. Private Data Objects, 私密数据对象,基于TEE、智能合约和分布式账本的可信计算
  2. xp网吧用母盘制作说明
  3. 人工智能技术在移动互联网发展中的应用
  4. 【HAOI2015】树上染色
  5. toj 2870 理解dijstra
  6. [云炬创业基础笔记]第二章创业者测试24
  7. boost::hana::is_an用法的测试程序
  8. 开源项目Hopsan代码梳理、流程分析
  9. PHP移动互联网开发笔记(3)——运算符
  10. 盘点数据处理工具,手把手教你做数据清洗和转换
  11. 红帽:将开源进行到底!
  12. 解决java.lang.OutOfMemoryError: unable to create new native thread问题
  13. virtualenv -- python虚拟沙盒
  14. Java 在Word创建表格
  15. 数据可视化:大屏可视化设计全流程教程
  16. pandas 透视表bug InvalidIndexError: Reindexing only valid with uniquely valued Index objects
  17. Swift --- 扩展(Extention)
  18. 十一假期,分享几个好玩儿的GitHub项目
  19. 亚马逊多账号防关联技巧
  20. 网易定向预研图形学项目摘录

热门文章

  1. R语言时间序列分析之ARIMA模型预测
  2. TI高精度实验室ADC系列培训视频 第3章和第4章 ADC噪声分析
  3. 华科计算机学院硕士武汉理工推免,学霸宿舍升级版!这个学院5个宿舍20名成员集体保研...
  4. 告别纸质化办公,OA系统为企业节能提效
  5. 论文阅读——Updatable Learned Index with Precise Positions(VLDB‘21)
  6. 双向长短期记忆网络模型_基于深度双向长短期记忆网络的空气质量预测方法与流程...
  7. 网络工具之HCL模拟器安装及使用 | 寻找C站宝藏
  8. Analyzing Crash Reports——分析崩溃报告之一
  9. SpringBoot——日志文件
  10. 《水经注地图服务》缓存管理说明