package cc.mallet.grmm.types; /** * A factor that supports taking derivatives with respect to its continuous variables. * For example, a Gaussian factor can support derivatives with respect to its mean and precision. * $Id: ParameterizedFactor.java,v 1.1 2007/10/22 21:37:44 mccallum Exp $ */ public interface ParameterizedFactor extends Factor { /** * Computes the expected derivative of the log factor value. That is, * <pre>sum_{y} q(y) dlog f(y) / d theta<pre>, * where y are the outcomes of the discrete varables in the factor, * f(y) is the factor value, and theta is the vector of continuous variables * in the factor. q is a user-specified distribution to take the expectation * with respect to. * <p> * The factor q specifies with variables to sum over. The summation will be over * all the variables in <tt>q.varSet()</tt>, and the rest of the variables will be used * * <p> * @param q Distribution to take with respect to (need not be normalized). * <tt>q.varSet()</tt> should be all of the variables of this factor, except for one continuous variable * * @param param Parameter to take gradient with respect to. * @return The expected gradient */ public double sumGradLog (Factor q, Variable param, Assignment assn); }