public class ParameterDifferentiableCostMinimizer extends AbstractMinimizerBasedParameterCostMinimizer<GradientDescendable,DifferentiableEvaluator<Vector,java.lang.Double,Vector>>
FunctionMinimizerBFGS
to find locally optimal parameters of, for
example, a DifferentiableFeedforwardNeuralNetwork
. Any first-order
derivative FunctionMinimizer
may be dropped into this class.
FunctionMinimizerBFGS
) to
solve virtually all problems. However, when there are too many parameters,
then Liu-Storey conjugate gradient (FunctionMinimizerLiuStorey
) is
another good choice.
GradientDescendableApproximator
)
or the derivative-free minimization routines, such as those used by
ParameterDerivativeFreeCostMinimizer
.FunctionMinimizer
,
ParameterDerivativeFreeCostMinimizer
,
Serialized FormModifier and Type | Class and Description |
---|---|
static class |
ParameterDifferentiableCostMinimizer.ParameterCostEvaluatorDerivativeBased
Function that maps the parameters of an object to its inputs, so that
minimization algorithms can tune the parameters of an object against
a cost function.
|
Modifier and Type | Field and Description |
---|---|
static FunctionMinimizer<Vector,java.lang.Double,DifferentiableEvaluator<? super Vector,java.lang.Double,Vector>> |
DEFAULT_FUNCTION_MINIMIZER
Default function minimizer,
FunctionMinimizerBFGS with LineMinimizerBacktracking
|
DEFAULT_COST_FUNCTION
DEFAULT_ITERATION, iteration
Constructor and Description |
---|
ParameterDifferentiableCostMinimizer()
Creates a new instance of ParameterDifferentiableCostMinimizer
|
ParameterDifferentiableCostMinimizer(FunctionMinimizer<Vector,java.lang.Double,? super DifferentiableEvaluator<Vector,java.lang.Double,Vector>> minimizer)
Creates a new instance of ParameterDerivativeFreeCostMinimizer
|
Modifier and Type | Method and Description |
---|---|
ParameterDifferentiableCostMinimizer |
clone()
This makes public the clone method on the
Object class and
removes the exception that it throws. |
ParameterDifferentiableCostMinimizer.ParameterCostEvaluatorDerivativeBased |
createInternalFunction()
Creates the internal function that maps the parameter set of
result as the input to the function, so that the minimization
algorithms can perturb this input in their minimization schemes.
|
getCostFunction, getObjectToOptimize, getPerformance, getResult, learn, setCostFunction, setObjectToOptimize, setResult
algorithmEnded, algorithmStarted, getAlgorithm, getIteration, getMaxIterations, isResultValid, readResolve, setAlgorithm, setMaxIterations, stepEnded, stepStarted, stop
addIterativeAlgorithmListener, fireAlgorithmEnded, fireAlgorithmStarted, fireStepEnded, fireStepStarted, getListeners, removeIterativeAlgorithmListener, setIteration, setListeners
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getMaxIterations, setMaxIterations
addIterativeAlgorithmListener, getIteration, removeIterativeAlgorithmListener
isResultValid, stop
public static final FunctionMinimizer<Vector,java.lang.Double,DifferentiableEvaluator<? super Vector,java.lang.Double,Vector>> DEFAULT_FUNCTION_MINIMIZER
public ParameterDifferentiableCostMinimizer()
public ParameterDifferentiableCostMinimizer(FunctionMinimizer<Vector,java.lang.Double,? super DifferentiableEvaluator<Vector,java.lang.Double,Vector>> minimizer)
minimizer
- Minimization algorithm used to find locally optimal parameterspublic ParameterDifferentiableCostMinimizer clone()
AbstractCloneableSerializable
Object
class and
removes the exception that it throws. Its default behavior is to
automatically create a clone of the exact type of object that the
clone is called on and to copy all primitives but to keep all references,
which means it is a shallow copy.
Extensions of this class may want to override this method (but call
super.clone()
to implement a "smart copy". That is, to target
the most common use case for creating a copy of the object. Because of
the default behavior being a shallow copy, extending classes only need
to handle fields that need to have a deeper copy (or those that need to
be reset). Some of the methods in ObjectUtil
may be helpful in
implementing a custom clone method.
Note: The contract of this method is that you must use
super.clone()
as the basis for your implementation.clone
in interface CloneableSerializable
clone
in class AbstractMinimizerBasedParameterCostMinimizer<GradientDescendable,DifferentiableEvaluator<Vector,java.lang.Double,Vector>>
public ParameterDifferentiableCostMinimizer.ParameterCostEvaluatorDerivativeBased createInternalFunction()
AbstractMinimizerBasedParameterCostMinimizer
createInternalFunction
in class AbstractMinimizerBasedParameterCostMinimizer<GradientDescendable,DifferentiableEvaluator<Vector,java.lang.Double,Vector>>