Adjoint FrΓ©chet derivative #
adjFDeriv π f x = (fderiv π f x).adjoint
The main purpose of defining adjFDeriv
is to compute gradient f x = adjFDeriv π f x 1
.
The advantage of working with adjFDeriv
is that we can formulate composition theorem.
The reason why we do not want to compute fderiv
and then adjoint
is that to compute fderiv π f
or adjoint f
we decompose f = fβ β ... β fβ
and then apply composition theorem. The problem is
that this decomposition has to be done differently for fderiv
and adjoint
. The problem is
that when working with fderiv
the natural product type is X Γ Y
but when working with adjoint
the natural product is WithLp 2 (X Γ Y)
.
For example:
Adjoint FrΓ©chet derivative
adjFDeriv π f x = (fderiv π f x).adjoint
The main purpose of this function is to compute gradient f x = adjFDeriv π f x 1
. We provide
easy to use API to compute adjFDeriv
.
Instances For
Function f
has adjoint FrΓ©chet derivative f'
at x
f' = adjFDeriv π f x = (fderiv π f x).adjoint
The main purpose is to compute gradient f x = f' 1 = adjFDeriv π f x 1
.
This structure is analogous to HasFDerivAt
and it is often easier to use as theorems for
HasAdjFDeriv
do not require differentiability assumptions unlike theorems for adjFDeriv
.
- differentiableAt : DifferentiableAt π f x
- hasAdjoint_fderiv : HasAdjoint π (β(fderiv π f x)) f'