机器学习优化

计算科学 优化 算法 机器学习
2021-12-17 18:55:41

我有一个需要 100 多个系数和输出的函数x. 我想优化x.

运行模拟 50 000 次大约需要 15 分钟,但是,这是并行发生的 - 并且单独的 CPU 不会相互通信。

当我尝试通常的梯度下降方法时,我最终得到了一个我确信是局部最小值的东西。更有可能找到全局最大值的方法,例如模拟退火,我只能“线性”运行,所以我不能并行运行模拟,因此速度非常慢。

我在想机器学习在处理这种维度的数据时可能有一个潜在的解决方案,并且希望是一个易于访问的解决方案(阅读:我可以调用的函数)。我会运行很多训练集,然后让机器学习算法帮助识别和预测最大值(即使它不是全局的)。

我理解大多数机器学习问题的核心在于优化。但是,我似乎发现 mots 机器学习算法用于不同的通用目标(即分类、聚类、回归)。我不能轻易找到许多可以指导优化算法的东西。在这种情况下有什么帮助吗?

1个回答

从详细的仿真模型的结果中学习易于计算的模型,然后优化易于计算的模型的一般想法由来已久。易于计算的模型通常称为代理模型或响应面模型。一旦代理项可用,您可以使用传统的优化技术来找到代理项的最小值。回到原始的高保真模型并使用您获得的最佳参数重新运行它始终是一个好主意,以确保代理确实足够接近完整模型。

您可以使用神经网络作为代理,也可以使用其他类型的机器学习模型。在计算实践中,经常使用二次回归模型,因为它们可以变得凸,并且因为对代理进行优化非常容易。相比之下,由拟合神经网络计算的函数可能是非凸的,您的优化程序可能会陷入局部最小值。

请注意,对于 100 维空间,50,000 个样本非常小。使用深度神经网络,您需要一个正则化策略来避免过度拟合代理模型。

如果您的高保真模型使用某种蒙特卡罗算法,那么输出会有些嘈杂——请记住这一点以避免过度拟合结果。

在许多这样的情况下,一些参数相对无关紧要,而另一些参数很重要,但完全独立于其他参数。在优化一组较小的关键参数之前,使用筛选策略消除或修复这些参数通常是明智的。