Ограничение параметров для минимизации вероятности отрицательного журнала - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь соответствовать модели с 5 параметрами (a, b, c, d, e), где один из параметров ограничен другим, скажем,

0

e <| d | </p>

В настоящее время я использую zfit , который, насколько мне известно, использует 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)

До сих пор он работал хорошо, но я думаю, что это неправильный способ сделать это.

Итак, мой вопрос: как правильно справиться с такого рода ограничениями? ?

Ура

1 Ответ

1 голос
/ 12 июля 2020

Я бы использовал эти ограничения с осторожностью, поскольку они блокируют переменные, в идеале они должны быть далеко от конечного значения.

Есть два способа достичь желаемого:

  • либо накладывает ограничение «математически» как логическое следствие, поэтому определите один параметр из другого, используя составной параметр (который является функцией других параметров). Если возможно, это должен быть предпочтительный способ.
  • Другой вариант - наложить эти ограничения, по всей вероятности, с дополнительным условием. Однако это может иметь последствия, если вы измените вероятность. Минимайзер найдет минимум, но, возможно, это не тот минимум, который вы искали. Вы можете использовать SimpleConstraints и добавить штрафной термин к вероятности нарушения любого из вышеперечисленных (например, tf.cast(tf.greater(d, 1), tf.float64) * 100.). Возможно, также убедитесь, что minuit запускается с use_minuit_grad.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...