2. Análisis de la situación actual
2.1.4. Reconocimiento de créditos de libre elección
So far it has been said that the threshold-and-fire dynamics of the artificial neuron presented in this thesis will be implemented based on 2 operational states (open and absolute refrac- tory). The next step towards implementation involves the definition of the data structures which represent the main entities that build up a SNN system. These entities include: the simulation, neurons and synapses. This thesis adopted an Object-oriented programming (OOP) approach given that the use of classes provides an easier and more understandable way [85] to represent the above mentioned entities as objects that encapsulate their own attributes and behaviours.
The description of these entities as OOP classes is presented through UML class diagrams which are non specific to any particular programming language. Figure 5.3 below illustrates the relationship among the 3 main classes Simulation, Neuron and Synapse:
Figure 5.3: The 3 main entities: Simulation, Neuron and Synapse.
In figure 5.3, following the UML 2.x specification, the classes are depicted as boxes with 2 or 3 compartments depending on the level of detail at which the system is being described. The top compartment indicates the name of the class, the middle one shows the attributes, and the third one lists the class operations or behaviours.
The class ’Simulation’ contains the parameters required to carry out the execution of the SNN simulation. These include a ’running’ or execution flag, the elapsed simulation time represented by ’time’ and the time step ’time_step’ (or the time granularity) at which the clock driven simulation increases the ’time’ attribute. As will be shown in the next sections of this chapter, the time and time_step attributes are used by the instantiated Neuron and Synapse objects as reference time for their internal dynamics.
Simulation also contains the attributes ’neurons’ and ’synapses’ where both attributes are followed by [∗] indicating multiplicity (a collection of elements) of unspecified length. A multiplicity may refer to a string, array, list or other collections of data, depending on the programming language and implementation approach. The multiplicity is followed by ’:’ and the name of a class or type which indicates the data type of the attribute. In this case the collections ’neurons’ and ’synapses’ are of type Neuron and Synapse respectively. Figure 5.3 illustrates the composition relationship between classes. The arrows pointing with a black diamond shape indicate that both Neuron and Synapse are ’part of’ Simulation. The ’0..*’ at the other end of the arrows indicate the multiplicity of both attributes going from 0 to an unspecified number.
Figure 5.3 also shows a relationship between classes Neuron and Synapse. The type of this relationship is not explicit at this stage, however the numbers at each other end of the connecting line indicates that a Neuron may be associated with an unspecified number of Synapse objects while a Synapse may be associated with only 2 Neuron objects. For the sake of simplicity, the attributes and behaviours of Neuron and Synapse have been omitted in figure 5.3. A more detailed description of the composition and relationships of classes Neuron and Synapse is show next in figure 5.4.
The classes Neuron and Synapse are shown in figure 5.4 including all its attributes and operations. At the same time, from the class diagram it can be observed that some of the attributes are classes (or defined data structures) themselves.
In the class Neuron, the attributes shown in black correspond to the parameters of the fundamental threshold-and-fire SNN system described before. These attributes are: (1) ’state’ which indicates the current machine state of the neuron, (2) ’membrane_potential’ which was previously described in figures 5.1 and 5.2 as ’u’, (3) ’resting_potential’ which
indicates the membrane potential when the neuron is at rest (Rp in figure 5.2), (4) ’absolute_refractory_potential’ which corresponds to the membrane potential of the neuron during its absolute refractory state, (5) the ’firing_threshold’ which was described as ’θ’ in figures 5.1 and 5.2, (6) the ’refractory_counter’ which indicates the elapsed time of the absolute-refractory period (icin figure 5.2) and (7) ’last_firing_time’ which stores the time of the neuron’s last firing event.
Figure 5.4: Neuron and Synapse data structures.
The next group of attributes in class Neuron is depicted in figure 5.4 with blue font. These attributes are: (1) ’outgoing_synapses’ which is a collection of objects of the type ’OutgoingSynapse’. The later is used as a data structure to store the address of a ’Synapse’
object. Thus ’outgoing_synapses’ is a collection of data that contains the addresses of all the outgoing synapses in an artificial neuron. (2) ’dendritic_input_queue’ is a collection of objects of the type ’InputQueue’. At the same time, ’InputQueue’ is a data structure with 2 attributes: ’in_synapse_address’ and ’pulse_arrival_time’. The first, serves to store the address of a ’Synapse’ object. The second attribute stores time in the given time units used
by the implementation. Thus, ’dendritic_input_queue’ is used to store the information from the presynaptic incoming pulses. This information includes the address of the pulse carrier synapse and its arrival time. (3) ’preprocessed_input_queue’ is also a collection of objects of the type ’InputQueue’. However, it is used to store the incoming pulses where the plasticity rule has been applied. This will be further explained in the next sections of this chapter. (4) ’axonal_output_queue’ is a collection of objects of the type ’Axon- alOutputQueue’. The later is a data structure with 2 attributes: ’out_synapse_address’ and ’pulse_delay_timer’. The first attribute stores the address of a ’Synapse’ object while the second one stores a value representing time units. Thus, ’axonal_output_queue’ is used to store the information (synapse address and scheduled time) of the outgoing pulses that are scheduled to be transmitted to postsynaptic neurons.
The third group of attributes depicted in green contain the data structures for the mod- ulatory mechanisms of the extended neuron model. Both attributes ’ems_parameters’ and ’pms_parameters’ are of type ’ModulatingSubstance’. The later data structure contains the following parameters: (1) ’current_concentration’ which represents the current concentration of the modulatory substance (modulatory factor), (2) ’equilib- rium_concentration’ indicates the homeostatic concentration value of the modulatory substance. (3) ’last_incoming_signal’ stores the arrival time of the last incoming modula- tory signal.
The class ’Synapse’ is also shown above in figure 5.4. This class is used to represent the synapses in the SNN. The attributes: (1) ’presynaptic_neuron_address’ and (2) ’postsy- naptic_neuron_address’ are both of data type ’Neuron’. These two attributes store the memory address of the presynaptic and postsynaptic neurons respectively. In other words a synapse knows the address of the neuron at each one of its ends.(3) The attribute ’type’ indicates the nature of the carried information, whether it is a pulse, an efficacy modulating signal or a plasticity modulating signal. (4) ’efficacy’ (or weight) represents the strength at which the presynaptic neuron can affect the postsynaptic (receiving) neuron. (5) At- tributes ’ems_affinity’ and (6) ’pms_affinity’ indicate whether the respective mechanisms of excitability modulation and plasticity modulation are applicable to pulses carried by the synapse. (7) The attribute ’delay’ represents the time that a pulse or modulatory signal
needs to travel through the synapse before reaching the postsynaptic neuron.
The relationships depicted in figure 5.4 between ’Synapse’ and the three data structures ’OutgoingSynapse’, ’InputQueue’ and ’AxonalOutputQueue’ indicates that a ’Synapse’
object can be referenced in one ’OutgoingSynapse’, multiple ’InputQueue’ and multiple ’AxonalOutputQueue’ elements. The way in which ’Neuron’ and ’Synapse’ objects interact with each other in order to behave as a network will be described in the next section.