4.0 Requirements

This chapter describes my requirements for Adaptron. It is divided into two sections, primary objectives and other requirements. The primary objectives contain a list of the overall goals for Adaptron in more detail than expressed in the introductory chapter. The other requirements at the end of the chapter describe specific information processing requirements such as performance and reliability.

4.1 Primary Objectives

The ultimate objective of Adaptron is to benefit mankind. The means for achieving this is to invent intelligent software that can be used to control machines and robots to help us in our everyday lives. For purposes of Adaptron intelligent behaviour is assumed to be possible by software that can learn and think at the same skill level of the average human being.  So the primary object is to develop software that learns and thinks.

Other overall goals that have been used to guide and constrain the development of Adaptron are:

1. To produce intelligent behaviour that is based on a model that is deterministic and symbol manipulating rather than one based on probabilities, weights or continuously varying quantities. This constraint allows for the model to be simpler and thus more easily understood, programmed on a digital computer, simulated, tested and improved.

2. To build software that begins with no experience and no understanding of the environment into which it is placed. The information it begins with includes what it likes and dislikes. Its motivations and goals are pre-defined and stored as part of its initial state. It also begins with the ability to sense some preset range of environmental signals and the ability to produce a range of possible responses. It may have some initial reflexes but they can all be overridden through learning. It begins with the ability to perform the functions of learning and thinking but has no advanced knowledge of its environment.  Domain-independent.

3. To develop an uncomplicated model for Adaptron that is capable of performing complicated behaviour. The complexity of the software should be low and fixed. The complexity of its behaviour must grow and resides only in its memory. Its memory should begin empty and fill up with experiences. The complexity of Adaptron's behaviour should grow as it interacts with its environment and uses its experiences in learning and thinking.

4. To develop an agent that can learn and think in many different environments in which humans operate. It should not be constrained to operate in only a small set of artificial or static man made environments. However there are many environments in which Adaptron would not operate effectively. Likewise humans would not operate too well in these places. The properties of an acceptable environment are described in Section 5.1.

5. To develop a model of learning and thinking that can be understood from a process perspective. The goal is for a functional model whose functionality is generic or general purpose. Then once the model is implemented as an agent and starts to operate in a given environment its behaviour is the result of these generic processes being performed using the experiences of the agent as data.

6. To develop a model composed of a limited number of components each serving a different information processing purpose. The mechanisms to learn, establish the memory, search the memory, interpret the experiences and think about them are at the core of an intelligent being. It is these principles and mechanism of operation captured in the form of a set of processes that do simple functional things in a co-ordinated but simple manner that is the goal of this approach. The goal is for the processes to work together to achieve the whole. In contrast the goal is NOT to have processes or components that work together:

  • like a traditional neural net where a fixed number of nodes are connected in a particular structure to start with and its training results in its final behaviour which is buried in the weighting of the inter-connections,

  • nor like Marvin Minsky's Society of Mind which is similar to a connectionist model of the mind in that it is a collection of mindless agents which through their connectivity exhibit intelligent behaviour but differs from a neural net in that each of the components is more sophisticated and different from each other in their functionality. This architecture reminds me of an object oriented design in which each class of object is different and the behaviour is described in the event traces and state transition diagrams. The complexity is found in the message passing between the objects which captures their interaction / connectivity / relationship properties,

  • nor a structured assembly of parts each of which is locally intelligent or has been pre-programmed with sophisticated heuristics about some small domain or part of the environment, which work together in some clearly described and possibly simple manner but again have no upper limit in their number when they are required to operate in an environment that is not pre-defined,

  • nor any kind of model that duplicates the behaviour exhibited by intelligence agents without providing any understanding of the internal fundamental principles of operation.

7. To build a model in which thinking is modelled as a more evolved or sophisticated form of learning. This corresponds to the notion that thinking is built on top of or is a higher order version of learning. Thinking is viewed as a mechanism that has naturally evolved and is now used by man as a more efficient means of surviving in his environment than learning alone. Thinking should be built on and use the same mechanisms as learning because nature tends to exploit existing elements for new functions.

8. To build a model which is based on a minimalist approach. This means that the simplest explanation of how learning and thinking function is desired. The explanation is one in which the simplest principles are combined in the simplest fashion to achieve the result. This is well known as Occam’s Razor, a principle that states “When given a number of solutions and none of them are provable, the simplest is the most likely to be correct because one should not increase, beyond what is necessary, the number of entities required to explain anything”. It should be based on a set of interacting simple basic principles.

The real benefit in taking the process components approach in 6. is that the separate parts can be improved independently. One can experiment with the functionality of each part to better understand its contribution to the whole. There are few intelligent heuristics or optimal techniques that have been included in this version of Adaptron. Better algorithms and heuristics can be devised to improve performance as further research.

Complexity can be added in places where it has been intentionally removed to expose the underlying functionality of learning and thinking. In this way the learning and thinking ability can be magnified to hopefully exceed that of humans. This is analogous to what we have done to the aircraft since its first invention. In many ways birds can fly better than the Wright brothers' Kittyhawk. But since those days we have added ailerons, jet engines and fuselages and strong wings to allow us to fly faster, higher and with heavier loads than any bird. There still remain some ways in which birds can fly better than modern aircraft however these have not been useful to us. So too there will always be ways in which the human mind can function better than any computer, but for those core properties the mind exhibits such as learning and thinking artificial agents will eventually exceed. Adaptron is one of many possible first steps.

4.2 Other Requirements

When it comes to analyzing and then clearly specifying what is needed in a software system there are many types of requirements that must be documented. The most important requirement is that it does what the user wants. Functional and data requirements are the most obvious and these have been captured in the form of the Adaptron Model in the next chapter. There are numerous other types of requirements that should be captured. The following is a partial list with a few statements about each.

Performance (speed and space)

Being an experimental version of Adaptron no tight performance constraints are being applied. From a speed / response time perspective it would be nice to be able to run Adaptron anywhere between equivalent to humans speed and many times slower than human speed for observational purposes. It should also be possible to step Adaptron through its processes in a controlled manner for observational purposes.


There is no initial need for the software to run on many different computers, operating systems, programming languages or to be embedded inside a robot or machine.


Adaptron has no need to be compatible with any other software or data. It only requires sensors and actuators that are compatible with its environment.


Only those people with a need to know about, see or use Adaptron should have access to it.

Usability / Accessibility

Adaptron should be able to be turned on and off when ever we wish. It should be possible to save its experiences and copy them to another computer running the same version of Adaptron software and have it function as it had when it was turned off. It should be possible to take a recording of the externally visible behaviour of Adaptron in a given environment and replay this recording without the use of Adaptron software. This can then be used for demonstration purposes when access to Adaptron software is not possible.


Adaptron's behaviour should be repeatable consistently in a given deterministic environment with the same starting conditions and provided the combination is a closed system i.e. not external interference.


The software components comprising Adaptron do not need to be reusable in other applications. They are specific to Adaptron. However it would be advantageous to incorporate more powerful algorithms e.g. pattern recognition, search etc. in Adaptron in the long term.

Reliability (recoverability)

Adaptron should have no bugs in the logic of its software.

Cost & Time?

Comprehensibility (explainability)

The Adaptron program should be simple enough for most programmers to maintain it. Its design should be clear and complete such that most people can understand how it works.


Complexity should be kept to a minimum.

Flexibility / Extensibility

The design of Adaptron should allow for the replacement of key components / processes with more sophisticated or powerful algorithms while other components do not change.


The software should be thoroughly commented. There are to be no program time enhancements or optimizations that are not in the design.


Provability requirements are addressed in the next chapter that describes how Adaptron is to be tested. At this point let us say that it not possible to prove definitively that Adaptron learns and thinks because no precise definitions for these phenomena exist.


There are no particular accuracy requirements for Adaptron. How about resolution of the values of the features of a stimulus?


Adaptron is not to be duplicated with out payment of royalties. However there is nothing in Adaptron that stops it from being duplicated. It should be possible to duplicate Adaptron with or without its experiences