当前位置: 首页 > 科技观察

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

时间:2023-03-17 14:24:44 科技观察

Facebook发布了Nevergrad,一个用于无梯度优化的开源工具,可以应用于各种机器学习问题参数和/或.为了更快更轻松地调整参数/超参数,Facebook创建了一个名为Nevergrad(https://github.com/facebookresearch/nevergrad)的Python3库,并将其作为开源发布。Nevergrad提供了许多不依赖梯度计算的优化算法,并将它们呈现在标准的问答Python框架中。此外,Nevergrad还包括测试和评估工具。Nevergrad现已向公众开放,AI研究人员和其他与无梯度优化相关的人员可以立即使用它来协助他们的工作。该平台不仅允许他们实施最先进的算法和方法并比较它们在不同设置中的性能,而且还将帮助机器学习科学家找到针对特定用例的最佳优化器。在Facebook人工智能研究中心(FAIR),研究人员正在将Nevergrad应用于强化学习、图像生成和其他领域的各种项目,例如,它可以取代参数扫描,以帮助更好地调整机器学习模型。这个库包含各种优化器例如:差分进化顺序二次规划FastGA协方差矩阵自适应噪声管理的种群控制方法)粒子群优化(Particleswarmoptimization)在此之前,使用这些算法通常需要研究人员编写算法本身的实现,这使得他们很难在各种攻击方法之间进行比较。有时甚至根本没有可比性。现在,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的计算速度较慢,或者域不连续时,无法预测函数的梯度。在这些应用示例中,无梯度方法提供了一种解决方案。一种简单的无梯度解决方案是随机搜索,它包括三个步骤:随机抽取大量搜索点,评估每个搜索点,并选择最佳搜索点。随机搜索在许多简单场景中效果很好,但在高维场景中却失败了。通常用于机器学习中的参数调整的网格搜索面临类似的限制。然而,有很多替代方案:一些来自应用数学,例如序列二次规划,它更新模拟器的二次逼近;贝叶斯优化还对目标函数进行建模,包括不确定性模型;进化计算涉及对有希望的变体的选择、变异和混合的大量工作。这个例子展示了进化算法是如何工作的。对功能空间中的搜索点进行采样,选择最佳点群,然后围绕已有点群推荐新的点群,尝试优化当前点群落。使用Nevergrad生成算法基准Facebook研究团队使用Nevergrad实施多个基准,以展示特定算法在特定情况下的表现***。这些著名的示例对应于各种设置(多峰或非多峰、噪声或非噪声、离散或非离散、病态或非病态)并展示如何使用Nevergrad确定最佳优化算法。在每个基准测试中,Facebook研究团队使用不同的X值进行了独立实验。这确保了各个方法在多个X值上的一致排序在统计上是显着的。除了下面的两个基准测试示例之外,这里还有一个更全面的列表(https://github.com/facebookresearch/nevergrad/blob/master/docs/benchmarks.md),其中包含如何使用简单的命令行重新进行基准测试的指南-运行这些基准测试。此图显示了噪声优化的示例。此示例展示了使用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)在多种情况下表现良好。为研究人员和机器学习科学家扩展工具箱Facebook将继续为Nevergrad添加功能,以帮助研究人员创建和评估新算法。初始版本具有基本的人体测试功能,但Facebook计划添加更多功能,包括表示物理模型的功能。在应用端,他们将继续让Nevergrad更易于使用,并尝试用它来优化PyTorch强化学习模型中不能很好确定梯度的参数。Nevergrad还可以帮助进行A/B测试的参数扫描和作业调度等其他任务。