MindForth 15.JAN.2008

Mind.Forth Programming Journal (MFPJ) Tues.15.JAN.2008
Yesterday on 14 January 2008 the basic scaffolding for the Moving Wave Algorithm of artificial intelligence
was installed in Mind.Forth and released on the Web. Now it is time to clean up the code a little and to deal with some stray activations that interfere with the proper generation of meandering streams of thought.
First in psiDamp we are re-introducing the single call to psiDecay, so that post-thought "lopsi" concepts will gradually lose their activation over time.
We need to get rid of the "newpsi" and "prequel" and "psicrest" variables, because with "lopsi" and "hipsi" we were able to get the job done in exemplary fashion.
Having eliminated or commented out the obsolete variables, now we are trying to debug the stray activations. When we enter a known word like "kids" or "robots" and we press [RETURN], we get a line of output such as follows.
Robot: ROBOTS WHAT DO ROBOTS DO
The AI speaks the word "ROBOTS" because it is starting an SVO sentence with "ROBOTS" as the subject. At first, the activation of ROBOTS sends a "spike" of twenty (20) to the verb NEED -- which has no subconscious activation because it exists in enBoot and not as a recent thought.
ROBOTS #39 w. act 48 at I = 186 sending spike 20 to seq #74 NEED at act 0 yields 20 and zone = 181 20 (lim = 63) for t3 NEED engram; spike = 20 R
The enBoot verb "NEED" gets rejected with a message-line.
verbPhr: detour because verb-activation is only 12
We see from the following diagnostic output display that the Audition module has been calling psiDamp to de-activate the ROBOTS concept after the hearing of each individual letter in the ROBOTS word.
R psiDamp called for urpsi = 39 by module ID #104 Audition psiDecay called to reduce all conceptual activations. O psiDamp called for urpsi = 39 by module ID #104 Audition psiDecay called to reduce all conceptual activations. B psiDamp called for urpsi = 39 by module ID #104 Audition psiDecay called to reduce all conceptual activations. O psiDamp called for urpsi = 39 by module ID #104 Audition psiDecay called to reduce all conceptual activations. T psiDamp called for urpsi = 39 by module ID #104 Audition psiDecay called to reduce all conceptual activations. S psiDamp called for urpsi = 39 by module ID #104 Audition psiDecay called to reduce all conceptual activations. psiDamp called for urpsi = 39 by module ID #104 Audition psiDecay called to reduce all conceptual activations. psiDamp called for urpsi = 39 by module ID #104 Audition psiDecay called to reduce all conceptual activations.
Well, isn't that result weird? By briefly changing the "module ID #" above to "42" for external input and to "35" for internal flow, we discovered multiple psiDamp calls during the internal reentry of each word being thought.
R psiDamp called for urpsi = 39 by module ID #35 psiDecay called to reduce all conceptual activations. O psiDamp called for urpsi = 39 by module ID #35 psiDecay called to reduce all conceptual activations. B psiDamp called for urpsi = 39 by module ID #35 psiDecay called to reduce all conceptual activations. O psiDamp called for urpsi = 39 by module ID #35 psiDecay called to reduce all conceptual activations. T psiDamp called for urpsi = 39 by module ID #35 psiDecay called to reduce all conceptual activations. S psiDamp called for urpsi = 39 by module ID #35 psiDecay called to reduce all conceptual activations. psiDamp called for urpsi = 39 by module ID #35 psiDecay called to reduce all conceptual activations.
The concept of ROBOTS keeps being set to the same "residuum" by psiDamp, but the NEED concept keeps getting psi-decayed until its activation drops too low for validation as a good verb to go with the word ROBOTS as a subject.
We vaguely suspect that the reentry of each character in ROBOTS is being treated as if the character were a whole word by itself, so that the "trough" triggger code gets activated not merely once, but many times.
Aha! During reentry, the SPEECH module is setting "pov" to "35" and calling AUDITION for each character being "pronounced" by the SPEECH module. Therefore the Audition "trough" trigger is being set to one (1) for each and every character being reentered from the SPEECH mind-module. There should be some easy fix for this bug, such as perhaps creating a special flag to indicate that reentry is in progress. However, at this point we would like to remark that, after the extremely difficult lopsi/hipsi coding of yesterday, we may finally be in the close-to-True-AI phase where the major bugs have been solved and we are only clearing out minor bugs -- which nevertheless prevent the AI from functioning flawlessly as True AI.
We had better check the table of variables and the JavaScript Mind.html source code to see if there is already a flag for reentry.
Maybe we could stop calling psiDamp from Audition during reentry, and call it from somewhere else, like perhaps the oldConcept module.
We could have a flag that lets reentrant Audition call psiDamp one single time, after which the flag is knocked out of commission, until the end of SPEECH, where the flag is set wide open again. But what would be a good name for such a flag? Let's try using a Latin "obstat" variable.
Wow! It worked! The AI stopped saying
Robot: ROBOTS WHAT DO ROBOTS DO
and switched to stating its knowledge from enBoot.
Robot: ROBOTS NEED I
We now have used "obstat" in the Audition module.
pov @ 35 = IF \ 13jan2008 During internal re-entry... 1 trough +! \ 13jan2008 Increment trough per character. trough @ 1 = IF \ 13jan2008 A once-per-cycle event. obstat @ 0 = IF \ 15jan2008 If nothing stands in the way... lopsi @ urpsi ! \ 14jan2008 \ 104 caller ! \ 13jan2008 Audition identified by AI4U page. 35 caller ! \ 15jan2008 Temporary test of too many calls. psiDamp \ 13jan2008 Knock down cresting concept. hipsi @ lopsi ! \ 14jan2008 "Changing of the guard." 0 caller ! \ 13jan2008 Reset "caller" for safety. 0 urpsi ! \ 13jan2008 Reset urpsi 1 obstat ! \ 15jan2008 No more psiDamp until end of SPEECH THEN \ End of test for quasi-nihil-obstat condition. THEN \ 13jan2008 End of trough-trigger test. THEN \ 13jan2008 End of POV-test.
And we reset "obstat" at the end of the SPEECH code.
LOOP \ End of loop of up to 40 engram-fetches. 0 match ! \ In case not otherwise reset. 0 obstat ! \ 15jan2008 Restore ability of Audition to psi-damp words. ; \ End of Speech; return to nounPhrase, verbPhrase, etc.
We have solved an important bug, so we will upload our code as yet another improved version of MindForth. There are still some problems with activations going awry, but the AI Mind functions a lot better than it did yesterday. Luckily, the AI sometimes asks a question, which should be interesting for users in Tutorial mode.
As we upload the current code for release on the Web, we should make clear that Franks AI Mind at http://AIMind-I.com is an independent Forthmind in the evolution of artificial intelligence and may or may not eventually incorporate the algorithmic changes being developed here for use in the original Forthmind.
ATM/Mentifex -- http://mentifex.virtualentity.com/mind4th.html
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Arthur, mind helping me understand something in the logic for generating a thought?
A subject (noun) is selected then verbs associated with the subject are activated;
Subject - Man Verbs possible: is, has, loves, eats
I can observe this occuring. If there has been no activity, inert for a minute or so, then all of the verbs are activated equally, because the act levels have all gone to zero.
Next is an Object - nouns to be selected that are activated by the verb selected. (Am I correct here?)
Verb - eats (for what ever reason is selected) ? What makes one verb win out over another if both have equal activation levels ?
Now, the core has many phrases in it using the verb 'eats'; man eats fish bird eats worm cat eats bird fish eats bugs
Again: If there has been no activity, inert for a minute or so, then all of the nouns are activated equally, because the act levels have all gone to zero.
So here is the big question: what keep the thread from 'man' thru 'eats' to the object intact? I do get the result 'man eats bugs'
Similar things happen with other verbs e.g. is, man is bug, man is woman, man is child. The object is not related to the subject.
Thoughts?
Frank
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.