1. A method comprising: at a neural network circuit comprising a plurality of neurons interconnected via a plurality of synapses: applying a first set of learning rules to a first set of synapses of the plurality of synapses, wherein the first set of synapses has a first synapse type; applying a second set of learning rules to a second set of synapses of the plurality of synapses, wherein the second set of synapses has a second synapse type, and the second set of learning rules is a reverse of the first set of learning rules; receiving at least one input event at a first set of neurons of the plurality of neurons; and generating at least one output event at a second set of neurons of the plurality of neurons.