A Webmind running across 500 4-processor machines would have 500 lobes, between 4 and a few dozen pods per lobe, and a few thousand nodes per pod -- altogether about ten million nodes. Not much compared to the hundred billion neurons of a brain. But a Webmind node is much bulkier than a single neuron, corresponding more closely, I reckon, to a neuronal cluster consisting of 10,000-100,000 neurons. It's hard to make such a comparison meaningfully, but my suspicion is that a Webmind running on 50-500 machines is about as powerful as a human brain.
Not all Webmind nodes are created equal. Some have the power to activate others: these we call actors. And some have the ability to incorporate nodes and other objects within themselves, creating new groupings. These we call composite actors. Webmind constantly creates new actors and destroys old ones. Each actor contains a number called its "importance," and when new actors are created, the least important ones are deleted to make room for them. The more important an actor is, the more CPU time it gets.
Inter-activating actors in a hierarchy -- again, this is getting us closer to the necessary infrastructure for mind, but it's not quite there. In addition to a hierarchy, we need heterarchy or networking, what Peirce called "peculiar relations of affectability." To build this, we introduced the idea of a pointer to a process. In addition to containing actors, a composite actor can point to actors. Linking is one kind of pointing, which carries extra information: a link from one actor to another contains two quantities, one representing the "strength" of the relationship between the two actors, and another representing the "confidence" with which this relationship is known. An actor links to other actors when it has some kind of relationship to them. The other actors that an actor links to may be far away from that actor -- on another computer halfway around the world, for example. It doesn't matter. Just as a Web page can link to another Web page no matter where it is, an actor can contain a pointer to another actor no matter where it is. What matters is the existence of a meaningful relationship.
And how does an actor communicate with the other actors that it links to? It can't communicate directly. It has to create a moving actor, and send this moving actor to the actor it wants to communicate with. Any actor can move if it wants to, and stay still if it wants to. There are various types of actors that are custom-built to move. There are information-carrying actors that bring something to a remote actor, maybe just a bit of importance, making their destination a little more important, causing it to get a little more attention. And there are information-gathering actors, that go to a remote location, get some data, and come back.
Every actor, when it's activated, sends some mobile actors to the other actors that it links to, sending them a bit of importance, boosting their importance so that they'll get more CPU. This way, attention follows relationship. When one actor is active, other actors related to it get to be active. This is a software implementation of Peirce's "one law of mind," the tendency to take habits. It's an emergent pattern that comes out of the brain via electrical diffusion and neuron firing, and comes out of Webmind through the dispersal of importance-carrying mobile actors along the links of actors that get time on the CPU.
This is the infrastructure, the most basic core, of Webmind. Actors living on multiple machines, running on multiple processors, grouping each other, relating to each other, and spreading actors to each other. This isn't mind, yet, it's just the "operating system" of mind. We call it "Layer 1" of psycore. Java, with its object-oriented structure and simplicity of networking, provides the substrate that's needed to effectively build this "mind OS."
Now comes the really hard part: building the links between this basic core and the thoughts that Webmind produces. This is always one of the most difficult things in science: closing the gap between the "micro" and the "macro," between our understanding of the parts of a system and our understanding of its global functioning. Brain scientists are far from closing the micro-macro gap in their understanding of the human brain. They have some idea of how the neurons in the brain organize themselves to produce thoughts, but they certainly cannot reproduce all the steps in the process. In writing a computer program, however, you cannot rely on nature to fill in the gaps - you have to fill in every step of the process.
Layer 1 of psycore provides the framework for thinking, just as the neurons do in the brain. Layer 2 provides Java classes for more specific kinds of thinking: thinking about text, about data series, about pictures, and so on. Some actors defined by Layer 2 have names that humans can use to address them -- "cat", "Dow Jones Industrial Average", "War and Peace." Some actors embody patterns, and can tell us how much pattern they embody.
Layer 3 of psycore specifies the relationships between the crucial Java classes: node, link, pod, lobe, psynet, dialogue. These are Webmind's crucial "mind stuff" and have been from the beginning. Each of these Java classes is used to spawn many objects -- thousands to millions of nodes; millions to hundreds of millions of links and dialogues; hundreds to thousands of pods; dozens to hundreds of Lobes. These objects, interacting with each other in the computer's memory, according to their methods of activation, are the essence of the Webmind system.
Central to this process are several different kinds of links, each of which embodies a special kind of relationship. There are similarity links, representing the belief that one actor is similar to another. There are inheritance links, representing the belief that one actor is a special case of another. There are spatiotemporal links, representing the belief that one actor represents something occurring near the other one in time or space. There are containment links, representing the belief that the entity represented by one actor is contained inside another one. There are associative links, representing simply the fact that Webmind's dynamics tend to associate one actor with another.
These links are the elemental types of relationships that Webmind understands. They are a bit, but not a lot, like the various neurotransmitter receptors in the brain, which make different synapses different. The brain's receptors do not correspond so neatly to logical relations. But Webmind is not a brain; it is a mind that emerges out of digital computer hardware. Digital computer hardware is closer to logic than cells are.
These links are heterarchal, any node can link to any other node. But they are also organized in hierarchies of composite actors representing, not specific relationships like links, but collections of relationships. Roles, nodes that contain roles, pods that contain nodes, lobes that contain pods, and the mother of them all: the Psynet, the whole Webmind, that contains a lobe for each machine in its network. The basis of it all is the node: a node containing a bundle of links expressing its relationship to other nodes, and also some basic data objects and actors and roles. nodes sending out dialogues -- information gathering and information carrying agents -- of various types to help them build new links to other nodes. A gigantic network of interlinked actors, constantly rebuilding itself, extending across multiple CPU's and multiple machines.
The nitty-gritty engineering needed to make this all work is considerable indeed. But the basic concepts are elementary. It's nothing but Peirce's network of relations, each spreading attention to the other relations that it stands to in a peculiar relation of affectability. It's nothing but Nietzsche's dynamic quanta, each one defined in terms of other dynamic quanta, each one re-creating itself and each other. It's beautiful and primal -- but it's not intelligent, yet. It is like the brain of an infant. All the core abilities are there, but intelligence develops as it incorporates and processes specialized information.
Learning in Webmind
How does Webmind learn? How does it develop from the powerful and supple mind of an infant to the fully stocked, but often more rigid, mind of an adult? Most of this learning takes the form of creating new "subclasses" of the main Java classes found in psycore. These subclasses define the characteristics of specialized node types that Webmind uses to solve particular problems. The more of these specialized nodes a Webmind has, and the more refined they become at doing their tasks, the smarter the Webmind will be. Webmind builds up intelligence as it learns how to do tasks, just as people do. Many of the tasks it learns are similar to those people learn, but others are different because Webmind is a computer and not a biological organism.
For example, Webmind must develop nodes to internally picture things in the outside world, just as humans and other animals do. Animals get their information from visual, auditory and other sensual organs. Webmind gets its information from the Internet, and from its human users. This information is collected into special representational nodes:
A representational node in Webmind points to the actual information that it represents, e.g. if it's a Textnode it contains the Internet address of the text it refers to. It also points to other nodes representing patterns in this real-world information: concepts relevant to a text, trends in a numerical data series, themes in a conversation, etc.
The process of recognizing these patterns in a flow of data from the outside world is not trivial. Among other things, it involves special nodes concerned with short-term memory. The items which have been read from an input stream (a text, a data source, a conversation) most recently are stored in short-term memory, then selected information that's judged important is extracted from this stored in long-term memory. The short-term memory is particularly essential for language processing, sine the meaning of words is often dependent on the context in which they are used.
The representational nodes are grouped into modules based on the "sense modality" that they represent. TextNodes live in the "natural language" module, with other nodes useful for understanding text. ConversatioNodes live in the "conversation" module. DataNodes live in the "data" module, along with nodes representing trends and other patterns in data. Nodes representing financial data and the particular transformations associated with finance reside in the "finance" module. And so forth.
Webmind doesn't start with a blank slate, forced to learn everything itself. Instead, we program certain abilities into it. This, in effect, gives Webmind certain "instinctual" behavior patterns - things is just knows without having to learn them. And this is only appropriate; it would be unfair to expect a Webmind to begin life as a tabula rosa. Humans, after all, are born with some pre-existing abilities, including the ability to use language, to socialize, to perceive objects and to form certain types of abstract concepts. Webmind has its own initial endowments, different than those of humans. A new Webmind is born with the basic ability to process textual and numerical data; it does not have to go to school to learn the alphabet or numbers. Instead of going to school to learn language, it draws on Webmind's natural language modules, which contain basic grammatical structures, knowing, for example, that in the phrase "big cat," "big" is a modifier that acts on "cat." Instead of going to school to learn arithmetic, it draws on its data module, which enables it to carry out various mathematical operations on numerical data.
Data in these representational nodes is then processed by CategoryNodes, which infer concepts from the patterns in text and data that the representational nodes embody. There are various types of CategoryNodes, representing different ways of dividing things into categories. Categories form hierarchically, so that we have categories of categories, categories of categories of categories, and so forth. One important way of categorizing things is according to the time at which they occurred. There are TimeNodes which represent collections of information collected at about the same time. This is also true in the human brain, we remember things which occurred at the same time as related, even though they have no other logical relationship to each other.
Human beings use much of their brain power to categorize sensory data - much of our brain is taken up with interpreting and storing visual images. Webmind, at least at this point, does not process streams of video; it processes streams of words and numbers. This is a limitation, of course. Webmind cannot recognize us when we walk into the room. We could work on giving Webmind this skill, but it would take a long time and consume a lot of resources and we already have a receptionist who does a fine job of greeting everyone who walks into our office. It makes more sense to spend resources teaching Webmind to do tasks that humans find difficult or impossible.
In particular, we have focused on giving Webmind the skill to discern patterns in textual streams and numerical data streams at the same time. This is hard for humans: it takes us a lot of training to learn to work with words and a lot of training to learn to work with numbers, and still a lot more to learn how to fit them together. And even the most skilled human beings can only read so many words and process so much numerical information in a given period of time. Webmind can do this much faster than we can. It is this ability to draw correlations between textual and numerical data that allows it to do its current "best trick," which is predicting financial markets using information it reads in the news.
I want to stress, however, that Webmind is not just a set of discrete computer programs designed to do different things. While the nodes do different things, and each type of node has unique programming, all nodes have certain absolutely essential abilities in common. These abilities, defined in psycore, include the following:
The basic action of mind is expressed here in the reaching-out of each node to other nodes, a process by which each node re-envisions itself based on its relationship to the other nodes that make up the mind. A node consists of data that it contains locally, and links representing its relationship to other nodes. A node is constantly re-building itself by re-creating its links, to more accurately reflect the relation between its current state and the current states of the other nodes it links to. This is self-reflection, the mirroring of the whole in each part, the "core twist" by which mind continually re-creates itself and thus manifests intelligence. In order to do anything useful in practice, however, this basic self-reflective twist has to act on a set of nodes that know how to do simple practical things. Things such as grouping together elements occurring at the same time, recognizing trends in data, identifying relations between words and patterns in data, identifying similar entities, and so on.
Specialized Modules
So far, we have seen that language, data-driven concept learning and reasoning are carried out by specialized Webmind nodes, grouped in modules. This is central to Webmind, but it is not the end of the story. In addition to these very general modules, Webmind has a number of more specialized modules which perform necessary functions. When I started the project, I didn't realize how much specialization was needed to make a mind. I thought everything would emerge spontaneously from the core modules. It hasn't worked out that way, and today Webmind has about sixty types of specialized nodes, grouped about sixty key modules. This seems to be about the minimum needed to support a mind operating on the Net, comprehending textual and numerical data and communicating with humans users and other digital minds. This section describes some of the more important ones.
The Categorization Module contains nodes that create new concepts from existing ones via statistical grouping. They do not act on perceptual data directly, but rather on higher-level nodes in the system. For instance, applied to TextNodes representing Web pages, a CategorizationNode it might generate an orderly table of contents such as that you find on Yahoo.
The Text-Numerical Interrelation Module is Webmind's analogue of the parts of the brain that integrate data coming from different senses, such as sight and hearing. It includes nodes which, for example, are linked to both DataNodes and collections of TextNodes, and which are highly useful for such applications as using information in newspapers to predict financial markets. These cross-sensory links allow activation to move between text and data in an intelligent way.
The Query Module includes nodes specialized in interactions with human questioners. Webmind's query processing is integrated with the rest of its mental activity, just as for a human being, question-answering is not so different from purely internal thought processing. When a query (be it a series of key words, a paragraph of natural language, or a series of commands requesting particular data operations) is entered into the system, a node is created for it, this query node sends out mobile agents, and these agents create new relational agents joining it and other nodes. Activity related to the query node spreads through the Psynet, and after a certain period of time, the nodes with the highest activity relevant to this particular activation process are collected, and returned as the answers to the query. The distinction between activity due to a particular query and activity due to general Psynet thought processes or other queries is managed by an innovative, proprietary technique of "parallel thought processes." This allows Webmind to do one thing the human mind cannot: carry out hundreds or thousands of simultaneous trains of thought, and keep them all straight!
The Social Module has nodes specialized in mediating interaction with humans and with other Webminds. UserNodes representing human users are an essential part of the user-interaction system, allowing Webmind to resolve ambiguities in questions based on its knowledge of the particular user who asked the question. FriendNodes representing other Webminds are essential in the task of referring queries to the appropriate other Webmind when necessary. Furthermore, within the same multi-machine Psynet, FriendNodes are needed to control the exchange of nodes between machines (each node naturally moving to the machine with whose population it shares the most meaning).
The Self Module has nodes which continuously monitor the state of the system and record its history. The SelfNodes also predict the future state of the system, and submit queries to the system based on their studies. They give Webmind a high degree of self-awareness or consciousness. The Self Module gives Webmind a high degree of what we humans think of as true intelligence; awareness of itself.
Emergence of True Intelligence in Webmind
So far, I have described Webmind's major nodes and other components. I have argued that they are analogous, in a general way, to the more than one hundred distinct structures in the human brain. Now we come to the most exciting part: making them work together to produce true intelligence. The most exciting thing about the brain, after all, is not the individual neurons, the neuronal groups or even the larger structures: it is the way they all work together to create the human mind. And so it is with Webmind. The individual Webmind modules, focused on areas such as language understanding, data analysis and concept learning, are powerful computer programs. In most cases they are advanced beyond anything the competition has to offer and we are very proud of them. But the true Webmind intelligence emerges when we put the modules together.
Brain scientists still don't know exactly how all the parts of the brain work together to produce the mind. Sometimes it seems like magic, a gift from the Gods. That is why philosophers such as Descartes thought that the mind was something quite distinct from the brain - something spiritual, not mundane and physical. Complex systems theory has shown, however, that beautiful, complex systems can emerge out of simple, comparatively mundane components. Scientists are rapidly learning more about how this happens in the brain, despite the difficulties of monitoring the activities of a living system.
With Webmind we can watch intelligence emerging, because we have the tremendous advantage of knowing exactly what is happening all the time. We know how the modules work, and we know exactly how they interact. Each of the modules in Webmind does very interesting things, but each of them also has known limitations. We have learned that intelligence emerges as the system learns how to work around these limitations. For example, each Webmind component works best when its inputs are of certain kinds, and works badly for inputs of other kinds. Computer programmers call this kind of program "fussily intelligent." A fussily intelligent system component can display a high degree of intelligence, but can be quite fussy about when it displays this intelligence. If its inputs are in the wrong class, it can behave quite stupidly.
Fussy intelligence is much like "brittleness," a common property of
rule-based Artificial Intelligence systems. Brittleness means that a system
breaks down when its inputs are outside a certain domain. The system cannot
generalize. Webmind is not brittle in this sense because it doesn't break
down when it gets unexpected inputs. Webmind systems can reason about anything
at all, they are quite robust in this way. But, if they get data that are
too uncertain, or contradictory, they simply do not give very interesting
conclusions. If the data are poor, Webmind components work but they aren't
very intelligent. Webmind's intelligence is maximized when its nodes are
fed the kinds of inputs that they like. It's fussily intelligent.