Transducer.Incrementor incrementor = instanceWeight == 1.0 ? expectations.new Incrementor() : expectations.new WeightedIncrementor (instanceWeight); unlabeledWeight = new SumLatticeDefault (this.crf, input, null, incrementor).getTotalWeight();
CRF.Factors.Incrementor factorIncrementor = factors.new Incrementor (); factorIncrementor.incrementTransition(iter, Math.exp(weight) * instWeight);
Transducer.Incrementor incrementor = instanceWeight == 1.0 ? expectations.new Incrementor() : expectations.new WeightedIncrementor (instanceWeight); unlabeledWeight = new SumLatticeDefault (this.crf, input, null, incrementor).getTotalWeight();
Transducer.Incrementor incrementor = instanceWeight == 1.0 ? expectations.new Incrementor() : expectations.new WeightedIncrementor (instanceWeight); unlabeledWeight = new SumLatticeDefault (this.crf, input, null, incrementor).getTotalWeight();
CRF.Factors.Incrementor factorIncrementor = factors.new Incrementor (); factorIncrementor.incrementTransition(iter, Math.exp(weight) * instWeight);
Transducer.Incrementor incrementor = instanceWeight == 1.0 ? batchExpectations.new Incrementor() : batchExpectations.new WeightedIncrementor (instanceWeight); unlabeledWeight = new SumLatticeDefault (this.crf, input, null, incrementor).getTotalWeight();
Transducer.Incrementor incrementor = instanceWeight == 1.0 ? batchExpectations.new Incrementor() : batchExpectations.new WeightedIncrementor (instanceWeight); unlabeledWeight = new SumLatticeDefault (this.crf, input, null, incrementor).getTotalWeight();
Transducer.Incrementor incrementor = instanceWeight == 1.0 ? batchExpectations.new Incrementor() : batchExpectations.new WeightedIncrementor (instanceWeight); unlabeledWeight = new SumLatticeDefault (this.crf, input, null, incrementor).getTotalWeight();
CRF.Factors.Incrementor factorIncrementor = factors.new Incrementor (); factorIncrementor.incrementTransition(iter, Math.exp(weight) * instWeight);
public Double call() throws Exception { double value = 0; for (int ii = start; ii < end; ii++) { Instance inst = trainingSet.get(ii); Sequence input = (Sequence) inst.getData(); double initProbs[] = initialProbList.get(ii); double finalProbs[] = finalProbList.get(ii); double transProbs[][][] = transitionProbList.get(ii); double[][][] cachedDots = new double[input.size()][crf.numStates()][crf.numStates()]; for (int j = 0; j < input.size(); j++) { for (int k = 0; k < crf.numStates(); k++) { for (int l = 0; l < crf.numStates(); l++) { cachedDots[j][k][l] = Transducer.IMPOSSIBLE_WEIGHT; } } } double labeledWeight = new SumLatticeKL(crf, input, initProbs, finalProbs, transProbs, cachedDots, null).getTotalWeight(); value += labeledWeight; //double unlabeledWeight = new SumLatticeDefault(crf, input, // expectationsCopy.new Incrementor()).getTotalWeight(); double unlabeledWeight = new SumLatticeDefaultCachedDot(crf, input, null, cachedDots, expectationsCopy.new Incrementor(), false, null).getTotalWeight(); value -= unlabeledWeight; } return value; } }
public Double call() throws Exception { double value = 0; for (int ii = start; ii < end; ii++) { Instance inst = trainingSet.get(ii); Sequence input = (Sequence) inst.getData(); double initProbs[] = initialProbList.get(ii); double finalProbs[] = finalProbList.get(ii); double transProbs[][][] = transitionProbList.get(ii); double[][][] cachedDots = new double[input.size()][crf.numStates()][crf.numStates()]; for (int j = 0; j < input.size(); j++) { for (int k = 0; k < crf.numStates(); k++) { for (int l = 0; l < crf.numStates(); l++) { cachedDots[j][k][l] = Transducer.IMPOSSIBLE_WEIGHT; } } } double labeledWeight = new SumLatticeKL(crf, input, initProbs, finalProbs, transProbs, cachedDots, null).getTotalWeight(); value += labeledWeight; //double unlabeledWeight = new SumLatticeDefault(crf, input, // expectationsCopy.new Incrementor()).getTotalWeight(); double unlabeledWeight = new SumLatticeDefaultCachedDot(crf, input, null, cachedDots, expectationsCopy.new Incrementor(), false, null).getTotalWeight(); value -= unlabeledWeight; } return value; } }
@SuppressWarnings("unchecked") protected void gatherConstraints( PRAuxiliaryModel auxModel, double[][][][] cachedDots) { initialProbList = new ArrayList<double[]>(); finalProbList = new ArrayList<double[]>(); transitionProbList = new ArrayList<double[][][]>(); constraints = new CRF.Factors(crf.getParameters()); expectations = new CRF.Factors(crf.getParameters()); constraints.zero(); for (int ii = 0; ii < trainingSet.size(); ii++) { Instance inst = trainingSet.get(ii); Sequence input = (Sequence) inst.getData(); SumLatticePR geLatt = new SumLatticePR(crf, ii, input, null, auxModel, cachedDots[ii], false, null, null, true); double gammas[][] = geLatt.getGammas(); double initialProbs[] = toProbabilities(gammas[0]); initialProbList.add(initialProbs); double finalProbs[] = toProbabilities(gammas[gammas.length - 1]); finalProbList.add(finalProbs); double transitionProbs[][][] = geLatt.getXis(); toProbabilities(transitionProbs); transitionProbList.add(transitionProbs); new SumLatticeKL(crf, input, initialProbs, finalProbs, transitionProbs, null, constraints.new Incrementor()); } }
/** * Adjust the parameters by learning rate according to the gradient of this * single Instance, and return the true label sequence likelihood. */ public double trainIncrementalLikelihood(Instance trainingInstance, double rate) { double singleLoglik; constraints.zero(); expectations.zero(); FeatureVectorSequence fvs = (FeatureVectorSequence) trainingInstance .getData(); Sequence labelSequence = (Sequence) trainingInstance.getTarget(); singleLoglik = new SumLatticeDefault(crf, fvs, labelSequence, constraints.new Incrementor()).getTotalWeight(); singleLoglik -= new SumLatticeDefault(crf, fvs, null, expectations.new Incrementor()).getTotalWeight(); // Calculate parameter gradient given these instances: (constraints - // expectations) constraints.plusEquals(expectations, -1); // Change the parameters a little by this difference, obeying // weightsFrozen crf.parameters.plusEquals(constraints, rate, true); return singleLoglik; } }
/** * Adjust the parameters by learning rate according to the gradient of this * single Instance, and return the true label sequence likelihood. */ public double trainIncrementalLikelihood(Instance trainingInstance, double rate) { double singleLoglik; constraints.zero(); expectations.zero(); FeatureVectorSequence fvs = (FeatureVectorSequence) trainingInstance .getData(); Sequence labelSequence = (Sequence) trainingInstance.getTarget(); singleLoglik = new SumLatticeDefault(crf, fvs, labelSequence, constraints.new Incrementor()).getTotalWeight(); singleLoglik -= new SumLatticeDefault(crf, fvs, null, expectations.new Incrementor()).getTotalWeight(); // Calculate parameter gradient given these instances: (constraints - // expectations) constraints.plusEquals(expectations, -1); // Change the parameters a little by this difference, obeying // weightsFrozen crf.parameters.plusEquals(constraints, rate, true); return singleLoglik; } }
public Double call() throws Exception { double value = 0; for (int ii = start; ii < end; ii++) { Instance inst = trainingSet.get(ii); Sequence input = (Sequence) inst.getData(); double initProbs[] = initialProbList.get(ii); double finalProbs[] = finalProbList.get(ii); double transProbs[][][] = transitionProbList.get(ii); double[][][] cachedDots = new double[input.size()][crf.numStates()][crf.numStates()]; for (int j = 0; j < input.size(); j++) { for (int k = 0; k < crf.numStates(); k++) { for (int l = 0; l < crf.numStates(); l++) { cachedDots[j][k][l] = Transducer.IMPOSSIBLE_WEIGHT; } } } double labeledWeight = new SumLatticeKL(crf, input, initProbs, finalProbs, transProbs, cachedDots, null).getTotalWeight(); value += labeledWeight; //double unlabeledWeight = new SumLatticeDefault(crf, input, // expectationsCopy.new Incrementor()).getTotalWeight(); double unlabeledWeight = new SumLatticeDefaultCachedDot(crf, input, null, cachedDots, expectationsCopy.new Incrementor(), false, null).getTotalWeight(); value -= unlabeledWeight; } return value; } }
@SuppressWarnings("unchecked") protected void gatherConstraints( PRAuxiliaryModel auxModel, double[][][][] cachedDots) { initialProbList = new ArrayList<double[]>(); finalProbList = new ArrayList<double[]>(); transitionProbList = new ArrayList<double[][][]>(); constraints = new CRF.Factors(crf.getParameters()); expectations = new CRF.Factors(crf.getParameters()); constraints.zero(); for (int ii = 0; ii < trainingSet.size(); ii++) { Instance inst = trainingSet.get(ii); Sequence input = (Sequence) inst.getData(); SumLatticePR geLatt = new SumLatticePR(crf, ii, input, null, auxModel, cachedDots[ii], false, null, null, true); double gammas[][] = geLatt.getGammas(); double initialProbs[] = toProbabilities(gammas[0]); initialProbList.add(initialProbs); double finalProbs[] = toProbabilities(gammas[gammas.length - 1]); finalProbList.add(finalProbs); double transitionProbs[][][] = geLatt.getXis(); toProbabilities(transitionProbs); transitionProbList.add(transitionProbs); new SumLatticeKL(crf, input, initialProbs, finalProbs, transitionProbs, null, constraints.new Incrementor()); } }
/** * Adjust the parameters by learning rate according to the gradient of this * single Instance, and return the true label sequence likelihood. */ public double trainIncrementalLikelihood(Instance trainingInstance, double rate) { double singleLoglik; constraints.zero(); expectations.zero(); FeatureVectorSequence fvs = (FeatureVectorSequence) trainingInstance .getData(); Sequence labelSequence = (Sequence) trainingInstance.getTarget(); singleLoglik = new SumLatticeDefault(crf, fvs, labelSequence, constraints.new Incrementor()).getTotalWeight(); singleLoglik -= new SumLatticeDefault(crf, fvs, null, expectations.new Incrementor()).getTotalWeight(); // Calculate parameter gradient given these instances: (constraints - // expectations) constraints.plusEquals(expectations, -1); // Change the parameters a little by this difference, obeying // weightsFrozen crf.parameters.plusEquals(constraints, rate, true); return singleLoglik; } }
@SuppressWarnings("unchecked") protected void gatherConstraints( PRAuxiliaryModel auxModel, double[][][][] cachedDots) { initialProbList = new ArrayList<double[]>(); finalProbList = new ArrayList<double[]>(); transitionProbList = new ArrayList<double[][][]>(); constraints = new CRF.Factors(crf.getParameters()); expectations = new CRF.Factors(crf.getParameters()); constraints.zero(); for (int ii = 0; ii < trainingSet.size(); ii++) { Instance inst = trainingSet.get(ii); Sequence input = (Sequence) inst.getData(); SumLatticePR geLatt = new SumLatticePR(crf, ii, input, null, auxModel, cachedDots[ii], false, null, null, true); double gammas[][] = geLatt.getGammas(); double initialProbs[] = toProbabilities(gammas[0]); initialProbList.add(initialProbs); double finalProbs[] = toProbabilities(gammas[gammas.length - 1]); finalProbList.add(finalProbs); double transitionProbs[][][] = geLatt.getXis(); toProbabilities(transitionProbs); transitionProbList.add(transitionProbs); new SumLatticeKL(crf, input, initialProbs, finalProbs, transitionProbs, null, constraints.new Incrementor()); } }
/** * Set the constraints by running forward-backward with the <i>output label * sequence provided</i>, thus restricting it to only those paths that agree with * the label sequence. */ protected void gatherConstraints(InstanceList ilist) { logger.info("Gathering constraints..."); assert (constraints.structureMatches(crf.parameters)); constraints.zero(); for (Instance instance : ilist) { FeatureVectorSequence input = (FeatureVectorSequence) instance.getData(); FeatureSequence output = (FeatureSequence) instance.getTarget(); double instanceWeight = ilist.getInstanceWeight(instance); Transducer.Incrementor incrementor = instanceWeight == 1.0 ? constraints.new Incrementor() : constraints.new WeightedIncrementor(instanceWeight); new SumLatticeDefault (this.crf, input, output, incrementor); } constraints.assertNotNaNOrInfinite(); }
/** * Set the constraints by running forward-backward with the <i>output label * sequence provided</i>, thus restricting it to only those paths that agree with * the label sequence. */ protected void gatherConstraints(InstanceList ilist) { logger.info("Gathering constraints..."); assert (constraints.structureMatches(crf.parameters)); constraints.zero(); for (Instance instance : ilist) { FeatureVectorSequence input = (FeatureVectorSequence) instance.getData(); FeatureSequence output = (FeatureSequence) instance.getTarget(); double instanceWeight = ilist.getInstanceWeight(instance); Transducer.Incrementor incrementor = instanceWeight == 1.0 ? constraints.new Incrementor() : constraints.new WeightedIncrementor(instanceWeight); new SumLatticeDefault (this.crf, input, output, incrementor); } constraints.assertNotNaNOrInfinite(); }