package edu.berkeley.nlp.math; /** * User: aria42 * Date: Mar 10, 2009 */ public class L2Regularizer implements Regularizer { double sigmaSquared = 1.0; public L2Regularizer(double sigmaSquared) { this.sigmaSquared = sigmaSquared; } public L2Regularizer() { } public double getSigmaSquared() { return sigmaSquared; } public void setSigmaSquared(double sigmaSquared) { this.sigmaSquared = sigmaSquared; } public double update(double[] weights, double[] grad, double c) { double l2 = 0.0; for (int w = 0; w < weights.length; w++) { double weight = weights[w]; l2 += c * weight*weight/sigmaSquared; grad[w] += c * 2.0 * weight/sigmaSquared; } return l2; } public double val(double[] weights, double c) { double l2 = 0.0; for (int w = 0; w < weights.length; w++) { double weight = weights[w]; l2 += weight*weight/sigmaSquared; } return l2; } }