In our work of 11.SEP.2008 we developed the idea of a
status-con(dition) variable that would sit inside a
mind-module and govern the likelihood of the module
actually performing its main function. We soon realized
that the use of statuscon variables in the NLP modules
would permit an AI Mind to speak tersely and leave out
those syntactical structures whose modules did not have
a sufficiently high statuscon level. Now we see a further
use for statuscon variables, in the "yes" or "no"
answering of questions.
Suppose that there were a "speechcon" variable in the
Speech module, governing the likelihood that a thought
would go into Speech. With such a "speechcon" control,
it would be possible for ideas to be thought but not
go into Speech. This arrangement would be especially
useful in the answering of questions expecting a "yes"
or "no" answer.
If a human user were to ask an AI Mind, "Do people have
brains?" and the knowledge base (KB) of the AI contained
the fact, "People have brains," the AI could think that
thought silently from associative memory and answer,
"Yes, people do have brains," or merely the word "Yes."
Basically, the AI would be thinking the thought twice,
once to remember it, and once more to speak it aloud.
We could even have modules of "Affirmative" and "Negative"
just to say "yes" or "no." But how would the choice of
"yes" or "no" be arrived at?
We could have the initial input words of "do" or "does"
launch the use of a "token" or "baton" variable to
accompany the query of memory in search of the "yes"
or "no" answer. For clarity, we could even call it the
"yesorno" variable to state explicitly what it is for.
A very unnatural way to pass the baton of the "yesorno"
variable would be to assemble a long digit containing
the psi concept numbers of the two or three concepts
in the human query. Then, at each stage of remembering
any pertinent knowledge, the "yesorno" variable could
remain on "yes-track" as long as the indicated concepts
were being activated in the generation of the remembered
thought. But such a method would be too artificial.
A more natural inquiry would be for the AI to think to
itself each successive word in the question, starting
with "PEOPLE." If the word PEOPLE is in the KB, the
yesorno variable will contain a true-value, such as
one (1), or at least be positive. If the thinking of
the word PEOPLE associates to the word "HAVE," then
the yesorno variable will continue to hold a "true" value.
If "PEOPLE HAVE" associates to many direct objects but
not to "BRAINS", then the yesorno variable will no longer
hold a "true" value. Then the AI will not answer "yes."
It may instead answer, "I DO NOT KNOW."
If the AI were asked the question, "Do people fly cars?",
it might be able to state, "PEOPLE DRIVE CARS" after
saying "I DO NOT KNOW." Such a thought could arise not
by some function of the yesorno variable, but simply
because the query activated the concepts involved.
We could have a
kbSearch module, sort of like the
nounPhrase and verbPhrase modules, that would silently
think the word "PEOPLE" while testing for a match of
the "HAVE" concept after activating "PEOPLE."
If the thinking of "PEOPLE" sufficiently activated
the verb "HAVE", then yesorno would stay at "true".
The word "HAVE" would then be thought, to see if it
sloshed activation over onto "BRAINS" -- requiring a
high activation level, to prevent spurious objects
from skewing the results.
Say, a more drastic method would be to let the yesorno
baton variable operate during the actual reception of
the input. If the word PEOPLE is even found during the
input (by oldConcept, naturally), the baton variable
would be positively true. As HAVE came in, finding
activation spreading from PEOPLE to HAVE in memory
would keep the baton positively true. Likewise
activation sloshing over from "PEOPLE HAVE" to
"BRAINS" would deliver the yesorno variable in a
positively "true" state to the end of the input,
thus potentially triggering an Affirmative "yes",
with or without a statement of the remembered fact.
So the question words "do" or "does" would launch the
kbSearch module, which could also be called the
Memory module or the Remember module. During the
operation of
kbSearch, the psi concept number for each
incoming word would be piped into nounAct or verbAct
or whatever was necessary, just to measure the ensuing
associations. No NLP module would be generating a sentence.
The
kbSearch would just be shepherding the baton through
the process of remembrance. The
kbSearch module, operating
at the speed of thought, would quickly do its job as soon
as each full word of input were recognized. In fact,
as soon as PEOPLE went into nounAct and spread its
activation to associated verbs like HAVE, the word
HAVE coming in could test for a "highest" joint
activation with the initial activation spreading from
PEOPLE and the oldConcept activation from HAVE itself.
(We have to check and make sure that oldConcept causes
relative and not absolute activations.) In other words,
kbSearch would not have to pick out HAVE from a group
of verbs activated by PEOPLE, but rather we would have
most active "motjuste" or "memoire" and do a kind of
"memoire @ psi @ = IF 1 baton +! THEN". And as an ELSE
statement, baton could be set to zero. If baton is
still true or positive at the end of the input stream,
then the Affirmative "yes" would be triggered.
It might be good to use the idea "PEOPLE DRIVE CARS"
so that the AI could answer queries in the affirmative,
and then make some other kind of answer to the question,
"Do people fly cars?" Probably the AI would say, "I DO
NOT KNOW." The ability of the AI to answer questions
accurately with "YES" or "NO" or "I DO NOT KNOW" would
be most impressive and would propitiate the Turing test.
Two days ago we began the
kbSearch programming by creating the
following snippet of code to detect first-word "DO" input.
ordo @ 1 = IF \ 13sep2008 Looking for "DO" as first word.
\ CR ." oldC: ordo and psi = " ordo @ . psi @ . \ 13sep2008
psi @ 59 = IF \ 13sep2008 If first incoming word is "DO" query
." oldC: Detecting a DO question " CR \ 13sep2008 kbSearch
THEN \ 13sep2008
THEN \ 13sep2008 \ 13sep2008 End of test for first input word.
Now we will build up the easy parts first as a prelude to
Since
kbSearch is going to be similar to nounPhrase and
verbPhrase, let us insert the
kbSearch module in between
the Article module and the nounPhrase module, as if
nounPhrase were a senior predecessor of
kbSearch, and
just in case
kbSearch needs to call the Article module.
We insert the following preliminary stub of
kbSearch.
Our MFPJ entry for 31.AUG.2008 describes how we started to state\ The kbSearch module aims for the following entelechy goals. \ [ ] Elaborate as prompted on "YES" or "NO" responses. \ [ ] Supply related ideas as afterthoughts to replies. \ [ ] Answer NO if a definite negation is found in memory. \ [ ] Answer I DO NOT KNOW if no affirmation is found. \ [ ] Answer YES if query-baton remembers the fact in question. \ [ ] Follow spread of activation through affirmative remembrance. \ [ ] Use a baton variable to accompany a positive remembrance. \ [ ] It shall seek remembrance of an idea input as a question. \ [ ] It shall search the KB for affirmation or negation. \ [ ] It shall be activated by input of a "DOES...?" question. \ [ ] It shall be activated by input of a "DO...?" question \ kbSearch is a special module to search the knowledge base (KB) \ in order to answer "YES" or "NO" to fact-finding questions. : kbSearch ( knowledge base search ) \ 15sep2008 ; \ 15sep2008 End of kbSearch; return to ...?
When we test the software with the above stub inserted, the AI Mind
still runs. Now we need to let detection of a "DO..?" question
trigger the calling of the
kbSearch module. An immediate problem
is that the oldConcept module, which detects the input of "DO"
as the first word in potentially a fact-finding question, is high
up in the MindForth source code and therefore can not call the
kbSearch module which we want to reside far further down in the
code, among the throught-generation modules. We have encountered
this same problem several times. Generally, since all the NLP
generation modules derive eventually from the Think module
located near the bottom of the source code, there is usually
some way to have a high-level module call a subordinate module,
even if we have to use a "flag" variable to do so. In the present
case, we may actually have to block the AI from thinking its own
thought while it searches its knowledge base for affirmation or
negation of the incoming DO-query.
We ask ourselves, what calls oldConcept in the first place? It is
called by Audition, which in turn is called by Sensorium. But does
the AI Mind have to finish the input of a complete sentence before
it can do any thinking of its own? Maybe reception of auditory input
should be only provisional, with a software option of jumping up to
a high-level module upon perception of various startling or special
inputs, like the use of "DO...?" as the lead-in to a question. Well,
that idea could make things very complicated, but maybe the AI Mind
needs the complexity, anyway. Why should an intelligent mind have to
wait for the input of a complete thought? Should the AI not have the
ability and the option of reacting vehemently to any concept at all
at any place early or late in the input stream? Meanwhile, this
discussion seems to be heading in the direction of making the AI
functionality more natural and more human-like.
This one little problem of invoking the
kbSearch module may be forcing
us to rethink the entire operation of the AI Mind. We are using a
von Neumann architecture to simulate a massively parallel (maspar)
entity, and we may not be getting away with it. If we would feel
"weird" about subordinating the Sensorium to the Think module,
as if those two areas were too distinct to merge, then we might
at least have to insert into the main-loop Alife module some
conditional logic, probably flag-based, to govern the suddenly
provisional Sensorium activity. Oh, but that idea is still so
vexingly complicated, because, how do we get back into the
Sensorium/Audition/oldConcept continuum once we have interrupted it?
As an aside, let us mention that here we have an independent AI
scholar "Mentifex," self-chosen for the task, going out on a limb
and designing unproven, barely tested AI Mind structures with no
guidance other than the previously accumulated structures stretching
back over more than a decade of AI programming. Please consider the
idea that Mentifex here has slowly, incrementally trained himself
to engage in the profound thinking of putting together AI Mind
components. These more recent AI software initiatives of 2008
were not even possible back in 1998, when Dr. Paul Frenger wrote
the first official computer-science paper about the project:
Mind.Forth: Thoughts on Artificial Intelligence and Forth.
We can barely keep the general contents of the AI codebase in mind
as we program, but consciously or subconsciously we have learned
tried-and-true techniques and we have created an elaborate local
file system for holding on steadfastly to even minor advances.
We expect that, if the AI begins to show definite progress,
more and more individuals and AI shops will take up the work
which must seem not only dense and impenetrable at the outset
but downright idiotic, misguided and lunatic in its weirdness.
We have slowed our coding down recently to embark on a major
appeal for educational science museums to display the AI Mind
software and thus attract additional workers at play in the
fields of the mind. We fully expect that science museums will
at first have only disdain for such primitive AI software,
but we figure that gradual improvements in the software will
gradually make AI Mind exhibits more appealing to museums.
We feel that MindForth already displays museum-worthy thinking,
and that it has been necessary to plant the seed of the idea
of having AI Mind exhibits so that the proposal may gain the
proverbial "mindshare" that things need to get a foot in the door.
Obedient to Occam's Razor, maybe we can try the simple solution
first and perhaps avoid reconfiguring the entire AI Mind structure.
Maybe we can position the new
kbSearch module in between the
oldConcept module and the modules that house and govern the KB.
But then how are we going to call the Reify module? Do we need
to relocate Reify? Has Reify always been in the wrong place in
the Forth sequence of mind-modules?
Well, we move
kbSearch to just before oldConcept, so that
oldConcept may call
kbSearch. We declare the yesorno variable.
At the end of oldConcept we install a test to call
kbSearch
if yesorno has become positive -- which happens if a DO-query
is detected by oldConcept. (Meanwhile we wonder what happens
if the DO-query contains a previously unknown "new" concept.)
Into
kbSearch we insert a string message to announce that
kbSearch has been called by oldConcept. We run the AI program.
When we eventually start entering a DO-query of "Do cats eat
fish?", we see the
kbSearch message not only after entry of
"DO" but after each word in the query, because the positive
yesorno variable calls
kbSearch after every word of input.
Now we have to decide something. Maybe we should use a
separate flag to have oldConcept make the first call to
kbSearch. It would be somewhat like the "recon" flag for
asking questions. We could always discard the flag later
if it is not really needed. So what would be a good flag?
Let us try using "kbquiz" as the flag for oldConcept to
call
kbSearch. We get the following exchange.
Robot: CATS EAT FISHSo the software reports to us that the start of a DO-query
Human: do oldC: Detecting a DO question
kbSearch has been called by oldConcept.cats eat fish
Robot: FISH EAT BUGS
Robot: CATS EAT FISHWell, the good news is that the second "DO" does not
Human: do oldC: Detecting a DO question
kbSearch has been called by oldConcept. cats eat fish
Robot: FISH EAT BUGS
Robot: FISH EAT BUGS
Human: do oldC: Detecting a DO question
kbSearch has been called by oldConcept. you do robots
Robot: ROBOTS NEED CATS
Robot: CATS EAT FISHAs may be clear from the output shown above, we have
Human: do oldC: Detecting a DO question
kbSearch: ordo = 1 cats eat fish
Robot: FISH EAT BUGS
Robot: CATS EAT FISHThe exchange above shows where we have forced kbSearch
Human: do oldC: Detecting a DO question
kbSrch: ordo & psi = 1 59 cats eat fish
Robot: FISH EAT BUGS
It is beginning to look as if we can have
kbSearch get
called as each successive word of a DO-query comes in,
but only do things with the non-initial words.
Is it time to use the "yesorno" variable? We could tell
oldConcept to keep calling
kbSearch to report each psi
concept number only as long as "yesorno" remains positive.
If we do it this way, "yesorno" will be performing double
duty -- as a companion "baton" during the search of the KB,
and as a status-flag to tell oldConcept to keep sending
words for
kbSearch to search for.
Robot: CATS EAT FISHIn the above exchange, we see the psi concept numbers
Human: do oldC: Detecting a DO question
kbSrch: ordo & psi = 1 59
kbSrch: ordo & psi = 1 59
cats kbSrch: ordo & psi = 2 76
eat kbSrch: ordo & psi = 3 77
fish
kbSrch: ordo & psi = 4 78
Robot: FISH EAT BUGS
We have run out of time to program right now on 16.SEP.2008,
but we may mull over the state of the AI between sessions.
Today's work thus far shows how much easier it is to code
an already functional AI than to debug an AI that never worked
right -- as was the case up until 2008. Even if we code
kludgy, much too elaborate structures, once we have the
functionality that we seek, we can make things simpler.
Here we would like to mention Site Meter visit #50,223 to
http://mentifex.virtualentity.com/mind4th.html on Sep 11 2008
at 1:37:15 pm. by
Domain Name uspto.gov ? (U.S. Government)
IP Address 151.207.244.# (U.S. Patent and Trademark Office)
ISP U.S. Patent and Trademark Office
Is there some young Albert Einstein surfing the Web for AI
while he puts in his time at the American (not Swiss) USPTO?
Has an AI patent applicant listed MindForth as "prior art"?
Is somebody patenting MindForth out from under Mentifex here?
We do not know, and we are only mildly curious about the issue.
Now we have moved the entire Reify module in between Parser
and
kbSearch, so that kbSearch will be able to call Reify.
The AI still runs. Next we need to have
kbSearch look for the
first word of the idea contained in the DO-query. Let us refer
to that word as word #2, because word #1 was the word "DO".
Apparently our searches will be conducted in the English
"en{" array, not in the psi array. Although at first we only
need to find word #2, we should probably activate the word
at the same time, because we want to see if word #2 activates
query-word #3. Hmm... We already know that query word #2 is
there in the knowledge base (KB), because oldConcept found it.
So we should probably just pipe the word into nounAct so as to
activate it.
Breezily coding along, we built up a seach routine in
kbSearch,
looking for the second word of the imputed query-idea, since we
already knew the first idea-word from oldConcept. At first we
did not bother looking specifically for verbs, which resulted
in the idea-noun having more activation than the idea-verb.
So we made the snippet look only for verbs, and we got the
following excellent output.
The beauty of the above output is that robots do notTranscript of AI Mind interview at 16 53 38 o'clock on 17 September 2008. do oldC: Detecting a DO question kbSrch: ordo & psi = 1 59 kbSrch: ordo & psi = 1 59 robots kbSrch: ordo & psi = 2 39 kbSrch: query-word #2 = psi = 39 make kbSrch: ordo & psi = 3 73 kbSrch: query-word #3 = psi = 73 qw#3 psi act memoire = 73 25 74
Something was wrong with the above output.Transcript of AI Mind interview at 17 2 53 o'clock on 17 September 2008. do kbSrch: ordo & psi = 7 59 robots kbSrch: ordo & psi = 8 39 need kbSrch: ordo & psi = 9 74
In the excellent output shown above, the user hasTranscript of AI Mind interview at 17 8 53 o'clock on 17 September 2008. do oldC: Detecting a DO question kbSrch: ordo & psi = 1 59 kbSrch: ordo & psi = 1 59 robots kbSrch: ordo & psi = 2 39 kbSrch: query-word #2 = psi = 39 need kbSrch: ordo & psi = 3 74 kbSrch: query-word #3 = psi = 74 qw#3 psi act memoire = 74 25 74
We coded a search for a direct-object noun and we askedTranscript of AI Mind interview at 17 34 3 o'clock on 17 September 2008. do oldC: Detecting a DO question kbSrch: ordo & psi = 1 59 qw#4 psi act memoire = 59 0 0 kbSrch: ordo & psi = 1 59 qw#4 psi act memoire = 59 0 0 people kbSrch: ordo & psi = 2 37 kbSrch: query-word #2 = psi = 37 qw#4 psi act memoire = 37 0 0 have kbSrch: ordo & psi = 3 70 kbSrch: query-word #3 = psi = 70 qw#3 psi act memoire = 70 25 70 qw#4 psi act memoire = 70 0 70 fear kbSrch: ordo & psi = 4 71 kbSearch: About to search for direct object. qw#4 psi act memoire = 71 40 71
After a lot of trial-and-error programming, we got theTranscript of AI Mind interview at 17 43 18 o'clock on 17 September 2008. do oldC: Detecting a DO question kbSrch: ordo & psi = 1 59 kbSrch: ordo & psi = 1 59 people kbSrch: ordo & psi = 2 37 kbSrch: query-word #2 = psi = 37 have kbSrch: ordo & psi = 3 70 kbSrch: query-word #3 = psi = 70 qw#3 psi act memoire = 70 25 70 fear kbSrch: ordo & psi = 4 71 kbSearch: About to search for direct object. qw#4 psi act memoire = 71 40 71
Below we ask "do people have truth", which is not knownTranscript of AI Mind interview at 18 26 27 o'clock on 17 September 2008. do oldC: Detecting a DO question kbSrch: ordo & psi = 1 59 kbSrch: ordo & psi = 1 59 people kbSrch: ordo & psi = 2 37 kbSrch: query-word #2 = psi = 37 have kbSrch: ordo & psi = 3 70 kbSrch: query-word #3 = psi = 70 qw#3 psi act memoire yesorno = 70 25 70 2 fear kbSrch: ordo & psi = 4 71 kbSearch: About to search for direct object. qw#4 psi act memoire yesorno = 71 40 71 3
Now we need to find a way for the positive "yesorno" batonTranscript of AI Mind interview at 18 31 29 o'clock on 17 September 2008. do oldC: Detecting a DO question kbSrch: ordo & psi = 1 59 kbSrch: ordo & psi = 1 59 people kbSrch: ordo & psi = 2 37 kbSrch: query-word #2 = psi = 37 have kbSrch: ordo & psi = 3 70 kbSrch: query-word #3 = psi = 70 qw#3 psi act memoire yesorno = 70 25 70 2 truth kbSrch: ordo & psi = 4 68 kbSearch: About to search for direct object. qw#4 psi act memoire yesorno = 68 40 71 0
We have stubbed in the Affirmative yes-module just after SPEECH
and our test messages indicate that we may fill in the yes-code.
Today for the first time our AI Mind answered "Yes" to a queryTranscript of AI Mind interview at 19 0 13 o'clock on 17 September 2008. do oldC: Detecting a DO question kbSrch: ordo & psi = 1 59 kbSrch: ordo & psi = 1 59 people kbSrch: ordo & psi = 2 37 kbSrch: query-word #2 = psi = 37 have kbSrch: ordo & psi = 3 70 kbSrch: query-word #3 = psi = 70 qw#3 psi act memoire yesorno = 70 25 70 2 fear kbSrch: ordo & psi = 4 71 kbSearch: About to search for direct object. qw#4 psi act memoire yesorno = 71 40 71 3 ENGLISH: yesorno wants to say YES Affirmative is ready to say YES
It was unpleasant to see extra output beyond "YES",Transcript of AI Mind interview at 19 11 3 o'clock on 17 September 2008. do oldC: Detecting a DO question kbSrch: ordo & psi = 1 59 kbSrch: ordo & psi = 1 59 people kbSrch: ordo & psi = 2 37 kbSrch: query-word #2 = psi = 37 have kbSrch: ordo & psi = 3 70 kbSrch: query-word #3 = psi = 70 qw#3 psi act memoire yesorno = 70 25 70 2 fear kbSrch: ordo & psi = 4 71 kbSearch: About to search for direct object. qw#4 psi act memoire yesorno = 71 40 71 3 ENGLISH: yesorno wants to say YES Affirmative is ready to say YES YES kbSrch: ordo & psi = 1 32 Robot: A kbSrch: ordo & psi = 2 1 kbSrch: query-word #2 = psi = 1 FEAR kbSrch: ordo & psi = 3 71 kbSrch: query-word #3 = psi = 71 qw#3 psi act memoire yesorno = 71 15 70 0 WHAT IS FEAR Robot: YES A FEAR WHAT IS FEAR Human:
Potential topics for initial writings in journal webpages
- Are people competing to have the oldest or longest-living AI Mind?
- Is AI being created in secret by large, powerful organizations?
- CS textbooks should be written from an AI POV.
- These
MFPJ journal entries are tantamount to a weblog.
---- (Mention how
Jorn Barger created the very first weblog.)
- To what extent is Mentifex AI causing any AI evolution?
- People in other countries, especially India, are welcome to the AI.
- Living a Sci-Fi Life
-
Living in a Fool's Paradise
For discussion of
MindForth, visit the
Usenet newsgroups
comp.lang.forth
comp.robotics.misc
For discussion of
Win32Forth, visit the Yahoo win32forth group
http://groups.yahoo.com/group/win32forth/messages
MindForth Robot AI Mind User Manual
http://mentifex.virtualentity.com/m4thuser.html
http://AIMind-i.com
http://mind.sourceforge.net/computationalization.html
http://mind.sourceforge.net/mind_faq.html
JavaScript AI Mind Programming Journal
http://mentifex.virtualentity.com/js080815.html
http://mentifex.virtualentity.com/js080816.html
http://mentifex.virtualentity.com/js080819.html
http://mentifex.virtualentity.com/js080822.html
http://mentifex.virtualentity.com/js080823.html
http://mentifex.virtualentity.com/js080826.html
http://mentifex.virtualentity.com/js080904.html
MindForth Programming Journal
http://mentifex.virtualentity.com/fp080824.html
http://mentifex.virtualentity.com/fp080825.html
http://mentifex.virtualentity.com/fp080827.html
http://mentifex.virtualentity.com/fp080829.html
http://mentifex.virtualentity.com/fp080831.html
http://mentifex.virtualentity.com/fp080901.html
http://mentifex.virtualentity.com/fp080903.html
http://mentifex.virtualentity.com/fp080912.html
http://mentifex.virtualentity.com/fp080917.html
http://mentifex.virtualentity.com/fp080925.html
http://mentifex.virtualentity.com/fp080927.html