Limited-Memory Broyden, Fletcher, Goldfarb, Shannon algorithm for unconstrained optimization. More...
#include <shark/Algorithms/GradientDescent/LBFGS.h>
Public Member Functions | |
LBFGS () | |
std::string | name () const |
From INameable: return the class name. More... | |
void | setHistCount (unsigned int numhist) |
Specify the amount of steps to be memorized and used to find the L-BFGS direction. More... | |
SHARK_EXPORT_SYMBOL void | read (InArchive &archive) |
Read the component from the supplied archive. More... | |
SHARK_EXPORT_SYMBOL void | write (OutArchive &archive) const |
Write the component to the supplied archive. More... | |
![]() | |
SHARK_EXPORT_SYMBOL | AbstractLineSearchOptimizer () |
SHARK_EXPORT_SYMBOL void | init (ObjectiveFunctionType &objectiveFunction, SearchPointType const &startingPoint) |
initializes the optimizer using a predefined starting point More... | |
SHARK_EXPORT_SYMBOL void | step (ObjectiveFunctionType const &objectiveFunction) |
Carry out one step of the optimizer for the supplied objective function. More... | |
LineSearch const & | lineSearch () const |
LineSearch & | lineSearch () |
![]() | |
virtual void | init (ObjectiveFunctionType &function) |
virtual const SolutionType & | solution () const |
returns the current solution of the optimizer More... | |
![]() | |
const Features & | features () const |
virtual void | updateFeatures () |
bool | requiresValue () const |
bool | requiresFirstDerivative () const |
bool | requiresSecondDerivative () const |
bool | canSolveConstrained () const |
bool | requiresClosestFeasible () const |
virtual | ~AbstractOptimizer () |
Empty virtual d'tor. More... | |
![]() | |
virtual | ~INameable () |
![]() | |
virtual | ~ISerializable () |
Virtual d'tor. More... | |
void | load (InArchive &archive, unsigned int version) |
Versioned loading of components, calls read(...). More... | |
void | save (OutArchive &archive, unsigned int version) const |
Versioned storing of components, calls write(...). More... | |
BOOST_SERIALIZATION_SPLIT_MEMBER () | |
Protected Member Functions | |
SHARK_EXPORT_SYMBOL void | initModel () |
Initializes the internal model. More... | |
SHARK_EXPORT_SYMBOL void | computeSearchDirection () |
Updates the Model and computes the next search direction. More... | |
SHARK_EXPORT_SYMBOL void | updateHist (RealVector &y, RealVector &step) |
Stores another step and searchDirection, discarding the oldest on if necessary. More... | |
SHARK_EXPORT_SYMBOL void | getDirection (RealVector &searchDirection) |
Get the LBFGS direction. More... | |
![]() | |
void | checkFeatures (ObjectiveFunctionType const &objectiveFunction) |
Convenience function that checks whether the features of the supplied objective function match with the required features of the optimizer. More... | |
Protected Attributes | |
double | m_updThres |
Threshold for when to update history. More... | |
unsigned int | m_numHist |
Number of steps to use for LBFGS. More... | |
double | m_hdiag |
std::deque< RealVector > | m_steps |
std::deque< RealVector > | m_gradientDifferences |
![]() | |
LineSearch | m_linesearch |
used line search method. More... | |
std::size_t | m_dimension |
number of parameters More... | |
double | m_initialStepLength |
Initial step length to begin with the line search. More... | |
RealVector | m_derivative |
gradient of m_best.point More... | |
RealVector | m_searchDirection |
search direction of next step More... | |
RealVector | m_lastPoint |
previous point More... | |
RealVector | m_lastDerivative |
gradient of the previous point More... | |
double | m_lastValue |
value of the previous point More... | |
![]() | |
SolutionType | m_best |
current solution of the optimizer More... | |
![]() | |
Features | m_features |
Additional Inherited Members | |
![]() | |
typedef base_type::SearchPointType | SearchPointType |
typedef base_type::SolutionType | SolutionType |
typedef base_type::ResultType | ResultType |
typedef base_type::ObjectiveFunctionType | ObjectiveFunctionType |
![]() | |
enum | Feature |
Models features that the optimizer requires from the objective function. More... | |
typedef RealVector | SearchPointType |
typedef double | ResultType |
typedef SingleObjectiveResultSet< RealVector > | SolutionType |
typedef AbstractObjectiveFunction< RealVector, ResultType > | ObjectiveFunctionType |
typedef TypedFlags< Feature > | Features |
typedef TypedFeatureNotAvailableException< Feature > | FeatureNotAvailableException |
Limited-Memory Broyden, Fletcher, Goldfarb, Shannon algorithm for unconstrained optimization.
|
protectedvirtual |
Updates the Model and computes the next search direction.
After a step was performed, this method is called to compute the next search direction. This usually involves updating the internal model using the new and old step information. Afterwards m_searchDirection should contain the next search direction.
Implements shark::AbstractLineSearchOptimizer.
|
protected |
Get the LBFGS direction.
This approximates the inverse hessian multiplied by the gradient. This uses the rho, alpha and beta vectors. Description of these can be seen in ie. the wiki page of LBFGS.
Referenced by setHistCount().
|
protectedvirtual |
Initializes the internal model.
Line Search Methods use a Model to search for the next search direction. The model is initialized during init()
Implements shark::AbstractLineSearchOptimizer.
|
inlinevirtual |
From INameable: return the class name.
Reimplemented from shark::INameable.
|
virtual |
Read the component from the supplied archive.
[in,out] | archive | The archive to read from. |
Reimplemented from shark::AbstractLineSearchOptimizer.
Referenced by setHistCount().
|
inline |
Specify the amount of steps to be memorized and used to find the L-BFGS direction.
numhist | The amount of steps to use. |
Definition at line 64 of file LBFGS.h.
References getDirection(), m_numHist, read(), SHARK_CHECK, SHARK_EXPORT_SYMBOL, shark::AbstractLineSearchOptimizer::step(), updateHist(), and write().
|
protected |
Stores another step and searchDirection, discarding the oldest on if necessary.
step | Last performed step |
y | difference in gradients |
Referenced by setHistCount().
|
virtual |
Write the component to the supplied archive.
[in,out] | archive | The archive to write to. |
Reimplemented from shark::AbstractLineSearchOptimizer.
Referenced by setHistCount().
|
protected |
|
protected |
Number of steps to use for LBFGS.
Definition at line 89 of file LBFGS.h.
Referenced by setHistCount().
|
protected |