Purpose: Discussion of AI Minds thinking in English, German or Russian. Privacy policy: Third parties advertising here may place and read cookies on your browser; and may use web beacons to collect information as a result of ads displayed here.

Friday, September 10, 2010

sep09mfpj

The MindForth Programming Journal (MFPJ) is both a tool in developing MindForth open-source artificial intelligence (AI) and an archival record of the history of how the AI Forthmind evolved over time.


1 Thurs.9.SEP.2010 -- Zeroing in on Inhibition
Let's get a few things straight about how the VerbPhrase "twin" (time of winning verb-selection) variable works. On 7sep2010, the variable was introduced into the 5sep10A.F MindForth in the following stretch of VerbPhrase code


I    1 en{ @  act @ > IF  ( if en1 is higher )
I twin ! \ retain time of motjuste; 7sep2010
I 0 en{ @ motjuste ! ( store psi-tag of verb )


which keeps looking for a verb with a higher activation, until a winner is selected.
The "twin" win-time has perhaps changed while various verb-nodes were competing, but the final post-search-loop value of "twin" must necessarily be the time "t" of the winning verb-node, not only in the En(glish) array, but (importantly) also in the Psi concept array, where we postulate that thinking occurs.


Further down in the VerbPhrase module, just before the "main call from VerbPhrase to SpeechAct", "twin" is used as the indexing time to put a minus-fifteen inhibition on the verb-node that has just won selection into a sentence of thought. The inhibition prevents the utterance from being repeated again immediately.


We notice that the -15 inhibition does not persist long in our current 9sep10A.F code basically unchanged from 5sep10A.F. We tried to enter three sentences to see what would happen.



Human: boys make cars
Robot: CARS WHAT ARE CARS

Human: boys make guns
Robot: GUNS WHAT ARE GUNS

Human: boys make tools
Robot: TOOLS WHAT ARE TOOLS

Human: boys
Robot: THE BOYS MAKE THE CARS

Human: boys
Robot: THE BOYS MAKE THE TOOLS

Human: boys
Robot: THE GUNS MAKE THE CARS


Not only does the inhibition not (yet) persist, but we can see
from the last line of output above that the residual activations are out of whack. We inspect the code and we see that after the first two query-inputs of the word "boys", "GUNS" and "CARS" are both left with an activation of 58, so they prevent the input-word "boys" from being the subject of thought. We do notice some persistence of inhibition, though, because one node on the verb "MAKE" is at -4 activation. So maybe the problem is that there is too much residual activation on "GUNS" and "CARS", which both have "58" while freshly entered "boys" has activation of only 52.


In SpreadAct there is some conditional code that limits an activation to a high value of 63. Let's see if we can try a lower limit in SpreadAct and see if it helps. When we lower the SpreadAct "seq" limit from 63 to 48, we no longer get a nonsense line as our final output. Instead, we get the problem of repetition as seen below.



Human: boys
Robot: THE BOYS MAKE THE CARS

Human: boys
Robot: THE BOYS MAKE THE TOOLS

Human: boys
Robot: THE BOYS MAKE THE TOOLS


Aha, the most recent "BOYS MAKE TOOLS" is inhibited, but an
older "BOYS MAKE TOOLS" has gone from -15 inhibition up to a more normal activation of 13 (or higher, since we can not see what the node's winning activation level was). Just as a test, let us try setting inhibition not at -15 but rather at -32.



It did not work. The most recent "MAKE" node was inhibited down to -32, but somehow the older "MAKE" nodes were all at an activation level of 13. Something is overriding the inhibitions, and it ain't alcohol.


Mybe it is the VerbAct module, putting such a uniform activation on all nodes of a candidate verb. Upshot: Into VerbAct we put some code to skip inhibited nodes, but it did not solve the problem. Apparently, something is getting to the older verb-nodes before the VerbAct module operates on them. It could be PsiDamp.


Hey! Maybe the problem is in the SpreadAct module. From the noun to the verb, SpreadAct could be sending a "spike" of uniform activation of 13 points. We changed some code in the SpreadAct module, and things did work better.


Maybe, when the AI generates a sentence and inhibits the verb-node from which the knowledge for the sentence is retrieved, the new sentence itself should have its verb-node inhibited, so that the idea itself will tend towards inhibition for a short time.


Now we have a very interesting situation. If the inhibition does not fade quickly enough, then a valid idea will fail to get mentioned. The following report indicates such a situation.


390 : 96 13 2 0 0 5 73 96 to BOYS
395 : 73 -11 0 96 96 8 109 73 to MAKE
400 : 109 41 0 73 96 5 0 109 to CARS
405 : 109 41 2 109 0 5 54 109 to CARS
410 : 54 0 0 109 109 7 67 54 to WHAT
415 : 67 0 0 54 54 8 109 67 to ARE
421 : 109 41 2 67 54 5 0 109 to CARS
426 : 96 13 2 109 0 5 73 96 to BOYS
431 : 73 -4 0 96 96 8 110 73 to MAKE
436 : 110 42 0 73 96 5 0 110 to GUNS
441 : 110 42 2 110 0 5 54 110 to GUNS
446 : 54 0 0 110 110 7 67 54 to WHAT
451 : 67 0 0 54 54 8 110 67 to ARE
457 : 110 2 2 67 54 5 0 110 to GUNS
462 : 96 13 2 110 0 5 0 96 to BOYS
467 : 96 13 2 96 0 5 73 96 to BOYS
472 : 73 -6 0 96 96 8 109 73 to MAKE
478 : 109 41 2 73 96 5 0 109 to CARS
483 : 96 13 2 109 0 5 0 96 to BOYS
488 : 96 13 2 96 0 5 73 96 to BOYS
493 : 73 -13 0 96 96 8 109 73 to MAKE
499 : 109 36 2 73 96 5 0 109 to CARS
time: psi act num jux pre pos seq enx




2 Fri.10.SEP.2010 -- Positive Results


We finally obtained some positive results with our implementing of neural inhibition when we removed from the functional heart of VerbAct a line of code that we had once used as only a test. The code snippet below shows our practice of commenting out the offending line twice, once to disable the line of code and once again to record the event of our commenting out the line now, for later clean-up when at least one archival record has been recorded of the action taken.



I 1 psi{ @ psi1 !
\ 8 verbval +! \ add to verbval; test; 25aug2010
\ 8 verbval +! \ Commenting out; 10sep2010
CR ." VrbAct: t & verbval = " I . verbval @ . \ test;9sep2010

I 1 psi{ @ -1 > IF \ avoid inhibited nodes; 9sep2010
\ psi1 @ I 1 psi{ !
verbval @ I 1 psi{ ! \ test; 25aug2010
THEN \ end of test to skip inhibited nodes; 9sep2010


We may upload the 9sep10A.F MindForth to the Web now that we have
a stable version in which inhibition actually enables the AI Mind to retrieve a series of facts from the knowledge base.


Table of Contents (TOC)