Skip to content

Add routines for automatic transformation of parameters #908

@TorkelE

Description

@TorkelE

In certain situations, you want to transform your optimisation space. E.g. when fitting rates for chemical reaction networks (a parameter fitting problem), you typically fir the log10 of the rates, not the rates (tow advantages: It naturally imposes non-negativity and also makes fitting easier as parameters typically varies naturally over orders of magnitude).

This obviously something that the user can encode in their cost function, and e.g. something PEtab can handle automatically (https://sebapersson.github.io/PEtab.jl/stable/API/#PEtab.PEtabParameter). However, if it is possible to encode transformed functions in Optimisation, this would make things way easier (it would also save the user from having to juggle different scales back and fourth, which is an utter mess).

It would be useful wth both ready made transforms, and the option for the user to designate their own (both across all optimisation variables, but also for individual ones). Some useful ones would be:

  • Log10 transform.
  • Sigmoidal transform (basically a way to turn a bounded value (u1 < u < u2) to become unbounded (for e.g. Adam optimisation).
  • Some kind of tanh transform (combining log10 transform and encoding of bounds into the optimisation variable).

Obviously this is no trivial undertaking, but it would definitely be very useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions