1.
Theory of
Seed AI Algorithm Steps: Code the Oldconcept Mind-Module
/^^^^^^^^^\ A Recognized Word Activates An Idea /^^^^^^^^^\ / EYE \ _______ / EAR \ / \ CONCEPTS / New- \ / \ | _______ | | | | _______ ( Concept ) | C match! | | /old \!!!!|!!|!| | / Old- \ \_______/ | +A match! | | / image \---|----+ | ( Concept ) | | ++T match! | | \ fetch / | |c| | \_______/------|------|-----S recog! | | \_______/ | |a| | | \ | | | | | |t| | __V___ \ | | C match! | | visual | |s| | / \ \ | | +A match! | | | e| | | (Activate) \ _V__ | ++T match! | | memory | a| | | \______/ \/ \ | +++S busy | | | t| | | | / \ | U skip | | reactivation | | |f| __V____ ( Parser ) | P skip | | | | |i| / \ \ / | | | channel | | |s| (spreadAct) \____/ | C match! | | _______ | | |h| \_______/ | | +A match! | | /old \ | |_|_| / ________V__ | R stop | | / image \ | / \/ / \ | S skip | | \ store /---|-\ Psi /------( Instantiate ) | | | \_______/ | \___/ \___________/ | |http://mind.sourceforge.net/diagrams.html shows a Theory of Mind.
The Oldconcept module takes a word that has been recognized as
a known concept and creates a new, up-to-date associative node
that preserves the instantaneous relationship of each concept to
nearby concepts caught up in the momentary syntactic assertion.
Typically a verb mediates the relationship from one concept to
another in the knowledge base (KB) that builds up over time as
the accumulation of all known facts and ideas about a concept.
Likewise the concept of any given verb is also mediated by its
associative relationships within myriad syntactic assertions.
In our Open Source AI epistemology, machine learning is the
gradual build-up of an ontology of intricately related facts.
We claim that the AI Mind is theoretically an improvement upon
the vaunted Cyc (R) ontology because we conceptualize concepts
in accordance with the SourceForge/ Mind/ Docs/ Theory of Mind
based on sound neuroscience and the linguistics of Noam Chomsky.
Our AI algorithm includes not only machine learning but also
forgetting -- as the consignment to oblivion of memories that
fail to be brought forward in the stream of consciousness for
lack of associative renewal on the basis of frequency of use.
2. Nil Novi Sub Sole
There is "nothing new under the sun" when we generate a sentence,
because the Chomskyan syntax of thought may only manipulate old
concepts already known to the mind but not new concepts until the
newConcept module converts them -- immediately -- to old concepts.
Then the oldConcept module processes the reentry of the output of
the mind back into the mind, reactivating each recognized concept
in chains of association so that spreading activation constitutes
a chain of thinking or meditating or mulling about old knowledge.
If the mind goes down a road less traveled in the conceptual wood
so as to think up an entirely original idea (E = mc^2, anybody?),
then perhaps that original idea has made all the difference.
http://mind.sourceforge.net/ai4u_157.html
is an overview of Mind.
// oldConcept() is called from Audition() to create a // fresh concept-node for a recognized input word. function oldConcept() { // ATM 12aug2002; or your ID & date. act = 32; // Start with a basic activation-value. for (i=t; i>midway; --i) { // Cycle back through English lexicon. enLexicon[i].enExam(); // Examine each English concept node. if (psi == en0) { // If psi (enx?) from Audition() matches, if (en2 > 0) fex = en2; // retrieve the "fiber-out" flag; // Next line tries to parse by word-recognition: if (en3 > 0) pos = en3; // retrieve most recent part-of-speech; if (en4 > 0) fin = en4; // retrieve the "fiber-in" flag; break; // Use only the most recent En(glish) engram-node. } // End of searching if-clause. } // End of the backwards loop. enLexicon[t] = new enNode(psi,0,fex,pos,fin,aud); // This code has a bearing on emerging consciousness: if (pov == "{") psi = fex; // at start of internal pov; if (pov == "#") psi = fex; // during internal "pov"; if (pov == "}") psi = fex; // at finish of internal pov. if (pov == "*") psi = fin; // external "pov" enx = psi; // Use the psi value for "transfer-to-English". if (psi == 16) { // If question-word "why" comes in, act = 8; // subactivate question "why". question = 16; // Briefly keep track of what was asked, // so that Conjoin() may provide the conjunction "because". } // End of test to deal with "why" questions. if (psi == 54) act = 8; // Subactivate question "what". if (psi == 55) act = 8; // Subactivate question "who". if (psi == 59) { // If auxiliary verb "do" is recognized, act = 8; // Reduce activation of "do". } // End of test to de-activate auxiliary verb "do". Parser(); // Determine the part-of-speech "pos". pos = 0; // Reset the "part-of-speech" to zero. urpre = pre; // Hold value of "pre" safe during Activate(). caller = "oldConcept"; // For diagnostic Alert boxes. Activate(); // Having recognized a concept, activate it. pre = urpre; // Restore the value of "pre". unk = 0; // Reset for safety. // The next lines store "seq" retroactively: if (pre > 0) { for (i=t; i>midway; --i) { Psi[i].psiExam(); // Examine the Psi concept nodes. if (pre == psi0) { Psi[i] = new psiNode(psi0,psi1,psi2,psi3,psi4,psi,psi6); break; // Store one instance, then "break" the loop. } // end of inner if-clause } // end of loop } // end of outer if-clause pre = psi; // for next "nen" act = 0; } // End of oldConcept(); return to Audition().
\ OLDCONCEPT is called from AUDITION to create a \ fresh concept-node for a recognized input word. : OLDCONCEPT \ ATM 3aug2002; or your ID & date. 32 act ! \ \ Start with a basic activation value. midway @ t @ DO \ Cycle back through the English lexicon. I 0 en{ @ psi @ = IF \ If psi-tag matches lexical concept, I 2 en{ @ 0 > IF \ if it is greater than zero, I 2 en{ @ fex ! THEN \ retrieve the fiber-out flag. I 3 en{ @ 0 > IF \ So as to parse by word-recognition, I 3 en{ @ pos ! THEN \ retrieve most recent part-of-speech. I 4 en{ @ 0 > IF \ If it is greater than zero, I 4 en{ @ fin ! THEN \ retrieve the fiber-in flag. LEAVE \ Use only the most recent English engram-node. THEN \ End of searching if-clause. -1 +LOOP \ End of the backwards loop. \ Next code stores "psi" directly instead of calling enVocab, \ so that value of "psi" will not interfere with "nen" value: ( "psi" as found by audRecog ) psi @ t @ 0 en{ ! ( Store zero activation. ) 0 t @ 1 en{ ! ( Store mindcore EXit tag. ) fex @ t @ 2 en{ ! ( Store part of speech "pos".) pos @ t @ 3 en{ ! ( Store mindcore IN tag. ) fin @ t @ 4 en{ ! ( Store the auditory "aud" tag. ) aud @ t @ 5 en{ ! \ The Robot Mind as a seed AI for Technological Singularity \ approaches artificial consciousness in the following code: pov @ 35 = IF fex @ psi ! THEN \ during internal (#) "pov"; pov @ 42 = IF fin @ psi ! THEN \ external (*) "pov" psi @ enx ! \ Assume Psi number = En(glish) number. psi @ 54 = IF 8 act ! THEN \ Subactivate question "what". psi @ 55 = IF 8 act ! THEN \ Subactivate question "who". psi @ 59 = IF 8 act ! THEN \ Subactivate auxiliary "do". PARSER \ Determine the part-of-speech "pos". 0 pos ! \ Reset the part-of-speech "pos" flag. pre @ urpre ! \ Hold value of "pre" safe during ACTIVATE. ACTIVATE \ Re-activate recent nodes of the concept. urpre @ pre ! \ Restore the value of "pre". \ The next lines store "seq" retroactively: pre @ 0 > IF \ If a positive "pre" exists... midway @ t @ DO \ look backwards in time... I 0 psi{ @ pre @ = IF \ for a node of "pre" psi @ I 5 psi{ ! \ and store "psi" as retroactive "seq" LEAVE \ One instance is enough. THEN \ end of inner if-clause -1 +LOOP \ end of backwards loop THEN \ end of outer if-clause psi @ pre ! ( for next nen ) 0 act ! \ Reset for safety. \ 26jul2002 Diagnostic test code: pov @ 35 = IF \ 26jul2002 Make sure pov is internal, 1 match ! \ 26jul2002 Declare word-match for SPEECH. THEN \ 26jul2002 End of test for internal pov=35 state. ; \ End of OLDCONCEPT; return to AUDITION.
5. Analysis of the Modus Operandi
For a known and recognized word in the input stream, the
Oldconcept module creates a new associative node for a
concept in the mindcore array Psi and also in the En
English lexical array that manipulates English words stored
in the Aud array of the auditory memory channel.
Each run of the AI Mind software starts out with a group
of old concepts already available in the semantic memory.
Although in the long run a major goal of AI might be to
have the AI Mind learn all its concepts and all its words
of natural language from scratch like a human baby filling
in a tabula rasa mind with the acquisition of language,
the goal of this particular open-source AI Mind project was
always to achieve and demonstrate the simplest possible level
of thinking based on the principle of
spreading activation.
That goal was achieved with an
AI breakthrough on 7 June 2006.
Space for the following 64 old concepts is reserved.
adjectives and articles: a(n), all, any, false, no, one, the, true;
adverbs: also, else, how, not, then, when, where, why;
conjunctions: and, because, either, if, or, that, when, whether;
interjections: good-bye, hello, no, oh, ouch, please, thanks, yes;
nouns: Andru, bugs, cats, fish, people, persons, robots, things;
prepositions: at, for, from, in, of, on, to, with;
pronouns: he (she, it), I (me), nothing, they, we, what, who, you,
verbs: am (is, are), be, do, hear, know, see, think, understand.
Not all of the above concepts are included in each AI Mind.
The English bootstrap sequence may contain some of the above
concepts, and also some extra concepts that were necessary
to construct sentences containing some of the above concepts.
When extra concepts need to be included in the bootstrap
sequence, the area for 64 reserved concepts is simply
enlarged to, say, 71 concepts. Above that number of
potentially reserved concepts, the AI automatically starts
assigning concept numbers for new concepts learned by the AI.
6. Troubleshooting and Robotic Psychosurgery
Try in advance not to introduce any
evolutionary bugs.
The
AI Debugger program may shed some light in general on how to debug
and troubleshoot programs in artificial intelligence.
If you try to teach the AI a new concept and it fails to
learn it, check to see if you have introduced only one new
concept at a time, as may be suggested in the user manual.
If the AI has already learned a concept but is failing to
recognize the word in the input stream, you may go into
Troubleshoot mode with the JavaScript Mind.html to see
what concept-number is being assigned to the concept.
With Mind.Forth, you may press Escape to halt the AI and
then enter .psi or .en or .aud to inspect the concepts.
In either case, it may be that the audRecog module is
mistakenly declaring the wrong concept-number because
of similarity in the word with some other known word.
If so, it may be necessary to debug the audRecog module
or to choose other words that will not confuse audRecog.
7. Oldconcept and Knowledge-Based Resources for
Seed AI Evolution