Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages |
#include <itkStandardStochasticGradientDescentOptimizer.h>
This class implements a gradient descent optimizer with a decaying gain.
If is a costfunction that has to be minimised, the following iterative algorithm is used to find the optimal parameters :
The gain at each iteration is defined by:
.
It is very suitable to be used in combination with a stochastic estimate of the gradient . For example, in image registration problems it is often advantageous to compute the metric derivative ( ) on a new set of randomly selected image samples in each iteration. You may set the parameter NewSamplesEveryIteration
to "true"
to achieve this effect. For more information on this strategy, you may have a look at:
S. Klein, M. Staring, J.P.W. Pluim, "Comparison of gradient approximation techniques for optimisation of mutual information in nonrigid registration", in: SPIE Medical Imaging: Image Processing, Editor(s): J.M. Fitzpatrick, J.M. Reinhardt, SPIE press, 2005, vol. 5747, Proceedings of SPIE, pp. 192-203.
Or:
S. Klein, M. Staring, J.P.W. Pluim, "Evaluation of Optimization Methods for Nonrigid Medical Image Registration using Mutual Information and B-Splines" IEEE Transactions on Image Processing, 2007, nr. 16(12), December.
This class also serves as a base class for other StochasticGradient type algorithms, like the AcceleratedStochasticGradientOptimizer.
Definition at line 64 of file itkStandardStochasticGradientDescentOptimizer.h.
Public Types | |
typedef SmartPointer< const Self > | ConstPointer |
typedef Superclass::CostFunctionType | CostFunctionType |
typedef Superclass::DerivativeType | DerivativeType |
typedef Superclass::MeasureType | MeasureType |
typedef Superclass::ParametersType | ParametersType |
typedef SmartPointer< Self > | Pointer |
typedef Superclass::ScaledCostFunctionPointer | ScaledCostFunctionPointer |
typedef Superclass::ScaledCostFunctionType | ScaledCostFunctionType |
typedef Superclass::ScalesType | ScalesType |
typedef StandardStochasticGradientOptimizer | Self |
typedef Superclass::StopConditionType | StopConditionType |
typedef StochasticGradientDescentOptimizer | Superclass |
Public Types inherited from itk::StochasticGradientDescentOptimizer | |
typedef SmartPointer< const Self > | ConstPointer |
typedef Superclass::CostFunctionType | CostFunctionType |
typedef Superclass::DerivativeType | DerivativeType |
typedef Superclass::MeasureType | MeasureType |
typedef Superclass::ParametersType | ParametersType |
typedef SmartPointer< Self > | Pointer |
typedef Superclass::ScaledCostFunctionPointer | ScaledCostFunctionPointer |
typedef Superclass::ScaledCostFunctionType | ScaledCostFunctionType |
typedef Superclass::ScalesType | ScalesType |
typedef StochasticGradientDescentOptimizer | Self |
enum | StopConditionType { MaximumNumberOfIterations , MetricError , MinimumStepSize , InvalidDiagonalMatrix , GradientMagnitudeTolerance , LineSearchError } |
typedef ScaledSingleValuedNonLinearOptimizer | Superclass |
Public Types inherited from itk::ScaledSingleValuedNonLinearOptimizer | |
typedef SmartPointer< const Self > | ConstPointer |
typedef Superclass::CostFunctionType | CostFunctionType |
typedef Superclass::DerivativeType | DerivativeType |
typedef Superclass::MeasureType | MeasureType |
typedef Superclass::ParametersType | ParametersType |
typedef SmartPointer< Self > | Pointer |
typedef ScaledCostFunctionType::Pointer | ScaledCostFunctionPointer |
typedef ScaledSingleValuedCostFunction | ScaledCostFunctionType |
typedef NonLinearOptimizer::ScalesType | ScalesType |
typedef ScaledSingleValuedNonLinearOptimizer | Self |
typedef SingleValuedNonLinearOptimizer | Superclass |
Public Member Functions | |
void | AdvanceOneStep (void) override |
virtual const char * | GetClassName () const |
virtual double | GetCurrentTime () const |
virtual double | GetInitialTime () const |
virtual double | GetParam_a () const |
virtual double | GetParam_A () const |
virtual double | GetParam_alpha () const |
virtual double | GetParam_beta () const |
virtual void | ResetCurrentTimeToInitialTime (void) |
virtual void | SetInitialTime (double _arg) |
virtual void | SetParam_a (double _arg) |
virtual void | SetParam_A (double _arg) |
virtual void | SetParam_alpha (double _arg) |
virtual void | SetParam_beta (double _arg) |
void | StartOptimization (void) override |
Public Member Functions inherited from itk::StochasticGradientDescentOptimizer | |
virtual void | AdvanceOneStep (void) |
virtual const char * | GetClassName () const |
virtual unsigned int | GetCurrentInnerIteration () const |
virtual unsigned int | GetCurrentIteration () const |
virtual const DerivativeType & | GetGradient () |
virtual unsigned int | GetLBFGSMemory () const |
virtual const double & | GetLearningRate () |
virtual const unsigned long & | GetNumberOfInnerIterations () |
virtual const unsigned long & | GetNumberOfIterations () |
virtual const DerivativeType & | GetPreviousGradient () |
virtual const ParametersType & | GetPreviousPosition () |
virtual const DerivativeType & | GetSearchDir () |
virtual const StopConditionType & | GetStopCondition () |
virtual const double & | GetValue () |
virtual void | MetricErrorResponse (ExceptionObject &err) |
virtual void | ResumeOptimization (void) |
virtual void | SetLearningRate (double _arg) |
virtual void | SetNumberOfIterations (unsigned long _arg) |
void | SetNumberOfWorkUnits (ThreadIdType numberOfThreads) |
virtual void | SetPreviousGradient (DerivativeType _arg) |
virtual void | SetPreviousPosition (ParametersType _arg) |
virtual void | SetUseEigen (bool _arg) |
virtual void | SetUseMultiThread (bool _arg) |
virtual void | SetUseOpenMP (bool _arg) |
void | StartOptimization (void) override |
virtual void | StopOptimization (void) |
Public Member Functions inherited from itk::ScaledSingleValuedNonLinearOptimizer | |
virtual const char * | GetClassName () const |
const ParametersType & | GetCurrentPosition (void) const override |
virtual bool | GetMaximize () const |
virtual const ScaledCostFunctionType * | GetScaledCostFunction () |
virtual const ParametersType & | GetScaledCurrentPosition () |
bool | GetUseScales (void) const |
virtual void | InitializeScales (void) |
virtual void | MaximizeOff () |
virtual void | MaximizeOn () |
void | SetCostFunction (CostFunctionType *costFunction) override |
virtual void | SetMaximize (bool _arg) |
virtual void | SetUseScales (bool arg) |
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::StochasticGradientDescentOptimizer | |
static Pointer | New () |
Static Public Member Functions inherited from itk::ScaledSingleValuedNonLinearOptimizer | |
static Pointer | New () |
Protected Attributes | |
double | m_CurrentTime |
bool | m_UseConstantStep |
Protected Attributes inherited from itk::StochasticGradientDescentOptimizer | |
unsigned long | m_CurrentInnerIteration |
unsigned long | m_CurrentIteration |
DerivativeType | m_Gradient |
unsigned long | m_LBFGSMemory |
double | m_LearningRate |
ParametersType | m_MeanSearchDir |
unsigned long | m_NumberOfInnerIterations |
unsigned long | m_NumberOfIterations |
DerivativeType | m_PrePreviousGradient |
ParametersType | m_PrePreviousSearchDir |
DerivativeType | m_PreviousGradient |
ParametersType | m_PreviousPosition |
ParametersType | m_PreviousSearchDir |
ParametersType | m_SearchDir |
bool | m_Stop |
StopConditionType | m_StopCondition |
ThreaderType::Pointer | m_Threader |
double | m_Value |
Protected Attributes inherited from itk::ScaledSingleValuedNonLinearOptimizer | |
ScaledCostFunctionPointer | m_ScaledCostFunction |
ParametersType | m_ScaledCurrentPosition |
Private Member Functions | |
void | operator= (const Self &) |
StandardStochasticGradientOptimizer (const Self &) | |
Private Attributes | |
double | m_InitialTime |
double | m_Param_a |
double | m_Param_A |
double | m_Param_alpha |
double | m_Param_beta |
Additional Inherited Members | |
Protected Types inherited from itk::StochasticGradientDescentOptimizer | |
typedef itk::PlatformMultiThreader | ThreaderType |
typedef ThreaderType::WorkUnitInfo | ThreadInfoType |
typedef SmartPointer<const Self> itk::StandardStochasticGradientOptimizer::ConstPointer |
Definition at line 73 of file itkStandardStochasticGradientDescentOptimizer.h.
typedef Superclass::CostFunctionType itk::StandardStochasticGradientOptimizer::CostFunctionType |
Definition at line 85 of file itkStandardStochasticGradientDescentOptimizer.h.
typedef Superclass::DerivativeType itk::StandardStochasticGradientOptimizer::DerivativeType |
Definition at line 84 of file itkStandardStochasticGradientDescentOptimizer.h.
typedef Superclass::MeasureType itk::StandardStochasticGradientOptimizer::MeasureType |
Typedefs inherited from the superclass.
Definition at line 82 of file itkStandardStochasticGradientDescentOptimizer.h.
typedef Superclass::ParametersType itk::StandardStochasticGradientOptimizer::ParametersType |
Definition at line 83 of file itkStandardStochasticGradientDescentOptimizer.h.
typedef SmartPointer<Self> itk::StandardStochasticGradientOptimizer::Pointer |
Definition at line 72 of file itkStandardStochasticGradientDescentOptimizer.h.
typedef Superclass::ScaledCostFunctionPointer itk::StandardStochasticGradientOptimizer::ScaledCostFunctionPointer |
Definition at line 88 of file itkStandardStochasticGradientDescentOptimizer.h.
typedef Superclass::ScaledCostFunctionType itk::StandardStochasticGradientOptimizer::ScaledCostFunctionType |
Definition at line 87 of file itkStandardStochasticGradientDescentOptimizer.h.
typedef Superclass::ScalesType itk::StandardStochasticGradientOptimizer::ScalesType |
Definition at line 86 of file itkStandardStochasticGradientDescentOptimizer.h.
Standard ITK.
Definition at line 70 of file itkStandardStochasticGradientDescentOptimizer.h.
typedef Superclass::StopConditionType itk::StandardStochasticGradientOptimizer::StopConditionType |
Definition at line 89 of file itkStandardStochasticGradientDescentOptimizer.h.
Definition at line 71 of file itkStandardStochasticGradientDescentOptimizer.h.
|
protected |
|
inlineoverrideprotected |
Definition at line 137 of file itkStandardStochasticGradientDescentOptimizer.h.
|
private |
|
overridevirtual |
Sets a new LearningRate before calling the Superclass' implementation, and updates the current time.
Reimplemented from itk::StochasticGradientDescentOptimizer.
|
protectedvirtual |
Function to compute the step size for SGD at time/iteration k.
|
protectedvirtual |
Function to compute the step size for SQN at time/iteration k.
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::StochasticGradientDescentOptimizer.
Reimplemented in elastix::AdaptiveStochasticLBFGS< TElastix >, and itk::AdaptiveStochasticLBFGSOptimizer.
|
virtual |
Get the current time. This equals the CurrentIteration in this base class but may be different in inheriting classes, such as the AccelerateStochasticGradient
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
static |
Method for creation through the object factory.
|
private |
|
inlinevirtual |
Set the current time to the initial time. This can be useful to 'reset' the optimisation, for example if you changed the cost function while optimisation. Be careful with this function.
Definition at line 129 of file itkStandardStochasticGradientDescentOptimizer.h.
|
virtual |
Set/Get the initial time. Should be >=0. This function is superfluous, since Param_A does effectively the same. However, in inheriting classes, like the AcceleratedStochasticGradient the initial time may have a different function than Param_A. Default: 0.0
|
virtual |
Set/Get a.
|
virtual |
Set/Get A.
|
virtual |
Set/Get alpha.
|
virtual |
Set/Get beta.
|
override |
Set current time to 0 and call superclass' implementation.
|
protectedvirtual |
Function to update the current time This function just increments the CurrentTime by 1. Inheriting functions may implement something smarter, for example, dependent on the progress
Reimplemented in itk::AdaptiveStochasticLBFGSOptimizer.
|
protected |
The current time, which serves as input for Compute_a
Definition at line 152 of file itkStandardStochasticGradientDescentOptimizer.h.
|
private |
Settings
Definition at line 169 of file itkStandardStochasticGradientDescentOptimizer.h.
|
private |
Parameters, as described by Spall.
Definition at line 163 of file itkStandardStochasticGradientDescentOptimizer.h.
|
private |
Definition at line 165 of file itkStandardStochasticGradientDescentOptimizer.h.
|
private |
Definition at line 166 of file itkStandardStochasticGradientDescentOptimizer.h.
|
private |
Definition at line 164 of file itkStandardStochasticGradientDescentOptimizer.h.
|
protected |
Constant step size or others, different value of k.
Definition at line 155 of file itkStandardStochasticGradientDescentOptimizer.h.
Generated on 1667476801 for elastix by 1.9.4 |