• Github
Table of Contents
0.17.0.0+7
  • Welcome to PsyNeuLink
  • Basics and Primer
  • Quick Reference
  • Core
  • Library
  • Contributors Guide
  • Docs >
  • LearningSignal
Shortcuts

LearningSignal¶

Contents:¶

  • Learning_signal_Overview

  • Creating a LearningSignal
    • Specifying LearningSignals

  • Structure
    • Projections

    • Modulation

  • Execution

  • Class Reference

Overview¶

A LearningSignal is a type of ModulatorySignal that is specialized for use with a LearningMechanism and one or more LearningProjections, to modify the matrix parameter of the MappingProjections to which they project. A LearningSignal receives the value of a learning_signal calculated by the LearningMechanism to which it belongs, which in general is a matrix of weight changes to be made to the matrix parameter of the MappingProjection(s) being learned. The LearningSignal assigns its learning_signal as the value of its LearningProjection(s), which convey it to the MappingProjections` MATRIX ParameterPort(s), which in turn modify the matrix parameter(s) of the MappingProjection(s) being learned.

Creating a LearningSignal¶

A LearningSignal is created automatically whenever a MappingProjection is specified for learning and the Projection belongs to the same Composition as the LearningMechanism. LearningSignals can also be specified in the learning_signals argument of the constructor for a LearningMechanism. Although a LearningSignal can be created directly using its constructor (or any of the other ways for creating an OutputPort), this is neither necessary nor advisable, as a LearningSignal has dedicated Components and requirements for configuration that must be met for it to function properly.

Specifying LearningSignals¶

When a LearningSignal is specified in the learning_signals argument of the constructor for a LearningMechanism, the ParameterPort(s) of the MappingProjection(s) being learned must be specified. This can take any of the following forms:

  • an existing LearningSignal, or a reference to the class (in which case a default LearningSignal is created);

  • a ParameterPort, which must be for the matrix parameter of the MappingProjection to be learned;

  • a Projection, which must be either a LearningProjection, or a MappingProjection to which the LearningSignal should send a LearningProjection. In both cases, it is assumed that the LearningProjection projects to the MATRIX ParameterPort of a MappingProjection.

  • a tuple, with the name of the parameter as its 1st item. and the Projection to which it belongs as the 2nd; note that this is a convenience format, which is simpler to use than a specification dictionary (see below), but precludes specification of any parameters for the LearningSignal.

  • a specification dictionary, that must contain at least the following two entries:

    • NAME:str

      the string must be the name of the MappingProjection to be learned; the LearningSignal is named by appending “_LearningSignal” to the name of the Projection.

    • PROJECTION:MappingProjection

      the MappingProjection must be valid projection specification for the one to be learned.

    The dictionary can also contain entries for any other LearningSignal attributes to be specified; see below for a description of LearningSignal attributes.

Structure¶

A LearningSignal is owned by an LearningMechanism, and “trains” one or more MappingProjections by modulating the value of their matrix parameters. This is governed by three attributes of the LearningSignal, as described below.

Projections¶

When a LearningSignal is created, it can be assigned one or more LearningProjections, using either the projections argument of its constructor, or in an entry of a dictionary assigned to the params argument with the key PROJECTIONS. These will be assigned to its efferents attribute. See Port Projections for additional details concerning the specification of Projections when creating a Port.

Note

Although a LearningSignal can be assigned more than one LearningProjection, all of those Projections will convey the same learning_signal (received from the LearningMechanism to which the LearningSignal belongs). Thus, for them to be meaningful, they should project to MappingProjections that are responsible for identical or systematically-related error signals (e.g., as in convolutional networks.

Modulation¶

A LearningSignal has a modulation attribute that determines how the LearningSignal’s value (i.e., its learning_signal) is used by the ParameterPort(s) to which it projects to modify the matrix parameter(s) of their MappingProjection(s) (see ModulatorySignal Modulation for an explanation of how the modulation attribute is specified and used to modify the value of a parameter). The default value is set to the value of the modulation attribute of the LearningMechanism to which the LearningSignal belongs; this is the same for all of the LearningSignals belonging to that LearningMechanism. The default value of modulation for a LearningMechanism is ADDITIVE, which causes the learning_signal (i.e., its matrix of weight changes) to be added to the matrix parameter of the MappingProjection being learned. The modulation can be individually specified for a LearningSignal using a specification dictionary where the LearningSignal itself is specified, as described above. The modulation value of a LearningSignal is used by all of the LearningProjections that project from that LearningSignal.

LearningSignal Function¶

The function of a LearningSignal converts the learning_signal it receives from the LearningMechanism to which it belongs to its value (i.e., the LearningSignal’s learning_signal). By default this is an identity function (Linear with slope=1 and intercept=0), that simply uses the LearningMechanism’s learning_signal as its own. However, the LearningSignal’s function can be assigned another TransferFunction, or any other function that takes a scalar or ndarray and returns a similar value.

Note

The index and assign attributes of a LearningSignal are automatically assigned and should not be modified.

Execution¶

A LearningSignal cannot be executed directly. It is executed whenever the LearningMechanism to which it belongs is executed. When this occurs, the LearningMechanism provides the LearningSignal with a learning_signal, that is used by its function to compute its value (i.e., its own learning_signal for that TRIAL. That value is used by its LearningProjection(s) to modify the matrix parameter of the MappingProjection(s) to which the LearningSignal projects.

Note

The changes in a MappingProjection’s matrix parameter in response to the execution of a LearningSignal are not applied until the MappingProjection is next executed; see Lazy Evaluation for an explanation of “lazy” updating).

Class Reference¶

class psyneulink.core.components.ports.modulatorysignals.learningsignal.LearningSignal(owner=None, reference_value=None, variable=None, input_shapes=None, index=0, assign=None, function=None, modulation=None, modulates=None, params=None, name=None, prefs=None, **kwargs)¶

params=None, projections=None, name=None, prefs=None)

A subclass of ModulatorySignal used by a LearningMechanism to modify the matrix parameter of one more more MappingProjection(s). See ModulatorySignal for additional arguments and attributes.

Parameters:
  • function (Function or method : default Linear) – specifies the function used by the LearningSignal to generate its learning_signal.

  • modulation (str : default ADDITIVE) – specifies the way in which the value of the LearningSignal is used to modify the value of the matrix parameter for the MappingProjection(s) to which the LearningSignal’s LearningProjection(s) project.

  • modulates (list of Projection specifications) – specifies the LearningProjection(s) to be assigned to the LearningSignal, and that will be listed in its efferents attribute (see Projections for additional details).

function¶

converts variable into the LearningSignal’s learning_signal. The default is the Identity Function, that assigns the LearningSignal’s variable as its learning_signal.

Type:

TransferFunction : default Linear(slope=1, intercept=0)

value¶

result of the LearningSignal’s function; same as its learning_signal.

Type:

number, list or np.ndarray

learning_signal¶

result of the LearningSignal’s function; same as its value.

Type:

number or ndarray

efferents¶

a list of the LearningProjections assigned to (i.e., that project from) the LearningSignal.

Type:

[List[LearningProjection]]

modulation¶

determines the way in which the value of the LearningSignal is used to modify the value of the matrix parameter for the MappingProjection to which the LearningSignal’s LearningProjection(s) project.

Type:

str

projection_type¶

alias of LearningProjection

exception psyneulink.core.components.ports.modulatorysignals.learningsignal.LearningSignalError(message, component=None)¶

© Copyright 2016, Jonathan D. Cohen.

Built with Sphinx using a theme provided by Read the Docs.
  • LearningSignal
    • Contents:
    • Overview
    • Creating a LearningSignal
      • Specifying LearningSignals
    • Structure
      • Projections
      • Modulation
      • LearningSignal Function
    • Execution
    • Class Reference
    • LearningSignal
      • LearningSignal.function
      • LearningSignal.value
      • LearningSignal.learning_signal
      • LearningSignal.efferents
      • LearningSignal.modulation
      • LearningSignal.projection_type
    • LearningSignalError
  • Github