大家好,借知乎宣传一篇NeurIPS 2020文章。为了少占用大家时间,我会用通俗的动图描述算法,抛砖引玉。文章的理论性质和潜力值得让数学大神加以改进并被计算机大牛发扬光大。

A Contour Stochastic Gradient Langevin Dynamics Algorithm for Simulations of Multi-modal Distributions​arxiv.org

话不多说,先放一个模拟图,一个分布有9个mode,中间一个概率最大,边上次之,角上四个最小。如果你能准确采样分布,你就能获得正确的预测分布。这在避免第二类统计错误(把不对的归为是对的)和增强学习中有巨大前景。深度学习中一个标准的采样算法是随机梯度朗之万动力学(SGLD),如图所示,粒子会在坑中逗留很久,坑越深,逗留时间指数变长。也就是说,采样这个分布是极其慢的。

有研究者尝试过一个简单实用的idea,即采用周期性cosine学习率获得不错的实验表现。大学习率explore新区域,小学习率获得局部采样。图下可见,效果比SGLD提升了不少。

Zhang - ICLR 2020

当然, @Zhanxing Zhu 老师的变温tempering算法,对non-convex问题也很有潜力。对于preconditioned SGLD @Chunyuan Li,它对Hessian条件数糟糕的情况做了很好的改进。

更著名的算法是经典的并行回火(Parallel tempering/ replica exchange)算法。思想是引入两个(或多个)随机过程,高温过程探索全局(exploration),低温过程采样(exploitation)。当高温过程能量(loss)值比低温过程没差很多时,参数有一定概率去互换(swap)。利用跳跃(jump)的方式解决爬坡难的问题。

由于逃脱local trap需要的代价是指数级别(和深度有关),因此这个算法用较小代价获得了指数加速。此算法如此流行且重要甚至都出现在阿里数学竞赛试题里(忘了哪一版了)。

Deng, ICML 2020

直观想象,如何跨越能量壁垒是加速采样的重中之中。而现实下,鱼和熊掌不可得兼,exploration and exploitation常常只能取舍。多个过程/引入跳跃无疑会很好的克服这一问题。但如果只用一个过程不带跳如何达到理论上最大的潜能呢?传统MCMC领域公认的一个答案是:重要性采样(importance sampling):

即如果

分布很难采样,但
分布容易的多,同时你还能获得分布之间的关系
(Radon nikodym导数,

importance weight)。那么你可以通过间接采样

来大大

加速

的模拟

什么样的

分布比
分布容易采样呢?Neal在Annealed Importance Sampling提出用高温的思路将分布变平。 这篇文章采用的则是统计物理里面的multicanonical ensemble和Wang-Landau里面的思路,将原分布(下图绿线)除以目标分布的

能量pdf(也将作为importance weight)来将分布变平(下图红线)。

从而降低能量壁垒。该思想已经在统计物理和生物信息学领域获得极大成功,被王永雄、刘军教授(两位COPSS奖:统计菲奖,一年一人,coadvisor的老板和师兄)评价为最适合加速蒙特卡洛的算法。

尽管目标分布的能量pdf刚开始不知道,但获得能量pdf比获得分布信息要容易的多(比如一个Gaussian mixture with equal weight, 估计单个mode的能量pdf很容易,而这个信息已经足够;进一步的话,不equall weight也不是啥问题)。我们可以用stochastic approximation(可以想象成EM算法的进阶版)一边采样一边优化隐变量。均衡情况下,隐变量收敛到能量pdf,目标参数弱收敛到更容易采样的

分布。神奇的是,此算法拥有简洁的形式(比原算法只多了下面一行迭代,相比之下Adam需要额外5层迭代)

和极佳的稳定性,隐变量可以收敛到唯一fixed point而无关凸性(EM算法常见问题就是隐变量local trap且极其不稳定)。该算法和拟牛顿算法有一丝相似。但拟牛顿不改进能量函数只是估计Hessian,因此只能获得渐进超线性的表现;而我们的算法步步改变几何形状的做法,潜在的指数加速了收敛(为啥指数阶的话,由于分析很难,我还是引一篇reference吧)。

下面是路径展示:此算法引入一个隐变量,这个隐变量代表分布的能量pdf,原始分布除以这个隐变量可以获得更平的分布因而更容易模拟,你能看出高能区似乎也有很多样本,由于他们对应的importance weight很小,因此结合importance weight

还是可以

恢复原始分布能量pdf刚开始未知,但是一些初步的学习后便可以获得巨大的加速效果。

Deng - NeurIPS 2020

这份工作是统计物理里面Wang-Landau算法从Metropolis kernel 到Langevin kenel的拓展,为一类重要的加速技巧adaptive biasing force做了铺垫。为了能应用在深度学习领域,我们顺便把随机梯度的版本也一并做了出来。simulation比肩甚至可能超越parallel temerping的性能证明了其巨大的潜能。

此文章最大的novelty在于methodology development。如果你看到simulation的潜能不觉得新奇就可以无视后续了。本篇文章更侧重讲方法论,因而只提供了一些简单的DNN实验,实验中高loss下,能量PDF的估计会变得困难,比如

。折中去大幅提升实验性能的办法有很多,就不在这篇文章探讨了。应用的工作留给更专业的同学进行了。

改变几何形状带来的理论增益远超Hessian估计,动量,或者高阶数值离散格式。比如深度学习中的基石算法SGD with decaying learing rate其本质就是模拟退火,通过步步改变几何形状使得概率mass聚集在global minima附近,相比之下所谓ADAM/ RMSprop这类算法在大问题下基本就不work了。当然,这么大的收益也也需要更高阶的数学技巧来分析,大量PDE和黎曼几何是免不了了。既有挑战性,也有无限潜力。呼唤真

数学大神关注此问题。

用learning rate decay来实现模拟退火已经是业界公认最实用的技巧之一,而与它一样强大的parallel tempering在DNN领域如何高效的实验和调参还完全是一片空白。希望工程背景强大的同学也关注一波。

1. Max Welling, Yee Whye Teh. Bayesian Learning via Stochastic Gradient Langevin Dynamics. ICML'11

2. R. Zhang, C. Li, J. Zhang, C. Chen, A. Wilson. Cyclical Stochastic Gradient MCMC for Bayesian Deep Learning. ICLR'20

3. W. Deng, Q. Feng, L. Gao, F. Liang, G. Lin. Non-convex Learning via Replica Exchange Stochastic Gradient MCMC. ICML'20.

4. W. Deng, G. Lin, F. Liang. A Contour Stochastic Gradient Langevin Dynamics Algorithm for Simulations of Multi-modal Distributions. NeurIPS'20.

=========

Nov. 6补充: 英文blog见Dynamic Importance Sampling

算法速学速用大辞典 pdf_随机梯度蒙特卡洛算法-重要性采样相关推荐

  1. 机器学习-算法背后的理论与优化(part7)--随机梯度下降法概述

    学习笔记,仅供参考,有错必究 随机梯度下降法概述 机器学习场景 算法模型和损失函数 一个有监督学习算法或模型实质上是在拟合一个预测函数侧或者称为假设函数,其形式固定但参数 w ∈ R d w \in ...

  2. np实现sigmoid_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

    深度学习算法工程师面试,记录一道较为基础的笔试题: 输入:目标向量Y(N*1),矩阵X(N*K):输出:使用随机梯度下降求得的逻辑回归系数W(K+1). 分析:该问题需要先列出逻辑回归的函数解析式,再 ...

  3. 一文速学数模-聚类模型(一)K-means聚类算法详解+Python代码实例

    目录 前言 一.聚类分析 二.K-means原理 1.距离度量算法 欧几里得距离(欧氏距离)

  4. 使用python玩转二维码!速学速用!⛵

  5. 算法竞赛从入门到进阶pdf_好书送不停 | 算法竞赛入门到进阶

    本书内容: 本书是算法竞赛的入门和进阶教材,包括算法思路.模板代码.知识体系.赛事相关等内容.本书把竞赛常用的知识点和竞赛题结合起来,讲解清晰.透彻,帮助初学者建立自信心,快速从实际问题入手,模仿经典 ...

  6. “365算法每日学计划”:03打卡-贪心算法

    自从开始做公众号开始,就一直在思考,怎么把算法的训练做好,因为思海同学在算法这方面的掌握确实还不够.因此,我现在想做一个"365算法每日学计划". "计划"的主 ...

  7. 算法每日学打卡:01-21打卡(解答后面整理)

    "算法每日学"计划01打卡: 问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能.它们的前几个是: 00000 00001 00010 00011 001 ...

  8. 从零开始学Pytorch(十四)之优化算法进阶

    动量 目标函数有关自变量的梯度代表了目标函数在自变量当前位置下降最快的方向.因此,梯度下降也叫作最陡下降(steepest descent).在每次迭代中,梯度下降根据自变量当前位置,沿着当前位置的梯 ...

  9. 强化学习(七) - 函数近似方法 - 随机梯度下降, 半梯度下降,及瓦片编码(Tile Coding)实例

    函数近似方法 7.1 目标预测(VE‾\overline{VE}VE) 7.2 随机梯度下降和半梯度下降 例7.1: 1000态随机行走的状态收敛 7.3 线性近似 7.4 线性方法的特征构造 7.4 ...

  10. R 梯度提升算法①

    用gbm包实现随机梯度提升算法 自适应提升方法AdaBoost 它是一种传统而重要的Boost算法,在学习时为每一个样本赋上一个权重,初始时各样本权重一样.在每一步训练后,增加错误学习样本的权重,这使 ...

最新文章

  1. java微信附件下载_WxJava微信开发工具包
  2. 毫米波雷达_毫米波雷达基础知识
  3. java子类有参构造函数吗_为什么我需要在这个Java通用子类中有一个构造函数?...
  4. Groovy/Spock 测试导论
  5. 2017西安交大ACM小学期 文本查找[AC自动机]
  6. 上位机获取单片机发来的数据并进行检验
  7. 记录一次客户Oracle启动不了的解决过程
  8. 重构代码花 1 年!程序员血泪史:千万不要重写代码!
  9. 个人制作的DNN 5.4 API Document
  10. pycharm前进后退
  11. 2022美国大学生数学建模竞赛C题摘要及总结
  12. 3D风车动画CSS HTML代码
  13. Photoshop合成雪景天使美女照片
  14. MySQL索引详解之索引的数据结构
  15. Warpaffine
  16. 【OpenSource】开源管理平台BlackDuck简介
  17. Python第一次爬虫三部曲 wallhaven壁纸网站(requests库,re正则库)一看就会
  18. 【每日知识】res是什么意思?
  19. 全国各IT领军城市软件和服务外包Q群
  20. locate用主动还是被动_主动形式表被动意义

热门文章

  1. 数据库系统工程师考点
  2. 操作系统实验二、进程通信实验——f(x,y) = f(x) + f(y)
  3. Exchange DAG 架构 POP3验证失败处理过程
  4. BackTrack5 下破解无线
  5. 关于无盘工作站的初步了解(RPL/PXE)
  6. 网站前端性能优化终极指南
  7. WebRTC sdp详解
  8. 查看服务器远程桌面端口命令,Windows系统服务器远程桌面端口查看和修改方法...
  9. C11语言比C99,C11相比C99的变化
  10. Ubuntu16.04安装为知笔记(WizNote)