OpenNN
Open-source neural networks library
Loading...
Searching...
No Matches
quasi_newton_method.h
Go to the documentation of this file.
1// OpenNN: Open Neural Networks Library
2// www.opennn.net
3//
4// Q U A S I - N E W T O N M E T H O D C L A S S H E A D E R
5//
6// Artificial Intelligence Techniques SL
7// artelnics@artelnics.com
8
9#pragma once
10
11#include "loss.h"
12#include "optimizer.h"
13#include "forward_propagation.h"
14#include "back_propagation.h"
15
16namespace opennn
17{
18
20class QuasiNewtonMethod final : public Optimizer
21{
22
23public:
24
37
42 void set_minimum_loss_decrease(const float new_minimum_loss_decrease) { minimum_loss_decrease = new_minimum_loss_decrease; }
45
49 void from_JSON(const JsonDocument&) override;
50
52 void to_JSON(JsonWriter&) const override;
53
54private:
55
56 void calculate_inverse_hessian(OptimizerData&) const;
57
58 pair<float, float> calculate_directional_point(const Batch&,
62 float);
63
64 float first_learning_rate = 0.01f;
65
66 // Stopping criteria
67
68 float minimum_loss_decrease = EPSILON;
69
70 // Optimizer-specific state (not shared across optimizers, so not in OptimizerData)
71
72 float training_slope = 0.0f;
73 float learning_rate = 0.0f;
74 float old_learning_rate = 0.0f;
75};
76
77}
78
79// OpenNN: Open Neural Networks Library.
80// Copyright(C) 2005-2026 Artificial Intelligence Techniques, SL.
81// Licensed under the GNU Lesser General Public License v2.1 or later.
Definition json.h:72
Definition json.h:85
Unified loss container supporting MSE, cross-entropy, Minkowski, weighted, and regularized variants.
Definition loss.h:24
Optimizer(Loss *=nullptr)
Constructs an optimizer optionally bound to a Loss instance.
TrainingResults train() override
Runs the quasi-Newton training loop and returns the recorded error history.
DataSlot
Slot indices into the optimizer scratch buffer (BFGS state).
Definition quasi_newton_method.h:26
@ InverseHessian
Definition quasi_newton_method.h:34
@ OldInverseHessian
Definition quasi_newton_method.h:35
@ ParameterUpdates
Definition quasi_newton_method.h:29
@ BFGS
Definition quasi_newton_method.h:33
@ OldParameters
Definition quasi_newton_method.h:27
@ ParameterDifferences
Definition quasi_newton_method.h:28
@ GradientDifference
Definition quasi_newton_method.h:31
@ OldGradient
Definition quasi_newton_method.h:30
@ OldInverseHessianDotGradientDifference
Definition quasi_newton_method.h:32
void to_JSON(JsonWriter &) const override
Serializes hyperparameters to JSON.
QuasiNewtonMethod(Loss *=nullptr)
Constructs the quasi-Newton optimizer optionally bound to a Loss instance.
void set_minimum_loss_decrease(const float new_minimum_loss_decrease)
Definition quasi_newton_method.h:42
void update_parameters(const Batch &, ForwardPropagation &, BackPropagation &, OptimizerData &)
Applies one BFGS update: line search along the search direction, then refreshes the inverse Hessian.
void from_JSON(const JsonDocument &) override
Restores hyperparameters from a JSON document.
void set_default()
Resets all hyperparameters and stopping criteria to library defaults.
Definition adaptive_moment_estimation.h:14
constexpr float EPSILON
Definition pch.h:155
Workspace holding parameter gradients and per-layer deltas during a backward pass.
Definition back_propagation.h:21
Minibatch container holding pinned host/device buffers and views into a Dataset.
Definition batch.h:19
Workspace holding the activations of every layer during a forward pass.
Definition forward_propagation.h:20
Per-optimizer scratch state (moments, directions, iteration counter) backing the update step.
Definition optimizer.h:182
History and final metrics produced by a training run.
Definition optimizer.h:204