cc.mallet.fst
Class CRFTrainerByValueGradients

java.lang.Object
  extended by cc.mallet.fst.TransducerTrainer
      extended by cc.mallet.fst.CRFTrainerByValueGradients
All Implemented Interfaces:
TransducerTrainer.ByOptimization

public class CRFTrainerByValueGradients
extends TransducerTrainer
implements TransducerTrainer.ByOptimization

A CRF trainer that can combine multiple objective functions, each represented by a Optmizable.ByValueGradient.


Nested Class Summary
 class CRFTrainerByValueGradients.OptimizableCRF
          An optimizable CRF that contains a collection of objective functions.
 
Nested classes/interfaces inherited from class cc.mallet.fst.TransducerTrainer
TransducerTrainer.ByIncrements, TransducerTrainer.ByInstanceIncrements, TransducerTrainer.ByOptimization
 
Field Summary
static int DEFAULT_MAX_RESETS
           
 
Constructor Summary
CRFTrainerByValueGradients(CRF crf, Optimizable.ByGradientValue[] optimizableByValueGradientObjects)
           
 
Method Summary
 CRF getCRF()
           
 int getIteration()
           
 Optimizable.ByGradientValue[] getOptimizableByGradientValueObjects()
           
 CRFTrainerByValueGradients.OptimizableCRF getOptimizableCRF(InstanceList trainingSet)
          Returns an optimizable CRF that contains a collection of objective functions.
 Optimizer getOptimizer()
           
 Optimizer getOptimizer(InstanceList trainingSet)
          Returns a L-BFGS optimizer, creating if one doesn't exist.
 Transducer getTransducer()
           
 boolean isConverged()
          Returns true if training converged, false otherwise.
 boolean isFinishedTraining()
          Returns true if training converged, false otherwise.
 void setMaxResets(int maxResets)
          Sets the max.
 boolean train(InstanceList trainingSet, int numIterations)
          Trains a CRF until convergence or specified number of iterations, whichever is earlier.
 boolean train(InstanceList training, int numIterationsPerProportion, double[] trainingProportions)
          Train a CRF on various-sized subsets of the data.
 boolean trainIncremental(InstanceList training)
          Trains a CRF until convergence.
 
Methods inherited from class cc.mallet.fst.TransducerTrainer
addEvaluator, addEvaluators, removeEvaluator, runEvaluators, train
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_MAX_RESETS

public static final int DEFAULT_MAX_RESETS
See Also:
Constant Field Values
Constructor Detail

CRFTrainerByValueGradients

public CRFTrainerByValueGradients(CRF crf,
                                  Optimizable.ByGradientValue[] optimizableByValueGradientObjects)
Method Detail

getTransducer

public Transducer getTransducer()
Specified by:
getTransducer in class TransducerTrainer

getCRF

public CRF getCRF()

getOptimizer

public Optimizer getOptimizer()
Specified by:
getOptimizer in interface TransducerTrainer.ByOptimization

isConverged

public boolean isConverged()
Returns true if training converged, false otherwise.


isFinishedTraining

public boolean isFinishedTraining()
Returns true if training converged, false otherwise.

Specified by:
isFinishedTraining in class TransducerTrainer

getIteration

public int getIteration()
Specified by:
getIteration in class TransducerTrainer

getOptimizableByGradientValueObjects

public Optimizable.ByGradientValue[] getOptimizableByGradientValueObjects()

getOptimizableCRF

public CRFTrainerByValueGradients.OptimizableCRF getOptimizableCRF(InstanceList trainingSet)
Returns an optimizable CRF that contains a collection of objective functions.

If one doesn't exist then creates one and sets the optimizer to null.


getOptimizer

public Optimizer getOptimizer(InstanceList trainingSet)
Returns a L-BFGS optimizer, creating if one doesn't exist.

Also creates an optimizable CRF if required.


trainIncremental

public boolean trainIncremental(InstanceList training)
Trains a CRF until convergence.


train

public boolean train(InstanceList trainingSet,
                     int numIterations)
Trains a CRF until convergence or specified number of iterations, whichever is earlier.

Also creates an optimizable CRF and an optmizer if required.

Specified by:
train in class TransducerTrainer

train

public boolean train(InstanceList training,
                     int numIterationsPerProportion,
                     double[] trainingProportions)
Train a CRF on various-sized subsets of the data. This method is typically used to accelerate training by quickly getting to reasonable parameters on only a subset of the parameters first, then on progressively more data.

Parameters:
training - The training Instances.
numIterationsPerProportion - Maximum number of Maximizer iterations per training proportion.
trainingProportions - If non-null, train on increasingly larger portions of the data, e.g. new double[] {0.2, 0.5, 1.0}. This can sometimes speedup convergence. Be sure to end in 1.0 if you want to train on all the data in the end.
Returns:
True if training has converged.

setMaxResets

public void setMaxResets(int maxResets)
Sets the max. number of times the optimizer can be reset before throwing an exception.

Default value: DEFAULT_MAX_RESETS.