Package cc.mallet.fst

Class CRFOptimizableByBatchLabelLikelihood

  • All Implemented Interfaces:
    Optimizable, Optimizable.ByCombiningBatchGradient,

    public class CRFOptimizableByBatchLabelLikelihood
    extends java.lang.Object
    implements Optimizable.ByCombiningBatchGradient,
    Implements label likelihood gradient computations for batches of data, can be easily parallelized.

    The gradient computations are the same as that of CRFOptimizableByLabelLikelihood.

    *Note*: Expectations corresponding to each batch of data can be computed in parallel. During gradient computation, the prior and the constraints are incorporated into the expectations of the last batch (see getBatchValue, getBatchValueGradient). *Note*: This implementation ignores instances with infinite weights (see getExpectationValue).

    Gaurav Chandalia
    See Also:
    Serialized Form
    • Field Detail

      • crf

        protected CRF crf
      • numBatches

        protected int numBatches
      • expectations

        protected java.util.List<CRF.Factors> expectations
      • cachedValue

        protected double[] cachedValue
      • cachedGradient

        protected java.util.List<double[]> cachedGradient
    • Constructor Detail

      • CRFOptimizableByBatchLabelLikelihood

        public CRFOptimizableByBatchLabelLikelihood​(CRF crf,
                                                    InstanceList ilist,
                                                    int numBatches)
    • Method Detail

      • gatherConstraints

        protected void gatherConstraints​(InstanceList ilist)
        Set the constraints by running forward-backward with the output label sequence provided, thus restricting it to only those paths that agree with the label sequence.
      • getExpectationValue

        protected double getExpectationValue​(int batchIndex,
                                             int[] batchAssignments)
        Computes log probability of a batch of training data, fill in corresponding expectations as well
      • getBatchValue

        public double getBatchValue​(int batchIndex,
                                    int[] batchAssignments)
        Returns the log probability of a batch of training sequence labels and the prior over parameters, if last batch then incorporate the prior on parameters as well.
        Specified by:
        getBatchValue in interface Optimizable.ByCombiningBatchGradient
      • combineGradients

        public void combineGradients​(java.util.Collection<double[]> batchGradients,
                                     double[] buffer)
        Adds gradients from all batches.

        Note: assumes buffer is already initialized.

        Specified by:
        combineGradients in interface Optimizable.ByCombiningBatchGradient
      • setUseHyperbolicPrior

        public void setUseHyperbolicPrior​(boolean f)
      • setHyperbolicPriorSlope

        public void setHyperbolicPriorSlope​(double p)
      • setHyperbolicPriorSharpness

        public void setHyperbolicPriorSharpness​(double p)
      • getUseHyperbolicPriorSlope

        public double getUseHyperbolicPriorSlope()
      • getUseHyperbolicPriorSharpness

        public double getUseHyperbolicPriorSharpness()
      • setGaussianPriorVariance

        public void setGaussianPriorVariance​(double p)
      • getGaussianPriorVariance

        public double getGaussianPriorVariance()
      • setParameter

        public void setParameter​(int index,
                                 double value)
        Specified by:
        setParameter in interface Optimizable