Skip to content

Commit c1a20d2

Browse files
authored
Fides optimizer: clarify use of Hessian and FIM (#1706)
* try to clarify `hessian_update` * typo * review; clarify docstring
1 parent f0d3f39 commit c1a20d2

1 file changed

Lines changed: 20 additions & 6 deletions

File tree

pypesto/optimize/optimizer.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1700,9 +1700,15 @@ def __init__(
17001700
Optimizer options. See :meth:`fides.minimize.Optimizer.minimize`
17011701
and :class:`fides.constants.Options` for details.
17021702
hessian_update:
1703-
Hessian update strategy. If this is ``None``, a hybrid approximation
1704-
that switches from the ``problem.objective`` provided Hessian (
1705-
approximation) to a BFGS approximation will be used.
1703+
Hessian update strategy. Defaults to a BFGS approximation if
1704+
``problem.objective`` does not provide a Hessian. Otherwise, it is
1705+
assumed that the ``problem.objective`` Hessian is actually the
1706+
Fisher information matrix (FIM), and hence a Hessian approximation
1707+
strategy is the default, which uses the FIM initially but switches
1708+
to BFGS during later iterations.
1709+
If your ``problem.objective`` Hessian is actually the Hessian,
1710+
then use ``None`` to have Fides use the ``problem.objective``
1711+
Hessian for all iterations.
17061712
"""
17071713
super().__init__()
17081714

@@ -1762,15 +1768,23 @@ def minimize(
17621768

17631769
if self.hessian_update == "default":
17641770
if not problem.objective.has_hess:
1765-
warnings.warn(
1771+
logger.debug(
17661772
"Fides is using BFGS as hessian approximation, "
17671773
"as the problem does not provide a Hessian. "
1768-
"Specify a Hessian to use a more efficient "
1769-
"hybrid approximation scheme.",
1774+
"Specify a Hessian (or Fisher information matrix, to use "
1775+
"a more efficient hybrid approximation scheme. See the "
1776+
"docstring for `hessian_update` in the class constructor "
1777+
"for more details.",
17701778
stacklevel=1,
17711779
)
17721780
_hessian_update = fides.BFGS()
17731781
else:
1782+
logger.debug(
1783+
"A hybrid Hessian approximation strategy will be "
1784+
"employed. See the docstring for `hessian_update` in "
1785+
"the class constructor for more details.",
1786+
stacklevel=1,
1787+
)
17741788
_hessian_update = fides.HybridFixed()
17751789
else:
17761790
_hessian_update = self.hessian_update

0 commit comments

Comments
 (0)