用于执行无梯度优化的python工具箱
nevergrad的Python项目详细描述
Nevergrad-无梯度优化平台
nevergrad
是一个python 3.6+库。它可以与以下组件一起安装:
pip install nevergrad
您也可以使用以下命令安装主分支而不是最新版本:
pip install git+https://github.com/facebookresearch/nevergrad@master#egg=nevergrad
或者,可以克隆存储库并从存储库文件夹中运行pip install -e .
。
默认情况下,这仅安装优化和检测子包的要求。如果你也对基准测试感兴趣,
安装时应该使用[benchmark]
标志(例如:pip install 'nevergrad[benchmark]'
),如果还需要测试工具,请使用
[all]
标志(例如:pip install -e '.[all]'
)
目标和结构
此软件包的目标是提供:
- 无梯度/无导数优化算法,包括能够处理噪声的算法。
- 工具,用于插入任何代码,使优化参数/超参数(无论它们是连续的、离散的还是连续变量和离散变量的混合)变得轻松。
- 函数用于测试优化算法。
- benchmark例程以便轻松比较算法。
包的结构遵循其目标,因此您将找到子包:
optimization
:实现优化算法instrumentation
:将代码转换为定义良好的函数以进行优化的工具。functions
:实现简单和复杂的基准函数benchmark
:用于运行在基准函数上比较算法的实验common
:整个包中使用的一组工具
具有两点de.
文档
下面的自述文件非常通用,这里有一些链接,可以找到有关的详细信息:
- how to perform optimization使用
nevergrad
,包括使用并行化,以及根据设置使用哪些算法的一些建议 - how to instrument具有任何类型参数的函数,以便将它们转换为可在连续向量空间上执行优化的定义函数。它还提供了一个工具来实例化一个脚本或非python代码,以便将其转换为python函数,并能够调整它的一些参数。
- how to benchmark各种测试函数上的所有优化器。
- benchmark results一些标准优化器的一个简单测试用例。
- optimization for machine learning的示例。
- 如何contribute解决问题和拉取请求,以及如何设置开发环境。
- 如何由adding a new algorithm贡献的指南。
基本优化示例
所有优化器都假设在优化开始时有一个居中且减少的先验值(即0平均值和酉标准差)。但是,他们能够找到与最初的解决方案相去甚远的解决方案。
优化(最小化!)使用优化器的函数(这里是OnePlusOne
)可以很容易地使用以下命令运行:
importnevergradasngdefsquare(x):returnsum((x-.5)**2)optimizer=ng.optimizers.OnePlusOne(instrumentation=2,budget=100)recommendation=optimizer.optimize(square)print(recommendation)# optimal args and kwargs>>>Candidate(args=(array([0.500,0.499]),),kwargs={})
recommendation
保存优化器为所提供函数找到的最佳属性args
和kwargs
。
在本例中,最佳值将在recommendation.args[0]
中找到,并且是大小为2的np.ndarray
。
instrumentation=n
是表示函数只有一个变量的快捷方式,即维度n
,
有关更复杂的检测,请参见instrumentation tutorial。
您可以使用以下命令打印优化器的完整列表:
importnevergradasngprint(list(sorted(ng.optimizers.registry.keys())))
optimization documentation包含有关如何使用多个工作进程、通过ask
和tell
接口完全控制优化的更多信息,以及有关如何为问题选择适当的优化器的一些建议。
引用
@misc{nevergrad,author={J. Rapin and O. Teytaud},title={{Nevergrad - A gradient-free optimization platform}},year={2018},publisher={GitHub},journal={GitHub repository},howpublished={\url{https://GitHub.com/FacebookResearch/Nevergrad}},}
许可证
nevergrad
是在mit许可下发布的。有关其他详细信息,请参见LICENSE。