#优化 #机器学习 #AI

最佳

数学优化和机器学习框架及算法

1 个不稳定版本

0.0.0 2023 年 9 月 27 日

402#ai

MIT 许可证

120KB
2.5K SLoC

Workflow Status

该包是实验性的。请期待仓库的频繁更新,包括破坏性变更和偶尔的发布。

最佳

数学优化和机器学习框架及算法。

最佳提供了一种可组合的框架,用于从优化角度进行数学优化和机器学习,除了算法实现。

该框架由运行器、优化器和问题组成,依赖关系如下:runner -> optimizer -> problem。大多数优化器可以支持许多问题,大多数运行器可以支持许多优化器。

问题定义了一个数学优化问题。优化器定义了解决问题的步骤,通常是无导数优化器作为状态转换的无限级数,逐步改进解。运行器定义了优化器的停止条件,并可能以其他方式影响优化序列。

示例

使用无导数优化器最小化“计数”问题

use optimal::{prelude::*, BinaryDerivativeFreeConfig};

println!(
    "{:?}",
    BinaryDerivativeFreeConfig::start_default_for(16, |point| {
        point.iter().filter(|x| **x).count() as f64
    })
    .argmin()
);

使用导数优化器最小化“球体”问题

use optimal::{prelude::*, RealDerivativeConfig};

println!(
    "{:?}",
    RealDerivativeConfig::start_default_for(
        2,
        std::iter::repeat(-10.0..=10.0).take(2),
        |point| point.iter().map(|x| x.powi(2)).sum(),
        |point| point.iter().map(|x| 2.0 * x).collect(),
    )
    .nth(100)
    .unwrap()
    .best_point()
);

对于更多配置参数的控制、优化过程的内省、序列化和可能提高性能的特定化,请参阅各个优化器包。

许可证:MIT

依赖项

~1–1.5MB
~31K SLoC