Cyborg AI Minds are a true concept-based artificial intelligence with natural language understanding, simple at first and lacking robot embodiment, and expandable all the way to human-level intelligence and beyond. 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.

Sunday, June 24, 2018

mfpj0624

Logical Inference in the First Working AGI MindForth

Over the past week fifteen or twenty hours of intense work went into coding the InFerence, AskUser and KbRetro modules in the Forth version of the First Working AGI. Interactively we could see that the Forthmind was making a silent inference from our input of "anna is a woman" but the AskUser module was substandardly asking "DO ANNA HAS CHILD?" in seeking confirmation of the silent inference. When we entered "no" as an answer, we could not see if the KbRetro module was properly inserting the 250=NOT adverb into the conceptual engrams of the silent inference so as to negate the inferred idea. Therefore today in the agi00056.F version of MindForth we are starting our diagnostic display about forty-five time-points earlier than the computed value of the time-of-input tin variable so that we can see if the inferred idea is being retroactively adjusted by KbRetro. At first blush, no insertion of 250=NOT is happening, so we start inserting diagnostic messages into the code.

Our diagnostics suggest that KbRetro is not being called, but why not? It turns out that we have not yet coded 404=NO or 432=YES or 230=MAYBE into the MindBoot sequence, so we code them in. Then we start getting a faulty output after answering "no" to AskUser. The AI says, "ANNA NOT NOT CHILD". Apparently EnVerbPhrase is not properly negating the refuted silent inference. After several hours of troubleshooting, the desired output appears.

When we enter "anna is woman" and we answer "no" to the question whether Anna has a child, the conceptual array shows the silent inference below at the time-points 3068-3070:

The arrays psy{ and ear{ show your input and the AI output:
time: tru psi hlc act mtx jux pos dba num mfn pre iob seq tkb rv -- pho act audpsi

3053 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3054 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3055 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3056 : 0 502 0 -40 0 0 5 1 1 2 0 0 800 3059 3053   65 0 502 A
3057 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3058 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   73 0 0 I
3059 : 0 800 0 -40 0 250 8 4 1 2 0 0 515 3065 3058   83 0 800 S
3060 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3061 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   87 0 0 W
3062 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   79 0 0 O
3063 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   77 0 0 M
3064 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3065 : 0 515 0 -40 0 0 5 0 2 2 0 0 0 0 3061   78 0 515 N
 066 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   13 0 0
3067 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3068 : 0 502 0 -26 0 0 5 1 1 0 0 0 810 3069 0   32 0 0
3069 : 0 810 0 56 0 250 8 0 0 0 502 0 525 3070 0   32 0 0
3070 : 0 525 0 32 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3071 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3072 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   68 0 0 D
3073 : 0 830 0 -40 0 0 8 0 1 2 0 0 810 0 3072   79 0 830 O
3074 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3075 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3076 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3077 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3078 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3079 : 0 502 0 -40 0 0 5 1 1 2 0 0 810 3084 3076   65 0 502 A
3080 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3081 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3082 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3083 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3084 : 0 810 0 -40 0 0 8 4 2 2 0 0 525 3096 3082   83 0 810 S
3085 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3086 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3087 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   84 0 0 T
3088 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3089 : 0 117 0 -40 0 0 1 0 1 2 0 0 810 0 3087   69 0 117 E
3090 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3091 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3092 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   67 0 0 C
3093 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3094 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   73 0 0 I
3095 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   76 0 0 L
3096 : 0 525 0 -40 0 0 5 0 1 2 0 0 810 0 3092   68 0 525 D
3097 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3098 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3099 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3100 : 0 404 0 -40 0 0 4 0 1 2 0 0 0 0 3099   79 0 404 O
 101 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   13 0 0
3102 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3103 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3104 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3105 : 0 502 0 -42 0 0 5 1 1 2 0 0 810 3122 3102   65 0 502 A
3106 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3107 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3108 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   68 0 0 D
3109 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   79 0 0 O
3110 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   69 0 0 E
3111 : 0 830 0 -42 0 0 8 1 1 2 0 0 0 0 3108   83 0 830 S
3112 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3113 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3114 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3115 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   79 0 0 O
3116 : 0 250 0 -42 0 0 2 1 1 2 0 0 0 0 3114   84 0 250 T
3117 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3118 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3119 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3120 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3121 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   86 0 0 V
3122 : 0 810 0 -42 0 250 8 4 2 2 0 0 525 3129 3119   69 0 810 E
3123 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3124 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3125 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   67 0 0 C
3126 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3127 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   73 0 0 I
3128 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   76 0 0 L
3129 : 0 525 0 -42 0 0 5 1 1 2 0 0 0 0 3125   68 0 525 D
3130 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3131 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
time: tru psi hlc act mtx jux pos dba num mfn pre iob seq tkb rv

Robot alive since 2018-06-24:
ANNA  DOES  NOT  HAVE  CHILD
Since we negate the inference with our response of "no", KbRetro inserts the adverb "250" (NOT) at the time-point 3069 to negate the verb 810=HAVE. Then the AI states the activated idea of the negation of the inference: "ANNA DOES NOT HAVE CHILD".

Tuesday, June 19, 2018

mfpj0619

MindForth is the First Working AGI for robot embodiment.

The MindForth AGI needs updating with the new functionality coded into the JavaScript AI Mind, so today we start by adding two innate ideas to the MindBoot sequence. We add "ANNA SPEAKS RUSSIAN" so that the name "Anna" may be used for testing the InFerence mind-module by entering "anna is a woman". Then we add "I NEED A BODY" to encourage AI enthusiasts to work on the embodiment of MindForth in a robot. When we type in "anna is a woman", the AI responds "ANNA SPEAKS THE RUSSIAN", which means that InFerence is not ready in MindForth, and that the EnArticle module is too eager to insert the article "the", so we comment out a call to EnArticle for the time being. Then we proceed to implement the Indicative module as already implemented in the ghost.pl AGI and the JavaScript AI Mind. We also cause the EnVerbPhrase module to call SpreadAct for direct-object nouns, in case the AGI knows enough about the direct object to pursue a chain of thought.

Saturday, June 16, 2018

jmpj0616

Fleshing out VisRecog() in the First Working AGI

In today's 16may18A.html version of the tutorial AI Mind in JavaScript for Microsoft Internet Explorer (MSIE), we flesh out the previously stubbed-in VisRecog() module for visual recognition. The AGI already contains code to make the EnVerbPhrase() module call VisRecog() if the AI Mind is using its ego-concept and trying to tell us what it sees. As a test we input "you see god" and we wait for the thinking software to cycle through its available ideas and come back upon the idea that we communicated to it. As we explain in our MindGrid diagram on GitHub, each input idea goes into neuronal inhibition and resurfaces in what is perhaps AI consciousness only after the inhibition has subsided. Although we tell the AI that it sees God, the AI has no robot body and so it can not see anything. It eventually says "I SEE NOTHING" because the default direct object provided by VisRecog() is 760=NOTHING. In the MindBoot() sequence we add "I NEED A BODY" as an innate idea, so as to encourage users to implement the AI Mind in a robot. Once the AI has embodiment in a robot, the VisRecog() module will enable the AI to tell us what it sees.

Tuesday, June 12, 2018

jmpj0612

AI Mind Maintainer solves negation-of-thought problems.

In today's 12jun18A.html version of the JavaScript AI Mind for Microsoft Internet Explorer (MSIE), we find a negation-bug when we test the InFerence() module by inputting "anna is a woman". The AI then asks us, "DOES ANNA HAVE CHILD" and we answer "no" to test the AI. The AI properly states the idea negated by KbRetro() in the knowledge base, namely "ANNA DOES NOT HAVE CHILD". However, the negation-flag negjux for thought generation remains erroneously set to "250" for the 250=NOT adverb. We discover that the negjux flag, each time after serving its purpose, has to have a zero-reset in two locations, one for any form of the verb "to be" and another for non-be-verbs. We make the correction, and we finish off the negation-bug by resetting the tbev time-of-verb to zero at the end of OldConcept().

Monday, June 11, 2018

jmpj0611

Granting AI user-input priority over internal chains of thought.

We expect the AI Mind to activate incoming concepts mentioned during user input, so that the AI can talk to us about things we mention. Recently, however, the SpreadAct() module has been putting quasi-neural activation only on concepts thought about internally but not mentioned during user input. We need a way to let user-input override any activation being imposed by the SpreadAct() module for internal chains of thought, so that external input takes precedence. One method might be to use the quiet variable and set it to "false" not only during user input but also until the end of the first AI output made in response to user input. In that way, any concept mentioned by the user could briefly hold a high activation-level not superseded by the machinations of the SpreadAct() module for spreading activation. We implement the algorithm, and the AI then responds properly to user input. We solve some other problems, such as KbRetro() interfering with the conceptual engrams of an inference, and negation not being stored properly for negated ideas.

Tuesday, June 05, 2018

jmpj0605

Mentifex re-organizes the Strong AI SpreadAct() module.

In the 5jun18A.html JavaScript AI Mind we would like to re-organize the SpreadAct() mind-module for spreading activation. It should have special cases at the top and default normal operation at the bottom. The special cases include responding to what-queries and what-think queries, such as "what do you think". Whereas JavaScript lets you escape from a loop with the "break" statement, JavaScript also lets you escape from a subroutine or mind-module with the "return" statement that causes program-flow to abandon the rest of the mind-module code and return to the supervenient module. So in SpreadAct() we may put the special-test cases at the top and with the inclusion of a "return" statement so that program-flow will execute the special test and then return immediately to the calling module without executing the rest of SpreadAct().

When we run the JSAI without input, we notice that at first a chain of thought ensues based solely on conceptual activations and without making use of the SpreadAct() module. The AI says, "I HELP KIDS" and then "KIDS MAKE ROBOTS" and "ROBOTS NEED ME". As AI Mind maintainers we would like to make sure that SpreadAct() gets called to maintain chains of thought, not only so that the AI keeps on thinking but also so that the maturing AI Mind will gradually become able to follow chains of thought in all available directions, not just from direct objects to related ideas but also backwards from direct objects to related subjects or from verbs to related subjects and objects.

In the EnNounPhrase() module we insert a line of code to turn each direct object into an actpsior concept-to-be-activated in the default operation at the bottom of the SpreadAct() module. We observe that the artificial Mind begins to follow associative chains of thought much more reliably than before, when only haphazard activation was operating. In the special test-cases of the SpreadAct() module we insert the "return" statement in order to perform only the special case and to skip the treatment of a direct object as a point of departure into a chain of thought. Then we observe something strange when we ask the AI "what do you think", after the initial output of "I HELP KIDS". The AI responds to our query with "I THINK THAT KIDS MAKE ROBOTS", which is the idea engendered by the initial thought of "I HELP KIDS" where "KIDS" as a direct object becomes the actpsi going into SpreadAct(). So the beastie really is telling us what is currently on its mind, whereas previously it would answer, "I THINK THAT I AM A PERSON". When we delay entering our question a little, the AI responds "I THINK THAT ROBOTS NEED ME".

Sunday, June 03, 2018

jmpj0603

AI Mind spares Indicative() and improves SpreadAct() mind-module.

We have a problem where the AI Mind is calling Indicative() two times in a row for no good reason. After a what-think query, the AI is supposed to call Indicative() a first time, then ConJoin(), and then Indicative() again. We could make the governance depend upon either the 840=THINK verb or upon the conj-flag from the ConJoin() module, which, however, is not set positive until control flows the first time through the Indicative() module. Although we have been setting conj back to zero at the end of ConJoin(), we could delay the resetting in order to use conjas a control-flag for whether or not to generate thought-clauses joined by one or more conjunctions. Such a method shifts the problem back to the ConJoin() module, which will probable have to check conceptual memory for how many ideas have high activation above a certain threshold for warranting the use of a conjunction. Accordingly we go into the Table of Variables webpage and we write a description of conj as a two-purpose variable. Then we need to decide where to reset conj back to zero, if not at the end of Indicative(). We move the zero-reset of conjfrom ConJoin() to the EnThink() module, and we stop getting more than one call to Indicative() in normal circumstances. However, when we input a what-query, which sets the whatcon variable to a positive one, we encounter problems.

Suddenly it looks as though answers to a what-think query have been coming not from SpreadAct(), but simply from the activation of the 840=THINK concept. It turns out that a line of "psyExam" code was missing from a SpreadAct() search-loop, with the result that no engrams were being found or activated -- which activation is the main job of the SpreadAct() module.