CRANIS Implementation

De Assothink Wiki
Aller à la navigation Aller à la recherche

This page is part of the obsolete CRANIS project (2010).

CRANIS is a theory, a model, and an implementation discussed here.

CRANIS systems compared

The name CRANIS system is given to any system implementing in some way the CRANIS model.

Three families of CRANIS systems are considered: natural intelligence, software implementations and hardware implementations.


Natural Intelligence
Software Implementation
Hardware Implementation
Material
brain components: neurons, synapses, dendrites
Usual available computers. Common CPUs. Standard OS. O-O (Java libraries)
Distributed Processing Units, with one I/O control unit, and a shared signal bus. All DPU identical, with small local memory
Magnitude
109 neurons, 1012 synapses
106 concept cells, 108 links between cells, 1010 bytes globally
106 DPUs, 108 links between cells, 1010 bytes globally
Ease of programming
(? sci-fi)
Good
Average
Cost
-
Low
High
Parallelization
Yes
No
Yes
Speed
Fast
Slow
Fast





A concept node used in software or hardware implementation of CRANIS is NOT the one-to-one equivalent of a biological neuron. Similarities exist, but regarding granularity and redundancy, biological neurons are certainly different from software or hardware CRANIS implementations.

One can assume that no engineering is suitable to directly improve the natural intelligences, and that the number of natural intelligences (especially human beings) is already too high for the available planet.

The hardware implementation is highly promising, but probably complex and certainly costly regarding prototyping and production.

Hence from here only the O-O software implementation of CRANIS is considered.

Quantitative assumptions

The following is assumed to evaluate memory needs and to describe performance choices.

  • Number of concepts : 0.2 x 106
  • Average number of halflinks per concepts: 0.5 x 102 (a relation is represented by 2 halflinks)
  • Number of percepts and variants (cumulated) per langage : 105
  • Average number of connections between concepts, percepts and variants, per concept : 0.2 x 102
  • Average number of focus in an active conscience tree : 10
  • Average size of words : 10 characters, thus 24 bytes.

Memory components

The memory of a CRANIS program may include:

  • concept set. A concept requires 8 bytes per se, without counting the jelly relations. The concept memory consumes around 1.6 Mb.
  • consciousness (focus tree). One focus uses mainly 8 bytes per concept. With 10 focus, an active conscience memory consumes around 16 Mb.
  • jelly (inter-concept relations, including qualified and fuzzy relations). One single half link consumes typically 32 bytes. Actually this may vary between 20 and 40 bytes, depending on JVM (32 bits or 64 bits) and depending on software design choices (priviledging either memory or speed). With the above assumptions, the jelly memory consumes 32 x 2 x 105 x 0.5 x 102 bytes = 320 Mb
  • language set (1 or many). One inter-layer connection consumes 4 bytes. With the above assumptions, a language set memory would consume 4 x 0.2 x 106 x 0.2 x 102 bytes for the link part, and 24 x 105 bytes for the wording part, thus globally  18.4 Mb.

The practical conclusion of this paragraph is that the jelly is by far the most significant memory consumer.

Client Server

The architecture involves servers, heavy clients and light client.

Server Heavy Client Light Client
Concept memory? yes yes yes
Conscience memory? yes partial and delayed no
Jelly memory? yes yes no
Language set memory? no yes (1 or many) yes (1)
Purpose Running consciouness Monitoring & intelligent connection Basic sommucation
User interface no yes yes
Priority Speed ! Display & I/O Display & I/O
Estimated memory 350 Mb 400 Mb 40 Mb

One server is able to answer to requests from various simultaneous heavy and light clients.

The server is a CPU intensive program. Its critical measure is the average time per excitation cycle, and this value should be between 10 and 100 milliseconds.

The clients demand less CPU performance, but will require some resources for animated display, at least when representing consciousness activity.

Java Packages

The main package (mscp.alex.brain) contains the following classes, with meaning close to explanations given in the CRANIS theory and model:

  • hLink: half link, i.e. half of a jelly relation.
  • concept: concept, relations, jelly
  • langSet: language Set, including percepts (words), variants (flexions) and trans-layer connections.
  • focus: consciousness component
  • topNodes: top sorted concept nodes, present in a focus and ordered on excitation level
  • server: thread present on the server side, producing answer to client requests
  • clock: timing accessory
  • tunable: utility class for tunable parameters
  • closeWord: utility class to find lexical form close to a String argument