Supervised learning with predictive coding (Whittington & Bogacz 2017)

 Download zip file 
Help downloading and running models
Accession:218084
"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. ..."
Reference:
1 . Whittington JCR, Bogacz R (2017) An approximation of the error back-propagation algorithm in a predictive coding network with local Hebbian synaptic plasticity Neural Computation, in press (preprint available)
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):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Learning; Hebbian plasticity; Synaptic Plasticity;
Implementer(s): Whittington, James C.R. [jcrwhittington at gmail.com];
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

Loading data, please wait...