Facebook 发布无梯度优化开源工具 Nevergrad,可应用于各类机器学习问题

简介: Nevergrad 提供了许多不依赖梯度计算的优化算法。

雷锋网 AI 科技评论按:大多数机器学习任务——从自然语言处理、图像分类到翻译以及大量其他任务,都依赖于无梯度优化来调整模型中的参数和/或超参数。为了使得参数/超参数的调整更快、更简单,Facebook 创建了一个名叫 Nevergrad(https://github.com/facebookresearch/nevergrad)的 Python 3 库,并将它开源发布。Nevergrad 提供了许多不依赖梯度计算的优化算法,并将其呈现在标准的问答 Python 框架中。此外,Nevergrad 还包括了测试和评估工具。

Nevergrad 现已对外开放,人工智能研究者和其他无梯度优化相关工作者马上就可以利用它来协助自己的工作。这一平台不仅能够让他们实现最先进的算法和方法,能够比较它们在不同设置中的表现,还将帮助机器学习科学家为特定的使用实例找到最佳优化器。在 Facebook 人工智能研究院(FAIR),研究者正将 Nevergrad 应用于强化学习、图像生成以及其他领域的各类项目中,例如,它可以代替参数扫描来帮助更好地调优机器学习模型。

这个库包含了各种不同的优化器,例如:

差分进化算法(Differential evolution)

序列二次规划(Sequential quadratic programming)

FastGA

协方差矩阵自适应(Covariance matrix adaptation)

噪声管理的总体控制方法(Population control methods for noise management)

粒子群优化算法(Particle swarm optimization)

在此之前,使用这些算法往往需要研究者自己编写算法的实现,这就让他们很难在各种不同的最新方法之间进行比较,有时候甚至完全无法比较。现在,AI 开发者通过使用 Nevergrad,可以轻易地在特定的机器学习问题上对不同方法进行测试,然后对结果进行比较。或者,他们也可以使用众所周知的基准来评估——与当前最先进的方法相比,新的无梯度优化方法怎么样。

Nevergrad 中所包含的无梯度优化方法可用于各类机器学习问题,例如:

多模态问题,比如说拥有多个局部极小值的问题。(如用于语言建模的深度学习超参数化。)

病态问题,通常在优化多个具有完全不同的动态特性的变量的时候,该问题就会出现(如,未对特定问题进行调整的丢弃和学习率)。

可分离或旋转问题,其中包括部分旋转问题。

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

离散的、连续的或混合的问题。这些问题可以包括电力系统(因为有些发电站具有可调连续输出,而其他发电站则具有连续或半连续输出)或者要求同时选择每层的学习速率、权值衰减以及非线性类型的神经网络任务。

有噪声的问题,即针对这一问题,函数被完全相同的参数调用时可以返回不同结果,例如强化学习中的不同关卡。

在机器学习中,Nevergrad 可用于调整参数,例如学习率、动量、权值衰减(或许每一层)、dropout(丢弃)算法、深度网络每个部分的层参数及其他等。更为普遍地,非梯度方法同样被用于电网管理(https://www.sciencedirect.com/science/article/pii/S0142061597000409)、航空(https://www.sciencedirect.com/science/article/pii/S0142061597000409)、镜头设计(https://www.researchgate.net/publication/222434804_Human-competitive_lens_system_design_with_evolution_strategies)以及许多其他的科学和工程应用中。

为什么有无梯度优化的需求

在某些场景中,例如在神经网络权重优化中,以分析法去计算函数的梯度是简单的。然而,在其他场景中,例如当计算函数 f 的速度慢,或者域不连续的时候,函数的梯度就无法预估出来。在这些应用实例中,无梯度方法提供了解决方案。

一个简单的无梯度解决方案是随机搜索,它由随机采样大量的搜索点、对每个搜索点进行评估、选择最佳搜索点三个步骤组成。随机搜索在许多简单场景中表现很好,但在高维场景中却表现不佳。通常被用于机器学习参数调整的网格搜索,也面临类似的限制。不过,也还有许多替代方法:其中一些来自应用数学,如序列二次规划,它对模拟器的二次近似进行更新;贝叶斯优化也建立目标函数模型,其中包括不确定性模型;进化计算包含大量关于选择、变异以及混合有前景的变体的工作。

TB1UdAUxxjaK1RjSZFAXXbdLFXa.gif

这个示例展示了进化算法如何运行。在函数空间中采样搜索点,并选择最佳点的群落,然后在已有点的周围推荐出新的点来尝试优化当前的点群落。

使用 Nevergrad 生成算法基准

Facebook 研究团队使用了 Nevergrad 实现几个基准测试,来展示特定算法在特定情况下的表现最佳。这些众所周知的示例对应着各种不同设置(多峰或非多峰,噪声或非噪声,离散或非离散,病态或非病态),并展示了如何使用 Nevergrad 来确定最佳优化算法。

在每个基准测试中,Facebook 研究团队对不同的 X 值进行了独立实验。这确保了在几个 X 值上的各个方法之间的一致排序在统计上是显著的。除了下面的两个基准示例,这里(https://github.com/facebookresearch/nevergrad/blob/master/docs/benchmarks.md)还有一份更全面的清单,并附上了如何使用简单的命令行重新运行这些基准的指南。

TB1x6EHxpzqK1RjSZFoXXbfcXXa.png

这个图展示了一个噪声优化示例

这个示例展示了使用 pcCMSA-ES 噪声管理原理(https://homepages.fhv.at/hgb/New-Papers/PPSN16_HB16.pdf)的 TBPSA 如何在表现上胜过几种替代方案。Facebook 研究团队在这里只将 TBPSA 与算法的一个有限示例进行了对比,不过,比起其他的方法,它的表现同样更好。

Nevergrad 平台还可以执行在很多机器学习场景中都会出现的离散目标函数。这些场景包括,举例来说,在一组有限的选项中进行选择(例如神经网络中的激活函数)和在层的各个类型中进行选择(例如,决定在网络中的某些位置是否需要跳过连接)。

现有的替代平台(Bbob 和 Cutest)并不包含任何离散的基准。Nevergrad 可以执行经过 softmax 函数(将离散问题转换成有噪声的连续问题)或连续变量离散化进行处理了的离散域。

Facebook 研究团队注意到在这个场景中,FastGA(https://arxiv.org/abs/1703.03334)的表现最好。DoubleFastGA 对应的是 1/dim 和 (dim-1)/dim 之间的突变率,而不对应 1/dim 和 1/2。这是因为原始范围对应于二进制域,而在这里,他们考虑的是任意域。在几种场景中,简单一致的突变率混合(https://arxiv.org/abs/1606.05551)表现良好。

TB1O6ZHxrvpK1RjSZFqXXcXUVXa.png

为研究者和机器学习科学家扩展工具箱

Faacebook 将会持续为 Nevergrad 增加功能,从而帮助研究者创建和评估新算法。最初的版本拥有基本的人工测试功能,不过 Facebook 计划为其增加更多功能,其中包括表示物理模型的功能。在应用方面,他们将继续让 Nevergrad 变得更易用,并尝试用它来对无法很好地确定梯度的 PyTorch 增强学习模型中的参数进行优化。Nevergrad 还可以帮助 A/B 测试以及作业调度等其他任务进行参数扫描。

via:https://code.fb.com/ai-research/nevergrad/ ,雷锋网 AI 科技评论编译。雷锋网(公众号:雷锋网)

目录
相关文章
|
15天前
|
机器学习/深度学习 人工智能 物联网
通义灵码在人工智能与机器学习领域的应用
通义灵码不仅在物联网领域表现出色,还在人工智能、机器学习、金融、医疗和教育等领域展现出广泛应用前景。本文探讨了其在这些领域的具体应用,如模型训练、风险评估、医疗影像诊断等,并总结了其提高开发效率、降低门槛、促进合作和推动创新的优势。
通义灵码在人工智能与机器学习领域的应用
|
15天前
|
机器学习/深度学习 传感器 自动驾驶
探索机器学习在图像识别中的创新应用
本文深入分析了机器学习技术在图像识别领域的最新进展,探讨了深度学习算法如何推动图像处理技术的突破。通过具体案例分析,揭示了机器学习模型在提高图像识别准确率、效率及应用场景拓展方面的潜力。文章旨在为读者提供一个全面的视角,了解当前机器学习在图像识别领域的创新应用和未来发展趋势。
|
25天前
|
机器学习/深度学习 人工智能 自然语言处理
思通数科AI平台在尽职调查中的技术解析与应用
思通数科AI多模态能力平台结合OCR、NLP和深度学习技术,为IPO尽职调查、融资等重要交易环节提供智能化解决方案。平台自动识别、提取并分类海量文档,实现高效数据核验与合规性检查,显著提升审查速度和精准度,同时保障敏感信息管理和数据安全。
81 11
|
25天前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
49 4
|
26天前
|
机器学习/深度学习 TensorFlow API
机器学习实战:TensorFlow在图像识别中的应用探索
【10月更文挑战第28天】随着深度学习技术的发展,图像识别取得了显著进步。TensorFlow作为Google开源的机器学习框架,凭借其强大的功能和灵活的API,在图像识别任务中广泛应用。本文通过实战案例,探讨TensorFlow在图像识别中的优势与挑战,展示如何使用TensorFlow构建和训练卷积神经网络(CNN),并评估模型的性能。尽管面临学习曲线和资源消耗等挑战,TensorFlow仍展现出广阔的应用前景。
55 5
|
2月前
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
44 2
|
20天前
|
机器学习/深度学习 人工智能 安全
人工智能与机器学习在网络安全中的应用
人工智能与机器学习在网络安全中的应用
43 0
|
7月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
246 14
|
7月前
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
124 1
|
7月前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)