Supervised learning with predictive coding (Whittington & Bogacz 2017)

 Download zip file 
Help downloading and running models
"To effciently learn from feedback, cortical networks need to update synaptic weights on multiple levels of cortical hierarchy. An effective and well-known algorithm for computing such changes in synaptic weights is the error back-propagation algorithm. However, in the back-propagation algorithm, the change in synaptic weights is a complex function of weights and activities of neurons not directly connected with the synapse being modified, whereas the changes in biological synapses are determined only by the activity of pre-synaptic and post-synaptic neurons. Several models have been proposed that approximate the back-propagation algorithm with local synaptic plasticity, but these models require complex external control over the network or relatively complex plasticity rules. Here we show that a network developed in the predictive coding framework can efficiently perform supervised learning fully autonomously, employing only simple local Hebbian plasticity. ..."
1 . Whittington JCR, Bogacz R (2017) An Approximation of the Error Backpropagation Algorithm in a Predictive Coding Network with Local Hebbian Synaptic Plasticity. Neural Comput 29:1229-1262 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Predictive Coding Network;
Brain Region(s)/Organism:
Cell Type(s):
Gap Junctions:
Simulation Environment: MATLAB;
Model Concept(s): Learning; Hebbian plasticity; Synaptic Plasticity;
Implementer(s): Whittington, James C.R. [jcrwhittington at];
The directory contains the following Matlab functions:

example_code.m generates data for an XOR gate. Then trains a predictive coding network, as well as the equivalent MLP on the data.

f.m - calculates the an activation function.

f_b.m - calculates the an activation function as well as its derivitaive.

w_init.m - initialises a set of random weights, for a given network structure

(The following codes only accept one data point at a time)

test - makes a prediction for an ann/pc network + outputs rmse

rms_error - calculated rmse

learn_ann - performs back-propagation

learn_pc - performs the learning for a predictive coding network

infer_pc - performs the inference stage