/* * Created on Nov 14, 2007 * @author sunita * Objective is log (sum_y exp(W.(F(xi,y)-F(xi,yi))+hammingLoss(y))) */ package iitb.CRF; import cern.colt.matrix.tdouble.DoubleMatrix1D; import cern.colt.matrix.tdouble.DoubleMatrix2D; public class SoftMarginTrainer extends Trainer { public SoftMarginTrainer(CrfParams p) { super(p); logProcessing=true; } @Override protected boolean computeLogMiTrainMode(FeatureGenerator featureGenerator, double[] lambda, DataSequence dataSeq, int i, DoubleMatrix2D mi_YY, DoubleMatrix1D ri_Y, boolean b, boolean reuseM, boolean initMDone) { boolean initDoneNow = super.computeLogMiTrainMode(featureGenerator, lambda, dataSeq, i, Mi_YY, Ri_Y, b, reuseM, initMDone); for (int y = 0; y < numY; y++) { int loss=(y==dataSeq.y(i))?0:1; Ri_Y.set(y, Ri_Y.get(y)+loss); } return initDoneNow; } }