Gab*_*iel 5 python machine-learning mathematical-optimization scipy hyperparameters
我正在使用scipy.optimize.minimize来查找对使用的初始猜测相当敏感的 4D 函数的最小值。如果我稍微改变一下,解决方案就会发生很大的变化。
SO中已经有许多与此类似的问题(例如:1 , 2 , 3),但没有真正的答案。
在我的一个老问题中,zunzun.com 网站(显然不再在线)的开发人员之一解释了他们如何管理这个:
Zunzun.com 使用差分进化遗传算法 (DE) 找到初始参数估计值,然后将其传递给 scipy 中的 Levenberg-Marquardt 求解器。DE 本身实际上并不用作全局优化器,而是用作“初始参数猜测器”。
我发现最接近这个算法的是这个答案,其中一个for
块用于通过随机初始猜测多次调用最小化函数。这会生成多个最小化的解决方案,最后选择最好的(最小值)一个。
是否有类似于 zuzun dev 描述的已经在 Python 中实现的内容?
对于这样的问题没有通用的答案,因为最小化任意函数的问题是不可能解决的。你可以在特定类别的函数上做得更好或更糟,因此它是数学家的一个领域,分析你的函数可能是什么样子。
显然,您还可以使用数十种所谓的“元优化器”,它们只是一堆启发式方法,它们可能(或不)适用于您的特定应用程序。这些包括循环中的随机采样起点,使用遗传算法,或者 - 据我所知,这是最数学上合理的方法 - 使用贝叶斯优化。一般来说,这个想法是在尝试最小化函数的同时对函数进行建模,这样您就可以做出明智的猜测下次从哪里开始(这是比随机猜测或使用遗传算法/差异进化更高的抽象级别) . 因此,我会按以下方式订购这些方法
归档时间: |
|
查看次数: |
3536 次 |
最近记录: |