乾明 发自 凹非寺
量子位 出品 | 公众号 QbitAI

机器学习啥最苦?十有八九找参数!

不少研究生,都被卡在这个环节上,久久不能毕业。

现在,圣诞节前,有了一个好消息!

Facebook宣布,开源自家一直在使用的无梯度优化工具:Nevergrad

并“信誓旦旦”表示,这能让调整模型参数和超参数的过程变得更快、更容易。

但在Twitter上,仿佛起到了相反的效果。

有人看到这个消息之后,立马“梗”上心头:

NeverGraduate吗?

也有人调侃称,这绝对是那些博士读了6年的人心中的噩梦。

不过,调侃归调侃,人家可是货真价实的NeverGradient。

大多数人还是用转发、点赞表达了自己的态度。

这是个什么东东?

简单来说, 这是一个Python 3库,里面有很多不需要进行梯度计算的算法。这些算法有:

  • 差分进化

  • 序列二次规划

  • FastGA

  • 协方差矩阵自适应

  • 用于噪声管理的种群控制方法

  • 粒子群优化

  • ……

它们都呈现在了一个标准的ask-and-tell Python框架中,同时,Facebook还配备了相关的测试和评估工具。

有没有一种热泪盈眶的感觉?

先别急……来看看效果怎么样。

拿起来就能用

就先从上面提到的算法来说吧。之前这些算法都是定制的,想要比较一个任务中各种算法的性能?要么行不通,要么得花大力气。

Facebook表示,有了Nevergrad,这些都不是问题。只要有用得着它的地方,拿起来就能用。

不仅能够比较不同方法的性能,还能与那些常用基准上的最先进水平进行比较,以及帮你为特定的用例找最好的优化方法。

应用场景很感人

先说Facebook的情况。博文中说,自家的研究团队已经在强化学习、图像生成以及各种各样的项目中使用Nevergrad了。

而且,Nevergrad的无梯度优化,还能广泛运用于各种机器学习问题。比如:

  • 多模态问题,比如有几个最小值的问题。 (例如,语言建模深度学习的超参数化。)

  • 病态问题,在试图优化几个具有非常不同动态的变量时,通常会出现这种问题。(例如,没有针对具体问题重新标定dropout和学习率。)

  • 可分离或旋转的问题,包括部分旋转的问题。

  • 部分可分离问题,可以考虑通过几个变量块来解决。 例子包括对深度学习或其他形式设计的架构搜索,以及多任务网络的参数化。

  • 离散、连续或混合的问题。这些任务需要同时选择每层的学习速率、每层的权重衰减以及每层的非线性类型。

  • 有噪声的问题,当使用完全相同的参数调用函数时,函数可以返回不同的结果,例如强化学习中的独立事件。

来,总结一下。

在机器学习中,Nevergrad可来调整超参数,如学习速率、动量、权重衰减(可能是每层)、 dropout和深层网络的每一部分的层参数等。

但从无梯度方法的角度来说,它也可以应用到电网管理、航空、镜头设计以及许多其他科学和工程中。

为了证明Nevergrad的能力。Facebook的团队使用 Nevergrad 实现了几个基准测试。

硬核示例:用Nevergrad生成算法基准

不同的例子对应于不同的设置(是否多模态,是否有噪声,是否离散,是否病态) ,并展示了如何使用Nevergrad确定最佳优化算法。

在每个基准测试中,他们对不同的x值进行了独立的实验。这确保了方法之间在几个x值上的一致排名具有统计学意义。

噪声最优化示例

这个示例显示,使用pcCMSA - ES的噪声管理方法的TBPSA优于其他几种替代方案。

具体怎么比较的,Facebook在GitHub上开源了,传送门在文末。

Nevergrad也可以处理离散的目标函数,在许多机器学习案例中都会遇到这个问题。

例如,在有限的选项集(如神经网络中的激活函数)之间进行选择,以及在不同类型的层之间进行选择(例如,决定在网络中的某个位置是否需要跳过连接)。

现有的一些工具,比如Bbob和Cutest不包含任何离散的基准测试。但Nevergrad可以处理离散域。

方法有两个,一是通过softmax函数(将离散问题转化为有噪声的连续问题),二是通过连续变量的离散化。

Facebook还专门做了一个测试。

如上图,测试中FastGA在这种情况下表现最好。有一点,DoubleFastGA对应于1/dim和( dim - 1 ) / dim之间的突变率,而不是1/dim和1/2。这是因为,原始范围对应的是一个二进制域,而在这里,Facebook考虑的是任意域。

好,到此,该说的都说了。

请收好传送门吧~

传送门

Nevergrad项目地址:

https://github.com/facebookresearch/nevergrad

博客地址:

https://code.fb.com/ai-research/nevergrad/

噪声最优化示例项目地址:

https://github.com/facebookresearch/nevergrad/blob/master/docs/benchmarks.md

作者系网易新闻·网易号“各有态度”签约作者

加入社群

量子位AI社群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;

此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。

进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

 好看吗?↘↘↘

拯救万千学子于水深火热之中!Facebook开源无梯度优化工具相关推荐

  1. Facebook开源多款AI工具,支持游戏、翻译等

    翻译 | 林椿眄 编辑 | 阿司匹林 出品 | AI科技大本营(公众号ID:rgznai100) 近日,Facebook 在年度开发者大会 F8 上宣布开源多款 AI 工具,除了 PyTorch.Ca ...

  2. Facebook开源多款AI工具,支持游戏、翻译

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 翻译 | 林椿眄 编辑 | 阿司匹林 出品 | AI科技大本营 近日,Facebook 在年 ...

  3. web项目接到请求之后执行sql特别慢_小米开源!SQL优化工具,人工智能帮你 Rewrite...

    本文出自头条号老王谈运维,转载请说明出处. 作为一名优秀的DBA或系统管理员,工作总是充满各种"艰辛"! 你在工作中是否遇到过这样的情况:有一个慢SQL需要优化,但是通过分析执行计 ...

  4. FaceBook ATC 弱网测试工具环境搭建

    原址 工具简介 ATC是FaceBook开源的移动网络测试工具Augmented Traffic Control(ATC),能够方便的让我们模拟各种网络环境进行测试. ATC有两个最吸引人的特点: 在 ...

  5. 提出离职后怎么定last day_不敢提离职?日本正在兴起的“辞职中介”业务,拯救社畜们于水深火热之中!...

    今天,你鼓起勇气辞职了吗? 经济不景气,就业率连年下降,但这依然阻止不了离职率的步步攀升.据日本总务省发布的<劳动力调查>,从2016年开始,全国每年的跳槽人数突破320万,应届生平均在一 ...

  6. Facebook 开源了一整套重要的 Linux 内核组件与工具!

    近日,Facebook 开源了一套解决重要计算集群管理问题的 Linux 内核组件和相关工具,这些项目覆盖了资源控制.资源利用.工作负载隔离.负载均衡.测量和监控等方面:BPF.Btrfs.Netco ...

  7. 继Facebook开源PyTorch3D后,谷歌开源TensorFlow 3D场景理解库

    来源:机器之心本文约2000字,建议阅读5分钟谷歌于近日开源了一个基于 TF 框架的高度模块化和高效处理库 TensorFlow 3D. 继 2020 年初 Facebook 开源基于 PyTorch ...

  8. Facebook开源最大规模并行语料,45亿语料,覆盖576种语言对

    2020-02-07 16:33 导语:或成为NMT评估标准 雷锋网AI科技评论按:当前自然语言处理中的大多数方法都是数据驱动的,大多数多语言模型(特别是神经机器翻译系统)都需要并行语料库进行训练.大 ...

  9. Facebook开源了超大规模图嵌入算法,上亿个节点也能快速完成

    https://www.toutiao.com/a6675562914365047300/ 图,是很有用的数据结构,用节点 (Node) 和边 (Edge) 织成一张网.比如,知识图谱就是这样的网. ...

最新文章

  1. 转-Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案
  2. 重新精读《Java 编程思想》系列之final关键字
  3. 关于vue使用eslint规范报Trailing Spaces not Allowed错误解决办法!
  4. cisco 动态路由协议RIP笔记
  5. 去除IE10自带的清除按钮
  6. java callable接口_Java多线程之Callable接口的实现有返回值的线程
  7. CENTSO5中如何加DNS,IP
  8. CSDN发布:AI技术人才成长路线图
  9. 如何找到Google浏览器扩展程序在本地文件夹中的位置?
  10. css 背景图片虚化磨砂效果
  11. 数据科学库(六)pandas中的时间序列
  12. c语言ifi=1 2,第1部分_C语言程序设计练习一全解.doc
  13. @CacheEvict
  14. Linux——从命令行配置网络、编辑网络配置文件
  15. 历史上最著名的十大思想实验(转)
  16. java推荐书单 什么值得读 (2021年1月8日更新)
  17. 【Google Chrome浏览器离线安装包下载方法】
  18. SmsForwarder-短信转发器
  19. PMO转型ATO以推进组织级敏捷转型︱施耐德敏捷转型负责人伍舜喜
  20. java Opencv保存中文路径的图片

热门文章

  1. Python 2 即将停止支持!
  2. 区块链风口下,开发者下海是否为时已晚?
  3. iOS 系统爆 Bug!
  4. ajax分片上传,ajax异步实现文件分片上传
  5. 字节跳动面试真题:java程序设计基础教程
  6. opencv 有无判断 模板匹配_opencv模板匹配
  7. Orabbix监控oracle
  8. java获取inputstream_Java:我怎样才能从inputStream获取编码?
  9. linux指令ls -1,linux命令1--ls
  10. 汕尾python高手_每天两小时,下一个python 高手就是你!满满都是干货