1. A method for processing information using at least one artificial neuron, each of said at least one artificial neuron receiving a first and a second class of input, wherein at least one of said first and said second class comprises a plurality of inputs, and for generating an output from each of said at least one artificial neuron, the method comprising for each of said at least one artificial neuron: providing said first class of input, each input having a weight and an activity; providing said second class of input, each input having a weight and an activity; selecting a value for said weight for each input in said first class to maximize a discrepancy corresponding to said output of said artificial neuron, said discrepancy comprising a difference between the weighted sum of activities in the first class of inputs versus the weighted sum of activities in the second class of inputs; selecting a value for said weight for each input in said second class to minimize said discrepancy corresponding to said output of said artificial neuron; and generating said output corresponding to said discrepancy, said discrepancy being between a weighted sum based on a selected weight values of said first class of input and based on a selected weight values of said second class of input; wherein said artificial neuron predicts an aspect of the world that is informative to said artificial neuron.