|
The following are fragments of a private memo that
I wrote some time back to illustrate how rules-based systems can be used to
achieve some degree of primitive machine cognition.
//////////////////////////////////////////////////////////////////////////////////// Our definition of primitive machine cognition is “The assimilation
and association of related information that may/can/will invoke autonomous
behavior on the part of the software agent”. Simply put, our definition means that given an environment where we can assert certain facts (in the form of Java objects in a prescribed manner), a system is able to examine these incoming facts in a number of ways, provide an opportunity to make associations between them, and allow spontaneous behavior (where possible and/or desired). All of this is done without a hard-coded identification of each class/object or its behavior as found in conventional programming.
1 Potential Types of Primitive Machine
Cognition a. Behavioral Cognition The goal of this type of cognition is to allow the autonomous invocation
of class/object methods by supplying the appropriate parameters required by the
method. These parameters are facts (also in the form of Java objects), which
have been asserted. Obviously, the body of the method invoked will ultimately
determine the state of the object(s) acted upon.
Where the asserted facts are not previously known to the system, it will
enable the Structural Cognition Mode for discovery and the persistence of its
acquired knowledge followed by execution if there are
matches. b. Structural Cognition The system can autonomously determine the isA, hasA, and usesA
relationships within the asserted objects and store them in a repository for
future reference. This examination happens spontaneously when the Java object is
asserted and is unknown to the system. All relationships are stored in graph
form and may be searched to expedite future
discoveries. c. Conceptual Cognition The discovery of the relationships by the Structural Cognition phase
enables a conceptual mapping (which was stored as a graph in a repository by
that phase). This mapping differs from an actual instance of an object network
(that shows which pieces and parts are connected to what) by showing what
connections between which parts are possible. This enables the
system to conceptualize “what-ifs” based on what a network has and what it could
have. This mapping happens spontaneously when the object is asserted and uses
the repository to confirm any conceptual relationships. For example, if the
system’s active working memory contains a number of objects representing some
form of knowledge and there is an incomplete path from one cluster of objects in
this knowledge network to another, the system can determine if it is possible to
complete the connection between the clusters with additional facts being
asserted. It could then request this additional knowledge from an outside source
and attempt to act on it. This is not unlike detective work where someone
attempts to connect the dots between known facts and potential
clues in an investigation.
d. Linguistic Cognition The very existence of certain objects within the active working memory (WM) of the system may imply navigation through a hierarchical network (of objects) or the reduction of a pseudo production rule as in a computer language. For example, some languages use patterns of SUBJECT-VERB-OBJECT while others use VERB-SUBJECT-OBJECT to express a statement. If the ordering for the pattern of language (for the software agent) does not matter, and there is a mechanism to arbitrarily emit objects into the WM from the software processes of the agent, then certain patterns of objects being emitted and matched may represent some form of spontaneous (original) thought.
//////////////////////////////////////////////////////////////////////////////////// |
