Wednesday, August 8, 2012

An Assembly Language for the Brain

This is not a real post. It's just a thought that occurred to me while I was corresponding with someone called Mariya Mykhailova on the subject of esoteric programming languages.

Here's the idea. What I am searching for in Wittgen could be called "An Assembly Language" of the brain or the mind.

Assembly language, in programming terms, is a very low level programming language that reflects, quite intimately, the core structures of the way a computer works. Often, other, higher level languages that conform to abstract programming paradigms quite different from that of the computer hardware itself, will be initially written in Assembly language. For example, a computer language such as C, is considered quite low level but higher than Assembly. C's structure reflects quite well the way simple serial microprocessors actually operate but it will be the same language even if it is implemented on machines with rather differing hardware. Higher-level languages such as LISP, reflect symbolic paradigms quite disconnected from almost any computer as it is actually built. So when writing a LISP compiler or interpreter, the core may be written in C. The core of the C compiler, in turn, may be written in Assembly language.

We can look at a brain as computer. With the exception of consciousness, this seems to be quite a plausible concept. There is no question that the brain can perform cognitive and reasoning functions that look quite different from the core functions that the underlying wetware are built to perform. Similarly, a numeric sequential computer can simulate massively parallel symbolic functions or even a large neural network. Nevertheless, despite this extraordinary flexibility on the part of such complex systems as brains and silicon computers, there is a significance to the question, what is the nature of the underlying hardware, what are the core functions out of which the more advanced simulations can emerge.

Wittgen is an attempt to discover the assembly language of the brain. It is a stab at creating a programming language that achieves the twin goals of any assembly language. On the one hand it must closely reflect what the underlying hardware does. On the other hand, it must be expressive enough so that it can be used to build higher level abstractions. 

I said in the post entitled Bio-Neurological Motivation that the if we open up the brain, all we find are neural networks and other associative-memory-like structures. We find no serial computer architecture of the kind we might expect in sequential formal logical reasoning of the type that we are so proud of. That is not quite true. In theory neural networks could be so arranged as to build any piece of electronics built out of silicon. The formal reason for this is that, as any "hello world" example (the computer world's paradigm for introductory example) of neural networks will show, it is easy to create a six neuron arrangement that can implement an electronic XOR gate. It is even easier to create a NOR gate. Now it is a well known theorem of electronics that a NOR operation is provably "functionally complete", meaning that a combination of NOR gates alone can create every possible logical gate. Therefore in theory you could build the latest microprocessor out of millions of these tiny neural networks. Nevertheless, it is not practical, and every indication is that the brain does not work like that. Moreover, in that arrangement, the system would probably never be trainable. 

We therefore return to the original motivation. We know that the core function of the reasoning brain is that of an associative memory in its static form and a neural network in its dynamic adaptive form. So the reason that Wittgen was designed the way it was, was to capture that core function as the central two functions: Writing the association (assign) and retrieving the association (retrieve). In that sense Wittgen is an assembly language for the brain. Now, what is left to do is to show how all the rest of the structures of reason can be plausibly implemented in terms of this underlying assembly language.

No comments:

Post a Comment