【问题标题】:Minimization of known cost function without knowing original function在不知道原始函数的情况下最小化已知成本函数
【发布时间】:2019-12-02 11:03:26
【问题描述】:

我试图通过调整两个参数来使一个函数适合另一个函数。但我不知道这个函数的形式。我只有成本函数,因为该函数的计算使用了 LAMMPS(分子动力学)。我需要一些工具,我只能给出成本函数和我的猜测,然后它会最小化它。

我正在研究 SciPy 优化,但它看起来需要我没有的原始功能。

【问题讨论】:

  • 你是说梯度下降之类的吗?
  • 你的问题有点含糊,至少没有一些代码或对你到目前为止所拥有的更好的技术解释
  • 我有一组 Xs 和 Ys 的函数,它是在一个程序 (VASP) 中计算的,然后我必须通过调整两个参数从 LAMMPS 获得类似的函数(也是一组 Xs 和 Ys)。我可以计算它们之间的差异(成本函数),但我只需要一些东西来最小化这个成本函数。现在我没有任何代码。

标签: python scipy minimization scipy-optimize


【解决方案1】:

函数逼近算法需要您对数学模型的行为方式做出一些假设。

如果你从黑匣子的角度来看事情,可能会出现三种情况 -

X -> 模型 -> Y

  1. 您有 X 和 MODEL,但没有 Y;这是模拟
  2. 您有 MODEL 和 Y,但没有 X;这是优化
  3. 您有 X 和 Y,但您没有 MODEL;这是数学建模

但是有一个问题。你永远不能直接做 3.相反,您使用一种技巧将 3. 重构为 2.(优化问题)。诀窍是假设您的模型类似于 y=mx+c,然后找到新的输入 m 和 c 而不是找到模型。因此,我们可以改为 -

  1. 您有 (MODEL, X) 和 Y,但您没有 M,C(新输入);这也是优化。

(M,C) -> (模型 + X) -> Y

这意味着,即使你不知道输入函数,你也必须假设一些模型,然后估计参数,当调整时,让模型表现得尽可能接近输入函数。

基本上,您需要的是机器学习。你有输入,你有输出(或者你可以得到它们,但是用大量输出样本运行你的第一个函数),你有成本函数。假设一个模型,并对其进行训练以逼近您的输入函数。

如果您不确定要使用什么,请使用广义函数逼近器 AKA 神经网络。但要注意,它需要更多的数据来训练。

【讨论】:

  • 我有一组 Xs 和 Ys 的函数,它是在一个程序 (VASP) 中计算的,然后我必须通过调整两个参数从 LAMMPS 获得类似的函数(也是一组 Xs 和 Ys)。我可以计算它们之间的差异(成本函数),但我只需要一些东西来最小化这个成本函数。
  • 那么你有输入数据和输出数据吗?或者你有一个功能? (VASP)。你能详细说明一下吗?另外,您的成本函数在做什么?根据定义,成本函数采用 ACTUAL Y 和 PREDICTED/COMPUTED Y 并计算它们之间的差异。这就是你所拥有的吗?
  • 我有两组点(x 和 y 值),一组来自 VASP,我知道这是正确的。第二个来自 LAMMPS,我必须调整两个参数以使第二个参数像来自 VASP 的那样。作为成本函数,我使用它们之间的相关性。
  • 好的,根据您之前的评论提出更多问题。 1.“第二个”究竟是什么,你说你想调整2个参数以使'第二个'像VASP那样。 2.作为成本函数,您使用确切的相关性,您只提到“他们”。
  • 我使用函数值之间的相关性。我使用 scipy.spatial.distance.correlation 的相关性
猜你喜欢
  • 2011-05-30
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 2013-09-19
  • 2018-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多