The Auto-catalytic Endogenous Reflective Architecture – AERA – is an AGI-aspiring architectural blueprint that was produced as part of the HUMANOBS FP7 project. It encompasses several fundamentally new ideas, in the history of AI, including a new programming language specifically conceived to solve some major limitations of prior efforts in this respect, including self-inspection and self-representation, distributed representation of knowledge, and distributed reasoning. AERA systems are any-time, real-time, incremental/continuous learning, on-line learning systems.
AERA's knowledge is stored in models, which essentially encode transformations on input, to produce output. Models have a trigger side (left-hand side) and a result side (right-hand side). In a forward-chaining scenario, when a particular piece of data matches on the left hand of a model (it is only allowed to test the match if the data has high enough saliency and the program has sufficient activation) the model fires, producing the output specified by its left-hand side and injecting it into a global memory store. The semantics of the output is prediction, and the semantics of the input is either fact or prediction. Notice that a model in AERA is not a production rule; a model relating to does not mean “A entails B”, it means A predicts B, and it has an associated confidence value. Such models stem invariably (read: most of the time) from the system's experience, and in early stages of learning an AERA-based system's set of models may mostly consist fairly useless and bad models, all with relatively low confidence values (“not all models are created equal – some are in fact better than others”).
In backward-chaining – to implement the process of abduction – models act the other way around, namely, when some data match the right-hand side, a model produces new data patterned after its left side, whose semantics essentially state that “if you want a (on the right-hand side) perhaps it would help to get an (term on the left-hand side). The semantics of either (both the input and output) is “goal”.
A key principle of AERA operation is that of a distributed production process: Each program in AERA has a level of activation that determines if it is allowed to run or not. Every piece of data has a corresponding saliency level that determines how visible it is inside the system. In AERA there is a single memory, but it (typically) embeds groups that allow sets of data and programs to be addressed, e.g. changing their activation, saliency, or existence (via creation or deletion).
Behind this system lie five main design principles:
The programming language of AERA, Replicode, was created to meet some shortcomings found in all prior programming languages. Enumerating the key ones of these we get the following list:
Replicode (used with the AERA Executive) addresses all of these, and exhibits therefore the following unique features:
Replicode has the following distinguishing features:
While some – or possibly all – of these features may be found in the singular, or possibly in pairs, in other programming languages, we are pretty sure no current programming language embodies them all in one and the same system. They are all needed to achieve what was envisioned with the AERA architecture, and without them AERA would not perform.
The AERA system is model-based and model-driven, meaning that the crux of all operations are controlled via models. Models are essentially executable code that is created by the system, as an AERA system is typically provided with only a very small set of knowledge up-front by its designers. AERA operation is heavily rooted in the principles of Replicode, relying on its reasoning control mechanisms, but adds principles of auto-catalytic operation, and general principles for managing a growing set of such auto-generated models and implementing integrated cognitive control – the control of the growth of the system by the system itself.
The main operational loop in AERA is a three-way auto-catalytic interaction between three processes and the memory store. The memory of AERA consists of models, forming an abstraction hierarchy via control and specification relationships. In addition to observed states, assumptions, goals and predictions, the memory contains executable code (models) and as such, constitutes an active part of the system: it is actually the very core of a model-based and model- driven system. The memory is responsible for most of the computation occurring in the system. At any point in time models are rated for their relevance to presently active goals in the system. The models receiving the highest score are candidates for predicting the turn of events, via simulation, given particular action or inaction on behalf of the system. Those with the predictions that most closely match the goals are chosen for execution.
There are essentially three main auto-catalytic cycles in AERA, realized via interaction between the functions of learning, attention control, and planning. All of these functions are controlled and implemented by models. Planning consists of model forward chaining (simulation / deduction) and backward chaining (abduction / goal regression). In simulation selected models are run from particular states/settings, e.g. the system's present state, to predict what happens “from now on” if a given action were to be taken. The action in that case being chosen based on a particular goal to be reached. A list of action candidates is produced by backward chaining from a particular goal state, each model's output becoming in effect a “sub-goal”. Starting from the end-goal, the system looks for a model that can produce the end-goal as output. The input of that model becomes then a sub-goal, to be matched in the same way by some other model. This activity is continued until a model is found whose input is the present state. If such chaining is successful, that is, models can be found for the full chain from end-goal to present state, each model's output thus matching a sub-goal generated by a chain of models “hooked” to the end-goal, a successful plan has been produced, one whose (micro-) steps (each step being a model) describes how to achieve the end-goal from the present state.
In AERA abduction and deduction happens simultaneously and continuously. In addition an induction process attempts to generalize good models, that is, models that have proven by experience to predict correctly future states from present ones. These three logic processes essentially constitute a substantial part of any AERA-based agent's realtime cognition. The auto-catalytic processes generate hierarchies of models that represent external entities and their relationships, and can be used to achieve new goals in the environment, as well as predict the effect of various actions on the world. Models in AERA can span a wide range of levels of abstraction. At the lowest level, models may represent extremely primitive building blocks, equivalent to primitive machine code instructions in a modern CPU. A fine-grained level is necessary to enable the system to acquire novel behaviors from combining the building blocks in new ways. However, models may also contain higher-level behaviors. For instance, given a system capable of perception-guided action, useful manipulation algorithms would be presented as models.
The focus – or attention – mechanism in AERA steers the system to look at data (by increasing its saliency, or “priority”) that is predicted to be useful to achieve the system's presently active goals. The model creation and subsequent verification (via simulation and execution in the real world) produces material that triggers generalization, enabling the system little by little to move towards higher efficiency, more capabilities, and more targeted and focused operation.
Because the representation is uniform there is no difference between how knowledge about the external world and the internal world is represented. Therefore these knowledge representation mechanisms can be used to represent knowledge of self as well. And because the AERA knowledge representation is very well suited to represent knowledge about time, knowledge about self-growth and goal achievement can be represented straightforwardly as well. This has the enormous benefit of allowing cognitive growth to be controlled by precisely the same kinds of mechanism as the external behavior of the system, and therefore, to implement integrated cognitive control one need only duplicate the architecture as described and point it towards itself, that is, the external-world copy of itself. This results in a two-tier architecture where each one is identical except that the lower level deals with the external world and the higher one deals with the lower one, that is, itself.
Learning is produced via model generation and induction: Hypotheses for causal relationships between observed phenomena are posed, which produce models of real-world variables. As an example of the use of models for acquisition, let's look at a case where a model for moving a gripper (displacement in space) and a model for grasping objects result in the observation that when an object is grasped and the grasper is moved to location x,y,z, over time t, the object also moves to location x,y,z, over time t. This results in the system injecting a new model for how to move objects (which ultimately may result in a generalization of how to move movable-graspable-objects).
Note that this example is geared to explain the process, not to provide an actual example – when the actual implemented system generates models automatically the names of models are not human-readable.
Let's assume the repository contains these (innate) models:
where pick-up is an external command that implements the grasping function, and hand-attached-to is an observable state of the world – the latter being an example of information provided by a set of externally-provided hand-coded routines connected to physical devices, which continuously report information about the state of the robot and/or the world for a particular period of time. (For the sake of simplicity, time is not taken into account in this example; bear in mind that each model provides temporalized predictions and their temporal scope is controlled through control models.) Model above has a prerequisite: in order to pick up an object the hand must not be holding another object (for the sake of the present use-case, we are not interested in modeling an exhaustive and realistic set of preconditions):
Another model in the initial bootstrap code is one that models the effects of a move command:
where move-hand is an external command linked to the robot’s arm, is amount of displacement (as a vector in 3D), and hand-at-position is an observable state of the world providing the actual displacement with respect to an initial state (not shown here).
Suppose that first the system is first given the goal to grasp an object (i.e. goal: hand-attached-to – which it could discover through e.g. “motor babbling”), and then it is given the goal to move the hand by a displacement dx (i.e. goal: hand-at-position). The execution of that command produces a set of data (position of arm, gripper, etc.). By analyzing the data flow it not hard to find out that – in the case the hand is actually holding an object – that the displacement of the hand has lead to the displacement of the attached object as well (indeed, the only fact not predicted by the available set of models is object-at-position). From this activity the system has acquired the following simple model:
This model has the following precondition extracted from data:
Suppose now that the system has the goal to displace a known object by and that the hand is not currently holding any object; therefore, the goal of the system is the fact object-at-position. By going backwards (using abduction/backward chaining) the system can find that in order to satisfy this goal it has to activate the model M4. However, having this model is a precondition expressed in the model , which is not satisfied (the hand is not attached to the object), so it must first satisfy the goal hand-attached-to. The system commits to this new (sub)goal, which requires the activation of model . This time, the prerequisite of the model is satisfied (indeed, the hand is free – see model ) which implies the actual activation of the model M1 and the execution of command pick-up. Should this command be executed correctly, the environment will output the fact hand-attached-to which satisfies both the current (sub)goal and the prerequisite of the model . The model is activated which implies the execution of the command move-hand and, as the consequence, the actual displacement of the object at the desired position.
This example is vastly simplified for explaining the basic principles of model acquisition in AERA; to make this work in a system operating in the real-world a number of additional mechanisms are needed, bringing our approach well beyond what might at first sight seem like “a glorified Prolog system”. Of those, two important mechanisms must be mentioned. First, in contrast to other systems, AERA has the ability to add and delete terms without serious penalty to runtime speed. This, coupled with a new way to distribute inferencing mechanisms across nodes, makes it practical to add and remove hypotheses, as well as modified and brand-new models, at rates not possible before – approximately a 1000-fold increase over existing systems. Execution time of other reasoning operations improves comparably. Second, the approach taken in AERA is “non-axiomatic”, in the sense that the beliefs of the system are not derived from a set of pre-defined axioms, but each from a separate evidential basis, using available knowledge and resources. Consequently, the system can operate under significant logical uncertainty yet still capable of using logical operations – as a result we avoid having to use statistical methods to model the world.
2012©Kristinn R. Thórisson & Eric Nivel