As artificial Minds based on
spreading activation proliferate
across the Web, programmers and maintainers of the installed AI
code base need ideas and guidelines for the gradual improvement
and further evolution of each branch of AI survival-of-the-fittest.
The JavaScript Mind.html program is so easy to operate and to
copy for installation either on a user's local computer or on
a Web site, that Mind.html has arguably the largest installed
user base of any AI program in the world.
Mind.Forth in Win32Forth is harder to install and operate than
Mind.html, but MindForth is inherently the more powerful and more
promising of the two programs.
2. Guidelines
In the course of the development of the AI Mind programs,
there has been a gradual increase in the sophistication and
emergent functionality of the handling of spreading activation
in the AI Minds. In 2001, the decision was made to let the
process of spreading activation be self-directing --
that is, to let each concept in the chain of spreading activation
influence the selection of the next concept in the chain.
In 2005, a Moving Wave Algorithm (MWA) was devised and published
as an AI principle of operation allowing only one cresting concept
to be extremely active at a time in the thinking mind, so that
activation would spread like a wave across the mindgrid.
In 2008, Mind.Forth and Mind.html are being debugged to a point of
initial True AI functionality and beyond. The AI programs
think
and are freely available for examination, reverse engineering and
branch-off evolution. At the same time, these guidelines on the
rules of spreading activation are freely available for an insight
into the mechanics of mind-design at the heart of the AI programs.
In the early AI Mind versions, each module generating a part of
a thought, such as a noun-phrase or a verb-phrase, would call the
psiDamp module immediately after thinking a noun or a verb, so as
sharply to reduce the activation on the cresting noun or verb.
That policy was too much of a blanket mechanism. There are
legitimate reasons for a concept to remain active even beyond
its albeit brief inclusion in a thought being generated.
AI coders and mind-designers need to keep in mind the considerations
governing the construction of the conceptual-activation structures.
The first and most obvious consideration for keeping a crest-concept
active beyond its flash of appearance in a thought is the role that
the concept has yet to play as potentially a subject for a new thought
about to be generated as part of a meandering chain of thought. Until
the crest-concept has started the next-in-line thought, the concept
must remain highly activated as a source for the activation that will
pass from concept to concept in the unbroken chain of spreading activation.
If the chain is broken, there must be a mechanism such as the Ego module
to jumpstart the flatliner psyche and launch a new chain of cogitation.
A less obvious consideration in the maintenance of activation-levels
is the idea that sometimes one concept is so important in a mind that
the thinking of the mind keeps coming back to that one concept, such as
danger in the environment, causing a need to confront or escape from the
danger. In such cases, AI coders need to ask themselves whether activation
levels will be absolute or relative. Changes in activation that are merely
relative allow activation quietly to build up on a concept that will
suddenly burst into conscious consideration, because so many thoughts are
germane to a lurking concept that the concept will demand its own attention.
Considerations of
artificial consciousness are a whole set of design
imperatives for the AI coder at work. A cresting concept must not
suddenly lose all activation but must first sharply be reduced in
activation and then gradually be lowered in activation over a period
of subconscious availability for selection as an ingredient of thought.
3. During User Input
With A New Concept
A new concept is given a certain amount of activation
simply because, as input, it deserves the attention of the AI Mind.
If the new concept-word does not figure almost immediately in a
sentence of internal thought,
psiDecay() will gradually whittle
down the activation of the new concept, so that it does not
interfere haphazardly with the logical generation of thoughts.
On the other hand, if the new concept-word does indeed figure
quite soon in a generated thought,
psiDamp() will drastically
reduce the momentarily elevated activation of the new concept-word.
Being most active, a noun starts the S-V-O thought.
The
nounPhrase module selects the noun and calls nounAct().
The "jolt" value "nounval" passes from nounPhrase() to nounAct().
nounAct(), but not verbAct(), activates all the nodes of the
winning subject-noun equally, for the sake of spreadAct().
nounAct() sends a proportional "spike" value into spreadAct(),
and any associated verb-nodes receive the "spike" value.
Does it matter if some verb-nodes already have some
noise activation?
verbAct() adds a verb-value "verbval" to pre-existing activation on nodes.
spreadAct passes slosh-over activation to direct-object seq nodes.
B. In meandering chains of thought
Ideally, a
moving wave of activation rides one superactivated
concept at a time, as the previous concept is "psiDamped" and
the spread of activation logically selects the next concept-word.
The initial activation of the chain of associative thought is
presumed to have come from the prompting of a physical stimulus
such as an item of quasi-auditory input from a human user,
or from a remembered
dream (i.e., an internal stimulus,
such as also hunger or
emotion), or from the intervention
of the
Ego module which activates the concept of self,
when there has been a "flatliner" cessation of mental activity.
One way or another, the AI Mind shall have started a chain of
thought, and it is the job of the AI coder to fine-tune the
mental functionality and to enable the AI Mind to deal with a
wide variety of potential problems in the execution of thought.
The most basic problem is to keep the conceptual activations in
a state of balance or harmony, so that the AI thinks logically
and does not veer off into spurious associations. In this problem
lies the fundamental crux of getting a piece of software to think
any thought at all in the first place. What may seem like thinking
if the robot mind issues one or two statements of apparent sense,
will rapidly degenerate into gibberish if the AI is not able to
continue thinking indefinitely in an intelligent flight of fancy
from topic to topic, or if the AI is not able to discuss its thoughts in
a reasonable manner with a human being engaging the AI in conversation.
In sum, a basic harmony of thought is a major goal in AI programming.
Beyond the initial harmony of thought, problems arise when any mind,
AI or human, tries to think about a topic for which it lacks information.
In a rudimentary, primitive AI mind, the lack-of-data problem can be
a show-stopper if the meandering chain of thought comes up against
a suddenly activated concept about which essentially nothing is known.
In the knowledge base (KB) of the AI mind, there may be many
subject-verb-object (SVO) facts where nothing further is known
about the direct objects. For instance, the AI may know that
"birds lay eggs" but not know anything about what eggs do.
A faulty AI may go ahead and think a nonsensical thought about eggs,
but a well-constructed AI mind will balk at speaking nonsense.
Instead, the healthy AI mind will either ask a question about
the subject of its own ignorance, or continue thinking along
a different pathway. Of course, the operation of these options
has to be coded by the AI programmer. Using activation levels as
determinants and triggers, the astute AI coder will enable the
AI mind to reject erroneous thinking before it even happens.
For instance, if a given subject does not spread sufficient
activation to a verb or to a direct object, then a question
may form instead of a statement, since the knowledge that is
not present to form a statement may be sought with a question.
psiDamp() lowers the activation of concepts included in the last thought.
At the end of
SVO(), verbClear() initially zeroes out all verb activations
so that only a verb truly associated with a subject-noun will be selected,
but over time we may let a more flexible process help to select verbs.
The residually most active concept from the last thought may start a new thought.
As of 17feb07B.html in nounAct() we are causing subject-nouns to start out
with an activation of thirty-three (33) at the bottom of the consciousness tier.
We want thinking to proceed up in the consciousness tier so that there is room
for creative interplay of thoughts down in the subconscious tier.
In the top tier we want to keep activations from rising steeply.
Typically a direct-object noun may in turn become a subject noun.
Also-ran concepts not included in the last sentence may form a new sentence.
psiDecay() is working to reduce also-ran concepts down to zero activation.
Human user intervention may at any time (re)activate a quiescent concept.
Code-tweaking may achieve an exhaustive thinking of all possible thoughts.
When we type in "cats" and press the Enter key,
the CATS concept correctly activates the EAT concept.
Notes
These evolving guidelines, although meant to be helpful,
are subject to change without notice as improvements are made.
activation levels
// 33-48 = consciousness tier where concepts win selection.
// 17-31 = subconscious tier where concepts remain available.
// 1-16 = noise tier below logical association threshold.
Activation Factors
- the Activate value;
- the spreadAct "spike" value; and
- the psiDamp "residuum" value
are pitted against
- the psiDecay decrement of one (1) applied at various call-points.
http://mind.sourceforge.net/forth.html
is an evolving webpage on evolving Forth AI.
It has a State of the Art section of "done" items and a
To Do List of tasks which have not yet been done.