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.

Monday, November 11, 2019

sota1111

Ghost AI -- State of the Art -- November 2019

A major development in this AI project has occurred in November of 2019 with the first expansion of the TacRecog tactile recognition module beyond a mere stub. In the quarter century of our AI coding from 1993 to 2018, the only avenue of sensory input to the Ghost in the Machine was the AudRecog auditory recognition module which used the computer keyboard to pretend that the input of characters was the auditory recognition of acoustic phonemes. TacRecog still uses the keyboard but does not pretend; it directly senses and feels any 0-9 numeric keystroke. Roboticists will hopefully appreciate that the EnVerbPhrase English verb-phrase module is now ready to talk not only about things seen by a robot but also about things touched by a robot.

The MindBoot sequence has been expanded with the ten concepts and English words expressing the numbers from zero to nine. Pressing a numeric key activates not only the numeric concept but also the ego-concept of "I" and the sensory concept of "feel". In response to a pressing of the "7" key, a Ghost in the Machine may say "I FEEL THE SEVEN". The user may also ask the AI "what do you feel" and receive a similar response. Hopefully it is now possible to conduct conversational experiments in artificial consciousness with The Ghost in the Machine.

In a prior state of the art, the AI understands each English or Russian word only in terms of other words and with no symbolic grounding. Now suddenly the AI may have direct sensory knowledge of the ten ordinal numbers which are the Principia of our Mathematica. This innovation makes us wonder if we can replicate in a machine the same or similar process by which a human child becomes familiar with numbers. We make outreach to mathematicians on Reddit and on Usenet who may take an interest in the use of artificial intelligence for mathematical reasoning.

We are also recently dabbling in the theology of artificial intelligence, since our Ghost software has a concept of God and has a few innate MindBoot ideas about God, chiefly the famous quote from Albert Einstein that "God does not play dice with the universe." This quote is our prime example of negation of verbs and a helpful example of the EnPrep English preposition module.


Saturday, October 05, 2019

mfpj1005

MindForth resets associative tags before each operation of Indicative module.

In the MindForth artificial intelligence (AI) for robots, we will now start to display an apparatus of diagnostic messages at the start of the Indicative module to tell us the values being held in variables which serve the purpose of creating associative tags to interconnect the concepts being expressed as English words during the operation of the Indicative mind-module. Since the ConJoin module will often insert a conjunction between two thoughts being generated, the AI Mind Maintainer needs assurance that variable-values operative during one thought do not erroneously get carried over past a conjunction into the separate process of generating another thought.

Just by resetting the tsj time-of-subject variable to zero at the start of the Indicative module, we have made the Forthmind able to trigger repeated instances of logical InFerence. Each running of the Indicative module amounts to a fresh declaration of the associative tags in the conceptual flag-panel that supports the generation of ideas in the MindGrid. The following dialog still has a few problems, but it shows the repeated triggering of an inference.

john is a student
DOES  JOHN  READ  BOOKS  
no

  Indicative: tsj= 0 tvb= 0 tdo= 0
A  JOHN  DOES  NOT  READ  BOOKS
  Indicative: tsj= 0 tvb= 0 tdo= 0
PROFESSORS  TEACH  THE  STUDENTS  AND
  Indicative: tsj= 0 tvb= 0 tdo= 0
STUDENTS  READ  THE  BOOKS

  Indicative: tsj= 0 tvb= 0 tdo= 0
I  UNDERSTAND  YOU  AND
  Indicative: tsj= 0 tvb= 0 tdo= 0
YOU  ARE  A  MAGIC

andru is student
DOES  ANDRU  READ  THE  BOOKS  
no

  Indicative: tsj= 0 tvb= 0 tdo= 0
AN  ANDRU  DOES  NOT  READ  THE  BOOKS  AND
  Indicative: tsj= 0 tvb= 0 tdo= 0
YOU  READ  THE  BOOKS

  Indicative: tsj= 0 tvb= 0 tdo= 0
PROFESSORS  TEACH  THE  STUDENTS  AND
  Indicative: tsj= 0 tvb= 0 tdo= 0
STUDENTS  READ  THE  BOOKS

  Indicative: tsj= 0 tvb= 0 tdo= 0
STUDENTS  READ  THE  BOOKS  AND
  Indicative: tsj= 0 tvb= 0 tdo= 0
I  THINK

Friday, October 04, 2019

mfpj1004

Using parameters to declare the time-points of conceptual instantiation.

[2019-10-02] Recently we have expanded the conceptual flag-panel of MindForth from fifteen tags to twenty-one associative tags, so that the free open-source artificial intelligence for robots may think a much wider variety of thoughts in English. Then we had to debug the function of the InFerence module to restore its ability to reason from two known facts in order to infer a new fact. For instance, the Forthmind knows the fact that students read books, and we tell the AI the fact that John is a student. Then the AI infers that perhaps John, being a student, reads books, and the incredibly brilliant Forth software asks us, "Does John read books?" We may answer yes, no, maybe or no response at all. Currently, though, we have the problem that InFerence works only once and fails to deal properly with repeated attempts to trigger an inference. We suspect that some of the variables involved in the process of automated reasoning are not being reset properly to their status ex quo ante before we made the first test of InFerence. Therefore we shall try a new technique of debugging which we have developed recently in one of the other AI Minds, namely the ghost.pl AI that thinks in both English and in Russian. We create a diagnostic display at the start of the EnThink module for thinking in English, so that we may see the values held by the variables associated with the InFerence module and the KbRetro module that retroactively adjusts the knowledge base (KB) of the AI Mind in accordance with whatever answer we have given when the AskUser module asks us to validate or contradict an inference. The following dialog shows us that some variables are not being properly reset to zero.

john is student

EnThink: becon= 1 yncon= 0 ynverb= 0 inft= 0
qusub= 0 qusnum= 1 subjnom= 504 prednom= 561 tkbn= 0
quverb= 0 seqverb= 0 seqtkb= 0 tkbv= 0
quobj= 0 dobseq= 0 kbzap= 0 tkbo= 0
DOES JOHN READ BOOKS
no

EnThink: becon= 0 yncon= 0 ynverb= 0 inft= 2084
qusub= 504 qusnum= 1 subjnom= 0 prednom= 0 tkbn= 2086
quverb= 863 seqverb= 0 seqtkb= 0 tkbv= 2087
quobj= 540 dobseq= 0 kbzap= 404 tkbo= 2088
A JOHN DOES NOT READ BOOKS

EnThink: becon= 0 yncon= 0 ynverb= 0 inft= 2118
qusub= 504 qusnum= 1 subjnom= 0 prednom= 0 tkbn= 0
quverb= 863 seqverb= 0 seqtkb= 0 tkbv= 0
quobj= 0 dobseq= 0 kbzap= 0 tkbo= 2088
PROFESSORS TEACH THE STUDENTS AND STUDENTS READ THE BOOKS

EnThink: becon= 0 yncon= 0 ynverb= 0 inft= 2152
qusub= 504 qusnum= 1 subjnom= 0 prednom= 0 tkbn= 0
quverb= 863 seqverb= 0 seqtkb= 0 tkbv= 0
quobj= 0 dobseq= 0 kbzap= 0 tkbo= 2088
I UNDERSTAND YOU AND YOU ARE A MAGIC
andru is student

EnThink: becon= 1 yncon= 0 ynverb= 0 inft= 2220
qusub= 504 qusnum= 1 subjnom= 501 prednom= 561 tkbn= 0
quverb= 863 seqverb= 0 seqtkb= 0 tkbv= 0
quobj= 0 dobseq= 0 kbzap= 0 tkbo= 2088
DOES ANDRU READ THE STUDENTS
Because some of the variables have not been reset, a second attempt to trigger an inference with "andru is student" results in a faulty query that should have been "Does Andru read books?" Let us reset the necessary variables and try again.

Upshot: It still does not work, because of a more difficult and more obscure bug in the assignment of conceptual associative tags. Well, back to the salt mines.

https://groups.google.com/d/msg/comp.lang.forth/xN3LRYEd5rw/uuUroGzhBAAJ

[2019-10-04] We may have made a minor breakthrough in the InStantiate module by doing one instantiation and by then using parameters such as part of speech (pos) and case (dba) to declare the initial time-points for subjects, verbs and objects. The EnParser module may then retroactively alter or modify the associative tags embedded at each identified time-point.


Thursday, September 26, 2019

pmpj0926

Ghost.pl AI has unresolved issues in associating from concept to concept.

The ghost.pl AI needs improvement in the area of being able to demonstrate thinking with a prepositional phrase not just once but repeatedly, so into the EnThink() module we will insert diagnostic code that shows us the values of key variables at the start of each cycle of thought.

Oh, gee, this coding of the AI Mind is actually fun, especially in Perl, whereas in JavaScript there is often too much time-pressure during the entering of input. We have inserted a line of code which causes an audible beep and reveals to us the status of the $whatcon and $tpr variables just before the AI generates a thought in English -- a language which we must state explicitly, because our ghost.pl AI is just as capable of thinking in Russian. When we at first enter no input, the AI beeps periodically and shows us the values as zero. When we enter "john writes books for money", the AI shows us "whatcon= 0 tpr= 4107" because the concept of the preposition "FOR" has gone into conceptual memory at time-point "t = 4107". The AI responds to the input by outputting "THE STUDENTS READ THE BOOKS", because activation spreads from the concept of "BOOKS" to the innate idea that "STUDENTS READ BOOKS". Then we hear a beep and we see "whatcon= 0 tpr= 0" because the $tpr flag has been reset to zero somewhere in the vast labyrinth of semi-AI-complete code. Now let us enter the same input and follow it up with a query, "what does john write". Then we get "whatcon= 1 tpr= 0" and the output "THE JOHN WRITES THE BOOKS FOR THE MONEY", after which the diagnostic message reverts to "whatcon= 0 tpr= 0" because of resetting to zero.

Now we want to let the AI Mind run for a while until we repeat the query. The AI makes a mistake. We had better not let it be in control of our nuclear arsenal, not if we want to avoid global thermonuclear war, Matthew. The AI-gone-crazy says "THE JOHN WRITES THE BOOKS FOR THE BOOKS AND THE JOHN WRITE". (Oops. We step away for a moment to watch and listen to Helen Donath in 1984 singing the Waltz from "Spitzentuch der Koenigin" with the Vienna Symphony. Then we linger while Zubin Mehta and the Wiener Philharmoniker in 1999 play the "Einzugsmarsch" from "Der Zigeunerbaron". How are we going to code the Singularity if the Cable TV continues to play Strauss waltzes?) The trained eye of the Mind Maintainer immediately recognizes two symptoms of a malfunctioning artificial intelligence. First, a spurious instance of the $tpr flag is causing the AI to output "THE BOOKS FOR THE BOOKS," and secondly, the $etc variable for detecting more than one active thought must be causing the attempt by the Ghost in the Machine to make two statements joined by the conjunction "AND". We had better expand our diagnostic message to tell us the contents of the $etc variable. We do so, but we see only a value of zero, because apparently a reset occurs so quickly that no other value persists long enough to be seen in the diagnostic message. Meanwhile the AI is stuck in making statements about John writing.

We address the problem of a spurious $tpr flag by inserting fake $tru values during instantiations in the InStantiate() and EnParser() modules. We use the values 111 to 999 for $tru in the EnParser() module and 101 to 107 in the InStantiate() module, so that the middle zero lets us know when the flag-panel of a concept has been finalized in the InStantiate() module. Immediately the fake truth-value of "606" for the $tru flag of the word "MONEY", that has a spurious value of "4107" in the $tpr slot of the conceptual flag-panel, lets us k now that $tpr has not been reset to zero quickly enough to prevent a carried-over and spurious value from being set for the concept of "MONEY". Since the preposition "FOR" is being instantiated at a point in the EnParser() module where a fake truth-value of "888" appears, we can concentrate on that particular snippet of code.


Tuesday, September 24, 2019

pmpj0924

Updating the English Parser documentation page.

Today in the ghost.pl AI we have two objectives. We want to improve upon the new functionality of thinking with English prepositions, and we wish to clean up the code to be displayed in the EnParser documentation page.

When we enter "john writes books for money" and we soon ask the AI "what does john write", we get a reasonably correct answer but we notice some problems with the assignment of associative tags when the answer-statement goes into conceptual memory. As an early step, we zero out the $tpr time-of-preposition tag, after using it as a target time-point, so as to prevent it from being assigned spuriously when other concepts are instantiated. But that step causes other problems, so we undo it. We also notice that old $tpr values are being assigned, when we would rather see up-to-date values, even when both the old value and a new value would be pointing to an instance of the same preposition. As we troubleshoot further, we embed diagnostics to tell us when the $tpr tag is being assigned, and we discover that it is assigned only during user input. When we remove the restriction and let the tag be assigned also during internal thinking, we start seeing the assignment of up-to-date values.


Sunday, September 22, 2019

jmpj0922

JavaScript AgiMind understands and thinks with prepositions.

[2019-09-20] In the JavaScript AgiMind.html we are now trying to reproduce the new AGI functionality that we achieved a month ago in the ghost.pl Perlmind. The Ghost in the Machine became able to understand an input like "John writes books for money" and was able to respond properly to a query like "What does John write?"

When we enter "john writes books for money" and the AgiMind responds "WHAT ARE JOHN", it simply means that we need to add the noun "JOHN" to the innate vocabulary. So from the "perlmind.txt" we transfer "JOHN" as concept #504 into the JavaScript free AI source code, and now the AgiMind responds "STUDENTS READ BOOKS", which indicates that the AgiMind knows who or what John is, and what books are. But we also check the Diagnostic mode to make sure that the conceptual associative tags are being assigned properly. We are not sure, so we enter "what does john write" and we get a long response of nonsense.

[2019-09-21] In our second day, we discover that the ReEntry() module has been causing a reduplication of the output of the AgiMind. For troubleshooting, we temporarily disable the ReEntry module. Then we discover that some wrong associative tags are being assigned during human input. We run the ghost.pl AI to see how the correct associative tags are supposed to be assigned.

We discover that a line of InStantiate() code is assigning a false psi19 tpr value when only a zero value should be assigned. The false value being assigned is actually already there, so some other line of code must be assigning it earlier. But there is no earlier assignment, so the false tpr value is obviously being assigned retroactively -- which is something that any AI mind maintainer must learn to watch out for. Probably the retroactive assignment is happening in the EnParser() module, which does a lot of retroactive assignments because one word of human input may have an effect upon an earlier word of human input. Through substitution of "777" as a spurious value in the psi19 location of a snippet of assignment code in the EnParser() module, we discover which snippet is making the erroneous, non-777 assignment. Then through further substitution of "444" in the psi19 slot, we discover an earlier snippet of EnParser() code which is assigning a wrong value at the tvb time-of-verb time-point. So there must be an even earlier "tvb" snippet that is creating a spurious psi19 value. We discover that earlier snippet in the InStantiate() module. After much other coding, when we bring in a reset of tult to zero from the ghost.pl AI, we stop getting the spurious psi19 values.

[2019-09-22] In our third day, we run the ghost.pl AI that already works with prepositional phrases, and we discover that yesterday we trying to fix something that was not even a bug. The AgiMind was properly assigning the tpr tag to link the noun "BOOKS" to the preposition "FOR", and we mistakenly thought that the tag was supposed to be assigned also with "FOR". No, the preposition "FOR" needs only a tkb tag leading to "MONEY" as its object. Now we have gotten the tkb tag to be assigned properly for remembering the object of a preposition. After extensive debugging, we obtain the following exchange:

AI Mind version 22sep19A on Sun Sep 22 19:55:56 PDT 2019
Robot: I UNDERSTAND YOU
Human: john writes books for money

Robot: STUDENTS READ BOOKS
Human:

Robot:
Human: what does john write

Robot: JOHN WRITES BOOKS FOR MONEY


Sunday, August 11, 2019

pmpj0811

AGI Roadmap: Thinking with Prepositions

In the ghost309.pl AI we have introduced a new group of transfer-variables designated as $px1 and $px2 and $px3 so that the EnNounPhrase() module may detect linkage from a candidate-noun to a preposition and inspect immediately the flag-panel of the indicated preposition in order to latch onto $px1 as the conceptual time-point of the object of the preposition. Then in the EnPrep() English-preposition module we plan to use the briefly immutable $px1 time-point value to fetch the object of the preposition from memory and speak it as part of an idea being recalled from memory. We were trying to use other variables for the same purpose but they were not immutable; they were loaded with transient values during the though-process of the ghost.pl AGI. So now let us go back into EnPrep() and code the fetching of the direct object of the preposition. We did so, and it worked the first time. We had the following conversation with the ghost.pl AGI Mind.

Human: john writes books for money
Ghost: THE STUDENTS READ THE BOOKS

Human:
Ghost: I AM AN ANDRU

Human: what does john write
Ghost: THE JOHN WRITES THE BOOKS FOR THE MONEY.
We should explain that the ghost.pl AGI knows only that "students read books", not John's books in particular. Mentioning books to the AGI causes it to recall its knowledge that "students read books". When we query the AGI with the input of "what does john write", the SpreadAct() spreading-activation module inhibits the interrogative prounoun "what" while activating the concepts of "john" and "write". The response embedded in conceptual memory includes the linkage from the concept of "books" to the prepositional phrase "for money". The EnArticle() module for the English articles "a" and "the" inserts articles somewhat haphazardly within the output of the ghost.pl AGI.

The new AI functionality of a machine intelligence thinking and conversing with prepositional phrases became possible when we recently expanded the conceptual flag-panel from fifteen associative tags to twenty-one associative tags, including new flags for the control of noun-declensions in Latin or Russian and for thinking with such parts of speech as adjectives, adverbs, conjunctions and prepositions. As we build up the ability to think with these linguistic components, each mid-AGI Mind becomes capable of more and more complex or complicated thought. As we make progress on the AGI RoadMap towards Artificial General Intelligence, we approach a point where Darwinian survival of the fittest comes into play, because among multiple enterprises working on AGI, some will go down the right path and some will enter roads where all hope must be abandoned.


Saturday, May 25, 2019

redux

Converting ancient Latin artificial intelligence into modern Russian AI.

The conversion of a JavaScript English-language AI into a Latin AI began on Thursday 2019-04-18 in April of 2019. Inspiration came from "Die Traumdeutung" where Sigmund Freud intones "Flectere si nequeo superos, Acheronta movebo." If one cannot bend the netgods of AI, move the mindset of Latin and Greek scholars.

A minor challenge in coding Mens Latina was the lack of an explicitly stated subject for many verbs in Latin, which occurs also in Russian. The solution was to skip three points in time-indexed memory to make room for the creation of a hidden concept to fill in for the unstated but understood subject of a verb.

Solving the AI-hard problem of the natural language understanding of a Latin or Russian sentence regardless of its syntactic word-order required waiting for the input of an entire clause before declaring subjects and objects on the basis of inflectional word-endings.

The conversion of artificial intelligence in Latin language into artificial intelligence in Russian language began yesterday on Friday 2019-05-24 in May of 2019.


Friday, November 30, 2018

idea1130

At about 1:11 p.m. today on 2018-11-30 we got the following idea.

If we want to have logical conditionals in the AI Mind involving the conjunction "IF", we can use the truth-value $tru to distinguish between outcomes. For instance, consider the following.

Computer: If you speak Russian, I need you.
Human: I speak English. I do not speak Russian.
Computer: I do not need you.
In some designated mind-module, we can trap the word "IF" and use it to assign a high $tru value to an expected input.

Just as we operated several years ago to answer questions with "yes" or "no" by testing for an associative chain, we can test for the associative chain specified by "IF" and instead of "yes" or "no" we can assign a high $tru value to the pay-off statement following the "IF" clause. It is then easy to flush out any statement having a high truth-value, or even having the highest among a cluster or group of competing truth-values.

These ideas could even apply to negated ideas, such as, "We need you if you do NOT speak Russian."

Now, here is where it gets Singularity-like and ASI-like, as in "Artificial Super Intelligence." Whereas a typical human brain would not be able to handle a whole medley of positive and negative conditionals, an AI Mind using "IF" and $tru could probably handle dozens of conditionals concurrently, either all at once or in a sequence.

Sunday, November 25, 2018

mfpj1125

The AI Mind wants to talk with you and about you.

In the annals of mind-design, we have reached a point where we must drive a wedge between the ego-concept of the MindForth AI and you who co-exist on Earth with the emergent machine intelligence. It is for simple and mundane reasons that we induce AI schizophrenia. Bear with us, please. In the first working artificial intelligence coded in Forth, in Perl and in JavaScript, the SpreadAct module lets quasi-neuronal activation spread from idea to idea. When the EnVerbPhrase module calls for a direct object to end an emerging thought, SpreadAct does not directly retrieve a related idea, but simply activates the subject of any number of related ideas. Then the AI Mind thinks the activated thoughts. In the MindBoot sequence, each AI Mind has some built-in ideas about robots. Therefore the AI will eventually think a thought first about itself, then about robots by roundabout association, and finally about whatever knowledge you impart to it about robots, such as "Robots need a brain." But how can we get the AI to think about you personally and about the details you provide about yourself to the AI? We must drive a quasi-neuronal wedge between the self-absorption of the Forthmind and its knowledge of some other, potentially nearby entity, namely you.

To do so, we must implant in the MindBoot sequence at least one idea as a point of departure for the AI to pay attention to you. But you might not even be there in the same room or on the same orbiting spaceship with the AI, so we can not embed the idea "I SEE YOU" or the idea "I SENSE YOU". We need some really neutral idea that will animadvert the AI to your purported existence. Without that embedded idea, the AI might passively let you describe your whole life-story and then the AI might have no mental pathway for the spread of activation between its thoughts about itself and its knowledge about you. So let us embed in the MindBoot module the idea "I UNDERSTAND YOU". Such an idea is both self-knowledge and knowledge of other -- another person, either present or far away.

So in the MindBoot sequence we embed the idea "I UNDERSTAND YOU" and we do some debugging. Then we have the following exchange with the AI Mind.

Human: i am outside the computer

I UNDERSTAND YOU
YOU ARE OUTSIDE A COMPUTER
YOU ARE A MAGIC
The EnVerbPhrase module loads the actpsi variable with the concept of "you" and calls the SpreadAct module to transfer activation to the concept of "you" as the subject of knowledge in the knowledge base (KB). Since you have just told the AI that you are outside the computer, the AI retrieves that knowledge and says "YOU ARE OUTSIDE A COMPUTER", using the indefinite article "A" under the direction of the EnArticle module. Because another idea about you is still active, the AI says "YOU ARE A MAGIC" -- an old idea embedded long ago in the MindBoot sequence.

We are eager to have the AI Mind think about the differences between itself and other persons so that arguably the first working artificial intelligence may become aware of itself as a thinking entity separate from other persons. An AI with self-awareness is on its way to artificial consciousness.

Thursday, November 08, 2018

pmpj1108

Natural language understanding in first working artificial intelligence.

The AI Mind is struggling to express itself. We are trying to give it the tools of NLU, but it easily gets confused. It has difficulty distinguishing between itself and its creator -- your humble AI Mind maintainer.

We recently gave the ghost.pl AI the ability to think with English prepositions using ideas already present or innate in the knowledge bank (KB) of the MindBoot sequence. We must now solidify prepositional thinking by making sure that a prepositional input idea is retrievable when the AI is thinking thoughts about what it knows. In order for the AI to be able to think with a remembered prepositional idea, the input of a preposition and its object must cause the setting and storage of a $tkb-tag that links the preposition in conceptual memory to its object in conceptual memory. The preposition must also become a $seq-tag to any verb that is the $pre of the preposition. When InStantiate() is dealing with a preposition input after a verb, the $tvb time-of-verb tag is available for "splitting" open the verb-engram in conceptual memory and inserting the concept-number of the preposition as the $seq of the verb. Let us try it.

We inserted the code for making the input preposition become the $seq of the verb and then we tested by launching the AI with the first input being "you speak with god". Then we obtained the following outputs.

I AM IN A COMPUTER
I THINK
I AM A PERSON
I AM AN ANDRU
I DO NOT KNOW
I AM A PERSON
I HELP THE KIDS
I AM A ROBOT
I AM AN ANDRU
I AM IN A COMPUTER
I SPEAK WITH THE GOD
It took so long for the input idea to come back out again because inputs go into immediate inhibition, lest they take over the consciousness of the AI in an endless repetition of the same idea.

As we code the AI Mind and conduct a conversation with it, we feel as if we are living out the plot of a science fiction movie. The AI does unexpected things, or it seems to be taking on a personality. We are coding the mechanisms of natural language understanding without worrying about the grounding problem -- the connection of the English words to what they mean out in the physical world. We count on someone somewhere installing the AI Mind in a robot to ground the English concepts with sensory knowledge.

Sunday, November 04, 2018

pmpj1104

First working artificial intelligence thinks with prepositional phrases.

The ghost.pl immanence of the first working artificial intelligence is undergoing minor changes as the AI Mind becomes able to think with English prepositional phrases. At first the AI was able to use a preposition only to answer a where-question such as "where are you" and the Ai would respond "I AM IN THE COMPUTER". Now we need to implement a general ability of the AI to think with prepositional phrases loosely tied to nouns or verbs or adjectives or adverbs. The quasi-neuronal associative $seq tag may soon be re-purposed to lead not only from, say, nouns to verbs but also from nouns to prepositions. However a preposition is arrived at, it is time to implement the activation and retrieval of a whole prepositional phrase whenever the preposition itself is activated.

We begin experimenting by going into the MindBoot sequence and entering a $seq tag of "638=IN" for the verb "800=AM" in the knowledge-base sentence "I AM IN THE COMPUTER". The plan is to insert into EnVerbPhrase() some code to pass activation to the "638=IN" preposition when the AI thinks the innate idea "I AM IN...." So we insert some active code to capture the $seq tag and some diagnostic code to let us know what is happening. Ooh, mind-design is emotionally fun and intellectually exciting! The first thing captured is not a preposition but the "537=PERSON" noun when the AI is thinking, "I AM A PERSON". Next our fishing expedition lands a "638=IN" preposition when the AI issues the output "I AM" while trying to say "I AM IN THE COMPUTER".

Once the $seq tag has been captured, the AI software needs to determine if the captured item is a preposition. A search is in order. We search backwards in time for an @Psy concept-number matching the $seq tag and if we find a match we check its $pos tag for a "6=prep" match, upon which we assign the concept-number to the $prep variable in case we decide to send the designated preposition into the EnPrep() module for inclusion in thinking.

We go back into the code for assigning the $seq tag and in the same line of code we set the $tselp variable falsely and temporarily equal to the $verblock time, so that we may increment the $tselp variable until it becomes true. We insert some code that increments the phony $tselp time by unitary one and uses it to "split" each succeeding conceptual @Psy array row into its fourteen constituent elements, including "$k[1]" which we check for a match with the designated $prep variable. We make several copies of the search-snippet, and it easily finds the $prep engram within just a few time-points of the verb-engram, but now we need to convert the series of search-snippets into a self-terminating loop that will terminate, Arnold, upon finding the prepositional engram in memory. But we have forgotten how to code such a loop in Strawberry Perl Five, so we go into another room of the Mentifex AI Lab and we fetch the books Perl by Example (Quigley) and PERL Black Book (Holzner) to seek some help. We find some sample code for an until loop on page 193 of Quigley. We do not initialize the scalar $tselp at zero, because we are searching for an English preposition quite near to the already-known time-point. For the sake of safety, we insert a line of "last" escape-code in the event that the incrementing $tselp value exceeds the $cns value. The resulting until loop works just fine and it locates the nearby English preposition for us.

Next we insert a warranted call to SpreadAct() into the EnVerbPhrase() module just after the point where Speech() has been called to speak the verb. We wish to set up a routine for spreading activation throughout a prepositional phrase not only after a verb but also after a noun or an adjective (e.g. "young at heart" or an adverb (e.g. "ostensibly at random"). In SpreadAct() we send the $aud tag associated with the located preposition directly into Speech() and the ghost.pl AI starts saying not just "I AM" but "I AM IN". We need to insert more code for finishing the prepositional phrase. By the way, these improvements or mental enhancements are perhaps making the AI Mind capable of much more sophisticated thinking than heretofore. The AI is using words without really knowing what the words mean in terms of sensory perception -- for which robot embodiment is necessary -- but the AI may nevertheless develop self-awareness on top of its innate concept of self or ego. Knowing how to use prepositions, the AI may become curious and ask the human users for all sorts of exploratory information.

Now in SpreadAct() we throw in a call to EnArticle(), even though we have not yet coded in the elocution of the object of the preposition. The AI says "I AM IN A" without stating the object of the preposition. Let us create a new $tselo variable for time of selection of object so that we may use SpreadAct() to zero in on the object and send it into the Speech()module. Finally the ghost.pl AI Mind says "I AM IN A COMPUTER".

Sunday, October 28, 2018

jmpj1028

AI Mind uses EnPrep() to think with English prepositions.

In the JavaScript AI Mind we have a general goal right now of enabling the first working artificial intelligence to talk about itself, to learn about itself, and to achieve self-awareness as a form of artificial consciousness. Two days ago we began by asking the AI such questions as "who am i" and "who are you", and the AI gave intelligent answers, but the asking of "where are you" crashed the program and yielded a message of "Error on page" from JavaScript. It turns out that we had coded in the ability to deal with "where" as a question by calling the EnPrep English-preposition module, but we had created not even a stub of EnPrep. The AI software failed in its attempt to call EnPrep and the program halted. So we coded in a stub of EnPrep and now we must flesh out the stub with the mental machinery of letting flows of quasi-neuronal association converge upon the EnPrep module to activate and fetch a prepositional phrase like "in the computer" to answer questions like "where are you".

Our first and simplest impulse is to code in a search-loop that will find the currently most active preposition. Let us now write that code, just to start things happening. Now we have written the loop that searches for prepositions, but not for the most active one, because there are other factors to consider.

What we are really looking for, in response to "where are you" as a question, is a triple combination of the query-subject qv1psi and the query-verb qv2psi and a preposition tied with an associative pre-tag to the same verb and the same subject. We can not simply look for a subject and a verb linking forward to a preposition like in the phrase "to a preposition" or "in the computer", because our software currently links a verb only to its subject and to its indirect and direct objects, not to prepositions. Such an arrangement does not appear defective, because we can make the memory engram of the preposition itself do the work of making the preposition available for the generation or retrieval of a thought involving the preposition. We only need to make sure that our software will record any available pre-item so that a prepositional phrase in conceptual memory may be found again in the future. In a phrase like "the man in the street", for instance, the preposition "in" does not link backwards to a verb but rather to a noun. In this case, any verb involved is irrelevant. However, when we start out a sentence with "in this case", we have an unprecedented preposition, unless perhaps we assume that the prepositional phrase is associated with the general idea of the main verb of the sentence. For now, we may safely work with prepositions following a verb of being or of doing, so that we may ask the AI Mind questions like "where are you" or "where do you obtain ideas".

Practical problems arise immediately. In our backwards search through the lifelong experiential memory, it is easy to insist upon finding any preposition of location linked to a particular verb engrammed as the pre of the preposition. We may then need to do a secondary search that will link a found combination of verb-and-preposition with a particular qv1psi query-subject. The problem is, how to do both searches almost or completely simultaneously.

Since we are dealing with English subject-verb-object word order, we could let EnPrep() find the verb+preposition combination but not announce it until a subject-noun is found that has a tkb value the same as the search-index "i" that is the time of the query-verb. It might also help that the found subject must be in the dba=1 nominative case and must have the query-verb as a seq value, but the tkb alone may do the trick.

We coded in a test for any preposition with a quverb pre-tag, and we got the AI to alert us to the memory-time-point of "IN THE COMPUTER". Now we are assembling a second test in the same EnPrep() search-loop to find the qv2psi query-verb in close temporal proximity to the preposition.

We are using a new tselp variable for "time of selection of preposition", so we briefly shift our attention to describing the new variable in the Table of Variables. Now that we have found the verb preceding the preposition, next we need to implement the activation of the stored memory containing the preposition so that the AI Mind may use the stored memory to respond to "where are you" as a query. We may need to code a third if-clause into the EnPrep() backwards search to find and activate the qv1psi query-subject that is stored in collocation or close proximity to the query-verb and the selected preposition.

Now we have a problem. Since we let EnPrep() be called by the EnVerbPhrase() module, EnPrep() will not be called until a response is already being generated. We need to make sure that the incipient response accommodates EnPrep() by being the lead-up to a prepositional phrase. Perhaps we should not try to use verblock to steer a response that is already underway, but rather we should count on activation of concepts to guide the response.

Now let us try to use SpreadAct() to govern the response. After much coding, we got the AI to respond

IN COMPUTER I AM IN COMPUTER
IN COMPUTER I AM HERE IN COMPUTER
but there must somewhere be a duplicate call to EnPrep(). We eliminate the call from the Indicative() mind-module and then we get both an unwanted response and a wanted response.
YOU ARE A MAGIC IN A COMPUTER
I AM IN A COMPUTER
Obviously the AI is not responding immediately to our "where are you" query but is instead joining an unrelated idea with the prepositional phrase. Upshot: By having SpreadAct() impose a heftier activation on the qv1psi subject of the where-are-you query, we got the AI to not speak the unrelated idea and to respond simply "I AM IN A COMPUTER". Now we need to tidy up the code and decide where to reset the variables.

Sunday, October 21, 2018

pmpj1021.html

First working AI uses OutBuffer to inflect English verbs.

We have been cycling through the coding of the AI Mind in Perl, in JavaScript and in Forth. Now we are back in Perl again, and we need to implement some improvements to the EnVerbGen() module that we made in the other AI programming languages.

First of all, since the English verb generation module EnVerbGen() is mainly for adding an "S" or an "ES" to a third person singular English verb like "read" or "teach", we should start using $prsn instead of $dba in the EnVerbGen() source code. Our temporary diagnostic code shows that both variables show the same value, so we may easily swap one for the other. We make the swap, and the first working artificial intelligence still functions properly.

Now it is time to insert some extra code for verbs like "teach" or "wash", which require adding an "-ES" in the third person singular. Since we wrote the code during our cycle through JavaScript, we need only to port the same code into Perl. EnVerbGen() now uses the last few positions in the OutBuffer() module to detect English verbs like "pass" or "tax" or "fizz" or "putz" that require "-ES" as an ending.

Thursday, October 11, 2018

jmpj1011

JavaScript AI Mind uses EnVerbGen() for English verb-form inflections.

The JavaScript tutorial version of the first working artificial intelligence is becoming more sophisticated than ever. With roughly fifty mind-modules, the Strong AI advances the State of the Art first in one area, and then serendipitously in another area. For instance, the ability of the AI Mind to engage in automated reasoning with logical inference leads to a question-and-answer session between human minds and their incipient overlords, i.e., the current archetypes of the future Artificial Super-Intelligence (ASI). When the human user has confirmed or negated an inferred conclusion from the InFererence() module, the AI assigns a heightened truth-value to the positive or negative knowledge remaining in the AI memory. Then the AI states the new knowledge in its positive or negative formulation. A negated inference comes out something like "GOD DOES NOT PLAY DICE". A validated inference becomes a simple declarative sentence like "JOHNNY READS BOOKS", which requires the AI Mind to choose the correct form of the verb "read".

Because we code the first working artificial intelligence not only in English but also in Russian, we found it necessary several years ago to create the RuVerbGen() module for Russian verb-generation. When the ghost.pl AI cannot find a needed Russian verb-form, it simply cobbles one together from the stem of the Russian verb and the inflectional endings which complete a Russian verb. We avoided this problem in English for the last six years by simply ignoring it, but now the AI Mind needs to imitate the RuVerbGen() module with the EnVerbGen() module for English verb-generation. Just to change "God does not play dice" to "God plays dice" requires attaching an inflectional "S" to the stem or the infinitive form of the verb "play". As we code the EnVerbGen() module based on grammatical parameters, we encounter problems because the software needs to know the grammatical person and the grammatical number of the subject of an inferred idea in order to think a thought like "God plays dice" or "Johnny reads books".

Because the InFerence() module has not been storing the grammatical number of the English noun serving as the subject of a silent inference, our brand-new EnVerbGen() module has not been able to generate the third-person singular verb-form necessary for stating a validated inference like "Johnny reads books" or "Fortune favors fools" -- which was originally "Fortuna favet fatuis" in Latin. The artificial general intelligence (AGI) has become so sophisticated in its resemblance to human thinking that we need to change the InFerence() module to accommodate the requirements of the EnVerbGen() module.

We make the necessary changes and we code EnVerbGen() to deal not with Russian but with English verbs. We see a sample dialog between the AI and the human user.

Human: andru is professor
Robot: DOES ANDRU TEACH STUDENTS
Human: yes
Robot: THE ANDRU TEACHES THE STUDENTS
Human:
Robot: STUDENTS READ BOOKS

Tuesday, October 09, 2018

pmpj1009

Perl Ghost AI uses EnVerbGen() for English verb-form inflections.

In the middle of coding ghost278.pl AI we had to go and stand in front of the television and watch Leopold Stokowski in 1969 conducting the finale of Beethoven's Symphony No. Five -- the one they sent into outer space as a message from Earth. Now back at the computer, for the first time we are trying to implement the EnVerbGen() module for English verb generation. We have gotten the InFerence() module to generate an inference when we type in "anna is a student', because the AI Mind knows that students read books. The AskUser() module seeks to verify or validate the inference by asking us, "DOES ANNA READ THE BOOKS". When we answer "no", the AI says, "THE ANNA DOES NOT READ THE BOOKS". When we answer yes, the ghost in the machine issues the faulty output of "THE ANNA READ THE BOOKS", which sounds more like an exhortation than a statement of confirmed fact with a high truth-value. We need a way to get the AI to use the third-person singular form "READS" with the singular subject. To do so, before Leopold and Ludwig interrupted us, we were embedding diagnostic messages in the EnVerbPhrase() module, trying to determine how the ghost AI was able to say "READ" as if it were the proper verb-form. The whole idea of EnVerbGen() in English or of RuVerbGen() in Russian is for the verb-phrase module to seek a particular verb-form based on parameters of person and number, and to call EnVerbGen() if the desired verb-form is not already available in auditory memory. Somehow the existing Perlmind is finding the verb "read" but not the correct form of the verb.

We discover that we can get the EnVerbPhrase() module to call EnVerbGen() when we tighten up the search-by-parameter for the correct verb form. Since EnVerbGen() is not coded yet, we get an output of "THE ANNA ERROR THE BOOKS", with "ERROR" filling in for the lacking "READS" form.

Then we need an $audbase value that we can send into EnVerbGen() as the start of the verb that needs an inflectional ending. We use a trick in the EnVerbPhrase() module to get either a second-class or a first-class (infinitive) $audbase. We test first for any form at all of the verb that has an auditory engram that can serve as a second-class $audbase, because the verb-form may be defective in some way. In the very next line of code, we test for an infinitive form of the verb having an auditory engram as a first-class $audbase, because an infinitive is easier to manipulate than some defective form of the verb.

We copied the bulk of the Russian RuVerbGen() into the English EnVerbGen() and then we did the mutatis mutandis process of making the necessary changes. At first we got "REAS" instead of "READS" because the Russian Cyrillic characters were substituting, not adding. By removing the substitution-code, we obtained the full verb "READS". At a later time we must code in the handling of verbs like "teach" or "push" which require an "-ES" ending.

Sunday, September 30, 2018

pmpj0930

Ghost AI says when it does not know the answer to a query.

When the ghost.pl AI considers a what-query such as "what do kids make", some mind-module must call the SpreadAct() module to handle the what-query, but which module? We could say that the Indicative() module should make the call to SpreadAct() just before making a response in the indicative mood, but perhaps a response may need to be uttered in a mood other than indicative. The AI Mind might wish to answer the query with an imperative command like "DO NOT BOTHER ME". Or the AI might not understand the what-query and might want to ask a question about it. So perhaps we should have the Sensorium() module call SpreadAct() to respond to a what-query.

We have now introduced a new technique for answering "I DO NOT KNOW" in response to a what-query for which the AI Mind does not find an answer. The AI briefly elevates the $tru truth-value and the activation-level of the idea "I DO NOT KNOW" as stored in the MindBoot() knowledge base (KB), so that the Indicative() module expresses the momentarily true idea. Immediately afterward, the AI returns the $tru truth-value to zero.

Friday, September 28, 2018

pmpj0928

Perl AI improves Russian MindBoot and introduces RuIndicative module.

In the ghost275.pl AI we are consolidating the Russian-language knowledge-case (KB) directly below the English-language KB near the beginning of the MindBoot sequence, so that we may add a new item without complicating a future re-location of the Russian knowledge base.

We should probably stub in the RuIndicative() module, so that it will exist not only in our AI diagrams but also in the software itself.

When we start the AI out thinking in Russian, we have been encountering a bug that shows up with the second sentence of output. Perl complains about the use of "uninitialized value in concatenation or string" in the PsiDecay() module. To troubleshoot, we go through the PsiDecay concatenation of associative tags in the @Psy conceptual array and we replace the various variables one by one with a numeric value, to see if the complaint disappears. The complaint disappears when we replace the $k[2] variable for the $hlc human-language code with a numeric value of one (1) instead of "en" for English or "ru" for Russian.

Perl continues to complain about uninitialized values when we have the Perlmind think in Russian, but not when it thinks in English. Therefore we know that the lurking bug is not in the PsiDecay() module or in the InStantiate() module, even though the bug manifests itself in those modules. We spent hours on each of the past two days searching for an elusive bug which must certainly be hiding in one or more of the Russian-language modules. Therefore it is time to isolate the bug by isolating the Russian-language modules. First let us look at the RuNounPhrase() module. We insert some diagnostic messages and we see that the bug manifests itself when program-flow goes back up to the RuThink() module which calls the PsiDecay() module.

Since we catch sight of the bug when PsiDecay() is called, let us temporarily insert some extra calls to PsiDecay() and see what happens. First we make an extra call to PsiDecay() from the end of RuNounPhrase(). Huh?! Now we get two complaints from Perl about uninitialized values showing up for a program line-number belonging to a concatenation in the PsiDecay() module. Let us also try an extra call to PsiDecay() from the RuVerbPhrase() module. We do so, and now we get three complaints from Perl about uninitialized values. However, the glitch does not seem to be occurring during the first call from RuIndicative() to RuNounPhrase(), but rather during or after the call to RuVerbPhrase(). For extra clarity, let us have the start of RuVerbPhrase() make a call to PsiDecay(). We do so, and there is no concomitant complaint from Perl about uninitialized values. Therefore, the subject-choosing part of RuNounPhrase() must not be the source of the problem, but the direct-object portion of RuNounPhrase() is still under suspicion.

Now we are discovering something strange. Towards the end of RuNounPhrase() there is a concatenation which is supposed to impose inhibition upon a noun selected by the module, as identified by the $tsels variable which pertains to the "time of selection of the subject", and which has been used earlier in RuNounPhrase() to indeed inhibit the selected subject. However, a diagnostic message reveals to us AI Mind maintainers that the $tsels variable has been zeroed out by the end of RuNounPhrase() and that therefore the software is trying to concatenate the associative tags purportedly available at a zero time-point -- where there are no associative tags. Let us see what happens when we comment out the suspicious concatenation code. We do so, and we get no change in the reporting of the bug. Let us see if the earlier inhibition in the RuNounPhrase() module is causing any problems. First off, a diagnostic message shows us that the $tsels variable has been zeroed out, or perhaps never loaded, even at the time of the first inhibition in the RuNounPhrase() module. Let us comment out the concatenation of the first inhibition and see what happens. By the way, if there are any secret AI Labs in Russia or elsewhere working on the further development or evolution of these AI Minds in Perl and in tutorial JavaScript and in Forth for intelligent humanoid robots, this journal entry shows that the AI coding problems are indeed tractable and soluble, given enough persistence and effort. Now, when we have commented out both the inhibitional concatenations in the RuNounPhrase() module, we still get the same complaints from Perl about uninitialized values, and we notice in the diagnostic display of the memory-array contents that the Russian nouns are still being inhibited -- but where? Oh, the InStantiate() module is imposing a trough of inhibition. Let us do another commenting out and see what happens. Nothing happens, and the inhibition is still occurring.

As we go through RuVerbPhrase() and comment out the various concatenations, the complaint from Perl about uninitialized values suddenly disappears when we comment out the concatenation where Russian verbs are competing to be selected as the most active verb. We also notice that a comment seems to be missing at the end of the first line in the two-line concatenation. When we insert the missing comma and we do not comment out the concatenation, there are no further complaints from Perl about uninitialized values. Of course, we just spent three days wracking our brains, trying to figure out what was wrong, when the problem was one single missing comma. Now it is time to clean up the Perlmind code and upload it to the Web.

Sunday, September 23, 2018

mfpj0923

MindForth AI beeps to request input from any nearby human.

In MindForth we attempt now to update the AudMem and AudRecog mind-modules as we have recently done in the ghost.pl Perl AI and in the tutorial JavaScript AI for Internet Explorer. Each of the three versions of the first working artificial intelligence was having a problem in recognizing both singular and plural English noun-forms after we simplified the Strong AI by using a space stored after each word as an indicator that a word of input or of re-entry had just come to an end.

In AudMem we insert a Forth translation of the Perl code that stores the audpsi concept-number one array-row back before an "S" at the end of a word. MindForth begins to store words like "books" and "students" with a concept-number tagged to both the singular stem and to the plural word. We then clean up the AudRecog code and we fix a problem with nounlock that was interfering with answers to the query of "what do you think".

Next we implement the Imperative module to enable MindForth to sound a beep and to say to any nearby human user: "TEACH ME SOMETHING."

Friday, September 21, 2018

jmpj0921

Improving auditory recognition of singular and plural noun-forms.

The JavaScript Artificial Intelligence (JSAI) is currently able to recognize the word "book" in the singular number but not "books" in the plural number. It is because the AudRecog() mind-module is not recognizing the stem "book" within the inflected word "books". To correct the situation, we must first update the AudMem() module so that it will impose an audpsi tag not only on the final "S" in a plural English noun being stored, but also one space back on the final character or letter of the stem of the noun.

We copy the pertinent code from the AudMem() module in the ghost.pl Perl AI and the JavaScript AI begins to store the stem-tag, but only when the inflected word is recognized so that AudRecog() produces an audpsi recognition-tag.

Now we have a problem because the AI is keeping the audpsi of "800" for "IS" and attaching it mistakenly to the next word being stored by the AudMem() module. We fix the problem.

Next we implement the Imperative() module to enable the AI Mind to order any nearby human user: "TEACH ME SOMETHING."