learn
Class BetterDNLearner

java.lang.Object
  extended by infer.Infer
      extended by learn.Learner
          extended by learn.BetterDNLearner

public class BetterDNLearner
extends Learner

Learner instance using diagonal Newton with dynamic step size. Method used here follows: Lowd, Daniel and Domingos, Pedro (2007). Efficient Weight Learning for Markov Logic Networks. Note, this is a very simple diagonal Newton learner. When use it for real circumstance, please check it carefully...

Author:
Ce Zhang

Field Summary
 double alpha
          step size.
 java.util.HashMap<java.lang.String,java.lang.Double> currentD
          Map from clause ID to current H^(-1)g value.
 java.util.HashMap<java.lang.String,java.lang.Double> currentGradient
          Map from clause ID to current gradient value.
 double lambda
          lambda used to control the step size.
 int nCall
          number of invocations of updateWeight(MCSAT).
 java.util.HashMap<java.lang.String,java.lang.Double> oldD
          Map from clause ID to H^(-1)g value in last iteration.
 double oldDG
          D'g value of last iteration.
 double oldDHD
          D'HD value of last iteration.
 java.util.HashMap<java.lang.String,java.lang.Double> oldG
          Map from clause ID to gradient value in last iteration.
 java.util.HashMap<java.lang.String,java.lang.Double> oldWeight
          Map from clause ID to weight in last iteration.
 
Fields inherited from class learn.Learner
_oldWeight, backtrackCount_, backtracked, currentWeight, finalWeight, isHardMappings, odds, oriWeight, trainingSatisification, trainingViolation
 
Constructor Summary
BetterDNLearner()
           
 
Method Summary
 void getGradientAndD(MCSAT mcsat)
          Calculate the gradient and H^(-1)g by filling in currentD and currentGradient.
 void loadingTrainingData(MCSAT _mcsat)
          Loading training data's truth value into MRF.
 boolean updateWeight(MCSAT mcsat)
          Updating Learner.currentWeight using Diagonal Newton method.
 
Methods inherited from class learn.Learner
calcCurrentTrainingViolation, dumpAnswers, fillInCurrentWeight, run
 
Methods inherited from class infer.Infer
loadMLN
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

oldG

public java.util.HashMap<java.lang.String,java.lang.Double> oldG
Map from clause ID to gradient value in last iteration.


oldD

public java.util.HashMap<java.lang.String,java.lang.Double> oldD
Map from clause ID to H^(-1)g value in last iteration.


oldWeight

public java.util.HashMap<java.lang.String,java.lang.Double> oldWeight
Map from clause ID to weight in last iteration. It is used for backtracking.


currentGradient

public java.util.HashMap<java.lang.String,java.lang.Double> currentGradient
Map from clause ID to current gradient value. This will be filled after the invocation of getGradientAndD(MCSAT).


currentD

public java.util.HashMap<java.lang.String,java.lang.Double> currentD
Map from clause ID to current H^(-1)g value. This will be filled after the invocation of getGradientAndD(MCSAT).


oldDHD

public double oldDHD
D'HD value of last iteration. Here D = H^(-1)g, H is Hessian.


oldDG

public double oldDG
D'g value of last iteration. Here D = H^(-1)g.


lambda

public double lambda
lambda used to control the step size.


alpha

public double alpha
step size.


nCall

public int nCall
number of invocations of updateWeight(MCSAT).

Constructor Detail

BetterDNLearner

public BetterDNLearner()
Method Detail

loadingTrainingData

public void loadingTrainingData(MCSAT _mcsat)
Loading training data's truth value into MRF.

Specified by:
loadingTrainingData in class Learner
Parameters:
_mcsat - The MCSAT object to be filled in.

getGradientAndD

public void getGradientAndD(MCSAT mcsat)
Calculate the gradient and H^(-1)g by filling in currentD and currentGradient.

Parameters:
mcsat - MCSAT instance used to estimate the expecation of violations.

updateWeight

public boolean updateWeight(MCSAT mcsat)
Updating Learner.currentWeight using Diagonal Newton method.

Specified by:
updateWeight in class Learner
Parameters:
mcsat - MCSAT instance after this iteration.
Returns:
Whether terminate.