Artificial Consciousness

July 29, 1998

About absolutely dynamic systems

By Pierre Teilhard de Chardin "the most fundamental aspect of the universe is that it contains an inherent tendency to produce entities that are increasingly complex and conscious".

What I want to describe below is my artificial consciousness program DI, please do not take it as "scientific truth" or something like this. It is the way how I created my artificial consciousness program and the problems which I had to think about when I created it. Concerning the distribution etc. this text is subject to the same rules, mutatis mutandis, as my program mentioned below.

The entities in artificial consciousness program DI are a kind of systems (statically just points with no properties connected with each other by links with no properties, where point with its connections is called knot), where the structure (not the properties of the knots or links) is constantly changing. As the number of links in a knot is not limited, such system has no predefined regular grid, which may define some space with fixed number of dimensions, like spin networks in physics. In my opinion any system with restricted number of connections from any particular point is restricted in its development and once it has to disappear on the simple reason that there can happen something to which the system cannot properly react, in order to maintain its existence (even if it is without boundaries, the connections between the parts of it would simply disappear).

Artificial consciousness program DI is *not* a N_e_u_r_a_l Network system, *not* a fractal-based or formula-based reasoning system, *not* a cellular automaton and *not* an e_x_p_e_r_t system on a simple reason that, as it was said above, in artificial consciousness program DI the structure itself is changing, and not the properties of the knots or links.

Absolutely dynamic systems are based on the principle that everything inside a system has to be able to emerge, and everything has to be able to disappear. In my opinion this is the only principle based on what it is possible to develop the systems which are absolutely dynamic, ie with no restrictive predefined rules, and accordingly with no restrictions to their development. As we see the AI systems, they are in general restricted at least in some way. The most unrestricted seem to be the cellular automata, but they generally always have a fixed grid and quite arbitrary rules of changing properties of the node, most of the structures will rot away quite quickly, except certain patterns if there is only one of these, or certain patterns which shall never become very complex, there are no theoretical reasons why cellular automata supposed to be completely self-developing. And because of fixed grid, everything implemented there tends to be slow and clumsy; we need connections. Absolutely dynamic systems may in a way be considered as derived from cellular automata, or even to be somewhat similar to N_e_u_r_a_l Networks, but the main difference is that absolutely dynamic systems only work based on creating and deleting the knots (nodes), which theoretically may have unrestricted number of links.

As I said, in artificial consciousness program DI the structure itself is changing, not the properties of the knots or links. This means that new knots shall emerge, and such change shall cause the emergence or disappearance of other knots.

As we see, as a result of emergence of a new knot, some other knots have to disappear. How to decide what kind of knots are so "bad" that they have to disappear? If we look at the pair of new knot and adjacent knot (the knot with what the new knot is connected) then we see that both the new knot and the adjacent knot are connected with some other knots. It can be that both the new knot and the adjacent knot are connected with the same knot, but there can also be no common knot with what both the new knot and the adjacent knot are connected with. This is the simplest possibility to make a distinction between the pairs mentioned above: two knots may have common knot, which is connected to both of them, or there may not be any such knot.

So the knots which have no common knots with the new knot would disappear. But some new knots have to emerge. As the common knots are the criteria, then there are three possibilities to build new knots: the new knot would point to the common knots, the non-common knots or to both of them. In case of the first possibility the number of knots in the system would probably constantly decrease, and in case of the third possibility the number of knots would constantly increase. So the only possibility with no such constant tendency, is that the new knot has to point to non-common knots. Trying to interpret the result of this derivation, it may be considered as a form of association which enables to generate all possible solutions in certain circumstances. An indirect evidence of such association occurring is that the damaged areas of nervous system will be replaced by new neurons, which have similar structure than before damage, which means that new neuron must connect together that, which was not connected together before. Also movement of flagella inside the neuron is based on changes in the structure of microtubules, though this is likely much too slow for implementing all the processing inside the neuron. Deleting the knots may be considered as a form of natural selection, knots which are not deleted, or constant patterns of change (I implemented one such pattern), give a "memory" where some areas may also reflect the others, because of massive connectedness. All these processes happen massively simultaneously, like the processes in nature, so in that way it is different than T_u_r_i_n_g machine, though likely the systems may be entered, which can do everything what T_u_r_i_n_g machine can do.

The system starts from a very minimal structure, there just have to be some knots which are somehow connected to each other (the start structure is also presented in "readme.rtf", so you can see that it is really simple). After that, everything, including training, can be done by normal interaction, ie by entering letters, but it must be considered that everything, even the moment of entering a letter, has an influence on how the system will develop (by entering a letter, corresponding i/o knot becomes new, and program shall output a letter when knot is created with i/o knot). Even in that sense absolutely dynamic systems are different, and work more "naturally", than for example N_e_u_r_a_l Networks, which need a special stimulation signal for training. You will see that at first the system would "explode" and that after, when it is more developed, it would achieve some kind of balance. My aim was at first just to prove that the system can learn something (just to recognise some simple words) and it was so. This result was never achieved with self-developing systems like cellular automata, in other AI systems the functionality is much more predefined, or even just programmable. As it can learn something, then it seems that based on everything what has been explained above, the development of it does not has to be restricted.

Tarvo Korrovits
Email: [email protected]

This is my page since July 29, 1998 (Sorry, this site was not written for the sake of discussion and i didn't care to make it beautiful, so i didn't change this old fc design and the text here is also somewhat old. As a funny remark, if you cannot imagine of how such system works, then maybe it helps that in one discussion it was compared to 3d pipes screensaver where the pipes try to make connections, instead of avoiding connections.)


Listed in Open Directory and in these sites:

artificial consciousness

project page
AC Forum
where you may find some additional information about artificial consciousness program DI and artificial consciousness, I used to give a possibility for open and also anonymous discussion. A copy of the old comments page is also there.

You may also be interested who am I, or what else I do, or in the other words "show something what you did what everybody can see". Well, I have not too much time, but I tried to do at least something which I hope would help people to learn programming language c, for example I'm one author of files conio.h and conio.c in dev-c++ distribution, I also wrote c89 description, which is part of visual mingw documentation. It's not much what concerns programming, I know, but hopefully I succeeded to help some people :-)

There are reasons to think, that if the solution is not DI, then the solution is close to DI. DI is released now under open source GPL license, if your dream is to create a true AC, or a fully learning system, then do that, you may help to develop DI in sourceforge ADS project (see the end of this page). The development and autorship is governed by the GPL license, and your changes remain in the CVS forever.


In February, 2003 I wrote a new (and perhaps final) version of my artificial consciousness program, in addition to other improvements (it works now correctly in Windows 2000 Pro etc) it is now possible to decrease the system size, and increase it as much as can be allocated. It's not exactly useful for everybody to download that artificial consciousness program, you may want to do it in order to check whether what I say here about what it does is correct, to see what absolutely dynamic system is, or you may have a reason of your own. Click "Download version 3.2" in the end of this page to download the program. I have run this program a lot on my computer (my computer is AMD Athlon 1.5 GHz with 266 MHz memory) and it never caused any harm to the programs in computer, operating system or to programs running simultaneously with it, in spite that implementing changing structures was not the easiest programming task. At present it's not known what additional features, like pattern searching in structure etc would be necessary. Which we would need are kind of r_e_g_u_l_a_r expressions for the topology of the structure, by such patterns we may identify a places in the structure, give names to them, identify processing nodes, and how they interact with each other, change connections, and the way how they are created or destroyed.

One little thing to know when running the program is that when you want to print the knots, you don't have at first much starting points. Therefore first don't enter nothing in the dialog box, then you get some general information including newbegin and oldbegin. Copy one of these into dialog box and enter some number of knots. That way by printing both from newbegin and from oldbegin, a very large number of knots (more than total number of knots) on every step, you see exactly what the system does, everything you see when you print all knots is everything there is in the system. And, maxlinks 200, and conjunctive mode gives usually more stable start structure. You may react to first letter in a cycle, too much or too few interaction makes it unstable.

It is also possible to write a teaching program for artificial consciousness program DI (though I doubt that it's always feasible in accordance with what is written below) by writing a special dynamic-link library (dll) in accordance with example in dthi.cpp. In order to do that, you may use open source c/c++ compiler MinGW in what my artificial consciousness program itself was written. Concerning other compilers you have to make sure that export symbols are the same as in DI teaching programs. How teaching algorithm of the absolutely dynamic artificial consciousness system has to work? It is only a suggestion but as such system tries to work so that it can predict the results of its behaviour, such algorithm probably gradually has to "start to work" and start to work more correctly when the reactions of the system are more correct.

The program works correctly now, with current *.str and *.dll files the system is taught to repeat a word in a single cycle and without additional interaction most of the time it does nothing else. No such action is predefined, also the system has to overcome a number of restrictions like deleting knots, has to control its size and find a way how characters what were entered in separate cycles can be written in a single cycle. In general the process had to emerge in the most disturbing possible environment.

System options for this system were as follows. Decay was 400, just the results were not so good with smaller decay, though it works even with decay 200. If the number of links in a knot were not restricted, for stable system it's necessary to have system size at least decay ^ 2 (160000 for decay 400). System size was 200000 and maximum number of links in a knot (maxlinks) was 1000, this was chosen so that it was greater than a number of links in any knot. You may try decay 200.

Of course it even may be expected that such artificial consciousness system has to work somewhat similar way like human does (I consider it pretty strange), but I suppose that it's better to think more rationally. Computers are not so powerful concerning modelling of the natural processes, nobody thinks that it's possible to predict weather precisely and the problem of entanglement of a single molecule is still unsolved. Computer is not so powerful tool for modelling natural processes because natural processes happen simultaneously while computer processes them sequentially and when the system increases, the processing time increases in cube. The artificial consciousness system described here learns, but also quite slowly, it's possible to increase learning speed by better teaching, but it's more likely in later stage of learning. We most likely can put it to work much better by increasing decay, but system size increases a lot of times then and speed may decrease thousands of times. Also in such system everything is interconnected, which makes it very difficult to create even the simplest systems "by hand". The first problem which should be solved is probably how to create processing nodes what are protected from the environment so that some simple connection would not destroy them, something like universal construction kit elements in cellular automation.

So also most likely, there are a lot of such things which might be done with absolutely dynamic systems in theory, but which are impossible in practice, because of slow speed or because developing such artificial consciousness systems is otherwise extremely complicated. So you may think that I shall wait and see what comes out of it, but please consider that this might be everything which is necessary and feasible, except some fundamental theoretical research (I want to see something beautiful). What may speed up the learning, may be fully independent cycles, so that one "picture" (code of a letter) would be generated while creating one generation of new knots, but this is only what I think. What concerns me... Well, I consider that what I did was necessary to do and I'm glad that I did it (proposed this mechanism).


SourceForge ADS project, Open Source, download from CVS or several mirrors
Download version 3.2 (1520 KB)
Download version 3.1 (930 KB)
Download version 3.0 (930 KB)

Download version 2.2 (834 KB)
Old version in AI Repository:
di.zip 683 KB
di5.zip 70 KB


This page has been visited times since February 1, 2002.