Anibots: Agent Collaboration Using Anigrafs

Posted in artificial intelligence on March 22nd, 2018 by Samuel Kenyon

It’s been a decade since I finished a Cognitive Architectures course at MIT (9.364) under professor Whitman Richards. My final project was a little thing called “Agent Collaboration Using Anigrafs.” Anigrafs were a pedagogical cognitive architecture that Richards defined. I wrote some code to implement anigrafs and hooked it to simulated robots, which I called “anibots.”  What follows is essentially my 2008 final report to Prof. Richards.

(I noticed several years later that he published Anigrafs: Experiments in Cooperative Cognitive Architecture as a real book from MIT Press.)

Ultra-simplified summary: Identical robots can cooperate if they use a type of mental network that votes with the Condorcet method on what behavior to do next.



The General Problem

The development goal is to achieve collaboration of situated agents to perform shared tasks and/or goals. These software agents are virtually embodied in a simulated world. The experimental aspect of this project is to determine if anigrafs (described below) can be used as the basis for teams of collaborative creatures—I refer to these creatures as anibots. And if so, what emergent behavior strategies work best? Do team members have to be specialized or can they all be identical?

What are Anigrafs?

Anigrafs [1] are graphs of agents intended to model the minds of situated creatures. An anigraf can also be thought of as an architecture for a real time control system at multiple levels, which furthermore is intended to have more complex behavior than a merely reflexive machine. Each agent represents a possible goal or action, and has a certain weight relative to other agents in the same local graph. The agents are connected by edges which indicate relations such as similarity. There may many subgraphs in the system, but the details of how those are connected and interact are not under introspection here, with the exception of proxy agent graphs which will be discussed later. Decisions are made with a tally machine (a voting algorithm), which results in only one action per iteration. There are various parameters to the tally machine, such as how many ranked choices each voter is allowed to vote with (knowledge depth). The choices are indicated by the graph itself—edges and edge directionality indicate preferences. Each candidate (an agent with a particular action or goal) is also a voter.

There are basically two levels of agents here: These networks of agents that vote are like sub-agents and they make up a “brain” of an agent that’s a robot.

The primary reason to experiment with anigrafs for collaborative artificial creatures is that the framework provides a means for arbitration of a creature’s actions/goals and a way to integrate the decision-making process of multiple creatures. The tally machine—this project uses a Condorcet Tally—acts as the arbiter of possible behaviors. This voting system inherently results in a winner (assuming we have a process for ties and cycles) to resolve what goal gets the limited resources at each iteration.

The parameters of the voting system and the actual layout of the network of agents have various useful properties of both democracy and graph theory. For instance, “top” cycles in the outcome of a vote, in which multiple candidates are preferred to each other in a loop, e.g.: A > B > C > A, can be taken advantage of in the mental design.


The key components/properties of anigrafs I am using for collaboration:

  • basic concept of “fair”/”best” decision making from many choices/goals
  • proxy agents
  • top cycles
  • shared knowledge structures


“A survival machine may be said to have communicated with another one when it influences its behavior or the state of its nervous system,” wrote Dawkins [2]. This definition of organism communication is perhaps enlightening for the anigraf approach. In later publications Dawkins revised this position to one of signals between animals being manipulative.

The three conditions for anigraf “dancing” [1] , translated to conditions for “team collaboration”:

  1. Each team member must have a common action set (or meta-actions—in this experiment each choice was hooked directly to a movement routine, but that is not necessary).
  2. Each agent can communicate with its corresponding agent in the other anigraf (I don’t specify yet whether it can link to multiple other anigrafs).
  3. Each anigraf’s tally includes votes from the other anigraf(s).

Interfacing practicality requires a shared protocol. In this experiment, the anibots are all exactly identical, both in the anigraf organization and starting weights.

Environment Interfaces

From the anibot point of view, environment is everything; in some cases even its own body could be considered environmental. In the implementation, as is likely in biological machines, the environment from the point of view of an anibot is bottlenecked through the anibot’s sensor inputs. In reality, the abstract agency that is the creature’s mind, which considers the environment as something else, is itself the operation and structure of an object (e.g., a computer or a nervous system) that is part of that same environment. The anigraf agents within the mind of the creatures described here could themselves have points of view. After all, anigraf agents represent goals and/or actions. Does this mean we also draw the line of me vs. environment (or us vs. them) within the mind at the level of mental agent? Is there any point in considering how an agent interacts with the anigraf system from its point of view? It is not as if it even has a sense of self—it is part of a larger system which could after much growth and evolution have a sense of self. But it is useful to consider the interfaces the agents have and what schemes might develop for them to gain advantages for the goal they represent. This might lead to the need for agents to make alliances, cliques, and to incubate the role of brokers [1]. Alliances and other strategies developed through evolution or other means of search/generation would perhaps be conceptually similar to biological ESSes [2] (Evolutionarily Stable Strategies) both within the brain and at the scale of macro organisms. This experiment does not test those developments, however, a focus on interfaces between agents at various levels—within a mind, between minds, between teams, etc.—is worth continuing in future experiments.

My anibots can interface with each other, but what about other objects in the environment? As [2] described it for biological creatures: “To a survival machine, another survival machine (which is not its own child or another close relative) is part of its environment, like a rock or a river or a lump of food. It is something that gets in the way, or something that can be exploited. It differs from a rock or a river in one important respect: it is inclined to hit back.” For our purposes, the difference between creature and object is that objects have a different interaction protocol. The experiment implementation will contain creatures with anigraf brains, but objects are not even handled in the mind. Objects (e.g., the block) exist only in the simulation, interacting at a physics level.



The real time control and communications system of each anibot is constructed with anigrafs. This experiment uses an implementation of anigrafs I wrote in C++. It is based on the concepts presented in the text Anigrafs [1]. Things that are specific to an implementation include vote tie resolution. Since the Condorcet method of voting is being used, in the case of cycles there must be a process to handle this. Anigrafs presents top cycles as something to take advantage of for control systems and inter-creature coordination, and is thusly exploited in this experiment. Therefore our voting system is set up so that in the case of cycles, each iteration retains state of the last iteration, and the resulting decision will be sequentially the next decision in the cycle of winners. Other non-winner resolution methods could have been used, such as recasting the vote with a system different than Condorcet, or merging the top two or three actions together (although that would require actions that can be combined, such as low-level motor command vectors). The other reason not the use merging is that it would no longer be a pure anigraf—which is part of the point of this experiment—as one of the fundamental hypotheses of anigrafs is that “the society of agents will choose one ‘category’ for action, no mixtures of categories” [1]. Although one might then ask, does “category” allow exceptions such as mixing actions of the same category which are for some reason in the same local graph?

This code for this experiment creates the proxy graph by cloning the anigraf proper (which is loaded from a file). The clone maintains whatever edges the original did, but not necessarily the weights (depends on parameters). The graphs are linked together with an edge set loaded from a file.

Representing Intent

The proxy graph—as a model of another anigraf—updates to represent the choice of this external anigraf. The method used to represent intent is to shift a constant value around depending on the winner (of the external anigraf), e.g., on each iteration:

  1. Subtract constant from previous winner.
  2. Add constant to current winner.

A problem observed in implementation was the issue of a node in the proxy graph winning. The intention was that a node in the original anigraf must win, since the proxy nodes don’t cause actions, they are just there to affect the final vote. The weights do not change at all except for this weight change, although in future experiments one would probably want to make a more complicated architecture in which anigraf weights are dynamic.

If we take an anigraf by itself, it will always have the same winner (or the same cycle if there’s a top cycle). If we then have two anigrafs interfacing, their proxy graphs start changing to reflect the winner of the other anigraf. The edges linking the proxy graph to the action graph determine how the weight change affects the vote.

Taking turns

How do we get identical anibots to avoid the simultaneous “sidewalk cha-cha” or stepping-on-toes phenomenon (they both have the same states at the same moment, thus the next same states, and so on)? Unless that’s the desired group goal (like flocks of birds), there has to be a way out of it. Maybe noise from environment helps keep the timing slightly off to prevent an infinite cycle. This simultaneous issue was resolved by using a turn taking scheme.

This allows cycles to happen—within the system of the pair of anibots—even without using top cycles of the anigrafs, and without any external stimuli, and with the exact same starting configuration of homogeneous anibots. In other words, my code exploits the nature of anigrafs to get behavior cycles which emerge only when multiple anibots interact.

With top cycle resolution, we can generate possibly-useful behavior patterns by constraining the the proxy weights to be proportional to the corresponding original anigraf weights. For example:

Behavior pattern:

Here is another example, although probably less useful for the block task (described later) since there seem to be too many Left Push actions happening:

Behavior pattern:

The Environment

The anigraf system itself is abstract, its environment consisting simply of communication with other non-embodied, non-situated anigrafs. Anibots are embodied and situated as spherical robots in a physical simulation and visualizer. Ultimately, I want to see how real-world constraints and creature abilities affect the systems and collaborations. The simulation is implemented with Breve [4]. A Python script connects the anigraf C++ program (with the help of SWIG) to the Breve simulation environment. My Python code also defines low-level physical actions triggered by higher-level anigraf actions.

An Experiment

This experiment tests creatures’ (anibots) ability to do a very simple task, which is to push a block as far as possible. They are tested both alone and in teams. There are only three high-level actions (the anigrafs are at this level):

  • Push block in center
  • Push block on right side
  • Push block on left side

In the physical simulation, intermediate actions are handled automatically. For instance, the anibots do not have to search for the block—I merely orient them so they are ready. Just as low level actions of a robot would be handled in other parts of the architecture, this simulation handles low level actions of propulsion and aligning with the block. For the purposes of this experiment I am only dealing with three high level commands.

The single inanimate object in this experiment—the block—does not interact at the level of the anigrafs. These anibots are so simple they do not attempt to model anything except other anibots.

Desired Sequence of Events:

  1. Anibot 0 (A0) reaches block first
  2. Default winner is Center
  3. A0 starts pushing block in the center
  4. Another anibot arrives (A1)
  5. A2 and A1 become aware of each other and establish communication
  6. A2 updates proxy that A1 has center winner
  7. This causes A2 to have a winner for Left or Right
  8. A1 can either keep pushing Center, or even better switch to the opposite side that A2 has chosen
  9. They continue to take turns, possibly not changing now that they have stabilized, until some external event happens.

The benefit of the second anibot is twofold:

  1. Twice the force upon the block should move it faster.
  2. Reduces failure due to the metastable nature of a pushing the block at a single point.

And of course in a more complicated scenario, having a teammate brings many other benefits, such as a replacement in case of death, or necessary help when the environment changes (e.g. they have to push it uphill), or they have different roles (e.g., one is a scout or a bodyguard).

Anigraf A

C = Center Push
L = Left Push
R = Right Push

In the middle you can see the proxification edges, which connect the proxy graph to the original graph. The design of the proxification edges is done here to influence the state machine nature of interaction anibots. Right Push (prime) favors Left Push because that is best for a mutual cooperation of the block pushing task. Likewise, Left Push (prime) favors Right Push. With this simple example it is evident that proxification edges take on a more complicated meaning than the edges within anigrafs without models. The edges may mean not just a preference for “what action is like me,” but also “what action works best with me” (or “what action is harmonic with me”).

It may seem logical that the C’ has an edge to C, however when I experimented with Anigraf B (shown below) in which C’ is not connected to C, it was actually easier to generate weight configurations that result in more interesting patterns. “Interesting” means the anibots in the group choose different behaviors and switch between behaviors in a cyclic pattern.

Anigraf B

This asymmetrical graph could represent noise in a system that is deployed. However, when generating configurations (weights) for this experiment, Anigraf B was found to be much easier to produce configurations with desirable behaviors. The results section describes experiments used with Anigraf B.

Behavior Strategies

In this experiment the anibots are homogeneous. At the moment, each anibot can only “lock on” (interface with) one other anibot at a time. At the moment, they completely ignore the inanimate object (the block), although that could eventually be part of the system’s model(s), for instance as described in Anigrafs Chapter 5 [1].

Proxification edges (the edges between the proxy graph and the original graph) can cause transition states from one anibot’s state to another anibots state. The push object task shows this—you can configure the proxy edges so that if Push-Left is the state of Anibot 0, then its buddy Anibot 1 will have extra preference to choose Push-Right. In this case, proxification edges don’t necessarily indicate preferences for similarity, but in some cases preferences for what agent (anigraf node) should win if this agent has already won, e.g. from the point of view of an agent: what agent complements me best?

In this example world, with two anibots, the block task is accomplished optimally if one anibot pushes on the left, and another pushes on the right. Alignment on the X axis is automatic, so the anigrafs in this experiment do not worry about that. There are starting configurations which lead to this behavior pattern—even though the anibots are homogeneous, because of the turn-taking, it is possible for one to settle on one action and the other to settle on a different action. However, settling on one task for the duration of teamwork is not always the best strategy.

A possible escape from settling is that top cycles in the proxified anigrafs can be used by the anibots to “dance” with each other. This “dance” may not result in the optimal block pushing (although it’s better than a sole anibot), but it has the potential to be more robust in a more dynamic or more complex environment. The dance could also be used for different tasks—for instance, if the goal was to move the block in a nonlinear path, then a particular set of dances would achieve that. Anigraf proxy modeling supports a social protocol which can be investigated from its communication potential for teams of anibots in various environments. This potential will be tested in further experiments.


Case 1: One Anibot

In Case 1, a single Anigraf B anibot ran with the starting weights shown in Fig. 1. The resulting behavior pattern of is show in Fig. 3. Sequentially ordered (from top to bottom) screenshots from the simulation environment are show in Fig. 4. The block was moved a total distance of 87.18 units before failure.
This anibot does not have any intelligence to compensate for the metastable nature of the block pushing task. Because it is always choosing to push in the center, the physics of the environment cause the block to slowly rotate until the anibot blindly leaves it behind. One can imagine a few ways to make the anibot more robust in this task:

  1. Add more low-level automatic routines to the anibot, leaving the anigraf the same.
  2. Change the configuration of the anigraf so the behavior is more robust, e.g. alternating between right and left. However, this requires an additional agent in the anigraf in order to generate top cycles.
  3. Use a team of anibots instead of just one, which I demonstrate in Case 2.

With proxification turned on for a single anibot (Fig. 2), the mental situation is that of a “ghost”—it is modeling another anibot that is not there. With the given starting configuration, this disturbed variation of Case 1 will end up always choosing to Push Left, which is even worse than always choosing Push Center. The block in that case was only moved a total distance of 30.90 units.

Fig. 1: Case 1 anigraf

Fig. 2: With ghost proxy

Fig. 3: Case 1 behavior pattern


Fig. 4: Case 1 simulation screenshots

Case 2: Two Anibots

In Case 2, two identical Anigraf B anibots ran with the starting weights shown in Fig. 5 (the same weights used in Case 1). Case 2 is the point of the experiment, because here multiple anibots are interacting, each one modeling the other. The resulting behavior pattern of is show in the table below, which can also be represented graphically as shown in Fig. 6. Sequentially ordered (from top to bottom) screenshots from the simulation environment are show in Fig. 7.

Fig. 5: Case 2 anigraf

Fig. 6: Case 2 behavior pattern

Fig. 7: Case 2 simulation screenshots


The only blatant disregard for physics in the Anibots Simulation is the lack of collision handling between anibots. So they can occupy the same space when both doing the same action (see Fig. 8). If I allowed collision reactions in the physics simulation, they would be bouncing off each other like pinballs. This shows a need for automatic routines and/or rules such as how to crowd together or follow a partner. Or it could be something more specific to the situation, such as in this environment a fuzzy routine for each action so they find the next available open spot in the general vicinity of the Left, Center, or Right of the block.

The block was moved a total distance of 133.41 units before failure.

Fig. 8: Both Anibots Pushing Left (They Overlap)


Homogeneous agents containing anigrafs (with proxy graphs)—which are used to decide the agent’s actions—can be designed to behave differently when in groups than when alone, without any special case programming. The behavior strategies and patterns are a result of the graph edges and starting weights. A physical simulation with these agents, called anibots, has shown a very simple example of anigraf teamwork being more effective than the exact same anibots working alone. The simulation shows potential for anibots to be robust collaborative decision-makers in more complicated environments.

Comparison to Reflexive Machines

From the external point of view, after recognizing the behavior cycles, it might appear that these anibots are reacting to each other purely reflexively, perhaps like Braitenberg vehicles [3]. It also appears that at a given instance you can represent the architecture as a state machine.

The anibots in this experiment may appear to be simple reflexive machines because they are not changing their own action weights (or doing anything else mentally). The architecture within each anibot is doing social arbitration—the decision is based on their own wishes combined with the wishes of the other anibot. Since the simple anibots in this experiment do not change egotistical wishes, it might appear (except for the variability introduced from top cycles) that they aren’t modeling/integrating each other. To see the modeling effects (as an external observer), there must occur a change in the environment, team structure, or from other mental structures within the anibot’s control system. As a test, if I inject a change by altering the weight of one of an anibot’s action agents, the mutual behavior patterns completely change. For example, take the configuration used in Case 2, which results in this repeating pattern for a pair of anibots:

Upon injecting a weight change to increase the first anibot’s Right action to a large value (it really want to push right), the other anibot follows along—pushes left to compensate—changing the team behavior to the repeating pattern shown below.

Generating Behavior Patterns

It was expected that the process of anigraf generation would be a search in developer space for general classes of anibots that have the potential to conduct cooperative tasks. Then one must try to find examples of the anigraf configuration for the bots—which mental networks result in cooperative task execution—if any—and which ones do not work at all. The anigraf configuration consists of the graphs themselves and the starting weights, as well as various other parameters such as knowledge depth. However, after initial experimentation, it became apparent that resulting behavior patterns in an abstract sense are probably more important than concrete behavior results—i.e., you do not need to know the actual task or actions to generate potentially-useful anigrafs. The anigraf configuration is not the only important element in whether it will succeed at a task/environment. The anigraf can be assigned to make decisions at any n-level (i.e., ranging from low-level to high-level). So the mapping and routing of those decisions to the actual actions of the anibot in its environment also affects whether the anigraf is appropriate for a task/environment.

Future Investigation

Anibots as Interfaces Between Other Architectures

It may be feasible to turn an anibot into an interface. Existing software agents could add this interface in order to become collaborative agents. This interface, which could be a “black box,” would allow an arbitrary architecture to have a multi-agent arbitration mechanism. It could also allow heterogeneous agents to interact and act as a team on a mission if they have a shared standard for communication.

Evolutionarily Stable Strategies

Different and better methods for generating the graphs should be investigated. In the experiment described here, I basically was just trying to generate graphs that have certain kinds of top cycle patterns both alone and when combined with themselves (as a proxy). The act is like composing melodies so they generate harmony in polyphony, as in a canon. The patterns are affected by weights (which are dynamic in our system) and graph edges (which are static in our system). With proxy graphs, the patterns are also affected by the inter-graph edge patterns (“proxification” edges).

It may be useful to research evolving anigrafs for that work well with heterogeneous agents and how these evolutions and resulting anigrafs differ from those that work well with homogeneous agents. Homogeneous anibots which work in teams can be compared to animal symbiosis, e.g., aphids and ants [2]. Anibot behavior strategies can be viewed as ESSes for mutual cooperation [2].

Comparisons to nature may allow anibots to help investigate questions such as: do models of self appear before models of others or vice-versa? Can proxy agents be developed to serve the same roles as mirror neurons?

[1] W. Richards, Anigrafs: experiments in collective consciousness, 2007. Online:
[2] R. Dawkins, The Selfish Gene, Second Ed., 1989, Oxford University Press.
[3] V. Braitenberg, Vehicles: Experiments in Synthetic Psychology, 1984, MIT Press.
[4] J. Klein, Breve simulation environment:

Tags: , , , , , , , , ,

AAAI FSS-13 and Symbol Grounding

Posted in artificial intelligence on November 19th, 2013 by Samuel Kenyon

At the AAAI 2013 Fall Symposia (FSS-13) 1 2, I realized that I was not prepared to explain certain topics quickly to those who are specialists in various AI domains and/or don’t delve into philosophy of mind issues. Namely I am thinking of enactivism and embodied cognition.

my poster

my poster

But something even easier (or so I thought) that threw up communication boundaries was The Symbol Grounding Problem. Even those in AI who have a vague knowledge of the issue will often reject it as a real problem. Or maybe Jeff Clune was just testing me. Either way, how can one give an elevator pitch about symbol grounding?

So after thinking about it this weekend, I think the simplest explanation is this:

Symbol grounding is about making meaning intrinsic to an agent as opposed to parasitic meaning provided by an external human researcher or user.

And really, maybe it should not be called a “problem” anymore. It’s only a problem if somebody claims that systems have human-like knowledge but in fact they do not have any intrinsic meaning. Most applications, such as NLP programs and semantic graphs / networks, do not have intrinsic meaning. (I’m willing to grant them a small amount intrinsic meaning if that meaning depends on the network structure itself.)

Meanwhile, there is in fact grounded knowledge of some sort in research labs. For instance, AI systems in which perceptual invariants are registered as objects are making grounded symbols (e.g. the work presented by Bonny Banerjee). That type of object may not meet some definitions of “symbol,” but it is at least a sub-symbol which could be used to form full mental symbols.

From Randall C. O’Reilly, Thomas E. Hazy, and Seth A. Herd, "The Leabra Cognitive Architecture: How to Play 20 Principles with Nature and Win!"

From Randall C. O’Reilly, Thomas E. Hazy, and Seth A. Herd, “The Leabra Cognitive Architecture:
How to Play 20 Principles with Nature and Win!”

Randall O’Reilly from University of Colorado gave a keynote speech about some of his computational cognitive neuroscience in which there are explicit mappings from one level to the next. Even if his architectures are wrong as far as biological modeling, if the lowest layer is in fact the simulation he showed us, then it is symbolically grounded as far as I can tell. The thing that is a “problem” in general in AI is to link the bottom / middle to the top (e.g. natural language).

I think that the quick symbol grounding definition above (in italics) is enough to at least establish a thin bridge between various AI disciplines and skeptics of symbol grounding. Unfortunately, I also learned this weekend that hardly anybody agrees on what a “symbol” is.


Photo taken from the Westin hotel. I just noticed that Gary Marcus snuck into my photo.

Photo taken from the Westin hotel. I just noticed that Gary Marcus snuck into my photo.

Gary Marcus by some coincidence ended our symposium with a keynote that successfully convinced many people there that symbolic AI never died and is in fact present in many AI systems even if they don’t realize it, and is necessary in combination with other methods (for instance connectionist ML) at the very least for achieving human-like inference. Marcus’s presentation was related to some concepts in his book The Algebraic Mind (which I admit I have not read yet). There’s more to it like variable binding that I’m not going to get into here.

As far as I can tell, my concept of mental symbols is very similar to Marcus’s. I thought I was in the traditional camp in that regard. And yet his talk spawned debate on the very definition of “symbol”. Also, I’m starting to wonder if I should be careful about “subsymbolic” vs. “symbolic” structures. Two days earlier, when I had asked a presenter about the symbols in his research, he flat out denied that his object representations based on invariants were “symbols.”

So…what’s the elevator pitch for a definition of mental symbols?

Tags: , ,

Artificial Intelligence is a Design Problem

Posted in artificial intelligence on September 2nd, 2013 by Samuel Kenyon

Take a look at this M.C. Escher lithograph, “Ascending and Descending”.

"Ascending and Descending" by M.C. Escher

“Ascending and Descending” by M.C. Escher

Is this art? Is it graphic design? Is it mathematical visualization? It is all of those things. One might even say that it’s also an architectural plan given that it has been used to implement physical 3-dimensional structures which feature the same paradox when viewed from a particular angle.

A physical implementation of the MC Escher's "Ascending and Descending"

A physical implementation of the M.C. Escher’s “Ascending and Descending”

Design and Specialization

Design stated as a single word typically means design of form, such as with industrial design, graphic design, and interior design. It would come as no surprise to anyone to see the term design used for any other form-creation discipline, such as architecture and software interfaces. Usually if somebody means production of stuff in their specialization, they use a modifier, e.g. “software design.”

I do not often encounter software engineers self-styled as “designers.” When I hang out with people in the various related disciplines of user experience, calling oneself a “designer” is perfectly fine—there is an atmosphere of design of form. Some of them also are “developers”, i.e. programmers of web or mobile apps. It’s common for the younger designers to speak of a wish to learn to code. Perhaps the design specialists are a bit more open to cross-discipline experience. To be fair, the creative point of view seems to be gaining in favor—there are now coding schools which focus on rapidly teaching the creative aspect of coding to people who have no code experience and possibly no mathematical experience.

Specialized design fields presumably have a lot of overlap if one were to examine general aspects and the notion of abstractions and how abstractions are used; yet software engineers aren’t typically thinking of themselves as “designers.” And they aren’t expected to or encouraged to. I have experienced situations in which I designed the interface of an application using primarily interaction design practices, and also developed the software using typical software practices, and no single person would comprehend that I did both of those things to any degree of competence. Professional designers in the realm of human-computer interfaces and user experience were brought in and were genuinely surprised that my product had already been designed—they expected a typical engineer interface design. Engineers have a very bad reputation in industry for making horrible human-computer interfaces. But as I said, they aren’t expected to. Or even worse in particular cases, no expectations for design existed at all because the people in charge had no concept of design at all.

What I’m trying to get across is my observation that design of form is not integrated with engineering and computer science disciplines, at least not to the degree that a single person is expected to be competent in both. And really entire corporate organizations that were traditionally hyper-engineering-focused have had rough times trying to comprehend what interaction design is and why that it is important for making usable products that customers want to buy. It’s easy to point to some mega-popular companies that got the balance right from the start, at least organizationally—not necessarily for each individual in the company—such as Google. Google has a reputation as a place for smart programmers to go hack all day to make information free for all humankind. But really it became big and has sustained that in part because of the integration of the design of the human-computer interfaces. If you don’t think of Google as a design company, it’s because you think design means stylish, trendy, “new”, etc. You might expect to be stopped in your tracks by the mere sight of some artistic designed form and say—wow, look at that amazing design. But the truth is invisible design is an apex that most never achieve; even if they try they find it’s difficult. Simple is hard. The phrase “less is more” may sound too trite to be true and yet it generally is a good target. If you notice the interface and find yourself marveling at it, it’s probably getting in your way of actually accomplishing a goal.

It should come as no surprise that most AI implementations, and many of the theories, are now and have always been generated by persons living in the realm of computer science and/or engineering.

Why is AI a Design Problem?

One might ask, first, is AI a problem at all? Some of the early AI papers referred to “the artificial intelligence problem”—singular—such as the 1955 proposal for the Dartmouth Summer Research Project on AI [1] and a report from one of those proposers, Minsky, done the following year at Lincoln Lab [2]. But even in those papers, they had already started viewing the problem often as a collection of problems. Each intelligence ability that humans can do should be able to be mechanized and therefore computerized. The problem for each ability was how to figure out what those mechanical descriptions are. Still, be it one problem or many, AI was described in terms of problems.

So, on the premise that AI is indeed a problem, why would I say it’s a design problem? Why AI books rarely, if ever, even mention the word “design”?

AI is a design problem because there is no mechanical reduction that will automatically generate a solution for the problem. And there is no single, best solution. To be clear, that doesn’t mean that intelligence is irreducible. That just means that the creation of an artifact which is intelligent necessarily involves the artifact (which is a form) and an environment (the context). And to create an intelligent artifact in that system does not have any single directly available answer.

Form and Context

Although AI is often defined and practiced as hundreds of narrow specialist sub-disciplines, as one old AI textbook put it [3]:

The ultimate goal of AI research (which we are very far from achieving) is to build a person, or, more humbly, an animal.

(Of course humans are animals, so by pretending they aren’t, right off the bat there’s an arbitrary wall built which prevents cross-fertilization of concepts between disciplines.)

A more recent popular undergraduate AI textbook [4] abandons all hope of human-like AI:

Human behavior, on the other hand, is well-adapted for one specific environment and is the product, in part, of a complicated and largely unknown evolutionary process that still is far from producing perfection. This book will therefore concentrate on general principles of rational agents and on components for constructing them.

So we’re starting to see how a major portion of AI research has decided that since humans are too difficult to understand and non-perfect the focus will be on ideal models that work in ideal contexts. The derision of real-world environments as “one specific environment” is interesting—if it was simply one specific environment, wouldn’t that make human-type AI easier to figure out? But it’s not an easy to define environment, of course. It is specific to areas of Earth and involves myriad dynamic concepts interacting in different ways. And, as said, it is not perfect.

But design disciplines routinely tackle exactly those kinds of problems—a problem is defined, perhaps very vaguely at first, which involves a complex system operating in a real world environment. Even after coming up with a limited set of requirements, the number of interactions makes creating a form that maintains equilibrium very hard. There are too many factors for an individual to comprehend all at once without some process of organization and methods that good designers use. A bad designer has a very small chance of success given the complexity of any problem. Yet somehow some designers make artifacts that work. Both the successes and failures of design are of importance to making intelligence systems. I’m not going to go into design methods in this blog post (I will talk more about design in future posts), but I will have to say something about form and context.

It is an old notion that design problems attempt to make a good fit between a form and its context [5]. Christopher Alexander (coming from architecture of buildings and villages) described form-context systems as “ensembles,” of which there are a wide variety:

The biological ensemble made up of a natural organism and its physical environment is the most familiar: in this case we are used to describing the fit between the two as well-adaptedness.

…The ensemble may be a musical composition—musical phrases have to fit their contexts too…

…An object like a kettle has to fit the context of its use, and the technical context of its production cycle.

Form is not naturally isolated. It must be reintroduced into the wild of the system at hand, be it a civilized urban human context or literally in a wild African savanna. Form is relevant because of its interface with context. They are the yin and yang of creating and modifying ensembles. And really, form is merely a slice of form-context. The boundary can be shifted arbitrarily. Alexander suggests that a designer may actually have to consider several different context-form divisions simultaneously.

And this ensemble division is another important aspect of design that goes right to the heart of artificial intelligence and even cognitive science as a whole—is the form of intelligence the brain, or should the division line be moved to include the whole nervous system, or the whole body, or perhaps the whole local system that was previously defined as “environment”? Assuming one without consideration for the others (or not admitting the assumption at all) is a very limiting way to solve problems. And Alexander’s suggestion of layering many divisions might be very useful for future AI research.

Someone might argue that using design methods to create the form of an artificial mind is not necessary because AI researchers should instead by trying to implement a “seed” which grows into the form automatically. However, that involves defining a context in which a new form, the seed, turns into the target form over time. The form is still being fit to the ensemble. Indeed, we may need to solve even more form-context design problems such as the development mechanisms. One could imagine designing a form, and then afterword somehow working in reverse to figure out a compressed form which can grow into that form with the assistance of environmental interactions. Still, design was not made irrelevant.


In case it wasn’t clear by now, the form of an artificial organism includes its informational aspect. Its mind is a form.

Creating mental forms is a design problem because there is no single perfect solution. One can solve a design problem by creating a form that sets to false all the binary “misfits” (states in the ensemble where form and context do not fit). This satisfies the requirements only at that level, not at some optimal level. It is not the “best possible” way [5]. There is no best possible way; if there was, it would not be a design problem. Artificial minds do not have a best possible way either; they merely work in a context or they don’t. You could synthesize many different minds and compare them in a context and say “this one is the best”—but that will have to be a very small context or be a rating on only one variable.


[1] J. McCarthy, M. L. Minksy, N. Rochester, and C. E. Shannon, “A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence,” 1955. [Online]. Available: [Accessed: 03-Sep-2013].
[2] [“Heuristic Aspects of the Artificial Intelligence Problem.” MIT Lincoln Laboratory Report 34-55, 1956.
[3] E. Charniak and D. V. McDermott, Introduction to artificial intelligence. Reading, Mass.: Addison-Wesley, 1985.
[4] S. J. Russell and P. Norvig, Artificial intelligence: a modern approach. Upper Saddle River, N.J.: Prentice Hall/Pearson Education, 2003.
[5] C. Alexander, Notes on the synthesis of form. Cambridge, MA: Harvard University Press, 1971.

Image Credits

  1. Print by Van Dooren N.V. of Maurits C. Escher,  Klimmen en dalen, 1960.
  2. “Ascending and Descending” in LEGO by Andrew Lipson
Tags: , , , ,

The Need for Emotional Experience Does Not Prevent Conscious Artificial Intelligence

Posted in artificial intelligence on January 18th, 2013 by Samuel Kenyon

I have mentioned the book The First Idea by Greenspan and Shanker many times recently. Lest anybody assume I am a fanboy of that tome, I wanted to argue with a ridiculous statement that the authors make in regards to consciousness and artificial intelligence.

Greenspan and Shanker make it quite clear that they don’t think artificial intelligence can have consciousness:

What is the necessary foundation for consciousness? Can computers be programmed to have it or any types of truly reflective intelligence? The answer is NO! Consciousness depends on affective experience (i.e. the experience of one’s own emotional patterns). True affects and their near infinite variations can only arise from living biological systems and the developmental processes that we have been discussing.

Let’s look at that logically. The first part of their argument is Consciousness (C) depends on Affective experience (A):

Read more »

Tags: , ,