负对数似然最小化的参数约束

Constrain on parameters for Negative Log Likelihood Minimization

我正在尝试拟合一个 5 参数(a、b、c、d、e)模型,其中一个参数受另一个参数的约束,比方说,

0< d < 1

e < |d|

我目前正在使用zfit which as far as I know, uses iMinuit

我只创建了 zfit.Parameters 并设置了限制,使它们可以访问的范围有效,再说一遍:

d = zfit.Parameter('d', value=0.5, lower_limit=0.3, upper_limit=1.0, step_size=0.01)

e = zfit.Parameter('e', value=0.1, lower_limit=0.0, upper_limit=0.3, step_size=0.01)

到目前为止效果很好,但我认为这不是正确的做法。

所以我的问题是,处理这种约束的正确方法是什么?

干杯

我会谨慎使用这个限制,因为它们会阻止变量,理想情况下,它们应该远离最终值。

有两种方法可以达到你想要的效果:

  • 要么将“数学上”的约束强加为逻辑结果,那么使用组合参数(它是其他参数的函数)从另一个参数定义一个参数。如果可能,这应该是首选方式。
  • 另一种选择是用附加条款施加这种限制。但是,当您修改可能性时,这可能会产生影响。最小化器会找到一个最小值,但这可能不是您要查找的最小值。您可以使用的是 SimpleConstraints 并在违反上述任何一项时为可能性添加惩罚项(例如 tf.cast(tf.greater(d, 1), tf.float64) * 100.)。也许还要确保 minuit 是 运行 和 use_minuit_grad.