我有一个问题,需要找到最佳分布,使其通过一个函数后与已知表面匹配。我编写了一个脚本,根据一些参数生成分布,并输出一个指标,用于比较给定表面与已知表面的差异,但这个脚本运行时间不可忽略,因此我无法通过大量参数集来寻找最佳参数集。我研究了单纯形法,看起来是正确的方向,但它并不完全符合我的需求,因为我没有一组线性方程,也没有参数的约束条件,而是一个方法只提供单一输出(仅此而已)。谁能指导我如何解决这个问题?谢谢!
快速回顾一下我的过程/问题,我有一组参数(目前是2个,但稍后会扩展到更多),这些参数定义了一个分布。这个分布用于创建一个表面,与已知表面进行比较,并生成一个误差指标。我想找到最佳参数集,但由于时间限制,无法通过任意大量的参数来运行。
回答:
与您的问题一致的一种情况是,您有一个相当容易处理的概率分布,它生成一个未知值。这个未知值通过一个复杂且数学上不友好的过程生成一个观测值。您的表面对应于观测值上的观测概率分布。您会乐于找到那些能够很好地进行最小二乘拟合的参数,使理论和现实生活中的表面分布相匹配。
拟合过程的一个近似方法是,您在概率分布输出的空间中计算一个值网格。每组参数为这个网格上的每个点提供一个概率。不友好的过程将这里的每个网格点映射到表面空间中的最近网格点。最小二乘拟合是针对第一个网格计算的概率的二次函数,因为在表面上的网格点计算的概率是第一个网格中映射到比表面上的任何其他点更接近该点的那些值的概率之和。这意味着它有第一(甚至第二)导数,您可以计算。如果您的概率分布足够好,您可以使用链式法则来计算初始参数的最小二乘拟合的导数。这意味着您可以使用优化方法来计算最佳拟合参数,这些方法不仅需要计算要优化的函数,还需要其导数,这些方法通常比仅需要函数值的优化方法(如Nelder-Mead或Torczon单纯形法)更有效。参见例如http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math4/optim/package-summary.html。
另一种可能的方法是通过所谓的EM算法。这里的EM代表期望最大化。它可以用于寻找最大似然拟合,在某些情况下,如果您能看到一些实际上看不到的隐藏状态,问题会变得简单。在这种情况下,由初始分布产生的输出可能是这样一个隐藏状态。一个起点是http://www-prima.imag.fr/jlc/Courses/2002/ENSI2.RNRF/EM-tutorial.pdf。