用于科学机器学习、不确定性量化(UQ)和人工智能的约束非线性优化
项目描述
关于Mystic
Mystic框架提供了一组优化算法和工具,使用户能够更稳健(且更容易)地解决困难的优化问题。Mystic中包含的所有优化算法都提供了拟合层的流程,而不仅仅是作为函数调用的算法访问。Mystic允许用户在拟合过程运行时对优化进行细致的监控和引导。优化器可以使用
在可能的情况下,mystic 优化器共享一个公共接口,因此用户无需编写任何新代码即可轻松替换。所有的 mystic 求解器都遵循求解器 API,因此也有配置和启动优化作业的公共方法调用。有关更多详细信息,请参阅 mystic.abstract_solver。该 API 还使得将第三方求解器绑定到 mystic 框架变得非常容易。
mystic 中的优化算法可以接受参数约束,作为“软约束”(即“惩罚”,对违反约束的解空间区域进行“惩罚”),或作为“硬约束”(即“约束”,将求解器约束在只有遵守约束的空间区域中搜索),或两者兼具。mystic 提供了大量的约束选项,包括概率和降维约束。通过提供强大的接口,使用户能够轻松配置和控制求解器,mystic 大大降低了解决困难优化问题的障碍。
mystic 中的采样、插值和统计都是设计来无缝耦合约束优化,以促进科学机器学习、不确定性量化、自适应采样、非线性插值和人工智能。mystic 可以使用 mystic.symbolic 中的方法将等式和不等式系统转换为硬约束或软约束。使用 mystic.constraints.vectorize,可以将约束转换为核变换,用于机器学习。同样,mystic 提供了使用 mystic.math.interpolate 在不规则网格上准确生成仿真器的工具,其中包括求解梯度和 Hessian 的方法。mystic.samplers 使用优化器驱动自适应采样,以响应表面的第一和第二阶临界点为目标,从而产生高度信息化的训练数据集,并确保仿真器的准确性。mystic.math.discrete 定义了约束离散概率测度,可用于约束统计优化和学习。
mystic 正在积极开发中,因此任何用户反馈、错误报告、评论或建议都备受欢迎。问题列表位于 https://github.com/uqfoundation/mystic/issues,遗留列表维护在 https://uqfoundation.github.io/project/mystic/query。
主要功能
mystic 提供了一系列可配置、可控制的求解器,具有以下特点:
一个公共接口
一个控制处理器,具有暂停、继续、退出和回调功能
轻松选择初始种群条件:猜测、随机等
轻松进行检查点和从日志或保存状态重启
利用并行和分布式计算的能力
应用一组日志和/或详细监视器的能力
配置求解器无关的终止条件的能力
施加自定义和用户定义的惩罚和约束的能力
为了快速启动,mystic 还提供了基础设施,以便:
轻松生成模型(包含几个标准测试模型)
从模型配置和自动生成成本函数
配置求解器集合以执行特定任务
当前版本
mystic 的最新发布版本可在以下位置获取:
mystic 在 3-clause BSD 许可下分发。
开发版本
您可以在以下位置获取带有所有最新功能的最新开发版本:
如果您有新的贡献,请提交一个pull请求。
安装
mystic 可以使用 pip 安装
$ pip install mystic
为了包含可选的科学Python支持,使用 scipy,安装
$ pip install mystic[math]
为了包含可选的绘图支持,使用 matplotlib,安装
$ pip install mystic[plotting]
为了包含可选的并行计算支持,使用 pathos,安装
$ pip install mystic[parallel]
需求
mystic 需要
python(或 pypy),>=3.8
setuptools,>=42
cython,>=0.29.30
numpy,>=1.0
sympy,>=0.6.7
mpmath,>=0.19
dill,>=0.3.9
klepto,>=0.2.6
可选需求
matplotlib,>=0.91
scipy,>=0.6.0
pathos,>=0.3.3
pyina,>=0.3.0
更多信息
可能开始使用最好的方式是查看 http://mystic.rtfd.io 上的文档。还可以查看 mystic.tests,其中包含演示 mystic 框架许多功能的脚本集。您可以使用 python -m mystic.tests 运行测试套件。mystic 中安装了几个绘图脚本,其中主要是 mystic_log_reader(也可以通过 python -m mystic 使用)和 mystic_model_plotter(也可以通过 python -m mystic.models 使用)。mystic 还包含几个其他绘图脚本,详细说明见文档其他部分。有关使用 mystic.models 中提供的示例模型配置和启动优化作业的基本用例,请参阅 https://github.com/uqfoundation/mystic/tree/master/examples。许多示例都是标准的优化测试问题。约束和惩罚的使用在 https://github.com/uqfoundation/mystic/tree/master/examples2 中详细说明,而利用集成求解器、机器学习、不确定性量化以及降维的高级功能在 https://github.com/uqfoundation/mystic/tree/master/examples3 中找到。在 https://github.com/uqfoundation/mystic/tree/master/examples4 中的脚本展示了如何利用 pathos 进行并行计算,以及演示了一些自动分区方案。mystic 有能力在乘积测度空间中工作,而在 https://github.com/uqfoundation/mystic/tree/master/examples5 中的脚本展示了如何以低级别处理乘积测度。源代码通常有很好的文档,因此可以通过检查代码本身来解决进一步的问题。请随时在github上提交工单,或在stackoverflow上提问(@Mike McKerns)。如果您想分享如何在工作中使用 mystic,请发送电子邮件(至 mmckerns at uqfoundation dot org)。
构建新模型的说明在 mystic.models.abstract_model 中。mystic 为两种类型的模型提供基类
AbstractFunction [对给定的评估点 x 评估 f(x)]
AbstractModel [为给定的系数 p 生成 f(x,p)]
mystic 还提供了一些便利函数来帮助您即时构建模型实例和成本函数实例。有关更多信息,请参阅 mystic.forward_model。然而,在构建自己的模型或成本函数时,没有必要使用基类或模型构建器,因为任何符合基本 AbstractFunction 接口的 cost = f(x) 的标准 Python 函数都可以使用。
所有 mystic 求解器都高度可配置,并提供了一组强大的方法来帮助您针对特定的优化问题定制求解器。对于每个求解器,还提供了一个最小化(scipy.optimize)接口,供那些希望将求解器配置和启动作为单个函数调用的用户使用。有关更多信息,请参阅求解器 API 的 mystic.abstract_solver,以及每个单独求解器的最小功能接口。
mystic 允许求解器在用户提供了(串行)Python map 函数的替换时使用并行计算。 mystic 包含在 mystic.python_map 中的示例 map,它反映了内置 Python map 的行为,以及在 mystic.pools 中的 pool,它提供了使用 pathos(即 multiprocessing)接口的 map 函数。 mystic 求解器旨在利用 pathos 包提供的分布式和并行工具。有关更多信息,请参阅 mystic.abstract_map_solver、mystic.abstract_ensemble_solver 以及 http://pathos.rtfd.io 上的 pathos 文档。
重要类和函数在此处可以找到
mystic.solvers [求解器优化算法]
mystic.termination [求解器终止条件]
mystic.strategy [求解器种群突变策略]
mystic.monitors [优化监控器]
mystic.symbolic [约束中的符号数学]
mystic.constraints [约束函数]
mystic.penalty [惩罚函数]
mystic.collapse [检查维度坍缩]
mystic.coupler [函数耦合的装饰器]
mystic.pools [并行工作池接口]
mystic.munge [文件读取器和写入器]
mystic.scripts [模型和收敛绘图]
mystic.samplers [优化器引导采样]
mystic.support [超立方体测量支持绘图]
mystic.forward_model [成本函数生成器]
mystic.tools [约束、包装器和其他工具]
mystic.cache [结果缓存和归档]
mystic.models [模型和测试函数]
mystic.math [数学函数和工具]
mystic.math 中的重要函数在此处可以找到
mystic.math.Distribution [一个采样分布对象]
mystic.math.legacydata [用于旧数据观测的类]
mystic.math.discrete [用于离散测量的类]
mystic.math.measures [支持离散测量的工具]
mystic.math.approx [测量等价性的工具]
mystic.math.grid [生成网格上点的工具]
mystic.math.distance [测量距离和范数的工具]
mystic.math.poly [多项式函数的工具]
mystic.math.samples [与采样相关的工具]
mystic.math.integrate [与积分相关的工具]
mystic.math.interpolate [与插值相关的工具]
mystic.math.stats [与分布相关的工具]
求解器、采样器和模型API定义在此处
mystic.abstract_sampler [采样器API定义]
mystic.abstract_solver [求解器API定义]
mystic.abstract_map_solver [并行求解器API]
mystic.abstract_ensemble_solver [集成求解器API]
mystic.models.abstract_model [模型API定义]
mystic 还提供了一些用于可视化模型、收敛和超立方体支持的便捷脚本。这些脚本安装到用户的 $PATH 目录中,因此可以从任何地方运行
mystic_log_reader [参数和成本收敛]
mystic_log_converter [日志文件格式转换器]
mystic_collapse_plotter [收敛和维度坍缩]
mystic_model_plotter [模型表面和求解器轨迹]
support_convergence [度量收敛的图表]
support_hypercube [超立方体上的参数支持]
support_hypercube_measures [超立方体上的度量支持]
support_hypercube_scenario [超立方体上的场景支持]
将任何上述脚本的参数指定为 --help 将会打印出指导性帮助信息。
引用
如果您使用 mystic 进行研究并导致发表,我们要求您在您的出版物中提及 mystic 的使用,如下所示
M.M. McKerns, L. Strand, T. Sullivan, A. Fang, M.A.G. Aivazis, "Building a framework for predictive science", Proceedings of the 10th Python in Science Conference, 2011; http://arxiv.org/pdf/1202.1056 Michael McKerns, Patrick Hung, and Michael Aivazis, "mystic: highly-constrained non-convex optimization and UQ", 2009- ; https://uqfoundation.github.io/project/mystic
有关更多信息,请参阅 https://uqfoundation.github.io/project/mystic 或 http://arxiv.org/pdf/1202.1056
项目详情
下载文件
下载适用于您平台文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
mystic-0.4.3.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5a35d0839e04014161c6b24f310dab6e12649a99976b07aa282c2f06799a5b7f |
|
MD5 | 217b6a15e00ac1eca9bad1b9537eb954 |
|
BLAKE2b-256 | 6d2842fbdbd86c0219ad636377248bf7de74d89e3957ddeb24ee421b1f2ace5c |
mystic-0.4.3-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2931bdb02fab81cec8636a41761d2d9a5d8fc1edaf48a075bace594b7b66842f |
|
MD5 | 6c894eaa3c0733909383d9b76142c91f |
|
BLAKE2b-256 | 9d8909c3c457fb4285df5e643837570019d6a905dc4d8843f40d42c043a05436 |