Creating an AutoAssociativeLearningMechanism
An AutoAssociativeLearningMechanism can be created directly by calling its constructor, but most commonly it is
created automatically when a RecurrentTransferMechanism is configure for learning,
(identified in its activity_source <AutoAssociativeLearningMechanism.activity_source>` attribute).
An AutoAssociativeLearningMechanism is identical to a LearningMechanism in all respects except the following:
- it has only a single ACTIVATION_INPUT InputState, that receives a MappingProjection from an OutputState of
another Mechanisms (identified by the
typically, the primary OutputState of a RecurrentTransferMechanism);
- it has a single LEARNING_SIGNAL OutputState that sends a LearningProjection to the matrix parameter of an ‘AutoAssociativeProjection` (typically, the
recurrent_projection of a RecurrentTransferMechanism), but not an
- it has no
error_source attributes; instead, it has a single
attribute that identifies the source of the activity vector used by the Mechanism’s
function takes as its
a list or 1d np.array of numeric entries, corresponding in length to the AutoAssociativeLearningMechanism’s
ACTIVATION_INPUT InputState; and it returns a
(a weight change matrix assigned to the Mechanism’s LEARNING_SIGNAL OutputState), but not necessarily an
learning_rate can be specified as a 1d or 2d array (or
matrix) to scale the contribution made, respectively, by individual elements or connections among them,
to the weight change matrix; as with a standard Learning Mechanism, a scalar can also be specified to scale
the entire weight change matrix (see
AutoAssociativeLearningMechanism(variable, function=Hebbian, learning_rate=None, learning_signals=LEARNING_SIGNAL, modulation=ModulationParam.ADDITIVE, params=None, name=None, prefs=None)
Implements a Learning Mechanism that modifies the
matrix parameter of an
AutoAssociativeProjection (typically the
of a RecurrentTransferMechanism).
- variable (List or 2d np.array) – it must have a single item that corresponds to the value required by the AutoAssociativeLearningMechanism’s
function; it must each be compatible (in number and type)
value of the Mechanism’s InputState (see
variable for additional details).
- learning_signals (List[parameter of Projection, ParameterState, Projection, tuple[str, Projection] or dict]) – specifies the
matrix to be learned (see
learning_signals for details of specification).
- modulation (ModulationParam : ModulationParam.ADDITIVE) – specifies the default form of modulation used by the AutoAssociativeLearningMechanism’s LearningSignals,
unless they are individually specified.
- function (LearningFunction or function) – specifies the function used to calculate the AutoAssociativeLearningMechanism’s
learning_signal attribute. It must take as its variable argument a
list or 1d array of numeric values (the “activity vector”) and return a list, 2d np.array or np.matrix
representing a square matrix with dimensions that equal the length of its variable (the “weight change
- learning_rate (float) – specifies the learning rate for the AutoAssociativeLearningMechanism. (see
learning_rate for details).
- params (Dict[param keyword: param value] : default None) – a parameter dictionary that specifies the parameters for the
Projection, its function, and/or a custom function and its parameters. By default, it contains an entry for
the Projection’s default
function and parameter assignments. Values specified
for parameters in the dictionary override any assigned to those parameters in arguments of the constructor.
- name (str : default see
name) – specifies the name of the AutoAssociativeLearningMechanism.
- prefs (PreferenceSet or specification dict : default Mechanism.classPreferences) – specifies the
PreferenceSet for the AutoAssociativeLearningMechanism; see
prefs for details.
2d np.array – has a single item, that serves as the template for the input required by the AutoAssociativeLearningMechanism’s
function, corresponding to the
value of the
OutputState – the OutputState that is the
sender of the AutoAssociativeProjection
that the Mechanism trains.
ContentAddressableList[OutputState] – has a single item, that contains the AutoAssociativeLearningMechanism’s single ACTIVATION_INPUT InputState.
AutoAssociativeProjection – the Projections with the
matrix parameter being trained by the
AutoAssociativeLearningMechanism. It is always the first Projection listed in the
List[MappingProjection] – all of the AutoAssociativeProjections modified by the
AutoAssociativeLearningMechanism; the first item in the list is always the
LearningFunction or function : default Hebbian – the function used to calculate the
(assigned to the AutoAssociativeLearningMechanism’s LearningSignal(s)).
variable must be a list or 1d np.array of numeric entries, corresponding in
length to the AutoAssociativeLearningMechanism’s ACTIVATION_INPUT (primary) InputState.
float, 1d or 2d np.array, or np.matrix of numeric values : default None – determines the learning rate used by the AutoAssociativeLearningMechanism’s
function to scale the weight change matrix it returns. If it is a scalar, it is used to multiply the weight change matrix; if it is a 2d array or matrix,
it is used to Hadamard (elementwise) multiply the weight matrix (allowing the contribution of individual
connections to be scaled); if it is a 1d np.array, it is used to Hadamard (elementwise) multiply the input
function (i.e., the
value of the
AutoAssociativeLearningMechanism’s ACTIVATION_INPUT InputState,
allowing the contribution of individual units to be scaled). If specified, the value supersedes the
learning_rate assigned to any Process or System to which the AutoAssociativeLearningMechanism belongs.
If it is
None, then the
learning_rate specified for the Process to which the
AutoAssociativeLearningMechanism belongs belongs is used; and, if that is
None, then the
learning_rate for the System to which it belongs is used. If all are
None, then the
default_learning_rate for the
function is used (see learning_rate
for additional details).
2d ndarray or matrix of numeric values – the value returned by
function, that specifies
the changes to the weights of the
matrix parameter for the
It is assigned as the value of the AutoAssociativeLearningMechanism’s LearningSignal(s) and, in turn, its LearningProjection(s).
List[LearningSignal] – list of all of the LearningSignals for the AutoAssociativeLearningMechanism, each of which
sends one or more LearningProjections to the ParameterState(s) for
matrix parameter of the AutoAssociativeProjection(s) trained by the AutoAssociativeLearningMechanism. Although in most instances an
AutoAssociativeLearningMechanism is used to train a single AutoAssociativeProjection, like a standard
Learning Mechanism, it can be assigned additional LearningSignals and/or LearningProjections to train
additional ones; in such cases, the value for all of the LearningSignals is the
the same: the AutoAssociativeLearningMechanism’s
learning_signal attribute, based on its
activity_source. Since LearningSignals are OutputStates, they are also listed in the AutoAssociativeLearningMechanism’s
List[LearningProjection] – list of all of the LearningProjections <LearningProjection>` from the AutoAssociativeLearningMechanism, listed
in the order of the LearningSignals to which they belong (that is, in the order they are
listed in the
ContentAddressableList[OutputState] – list of the AutoAssociativeLearningMechanism’s OutputStates, beginning with its
learning_signals, and followed by any additional
2d np.array – the first item is the
value of the LearningMechanism’s
learning_signal, followed by the
of any additional (user-specified) OutputStates.
ModulationParam – the default form of modulation used by the AutoAssociativeLearningMechanism’s LearningSignal(s), unless they are individually specified.
str – the name of the AutoAssociativeLearningMechanism; if it is not specified in the name argument of the
constructor, a default is assigned by MechanismRegistry (see Naming for conventions used for default and
PreferenceSet or specification dict – the
PreferenceSet for the AutoAssociativeLearningMechanism; if it is not specified in the prefs argument
of the constructor, a default is assigned using
classPreferences defined in __init__.py (see
PreferenceSet for details).