package func.nn.backprop;
/**
* An update rule for the Quickprop algorithm
* @author Andrew Guillory gtg008g@mail.gatech.edu
* @version 1.0
*/
public class QuickpropUpdateRule extends WeightUpdateRule {
/**
* The learning rate
*/
private double learningRate;
/**
* Make a new quickprop update rule
* @param learningRate the learning rate
*/
public QuickpropUpdateRule(double learningRate) {
this.learningRate = learningRate;
}
/**
* Make a new quickprop update rule
*/
public QuickpropUpdateRule() {
this(.2);
}
/**
* @see nn.backprop.BackPropagationUpdateRule#update(nn.backprop.BackPropagationLink)
*/
public void update(BackPropagationLink link) {
if (link.getLastError() == 0) {
// the first run
link.changeWeight(-learningRate * link.getError());
} else {
// jump to parabola min
link.changeWeight(link.getError()
/ (link.getLastError() - link.getError())
* link.getLastChange()
- learningRate * link.getError());
}
}
}