« Excitation propagation model » : différence entre les versions

De Assothink Wiki
Aller à la navigation Aller à la recherche
Contenu ajouté Contenu supprimé
Aucun résumé des modifications
 
(48 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
== Definition ==
== Definition ==


The excitation propagation model (EPM) is a key component in the Assothink model.
The excitation propagation model (EPM) is a component in the [[Model|Assothink global model]].


It is the dynamic part of the global model.
It defines how excitation is propagated across concepts during propagation cycles.


It defines how excitation is propagated across concepts during propagation cycles.
It is described in this page.<br>


It is described in this page.<br>
== What EPM does NOT cover ==


== What EPM does NOT cover ==
This page is about a propagation model. It describes how the jelly ''works'', but not how it has been ''built''. The jelly construction is described elsewhere, in the resourceBuilder part of Assothink.


This page is about a propagation model on concepts. It does not handle ''words'' (percepts, variants, linguistic issues...).
This page is about a propagation model. It describes how the jelly ''works'', but not how it has been ''built''. The jelly construction is described elsewhere, in the resourceBuilder part of Assothink.


This page is about a model. It does nor discuss ''implementations'' modes (hardware and software issues) which are discussed elsewhere.&nbsp;All assothink [[Architecture|architectures]] are typically organized to implement the EPM.
This page is about a propagation model on concepts. It does not handle ''words'' (percepts, variants, linguistic issues...).

This page is about a model. It does not discuss ''implementations'' modes (hardware and software issues) which are discussed elsewhere.&nbsp;All assothink [[Architecture|architectures]] are typically organized to implement the EPM.


== Components: jelly, nodes and links ==
== Components: jelly, nodes and links ==
Ligne 22 : Ligne 24 :


Nodes and links are all excitable.
Nodes and links are all excitable.

The EPM is controlled by an EPM controller.

==== Controller ====

The [[EPM controller|EPM&nbsp;controller]] is a separate application (most probably running on a separate computer), able to drive the EPM engine.


==== Nodes ====
==== Nodes ====
Ligne 31 : Ligne 39 :
The formal representation of a node includes:
The formal representation of a node includes:


*an excitation level (excit), highly dynamic
*an excitation level, highly dynamic (''excit'')
*a set of incoming links (inLinks[i])
*a set of incoming links (''inLinks[i]'')
*a set of outgoing links (outLinks[i])
*a set of outgoing links (''outLinks[i]'')
*a set of connecting links (conLinks[i])
*a set of connecting links (''conLinks[i]'')
*an active flag (''active'')


There is at least 1 incoming link.
There is at least 1 incoming link.
Ligne 41 : Ligne 50 :


Nodes know (are in touch with) links, only links. Nodes do not know directly other nodes.<br>
Nodes know (are in touch with) links, only links. Nodes do not know directly other nodes.<br>

Nodes are known (accessible) by components external to the EPM. These external components may

*read node excitation levels
*modify excitation levels using external signals


==== Links ====
==== Links ====


One may think of a link as something linking concepts.
One may think of a link as something linking concepts.


One may think of a node as a (far) equivalent of an axone or a dendritis.
One may think of a node as a (far) equivalent of an axone or a dendritis.


The formal representation of a link includes:
The formal representation of a link includes:


*an excitation level (excit), highly dynamic
*an excitation level, highly dynamic (''excit'')
*a permeability (value from 0 to 1), static of slowly dynamic
*a permeability (value from 0 to 1), static of slowly dynamic (''permea'')
*a signal (outgoing)
*a signal (outgoing) (''signal'')
*an incoming node
*an incoming node (''inNode'')
*an outgoing node
*an outgoing node (''outNode'')
*a set of connecting nodes
*a set of connecting nodes (''conNodes[i]'')


Link are defined statically: their definition and values are not modified during or between cycles. Permeability figures are occasionnaly updated, but only when cycles are suspended or not started.
Link are defined statically: their definition and values are not modified during or between cycles. Permeability figures are occasionnaly updated, but only when cycles are suspended or not started.


A link is fuzzy when its permeability is non zero.
A link is fuzzy when its permeability is non zero.


A link is qualified when teh set of connecting nodes is not empty.
A link is qualified when teh set of connecting nodes is not empty.


A link has to be either fuzzy or qualified. It may be both.
A link has to be either fuzzy or qualified. It may be both.


Links are nit bidirectionnal. It is possible to have one link from node A to node B, and another link from node B to node A: the two links are separated and independent.
==== Excitation ====


Links know (are in touch with) nodes, only nodes. Links do not know directly other links.
Excitation values are scalar.


Links are normally not directly known by components external to the EPM.
They range from 0 to 1.


==== Excitation ====
The excitation is never negative.


Excitation values are scalar.
The excitation goes up to (approximatively) 1, where it cannot grow (saturation effect).


They range from 0 to 1.
==== Permeability rules ====


The excitation is never negative.
Permeability figures are positive or null.


The excitation goes up to (approximatively) 1, where it cannot grow (saturation effect).
Given all outgoing links of a given node, the sum of their permeability values is 1.


==== Permeability rules ====
&nbsp;


Permeability figures are positive or null.
&nbsp;


Given all outgoing links of a given node, the sum of their permeability values is 1.<br>
== Propagation cycle ==
<blockquote>Note&nbsp;: For practical reasons linked to data structure, permeabilities are often represented by integer values ranging from 1 to 16384, i.e. 16384 times their real value. </blockquote>
==== External excitation source ====


As a side component of the EPM, nodes excitation may be modified by external sources.
At the beginning of a cycle, each concept is caracterized by 3 dynamic values


This is discussed in [[EPM external input|EPM&nbsp;external input]].
*an excitation level EXC (float)
*an input value INP (float)
*an alive flag ALIVE&nbsp;(boolean)


== Many EPM genomes are possible ==
All cycles are controlled by various parameters used during their computations


An EPM includes various functions and parameters that may be arbitrarely chosen, although they must satisfy some constraints.
*EXCMIN
*EXCAVER
*EXCMAX
*FUZZYFACTOR


This define the qualitative behaviour of the EPM, named '''EPM genome'''.
The steps are, for each concept node:


As a result numerous EPMs are allowed and should be tested.
#The input is added to the excitation level
#The input is reset to 0
#Excitation level is adjusted to satisfy global average value EXCAVER (this implies the summation of all previous EXC values)
#The excitation level is limited to EXCMAX
#If excitation level is below EXCMIN it is set to 0, and the next steps are skipped
#Excitation is propagated according to fuzzy propagation rules
#Excitation is propagated according to qualified propagation rules


==== Fuzzy propagation rule ====
==== Parameters ====


Some numerical (real values) parameters affect the behavious of the EPM
The fuzzy propagation uses a table of couples {concept, permeability}.<br>Each concept node has such a table.<br>This table is static. It is not changed during successive cycles.<br>For each concept node, the sum of the permeabilties of its table is 1.<br>


*fuzzy propagation factor (''fuzzy'')
For each target node in the table, the INP value of the target node is increased as:
*node (excitation) erosion factor (''nodeErosion'')
<pre>INPtgt += PERM * FUZZYFACTOR * EXCsrc </pre>
*link (excitation) erosion factor (''linkErosion'')
==== Qualified propagation rule ====
*average node excitation value (''excAver'')
*minimal node excitation value (''excMin'')<br>
*wake up signal minimal value (''excUp'')


The use and meaning of these parameters are understood with the propagation cycle description (below).
Let EXC<sub>src</sub> be the excitation of the source node, and let EXC<sub>con</sub> be the excitation level of the connecting node.


==== Functions ====
The INP value&nbsp;of the target node is increased as:
<pre>INPtgt += EXCsrc x EXCcon x (EXCsrc + EXCcon) / (EXCsrc2 + EXCcon2) </pre>
This function was carefully chosen.


The functions (used in the propagation cycle, see below) are:
Note that if
<pre>f(a,b) = a.b.(a+b)/(a2+b2)</pre>
then
<pre>f(a,b) = f(b,a)


*The node excitation rule F<sub>ne</sub>()
f(a,0) = f(0,b) = 0
*The link excitation rule F<sub>le</sub>()
*The outgoing signal rule F<sub>os</sub>()<br>


The combined effect of excit and inNode.excit in F<sub>os</sub>()&nbsp;is an interesting point. This combination might be something like
<pre>f(a,b) = a.b.(a+b)/(a.a+b.b)</pre>
which implies:
<pre>f(a,b) = f(b,a)
f(a,0) = f(0,b) = 0
f(a,a) = a
f(a,a) = a
f(a,b) &lt; max(a,b)
</pre>
==== Examples of EPM genome ====


Here are&nbsp;[[EPM genome|EPM genome examples]].
f(a,b) &lt; max(a,b)</pre>
<br>


== Emulation software ==
== Propagation cycle ==


The propagation cycle includes several steps performed cyclically.
The emulation library provided for this is in epm.java and in epm.c.


==== Step 1 external input ====
They both strictly implement the above computations, and they also include montoring functions and reporting functions.


Node excitation are modified (increased, possibly decreased) by external sources.
== Propagation table ==


During this step, the ''active'' flag is turned on for any node receiving an external input higher than ''excUp''.
The propagation table is a table of couples {concept, factor}.

==== Step 2 node excitation update ====

During this step, node excitation are updated according to signal from incoming links.

This is only performed for nodes with ''active'' flag on.
<pre>(active node) excit(t+dt) = nodeErosion * excit(t) + Fne(inLinks[i].signal, ...i...)</pre>
==== Step 3 node excitation normalization ====

Node excitation are all modified by the same scaling factor, in order to reach a target value for the average node excitation level (averExc).

After the normalization, this condition is roughly satisfied (sum is the total number of nodes in the jelly).
<pre>(node) sum(excit) / sum() == averExc</pre>
Saturation effects are also handled: the resulting node excitation may not exceed (approximatively) 1.

The active flag is updated for all nodes (according to the comparison of their excit value with the excMin value.
<pre>(node) active = (excit &gt; excMin)
</pre>
==== Step 4 link excitation update ====

Foar each link having connecting nodes, the excitation level is updated according to excitation levels from connecting nodes
<pre>(link) excit(t+dt) = linkErosion * excit(t) + Fle(conLinks[i].excit, ...i...)</pre>
During this step,&nbsp; saturation effects are also handled: the resulting link excitation may not exceed (approximatively) 1.

==== Step 5 signal computation ====

The outgoing signal is built from local excitation, incoming node excitation and local permeability
<pre>(link) signal = Fos(excit,inNode.excit,permea,fuzzy)
</pre>
When the signal generated exceed ''excUp'', the ''active'' flag of the outNode is turned on.

==== Combining and optimizing step 4 and 5 ====

Step 4 and 5 may be grouped.

Tu reduce workload, only links whose incoming node has active flag on have to be processed (inNode.active)<br>

This is specially important for serialized implementations (see remarks below).<br>

== Discussions and comments ==

==== Sizing ====

A good jelly should include 10<sup>5</sup>... 10<sup>6</sup>... 10<sup>7</sup>... nodes, and 10<sup>6</sup>... 10<sup>7</sup>... 10<sup>8</sup> links.

==== Asymptotic effect ====

Nodes and links exchange signals and see their excitation levels evolve.

After a large number of cycles, one may expect to see an asymptotic state stabilized.

This is especially true if there is no more external input, or when external input is itself stable.
<blockquote>Another hypothesis would be to see chaotic effects. Instead of an asymptotic state, the system would show a sequence of very different states, probably cycling. But this should be considered as a pathologic situation for an EPM, resulting from bad choices for parameters or functions.</blockquote>
==== Focus and resonance effect ====

At a given time, most nodes and most links have few or no excitation.

A limited number of nodes and links are highly excited, and their excitation is maintained by resonance effect in the jelly network.

As a result only a small proportion of the nodes and links perform significant computations (signal handling) whereas most of them mostly handle operations which may be considered as 0+0=0.

The proportion of active nodes is likely to be 10<sup>-2</sup>, 10<sup>-3</sup> or maybe even less.

==== Implementation and focus effect ====

The focus effect should be considered as critical when analyzing possible implementations.

On '''highly parallel systems''', with millions of simple processor units working for 1 node or 1 link, the focus effect has no significant impact on speed, because inactive nodes and links doe not slow down active nodes and active links. On such systems, the ''active'' flag described above is useless:&nbsp;it may be removed from the model, and all nodes are assumed to be permanently active.<br>

On '''serialized systems''' (one of few CPUs), and on serialized emulation software, node cycles and link cycles are processed sequentially. Thus inactive nodes and links might require 99%... 99.9% of the processing power, and this has a dramatic effect on cycling speed. In this case it is necessary to set up prioritization rules for nodes and links, in order to give more processing capacity to active nodes and links. This is especially true for steps 4 and 5, occuring within links.

==== Emulation software ====

Emulation software is just one of various possible architectures.

The emulation library provided for this is in epm.java and in epm.c.


They both strictly implement the above computations, and they also include monitoring functions and reporting functions.
Each concept node has such a table.


The two programs are very short, very simple, and very similar.
This table is static. It is not changed during successive cycles.


Their purpose is speed (cycle frequency in Hz).
For each concept node, the sum of the factors of its table is 1<br>


In C, nodes and links are ''typedef struct''.
<br>


In Java, nodes and links are ''classes''.<br>
&nbsp;

Dernière version du 7 novembre 2012 à 20:26

Definition

The excitation propagation model (EPM) is a component in the Assothink global model.

It is the dynamic part of the global model.

It defines how excitation is propagated across concepts during propagation cycles.

It is described in this page.

What EPM does NOT cover

This page is about a propagation model. It describes how the jelly works, but not how it has been built. The jelly construction is described elsewhere, in the resourceBuilder part of Assothink.

This page is about a propagation model on concepts. It does not handle words (percepts, variants, linguistic issues...).

This page is about a model. It does not discuss implementations modes (hardware and software issues) which are discussed elsewhere. All assothink architectures are typically organized to implement the EPM.

Components: jelly, nodes and links

The EPM describes nodes and links.

 A large set of connected nodes and links form a jelly.

Nodes and links are all excitable.

The EPM is controlled by an EPM controller.

Controller

The EPM controller is a separate application (most probably running on a separate computer), able to drive the EPM engine.

Nodes

One may think of a node as a excitable representation of a concept.

One may think of a node as a (far) equivalent of a neuron.

The formal representation of a node includes:

  • an excitation level, highly dynamic (excit)
  • a set of incoming links (inLinks[i])
  • a set of outgoing links (outLinks[i])
  • a set of connecting links (conLinks[i])
  • an active flag (active)

There is at least 1 incoming link.

There is at least 1 outgoing link.

Nodes know (are in touch with) links, only links. Nodes do not know directly other nodes.

Nodes are known (accessible) by components external to the EPM. These external components may

  • read node excitation levels
  • modify excitation levels using external signals

Links

One may think of a link as something linking concepts.

One may think of a node as a (far) equivalent of an axone or a dendritis.

The formal representation of a link includes:

  • an excitation level, highly dynamic (excit)
  • a permeability (value from 0 to 1), static of slowly dynamic (permea)
  • a signal (outgoing) (signal)
  • an incoming node (inNode)
  • an outgoing node (outNode)
  • a set of connecting nodes (conNodes[i])

Link are defined statically: their definition and values are not modified during or between cycles. Permeability figures are occasionnaly updated, but only when cycles are suspended or not started.

A link is fuzzy when its permeability is non zero.

A link is qualified when teh set of connecting nodes is not empty.

A link has to be either fuzzy or qualified. It may be both.

Links are nit bidirectionnal. It is possible to have one link from node A to node B, and another link from node B to node A: the two links are separated and independent.

Links know (are in touch with) nodes, only nodes. Links do not know directly other links.

Links are normally not directly known by components external to the EPM.

Excitation

Excitation values are scalar.

They range from 0 to 1.

The excitation is never negative.

The excitation goes up to (approximatively) 1, where it cannot grow (saturation effect).

Permeability rules

Permeability figures are positive or null.

Given all outgoing links of a given node, the sum of their permeability values is 1.

Note : For practical reasons linked to data structure, permeabilities are often represented by integer values ranging from 1 to 16384, i.e. 16384 times their real value.

External excitation source

As a side component of the EPM, nodes excitation may be modified by external sources.

This is discussed in EPM external input.

Many EPM genomes are possible

An EPM includes various functions and parameters that may be arbitrarely chosen, although they must satisfy some constraints.

This define the qualitative behaviour of the EPM, named EPM genome.

As a result numerous EPMs are allowed and should be tested.

Parameters

Some numerical (real values) parameters affect the behavious of the EPM

  • fuzzy propagation factor (fuzzy)
  • node (excitation) erosion factor (nodeErosion)
  • link (excitation) erosion factor (linkErosion)
  • average node excitation value (excAver)
  • minimal node excitation value (excMin)
  • wake up signal minimal value (excUp)

The use and meaning of these parameters are understood with the propagation cycle description (below).

Functions

The functions (used in the propagation cycle, see below) are:

  • The node excitation rule Fne()
  • The link excitation rule Fle()
  • The outgoing signal rule Fos()

The combined effect of excit and inNode.excit in Fos() is an interesting point. This combination might be something like

f(a,b) = a.b.(a+b)/(a.a+b.b)

which implies:

f(a,b) = f(b,a)
f(a,0) = f(0,b) = 0
f(a,a) = a
f(a,b) < max(a,b)

Examples of EPM genome

Here are EPM genome examples.

Propagation cycle

The propagation cycle includes several steps performed cyclically.

Step 1 external input

Node excitation are modified (increased, possibly decreased) by external sources.

During this step, the active flag is turned on for any node receiving an external input higher than excUp.

Step 2 node excitation update

During this step, node excitation are updated according to signal from incoming links.

This is only performed for nodes with active flag on.

(active node) excit(t+dt) = nodeErosion * excit(t) + Fne(inLinks[i].signal, ...i...)

Step 3 node excitation normalization

Node excitation are all modified by the same scaling factor, in order to reach a target value for the average node excitation level (averExc).

After the normalization, this condition is roughly satisfied (sum is the total number of nodes in the jelly).

(node) sum(excit) / sum() == averExc

Saturation effects are also handled: the resulting node excitation may not exceed (approximatively) 1.

The active flag is updated for all nodes (according to the comparison of their excit value with the excMin value.

(node) active = (excit > excMin)

Step 4 link excitation update

Foar each link having connecting nodes, the excitation level is updated according to excitation levels from connecting nodes

(link) excit(t+dt) = linkErosion * excit(t) + Fle(conLinks[i].excit, ...i...)

During this step,  saturation effects are also handled: the resulting link excitation may not exceed (approximatively) 1.

Step 5 signal computation

The outgoing signal is built from local excitation, incoming node excitation and local permeability

(link) signal = Fos(excit,inNode.excit,permea,fuzzy)

When the signal generated exceed excUp, the active flag of the outNode is turned on.

Combining and optimizing step 4 and 5

Step 4 and 5 may be grouped.

Tu reduce workload, only links whose incoming node has active flag on have to be processed (inNode.active)

This is specially important for serialized implementations (see remarks below).

Discussions and comments

Sizing

A good jelly should include 105... 106... 107... nodes, and 106... 107... 108 links.

Asymptotic effect

Nodes and links exchange signals and see their excitation levels evolve.

After a large number of cycles, one may expect to see an asymptotic state stabilized.

This is especially true if there is no more external input, or when external input is itself stable.

Another hypothesis would be to see chaotic effects. Instead of an asymptotic state, the system would show a sequence of very different states, probably cycling. But this should be considered as a pathologic situation for an EPM, resulting from bad choices for parameters or functions.

Focus and resonance effect

At a given time, most nodes and most links have few or no excitation.

A limited number of nodes and links are highly excited, and their excitation is maintained by resonance effect in the jelly network.

As a result only a small proportion of the nodes and links perform significant computations (signal handling) whereas most of them mostly handle operations which may be considered as 0+0=0.

The proportion of active nodes is likely to be 10-2, 10-3 or maybe even less.

Implementation and focus effect

The focus effect should be considered as critical when analyzing possible implementations.

On highly parallel systems, with millions of simple processor units working for 1 node or 1 link, the focus effect has no significant impact on speed, because inactive nodes and links doe not slow down active nodes and active links. On such systems, the active flag described above is useless: it may be removed from the model, and all nodes are assumed to be permanently active.

On serialized systems (one of few CPUs), and on serialized emulation software, node cycles and link cycles are processed sequentially. Thus inactive nodes and links might require 99%... 99.9% of the processing power, and this has a dramatic effect on cycling speed. In this case it is necessary to set up prioritization rules for nodes and links, in order to give more processing capacity to active nodes and links. This is especially true for steps 4 and 5, occuring within links.

Emulation software

Emulation software is just one of various possible architectures.

The emulation library provided for this is in epm.java and in epm.c.

They both strictly implement the above computations, and they also include monitoring functions and reporting functions.

The two programs are very short, very simple, and very similar.

Their purpose is speed (cycle frequency in Hz).

In C, nodes and links are typedef struct.

In Java, nodes and links are classes.