edu.stanford.nlp.optimization.StochasticCalculateMethods Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of stanford-parser Show documentation
Show all versions of stanford-parser Show documentation
Stanford Parser processes raw text in English, Chinese, German, Arabic, and French, and extracts constituency parse trees.
package edu.stanford.nlp.optimization;
/**
* This enumeratin was created to organize the selection of different methods for stochastic
* calculations. It was also created for use with Stochastic Meta Descent (SMDMinimizer) due
* to the need for Hessian Vector Products, and the inefficiency of continuing to calculate these
* vector products in other minimization methods like Stochastic Gradient Descent (SGDMinimizer)
*
* @author Alex Kleeman ([email protected])
*/
public enum StochasticCalculateMethods {
NoneSpecified(false),
/* Used for procedures like Stochastic Gradient Descent */
GradientOnly (false),
/* This is used with the Objective Function can handle calculations using Algorithmic Differentiation*/
AlgorithmicDifferentiation (true),
/* It is often more efficient to calculate the Finite difference within one single for loop,
if the objective function can handle this, this method should be used instead of
ExternalFiniteDifference
*/
IncorporatedFiniteDifference (true),
/* ExternalFiniteDifference uses two calls to the objective function to come up with an approximation of
the H.v
*/
ExternalFiniteDifference (false);
/*
*This boolean is true if the Objective Function is required to calculate the hessian vector product
* In the case of ExternalFiniteDifference this is false since two calls are made to the objective
* function.
*/
private boolean objFuncCalculatesHdotV;
StochasticCalculateMethods(boolean ObjectiveFunctionCalculatesHdotV){
this.objFuncCalculatesHdotV = ObjectiveFunctionCalculatesHdotV;
}
public boolean calculatesHessianVectorProduct(){
return objFuncCalculatesHdotV;
}
public static StochasticCalculateMethods parseMethod(String method) {
if (method.equalsIgnoreCase("AlgorithmicDifferentiation")){
return StochasticCalculateMethods.AlgorithmicDifferentiation;
} else if(method.equalsIgnoreCase("IncorporatedFiniteDifference")){
return StochasticCalculateMethods.IncorporatedFiniteDifference ;
} else if(method.equalsIgnoreCase("ExternalFinitedifference")){
return StochasticCalculateMethods.ExternalFiniteDifference ;
} else {
return null;
}
}
}