OpenNN
2.2
Open Neural Networks Library
|
#include <quasi_newton_method.h>
Classes | |
struct | QuasiNewtonMethodResults |
Public Types | |
enum | InverseHessianApproximationMethod { DFP, BFGS } |
Private Attributes | |
TrainingRateAlgorithm | training_rate_algorithm |
InverseHessianApproximationMethod | inverse_Hessian_approximation_method |
double | warning_parameters_norm |
double | warning_gradient_norm |
double | warning_training_rate |
double | error_parameters_norm |
double | error_gradient_norm |
double | error_training_rate |
double | minimum_parameters_increment_norm |
double | minimum_performance_increase |
double | performance_goal |
double | gradient_norm_goal |
size_t | maximum_generalization_performance_decreases |
size_t | maximum_iterations_number |
double | maximum_time |
bool | reserve_parameters_history |
bool | reserve_parameters_norm_history |
bool | reserve_performance_history |
bool | reserve_gradient_history |
bool | reserve_gradient_norm_history |
bool | reserve_inverse_Hessian_history |
bool | reserve_training_direction_history |
bool | reserve_training_rate_history |
bool | reserve_elapsed_time_history |
bool | reserve_generalization_performance_history |
Additional Inherited Members | |
Protected Attributes inherited from OpenNN::TrainingAlgorithm | |
PerformanceFunctional * | performance_functional_pointer |
size_t | display_period |
size_t | save_period |
std::string | neural_network_file_name |
bool | display |
This concrete class represents a quasi-Newton training algorithm for a performance functional of a neural network.
Definition at line 47 of file quasi_newton_method.h.
|
explicit |
Default constructor. It creates a quasi-Newton method training algorithm not associated to any performance functional. It also initializes the class members to their default values.
Definition at line 29 of file quasi_newton_method.cpp.
|
explicit |
Performance functional constructor. It creates a quasi-Newton method training algorithm associated to a performance functional. It also initializes the class members to their default values.
new_performance_functional_pointer | Pointer to a performance functional object. |
Definition at line 43 of file quasi_newton_method.cpp.
|
explicit |
XML constructor. It creates a quasi-Newton method training algorithm not associated to any performance functional. It also initializes the class members to their default values.
Definition at line 58 of file quasi_newton_method.cpp.
|
virtual |
Destructor. It does not delete any object.
Definition at line 70 of file quasi_newton_method.cpp.
Matrix< double > OpenNN::QuasiNewtonMethod::calculate_BFGS_inverse_Hessian | ( | const Vector< double > & | old_parameters, |
const Vector< double > & | parameters, | ||
const Vector< double > & | old_gradient, | ||
const Vector< double > & | gradient, | ||
const Matrix< double > & | old_inverse_Hessian | ||
) | const |
Returns an approximation of the inverse Hessian matrix according to the Broyden-Fletcher-Goldfarb-Shanno (BGFS) algorithm.
old_parameters | A previous set of parameters. |
old_gradient | The gradient of the objective function for that previous set of parameters. |
old_inverse_Hessian | The Hessian of the objective function for that previous set of parameters. |
parameters | Actual set of parameters. |
gradient | The gradient of the objective function for the actual set of parameters. |
Definition at line 1264 of file quasi_newton_method.cpp.
Matrix< double > OpenNN::QuasiNewtonMethod::calculate_DFP_inverse_Hessian | ( | const Vector< double > & | old_parameters, |
const Vector< double > & | parameters, | ||
const Vector< double > & | old_gradient, | ||
const Vector< double > & | gradient, | ||
const Matrix< double > & | old_inverse_Hessian | ||
) | const |
Returns an approximation of the inverse Hessian matrix according to the Davidon-Fletcher-Powel (DFP) algorithm.
old_parameters | A previous set of parameters. |
old_gradient | The gradient of the objective function for that previous set of parameters. |
old_inverse_Hessian | The Hessian of the objective function for that previous set of parameters. |
parameters | Actual set of parameters. |
gradient | The gradient of the objective function for the actual set of parameters. |
Definition at line 1113 of file quasi_newton_method.cpp.
Vector< double > OpenNN::QuasiNewtonMethod::calculate_gradient_descent_training_direction | ( | const Vector< double > & | gradient | ) | const |
Returns the gradient descent training direction, which is the negative of the normalized gradient.
gradient | Gradient vector. |
Definition at line 1061 of file quasi_newton_method.cpp.
Matrix< double > OpenNN::QuasiNewtonMethod::calculate_inverse_Hessian_approximation | ( | const Vector< double > & | old_parameters, |
const Vector< double > & | parameters, | ||
const Vector< double > & | old_gradient, | ||
const Vector< double > & | gradient, | ||
const Matrix< double > & | old_inverse_Hessian | ||
) | const |
Calculates an approximation of the inverse Hessian, accoring to the method used.
old_parameters | Another point of the objective function. |
parameters | Current point of the objective function |
old_gradient | Gradient at the other point. |
gradient | Gradient at the current point. |
old_inverse_Hessian | Inverse Hessian at the other point of the objective function. |
Definition at line 1010 of file quasi_newton_method.cpp.
Vector< double > OpenNN::QuasiNewtonMethod::calculate_training_direction | ( | const Vector< double > & | gradient, |
const Matrix< double > & | inverse_Hessian_approximation | ||
) | const |
Returns the quasi-Newton method training direction, which has been previously normalized.
gradient | Gradient vector. |
inverse_Hessian_approximation | Inverse Hessian approximation matrix. |
Definition at line 1050 of file quasi_newton_method.cpp.
|
virtual |
Loads a default training algorithm from a XML document.
document | TinyXML document containing the performance term members. |
Reimplemented from OpenNN::TrainingAlgorithm.
Definition at line 2712 of file quasi_newton_method.cpp.
const double & OpenNN::QuasiNewtonMethod::get_error_gradient_norm | ( | void | ) | const |
Returns the value for the norm of the gradient vector at wich an error message is written to the screen and the program exits.
Definition at line 189 of file quasi_newton_method.cpp.
const double & OpenNN::QuasiNewtonMethod::get_error_training_rate | ( | void | ) | const |
Returns the training rate value at wich the line minimization algorithm is assumed to fail when bracketing a minimum.
Definition at line 200 of file quasi_newton_method.cpp.
const double & OpenNN::QuasiNewtonMethod::get_gradient_norm_goal | ( | void | ) | const |
Returns the goal value for the norm of the objective function gradient. This is used as a stopping criterion when training a multilayer perceptron
Definition at line 242 of file quasi_newton_method.cpp.
const double & OpenNN::QuasiNewtonMethod::get_performance_goal | ( | void | ) | const |
Returns the goal value for the performance. This is used as a stopping criterion when training a multilayer perceptron
Definition at line 231 of file quasi_newton_method.cpp.
|
virtual |
Trains a neural network with an associated performance functional according to the quasi-Newton method. Training occurs according to the training operators, training parameters and stopping criteria.
Implements OpenNN::TrainingAlgorithm.
Definition at line 1707 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_display_period | ( | const size_t & | new_display_period | ) |
Sets a new number of iterations between the training showing progress.
new_display_period | Number of iterations between the training showing progress. |
Definition at line 975 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_error_gradient_norm | ( | const double & | new_error_gradient_norm | ) |
Sets a new value for the gradient vector norm at which an error message is written to the screen and the program exits.
new_error_gradient_norm | Error norm of gradient vector value. |
Definition at line 638 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_error_parameters_norm | ( | const double & | new_error_parameters_norm | ) |
Sets a new value for the parameters vector norm at which an error message is written to the screen and the program exits.
new_error_parameters_norm | Error norm of parameters vector value. |
Definition at line 607 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_error_training_rate | ( | const double & | new_error_training_rate | ) |
Sets a new training rate value at wich a the line minimization algorithm is assumed to fail when bracketing a minimum.
new_error_training_rate | Error training rate value. |
Definition at line 669 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_gradient_norm_goal | ( | const double & | new_gradient_norm_goal | ) |
Sets a new the goal value for the norm of the objective function gradient. This is used as a stopping criterion when training a multilayer perceptron
new_gradient_norm_goal | Goal value for the norm of the objective function gradient. |
Definition at line 772 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_inverse_Hessian_approximation_method | ( | const InverseHessianApproximationMethod & | new_inverse_Hessian_approximation_method | ) |
Sets a new inverse Hessian approximatation method value.
new_inverse_Hessian_approximation_method | Inverse Hessian approximation method value. |
Definition at line 399 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_inverse_Hessian_approximation_method | ( | const std::string & | new_inverse_Hessian_approximation_method_name | ) |
Sets a new method for approximating the inverse of the Hessian matrix from a string containing the name. Possible values are:
new_inverse_Hessian_approximation_method_name | Name of inverse Hessian approximation method. |
Definition at line 416 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_maximum_generalization_performance_decreases | ( | const size_t & | new_maximum_generalization_performance_decreases | ) |
Sets a new maximum number of generalization failures.
new_maximum_generalization_performance_decreases | Maximum number of iterations in which the generalization evalutation decreases. |
Definition at line 802 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_maximum_iterations_number | ( | const size_t & | new_maximum_iterations_number | ) |
Sets a maximum number of iterations for training.
new_maximum_iterations_number | Maximum number of iterations for training. |
Definition at line 815 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_maximum_time | ( | const double & | new_maximum_time | ) |
Sets a new maximum training time.
new_maximum_time | Maximum training time. |
Definition at line 828 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_minimum_parameters_increment_norm | ( | const double & | new_minimum_parameters_increment_norm | ) |
Sets a new value for the minimum parameters increment norm stopping criterion.
new_minimum_parameters_increment_norm | Value of norm of parameters increment norm used to stop training. |
Definition at line 699 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_minimum_performance_increase | ( | const double & | new_minimum_performance_increase | ) |
Sets a new minimum performance improvement during training.
new_minimum_performance_increase | Minimum improvement in the performance between two iterations. |
Definition at line 729 of file quasi_newton_method.cpp.
|
virtual |
Sets a pointer to a performance functional object to be associated to the quasi-Newton method object. It also sets that performance functional to the training rate algorithm.
new_performance_functional_pointer | Pointer to a performance functional object. |
Reimplemented from OpenNN::TrainingAlgorithm.
Definition at line 386 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_performance_goal | ( | const double & | new_performance_goal | ) |
Sets a new goal value for the performance. This is used as a stopping criterion when training a multilayer perceptron
new_performance_goal | Goal value for the performance. |
Definition at line 760 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_reserve_all_training_history | ( | const bool & | new_reserve_all_training_history | ) |
Makes the training history of all variables to reseved or not in memory.
new_reserve_all_training_history | True if the training history of all variables is to be reserved, false otherwise. |
Definition at line 445 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_reserve_elapsed_time_history | ( | const bool & | new_reserve_elapsed_time_history | ) |
Makes the elapsed time over the iterations to be reseved or not in memory. This is a vector.
new_reserve_elapsed_time_history | True if the elapsed time history vector is to be reserved, false otherwise. |
Definition at line 951 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_reserve_generalization_performance_history | ( | const bool & | new_reserve_generalization_performance_history | ) |
Makes the Generalization performance history to be reserved or not in memory. This is a vector.
new_reserve_generalization_performance_history | True if the Generalization performance history is to be reserved, false otherwise. |
Definition at line 963 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_reserve_gradient_history | ( | const bool & | new_reserve_gradient_history | ) |
Makes the gradient history vector of vectors to be reseved or not in memory.
new_reserve_gradient_history | True if the gradient history matrix is to be reserved, false otherwise. |
Definition at line 891 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_reserve_gradient_norm_history | ( | const bool & | new_reserve_gradient_norm_history | ) |
Makes the gradient norm history vector to be reseved or not in memory.
new_reserve_gradient_norm_history | True if the gradient norm history matrix is to be reserved, false otherwise. |
Definition at line 903 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_reserve_inverse_Hessian_history | ( | const bool & | new_reserve_inverse_Hessian_history | ) |
Sets the history of the inverse of the Hessian matrix to be reserved or not in memory. This is a vector of matrices.
new_reserve_inverse_Hessian_history | True if the inverse Hessian history is to be reserved, false otherwise. |
Definition at line 915 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_reserve_parameters_history | ( | const bool & | new_reserve_parameters_history | ) |
Makes the parameters history vector of vectors to be reseved or not in memory.
new_reserve_parameters_history | True if the parameters history vector of vectors is to be reserved, false otherwise. |
Definition at line 858 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_reserve_parameters_norm_history | ( | const bool & | new_reserve_parameters_norm_history | ) |
Makes the parameters norm history vector to be reseved or not in memory.
new_reserve_parameters_norm_history | True if the parameters norm history vector is to be reserved, false otherwise. |
Definition at line 869 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_reserve_performance_history | ( | const bool & | new_reserve_performance_history | ) |
Makes the performance history vector to be reseved or not in memory.
new_reserve_performance_history | True if the performance history vector is to be reserved, false otherwise. |
Definition at line 880 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_reserve_training_direction_history | ( | const bool & | new_reserve_training_direction_history | ) |
Makes the training direction history vector of vectors to be reseved or not in memory.
new_reserve_training_direction_history | True if the training direction history matrix is to be reserved, false otherwise. |
Definition at line 927 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_reserve_training_rate_history | ( | const bool & | new_reserve_training_rate_history | ) |
Makes the training rate history vector to be reseved or not in memory.
new_reserve_training_rate_history | True if the training rate history vector is to be reserved, false otherwise. |
Definition at line 939 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_warning_gradient_norm | ( | const double & | new_warning_gradient_norm | ) |
Sets a new value for the gradient vector norm at which a warning message is written to the screen.
new_warning_gradient_norm | Warning norm of gradient vector value. |
Definition at line 547 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_warning_parameters_norm | ( | const double & | new_warning_parameters_norm | ) |
Sets a new value for the parameters vector norm at which a warning message is written to the screen.
new_warning_parameters_norm | Warning norm of parameters vector value. |
Definition at line 516 of file quasi_newton_method.cpp.
void OpenNN::QuasiNewtonMethod::set_warning_training_rate | ( | const double & | new_warning_training_rate | ) |
Sets a new training rate value at wich a warning message is written to the screen during line minimization.
new_warning_training_rate | Warning training rate value. |
Definition at line 578 of file quasi_newton_method.cpp.
|
virtual |
Returns a default (empty) string matrix containing the members of the training algorithm object.
Reimplemented from OpenNN::TrainingAlgorithm.
Definition at line 2542 of file quasi_newton_method.cpp.
|
virtual |
Returns a XML-type string representation of this quasi-Newton method object. It contains the training methods and parameters chosen, as well as the stopping criteria and other user stuff concerning the quasi-Newton method object.
Reimplemented from OpenNN::TrainingAlgorithm.
Definition at line 2149 of file quasi_newton_method.cpp.
|
private |
Maximum number of iterations at which the generalization performance decreases. This is an early stopping method for improving generalization.
Definition at line 399 of file quasi_newton_method.h.
|
private |
Training rate algorithm object. It is used to calculate the step for the quasi-Newton training direction.
Definition at line 346 of file quasi_newton_method.h.