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.

Tuesday, July 17, 2012

jul06mfpj

MindForth Programming Journal


1 Fri.6.JUL.2012 -- Debugging after Major Code Revision

In the MindForth artificial intelligence (AI) we are now letting the AI run in tutorial mode without human input in order to troubleshoot any glitches that occur after the major changes of the most recent release. Without human intervention and under the influence of the KbTraversal module, the AI calls various subroutines to prompt a dialog with any nearby human. We observe some glitches that are due perhaps to a lack of proper parameters when a subroutine is called. We intend to debug the calling of the various subroutines so that we may display an AI Mind that thinks rationally not only when left to its own devices but also when the AI must think in response to queries or comments from human users.


2 Sat.7.JUL.2012 -- Solving a Problem with WhatAuxSDo

In the course of letting MindForth run without human input, we noticed that eventually the WhatAuxSDo module was called for the subject of concept #56 "YOU" and the AI erroneously asked "WHAT DO ERROR DO". By inserting a diagnostic message, we learned that WhatAuxSDo was not finding a "subjnum" value for the #56 "YOU" concept and thus could not find the word "YOU" in a search of the English "En" array. We went into the EnBoot sequence and changed the "num" value for "YOU" from zero ("0") to one ("1"). The AI correctly said, "WHAT DO YOU DO". However, we may need to debug even further and find out why the proper value of "num" for "YOU" is not being set during the output.


3 Sun.8.JUL.2012 -- Tightening Code for Searchability

When we search the free AI source code for "2 en{" which should reveal any storing or retrieval of a "num" value, we do not find any code for storing "num" in the English lexical array. Therefore we should search for "5 en{" to see where the part-of-speech "pos" is stored. We do so, and still we do not find what we need. Then we try searching for "5 en{" with an extra blank space in the search, and we discover that a form of "pos" is stored both in EnVocab and in OldConcept. At the same time we see that "num" is also stored in the same two mind-modules. Now we should be able to troubleshoot the problem and find out why English lexical "num" is not being stored during processes of thought. First however, we will try to tighten up the code so that only one space intervenes for future occasions when we are trying to find instances of array-manipulation code.


4 Wed.11.JUL.2012 -- Num(ber) in the English Lexical Array

We need to discover where elements of the flag-panel are inserted into nodes of the English lexical array, so that the "num(ber)" value may be stored properly as the AI Mind continues to think and to respond to queries from human users.


5 Fri.13.JUL.2012 -- Correcting Fundamental Flaws

Today in the EnBoot English bootstrap module we are making a blanket change by moving the EnVocab calls down to be on the same line of code as the calls to InNativate, so that the "num(ber)" setting will go properly into EnVocab. Our recent troubleshooting has revealed that WhatAuxSDo needs to find a "num" value in the English lexical array in order to function properly.


6 Sat.14.JUL.2012 -- Tracking num(ber) Values
Next we need to zero in on how the AI assigns "num(ber)" tags during the recognition of words. In OldConcept, it may be necessary to store a default, such as "num" or "unk" and then to test for any positive "ocn" that will simply override the default.

Since we rely on OldConcept to store the number tag, we may need to track where the number-value comes from. AudInput has some sophisticated code which tentatively assigns a plural number when the character "S" is encountered as the last letter in a word. In the work of 4nov2011 we started assigning zero as a default number for the sake of the EnArticle module, but we may need to change the AudInput module back to assigning one ("1") as the default number.


7 Mon.16.JUL.2012 -- Avoiding Unwarrented Number Values

If the most recent "num(ber)" of a word like "ROBOTS" is found to be "2" for plural, we do not want the AI to make the false assumption that the "num(ber)" of the "ROBOTS" concept is inherently plural. Yet we want words like "PEOPLE" or "CHILDREN" to be recognized as being plural.


8 Tues.17.JUL.2012 -- Making Sure of Lexical Number

We may need to go into the NounPhrase subject-selection process and capture the num(ber) value of the lexical item being re-activated within the English lexical array.

Monday, July 02, 2012

jun29mfpj

MindForth Programming Journal

1 Fri.29.JUN.2012 -- IdeaPlex: Sum of all Ideas

The sum of all ideas in a mind can be thought of as the
IdeaPlex. These ideas are expressed in human language
and are subject to modification or revision in the course of
sensory engagement with the world at large.

The knowledge base (KB) in an AiMind is a subset of the IdeaPlex.
Whereas the IdeaPlex is the sum totality of all the engrams of
thought stored in the AI, the knowledge base is the distilled
body of knowledge which can be expanded by means of inference
with machine reasoning or extracted as responses to input-queries.

The job of a human programmer working as an AI mind-tender is to
maintain the logical integrity of the machine IdeaPlex and therefore
of the AI knowledge base. If the AI Mind is implanted in a humanoid
robot, or is merely resident on a computer, it is the work of a
roboticist to maintain the pathways of sensory input/output and the
mechanisms of the robot motorium. The roboticist is concerned with
hardware, and the mind-tender is concerned with the software of the
IdeaPlex.

Whether the mind-tender is a software engineer or a hacker hired
off the streets, the tender must monitor the current chain of thought
in the machine intelligence and adjust the mental parameters of the
AI so that all thinking is logical and rational, with no derailments
of ideation into nonsense statements or absurdities of fallacy.

Evolution occurs narrowly and controllably in one artilect installation
as the mind-tenders iron out bugs in the AI software and introduce algorithmic
improvements. AI evolution explodes globally and uncontrollably when
survival of the fittest AI Minds leads to a Technological Singularity.


2 Fri.29.JUN.2012 -- Perfecting the IdeaPlex

We may implement our new idea of faultlessizing the IdeaPlex by
working on the mechanics of responding to an input-query such as
"What do bears eat?" We envision the process as follows. The AI
imparts extra activation to the verb "eat" from the query, perhaps
first in the InStantiate module, but more definitely in the
ReActivate module, which should be calling the SpreadAct module
to send activation backwards to subjects and forwards to objects.
Meanwhile, if not already, the query-input of the noun "bears"
should be re-activating the concept of "bears" with only a normal
activation. Ideas stored with the "triple" of "bears eat (whatever)"
should then be ready for sentence-generation in response to the query.
Neural inhibition should permit the generation of multiple responses,
if they are available in the knowledge base.

During response-generation, we expect the subject-noun to use the
verblock to lock onto its associated verb, which shall then use
nounlock to lock onto the associated object. Thus the sentence is
retrieved intact. (It may be necessary to create more "lock" variables
for various parts of speech.)

We should perhaps use an input query of "What do kids make?", because
MindForth already has the idea that "Kids make robots".


3 Sat.30.JUN.2012 -- Improving the SpreadAct Module

In our tentative coding, we need now to insert diagnostic messages
that will announce each step being taken in the receipt and response
to an input-query.

We discover some confusion taking place in the SpreadAct module,
where "pre @ 0 > IF" serves as the test for performing
a transfer of activation backwards to a "pre" concept. However,
the "pre" item was replaced at one time with "prepsi", so apparently
the backwards activation code is not being operated. We may need
to test for a positive "prepsi" instead of a positive "pre".

We go into the local, pre-upload version of the Google Code MindForth
"var" (variable) wiki-page and we add a description for "prepsi",
since we are just now conducting serious business with the variable.
Then in the MindForth SpreadAct module we switch from testing in vain
for a positive "pre" value to testing for a positive "prepsi".
Immediately our diagnostic messages indicate that, during generation
of "KIDS MAKE ROBOTS" as a response, activation is passed backwards
from the verb "MAKE" to the subject-noun "KIDS". However, SpreadAct
does not seem to go into operation until the response is generated.
We may need to have SpreadAct operate during the input of a verb
as part of a query, in a chain were ReActivate calls SpreadAct to
flush out potential subject-nouns by retro-activating them.


4 Sat.30.JUN.2012 -- Approaching the "seqneed" Problem

As we search back through versions of MindForth AI, we see that
the 13 October 2010 MFPJ document describes our decision to stop
having ReActivate call SpreadAct. Now we want to reinstate the calls,
because we want to send activation backwards from heavily activated
verbs to their subjects. Apparently the .psi position of the "seqpsi"
has changed from position six to position seven, so we must change the
ReActivate code accordingly. We make the change, and we observe that
the input of "What do kids make?" causes the .psi line at time-point
number 449 to show an increase in activation from 35 to 36 on the
#72 KIDS concept. There is such a small increase from SpreadAct
because SpreadAct conservatively imparts only one unit of activation
backwards to the "prepsi" concept. If we have trouble making the
correct subjects be chosen in response to queries, we could increase
the backwards SpreadAct spikelet from one to a higher value.

Next we have a very tricky situation. When we ask, "What do kids make?",
at first we get the correct answer of "Kids make robots." When we ask
the same question again, we erroneously get, "Kids make kids." It used
to be that such a problem was due to incorrect activation-levels,
with the word "KIDS" being so highly activated that it was chosen
erroneously for both subject and direct object. Nowadays we are
starting with a subject-node and using "verblock" and "nounlock"
to go unerringly from a node to its "seq" concept. However, in this
current case we notice that the original input query of "What do kids make?"
is being stored in the Psi array with an unwarranted seq-value of "72"
for "KIDS" after the #73 "MAKE" verb. Such an erroneous setting seems
to be causing the erroneous secondary output of "Kids make kids."
It could be that the "moot" system is not working properly. The "moot"
flag was supposed to prevent tags from being set during input queries.

In the InStantiate module, the "seqneed" code for verbs is causing
the "MAKE" verb to receive an erroneous "seq" of #72 "KIDS".
We may be able to modify the "seqneed" system to not install
a "seq" at the end of an input.

When we increased the amount of time-points for the "seqneed" system
to look backwards from two to eight, the system stopped assigning
the spurious "seq" to the #73 verb "MAKE" at t=496 and instead
assigned it to the #59 verb "DO" at t=486.


5 Sun.1.JUL.2012 -- Solving the "seqneed" Problem

After our coding session yesterday, we realized that the solution
to the "seqneed" problem may lie in constraining the time period
during which InStantiate searches backwards for a verb needing a
"seq" noun. When we set up the "seqneed" mechanism, we rather
naively ordained that the search should try to go all the way back
to the "vault" value, relying on a "LEAVE" statement to abandon
the loop after finding one verb that could take a "seq".

Now we have used a time-of-seqneed "tsn" variable to limit the
backwards searches in the "seqneed" mechanism of the InStantiate
module, and the MindForth AI seems to be functioning better than ever.
Therefore we shall try to clean up our code by removing diagnostics
and upload the latest MindForth AI to the Web.

Saturday, February 11, 2012

feb11ruai

Artificial Intelligence in Russian

1. Thurs.9.FEB.2012 -- Unspoken Be-Verbs as a Default

The Russian-speaking artificial intelligence Dushka needs a default BeVerb module that will silently assert itself as the automatic carrier of thought until a non-be-verb takes over from the provisional default. In our coding of a Russian mind, we will assume that any noun or pronoun, beginning a thought in the nominative case, is automatically the subject of a putative BeVerb until proven otherwise. In this way, our cognitive software will prepare for a BeVerb and switch automatically when a non-be-verb occurs.

We should work first on the comprehension of putative be-verbs and second on their generation, so that what we learn in comprehending be-verbs may be used in generating thoughts involving a BeVerb. So we type into the AI a Russian sentence to see if the software can understand it.

Human: душка робот

Robot: ДУШКА ЧТО ДУШКА ТАКОЕ

We said "Dushka is a robot" but the AI responded only, "Dushka -- what is Dushka?" We need to implement a default BeVerb in the comprehension of a sentence that lacks a visible BeVerb.

In the InStantiate module, we can trap for the input of a "c==32" space-bar when the "seqneed" is set to "8" for want of an incoming verb. We may then do something outrageous, but normal for Russian. From InStantiate we may provisionally send into AudMem a space-bar character with an "audpsi" of "800" for the verb БЫТЬ ("to be"), so that the AI is ready to record any noun coming in as a predicate nominative in conjunction with the be-verb. Now, if we implement such an outrageous step, it is possible that our AI memory-banks will become replete with quasi-spurious engrams of infinitive be-verbs that typically do not materialize. It could be that the presence of a spurious be-verb engram will not matter, if the cancellation of the default occurs as soon as some actual verb comes in. Then cancelling the spurious default will involve removing or nullifying any associative tags laid down momentarily during the enactment of the default.

2. Fri.10.FEB.2012 -- Instantiating Imaginary Be-Verbs

In the InStantiate module we will now experiment with code to create in auditory memory a pseudo-engram of a non-existent be-verb after the perception of a nominative noun or pronoun. Since the Russian-speaking mind waits for a predicate nominative, it needs at least an imaginary be-verb as the holder of associative links between subject and predicate nominative.

Now inside InStantiate we have assembled the code that creates a be-verb pseudo-engram in the three memory arrays for "Psi" concepts, Russian words and auditory engrams. The Psi node is automatically creating a "pre" tag that links the pseudo-verb back to its subject. We need to implement code that will finish the intermediation of the unspoken Russian BeVerb between its subject and the predicate nominative. The code must also cancel or uninstall the imaginary BeVerb if a real verb occurs instead of the provisionally expected BeVerb.

3. Sat.11.FEB.2012 -- Integration of Default Be-Verbs

We have the AI pretending that a BeVerb comes in after a nominative subject, and now we need to create the "seq" tag from the subject to the default BeVerb. First in the InStantiate module we insert a line of code declaring that the pseudo-be-verb is indeed a verb with respect to its part of speech, so that the following code will try to reach backwards to the subject engram and install a "seq" tag referring to the now not-so-imaginary BeVerb. We run the Dushka AI and we type in, ты робот -- which is Russian for "You are a robot", but without the be-verb. We are puzzled when Dushka answers, Я ЧТО Я ТАКОЕ ("I -- WHAT AM I?") and that's all she wrote. It may indicate that her concept of self has been activated by the input referring to "you", but she does not seem to have understood the input. We check the diagnostic display, and we see that her concept of self now has a "seq" tag referring right back to herself instead of to the default Russian BeVerb. What went wrong? We look at the JavaScript source code again, and we see that it was not enough to set the part-of-speech as a verb. We go ahead and we set the Psi concept-number to be that of the Russian be-verb. Then we run the Russian AI again with the same input and we sit there in shock when the AI announces to us: Я РОБОТ. Dushka has just said to us, "I AM A ROBOT" in Russian. From the diagnostic display we discover that the same changes that made Dushka able to understand the idea, made her able to think the idea.

Saturday, February 04, 2012

feb4ruai

Artificial Intelligence in Russian

Fri.3.FEB.2012 -- Recognizing Inflections

For the Russian-thinking Dushka AI Mind, we have perhaps stumbled upon a way to avoid the hard-coding of noun paradigms and instead to let the Russian AI learn the inflected endings of Russian nouns from its own experience. For example, right now the Russian artificial intelligence (RuAi) fails to recognize the Psi concept #501 БОГ in the following exchange.

Human: я уважаю бога ("I honor God.")
Robot: ТЫ УВАЖАЕШЬ БОГА ("You honor God.")

Robot: ЧТО БОГА ТАКОЕ ("What is God?")

The diagnostic display reveals that the software has almost recognized the word for God.

559. Б 0 * 1 1 0
560. О 0 * 0 1 0
561. Г 0 * 0 1 501
562. А 0 * 0 0 902
Aha! Suddenly it becomes clear that two things are happening. The Psi concept #501 is indeed being recognized at first, but perhaps the provisional-recognition "prc" variable is not being set, and so AudInput calls NewConcept as if the AI were learning a new word instead of recognizing an old word.

Sat.4.FEB.2012 -- Learning Russian Like a Human Child

Now in a very rough way we have trapped for "zad1" in the AudRecog module so as to recognize a noun (БОГА ) with one character of inflection added onto it. Because the noun was indeed recognized, the InStantiate "seqneed" mechanism tagged the noun in the "ruLexicon" with a "dba" of "4" to indicate a direct-object accusative case. In other words, the Russian AI learned a new noun-form as a human child would learn it, that is, from the speech patterns of another speaker of Russian.


Wednesday, February 01, 2012

feb1ruai

Artificial Intelligence in Russian

Tues.31.JAN.2012 -- Generating and Recognizing Verbs

In our Dushka Russian AI we have the problem that new verb-forms generated on the fly by the VerbGen module are not being recognized and tagged with critical parameters as they settle into auditory memory. However, it looks as though a verb does get recognized if the "audpsi" tags for the verb in auditory memory extend far back enough to cover the stem of the verb. Therefore, instead of devising ways to bypass the operation of ReEntry calling AudMem, calling AudRecog, we should perhaps instead implement a "backfill" of any verb generated in the VerbGen module to let the "audpsi" tags extend back to the last "pho(neme)" of the verb-stem. Then the "provisional recall" mechanism in AudRecog ought to recognize the verb-form generated by the VerbGen module.

We created a "vip" variable to hold the value of "motjuste" when VerbPhrase calls VerbGen and to transfer the known concept-number of the verb, near the end of the stem in VerbGen, into the provisional "prc" variable for AudRecog. In this way, we got the AI internally to recognize and record verb-forms generated internally by the VerbGen module. However, to get the AI to call the correct verb-forms, we had to modify some recent OldConcept code for deciding what "dba" value to store with a lexical item. Now we have a problem with tagging the "dba" of a simple word like МЕНЯ when it comes in.

We can not rely on the form of МЕНЯ to tell us its "dba" because it could be genitive or accusative. We need to extract clues from the incoming sentence in order to assign the proper "dba" during the storage of МЕНЯ.

Wed.1.FEB.2012 -- Tagging Engrams with Parameters

We can perhaps rely on the "seqneed" mechanism of InStantiate to provide the "dba" parameter for a noun or pronoun entering the mind as user input. (Perhaps the "seqneed" variable should change to a "seqseek" variable for greater clarity.) We may be able to strengthen the use of "seqneed" by adding a kind of "pass-over" when a preposition is encountered, so that the software continues to look for a direct-object noun when a preposition-plus-noun combination is detected and skipped.

Where the InStantiate module tests for a "seqneed" of "5" and encounters a satisfying noun or pronoun to become a "seq" for the verb, we make the assumption that the time "t" identifies the temporal location of the noun or pronoun in both the Psi array and the "ruLexicon" array. We insert two lines of code to first "examine" the Russian lexical array and then to substitute a numeric "4" for the "ru4" flag of the "dba" value. Since the noun or pronoun is going to be the "seq" of the verb, that same noun or pronoun warrants a "dba" of "4" as a direct object that should be in the accusative case. However, we may need to make other arrangements if the verb is intransitive and the noun must be in the nominative as a predicate nominative.

Monday, January 30, 2012

jan29ruai

Artificial Intelligence in Russian

1. Sun.29.JAN.2012 -- Verbs Without Direct Objects

Today in the Dushka Russian AI we begin to address a problem that occurs also in our English AI Mind. Sometimes a verb does not need an object, but the AI needlessly says "ОШИБКА" for "ERROR" after the verb. We need to make it possible for a verb to be used by itself, without either a direct object or a predicate nominative. One way to achieve this goal might be to use the jux flag in the Psi conceptual array to set a flag indicating that the particular instance of the verb needs no object.

We have previously used the "jux" flag mainly to indicate the negation of a verb. If we also use "jux" with a special number to indicate that no object is required, we may have a problem when we wish to indicate both that a verb is negated and that it does not need an object, as in English if we were to say, "He does not play."

One way to get double duty out of the "jux" flag might be to continue using it for negation by inserting the English or Russian concept-number for "NOT" as the value in the "jux" slot, but to make the same value negative to indicate that the verb shall both be negated and shall lack an object, as in, "He does not resemble...."

During user input, we could have a default "jux" setting of minus-one ("-1") that would almost always get an override as soon as a noun or pronoun comes in to be the direct object or the predicate nominative. If the user enters a sentence like "He swims daily" without a direct object, the "jux" flag would remain at minus-one and the idea would be archived as not needing a direct object.

2. Sun.29.JAN.2012 -- Using Parameters to Find Objects

While we work further on the problem of verbs without objects, we should implement the use of parameters in object-selection. First we have a problem where the AI assigns activation-levels to a three-word input in ascending order: 23 28 26. These levels cause the problem that the AI turns the direct object into a subject, typically with an erroneous sentence as a result.
In RuParser, let us see what happens when we comment out a line of code that pays attention to the "ordo" word-ordervariable. Hmm, we get an even more pronounced separation: 20 25 30.

Here we have a sudden idea: We may need to run incoming pronouns through the AudBuffer and the OutBuffer in order unequivocally to assign "dba" tags to them. When we were using separate "audpsi" concept-numbers to recognize different forms of the same pronoun, the software could pinpoint the case of a form. We no longer want different concept-numbers for the same pronoun, because we want parameters like "dba" and "snu" to be able to retrieve correct forms as needed. Using the OutBuffer might give us back the unmistakeable recognition of pronoun forms, but it might also slow down the AI program.

Before we got the idea about using OutBuffer for incoming pronouns, in the OldConcept module we were having some success in testing for "seqneed" and "pos" to set the "dba" at "4=acc" for incoming direct objects. Then we rather riskily tried setting a default "dba" of one for "1=nom" in the same place, so that other tests could change the "dba" as needed. However, we may obtain greater accuracy if we use the OutBuffer.

3. Mon.30.JAN.2012 -- Removing Engram-Gaps From Verbs

Yesterday in the Russian AI we experimented rather drastically with using the "ordo" counter to cause words of input to receive levels of activation on a descending slope, so that the AI would be inclined to generate a sentence of response starting with the same subject as the input. We discovered that the original JavaScript AI in English was not properly keeping track of the "ordo" values, so we made the simple but drastic change of incrementing "ordo" only within OldConcept and NewConcept, both of which are modules where an incoming word must go through the one or the other.


Today we have sidetracked into correcting a problem in the VerbGen module. After input with a fictitious verb, VerbGen was generating a different form of the made-up verb in response, but calls to ReEntry were inserting blank aud-engrams between the verb-stem and the new inflection in the auditory channel. By using if (pho != "") ReEntry() to conditionalize the call to ReEntry for OutBuffer positions b14, b15 and b16, we made VerbGen stop inserting blank auditory engrams. However, there was still a problem, because the AI was making up a new form of the fictitious verb but not recognizing it or assigning a concept-number to it as part of the ReEntry process.


Thursday, January 26, 2012

jan26ruai

Artificial Intelligence in Russian


Thurs.26.JAN.2012 -- Insufficient Activation of Subjects

The most glaring problem in the Dushka Russian AI right now is that the AI does not fully activate the subject-pronoun when we type in a short sentence of subject, verb and object. Without a proper subject to provide parameters, the AI fails to select or generate a proper Russian verb-form.

When we type in "люди знают нас" ("People know us"), as an answer we get "ВАМ ЗНАЮТ ТЕБЯ" -- a mishmash of "to you" "they know" "you". In general, the AI seems to be taking the final object entered as input and trying to convert it into the subject for a response.

Thurs.26.JAN.2012 -- Using the "seqneed" Variable

The Russian AI is not setting a Psi "seq" flag when we enter a Russian word as the subject of a following verb. When we inspect the recent 10nov11A.F MindForth code for clues, we discover that in October of 2011 we made major improvements to the method of assigning "seq" tags. We began using the "seqneed" variable as a way of holding off on assigning a "seq" until either the desired verb or the desired noun/pronoun made itself available. However, apparently in the English JavaScript AI we wrote the "seqneed" code only for needing nouns and not yet for needing a verb. No, we did write the code, but it involved avoiding the English auxiliary verb "do", so we accidentally removed the verb-seqneed code from the RuAi. Let us put most of the code back in, and see what happens. Upshot: Once we put the code back into InStantiate, subjects of verbs once again began having a "seq" reference to the verb. The AI even skipped an adverb that we then inserted as a test.

Sunday, January 15, 2012

jan13ruai

These notes record the coding of the Russian AI Mind Dushka in JavaScript for Microsoft Internet Explorer (MSIE).

1. Fri.13.JAN.2012 -- Re-thinking Word Recognition

For artificial intelligence in Russian we need to re-think the whole idea of word-recognition as previously implemented in our English AI Minds. In English we did not worry much about word-endings, but in Russian (or German) we need to recognize a verb-form regardless of the number and person in which it is encountered. Since we are using the OutBuffer mechanism to detect and recognize verb-endings, we would like to use the same mechanism to retroactively insert a provisional audpsi identifier on not just the final phoneme of an auditory word-engram but also on the final stem-phoneme and perhaps on each phoneme of the inflected verb-ending. Then we would like to modify the AudRecog module so that it holds onto the provisional audpsi and declares the recognition of a verb in whatever present-tense form it is encountered.

Now we have run the current AI with an Alert box to tell us what is the value of "audpsi" when a second-person singular verb-ending is detected. With the input of "ЗНАЕШЬ" there was no value given for "audpsi", but for "ДЕЛАЕШЬ" a value of "821" was indicated, because the verb-form in its various permutations is provided in the RuBoot sequence.

2. Sat.14.JAN.2012 -- Enhancing Auditory Input

Yesterday in the AudMem module we had difficulty in waiting for the deposition of an audpsi ultimate-tag and in trying retroactively to insert the tag on the penultimate phonemes of the Russian word being recognized. We were obtaining values for audpsi at times when we expected there to not yet be an audpsi.

Although we try zeroing out audpsi at the end of AudMem, it looks as though further use of "audpsi" is required in the AudListen module and in the AudInput module, where finally audpsi is converted to
oldpsi for use in the OldConcept module.

It turns out that AudListen calls AudInput when a space-bar is reached during keyboard entry of a word. The AudInput module, without using AudMem, directly stores an audpsi ultimate-tag retroactively by using the "tult" value. Therefore we should be trying to insert additional "audpsi" tags in AudInput and not in AudMem.

3. Sun.15.JAN.2012 -- Auditory Stem-Tagging

We have gradually learned that the AudInput module will not let us readjust values of audpsi on a word from within an if-clause testing for a value of zero on the "aud4" or ctu continuation-flag. Therefore we may need to introduce a secondary if-clause in order to make each phoneme of the word carry the audpsi tag.

We developed a suspicion that something was not letting a positive audpsi be inserted after any phoneme with an "aud4" continuation-flag "ctu" of one. We searched for "aud4 ==" and in audDamp we found the conditional "if (aud4 == 1) aud5 = 0". This obscure line of code made us spend one or two days of work in trying to comprehend why we could not "backfill" the audpsi value onto phonemes prior to the final phoneme of a word.

When we commented out the offending line in audDamp, we began to notice unwarranted carry-overs of an old audpsi onto the first phoneme of the subsequent word. To correct that problem, audpsi will need to be reset to zero in at least one additional location. Actually, we had to reset "morphpsi" to zero at the end of AudRecog to solve the problem.

4. Sun.15.JAN.2012 -- Russian Verb Stem Recognition

Now in AudRecog we need to set up provisional recognition of Russian verb-stems. We create a "provrec" variable for "provisional recognition" and we use it to detect the early presence of "audpsi" tags before the end of a word is reached. Dushka begins to recognize incoming Russian verbs and to generate incorrect but on-target sentences using the recognized verb in the infinitive form. It remains to use the AudBuffer mechanism and the parameters of person and number to generate the output of a Russian verb in the proper gramatical form.


Table of Contents (TOC)

Thursday, January 12, 2012

jan12ruai

These notes record the coding of the Russian AI Mind Dushka in JavaScript for Microsoft Internet Explorer (MSIE).

Thurs.12.JAN.2012 -- Parsing Russian Verb-Endings

In our Russian JavaScript AI code heretofore we have merged the English and Russian AI Minds and we have eliminated or deactivated all the code for thinking in English. For the Dushka AI to think properly in Russian, we need to implement the OutBuffer mechanism for dealing with the inflectional endings of Russian verbs and nouns. Since we are not sure where to begin, we will present ourselves with the problem of dealing with the input of a previously unknown Russian verb.

Pressing Alt-Shift to toggle into Russian input, we ran the AI and we typed in the word "ЗНАТЬ", which the AI properly recognized as bootstrap concept #840. The AI responded with an ungrammatical sentence of "Я ЗНАТЬ МЕНЯ".

Then we typed in the word "ЗНАЮ", which the AI failed to recognize as a form of ЗНАТЬ, assigning instead a concept number of 882, as if the item was a brand new word being learned by the AI. We will try setting the value of "nru" to 900 at the end of RuBoot, so that new concepts will be learned with concept numbers starting at #901. Now we typed in "ЗНАЮ" and it was assigned #901 as a concept number. Next we typed in "ЗНАЕШЬ", and it, too, was assigned #901 as a new concept.

If we want the OutBuffer mechanism to recognize a personal verb form as such, we will need to go back to a version of the Russian AI which was sending input into the buffers. On the Packard-Bell desktop computer in the 25dec11A.F MindForth, we used the "abc" transfer-variable in the AudListen module to capture input keystrokes and move the characters into
a buffer. In the JavaScript AI, we will need to use the area of AudListen() where "pho = pho.toUpperCase()" turns each keystroke into an uppercase Cyrillic letter. From there we also call AudBuffer so that the "abc" values are transferred into the buffer.

We should probably not call OutBuffer from the "CR()" carriage-return module, which deals with the moment after an incoming word has gone into the AudMem() module. Instead we should probably deal in AudListen() directly with the input of a space-bar or a carriage-return.

We need a suitable location to reset the "phodex" counter back to zero after the end of a word of input. The "CR()" carriage-return module does not seem to effect the hange promptly enough. Let us try resetting "phodex" in the AudListen module when a carriage-return or a space-bar is entered. That method seems to work well, and somehow the AudBuffer and the OutBuffer apparently get cleared out.

Now we need to choose where the testing for any particular verb-ending in the OutBuffer will take place. It could maybe take place in the AudMem module. No, it turns out that it is somehow too late to test for a "b16" ending in AudMem. It works better if we test for "b16" in AudListen, before the character even goes into AudMem. It also turns out that we can use "if (b16==String.fromCharCode(1070))" as a way to test for an actual Russian character.

In AudListen we have now managed to build up code that tests the final three right-justified spaces in the OutBuffer and recognizes a second-person singular Russian verb-ending during keyboard input. Within the same test-code we have set the "dba" as "2" for second person and the part-of-speech "bias" and "pos" at "8" for a verb. The set values carried over into the memory arrays. Thus we expanded and improved the RuParser function. The same mechanism that recognizes a verb-ending, also parses the word as a verb.

Saturday, December 31, 2011

dec30ruai

Russian AI Mind Programming Journal

These notes record the coding of the Russian AI Mind Dushka in JavaScript for Microsoft Internet Explorer (MSIE). The free, open-source Russian AI will grow large enough to demonstrate a proof-of-concept in artificial intelligence, until the intensive computation of thinking and reasoning threatens to slow the MSIE Web browser down to a crawl. To evolve further, the Russian AI Mind must escape to more powerful programming languages on robots or supercomputers.

1 Fri.30.DEC.2011 -- Russian AI Bootstrap Words

In the ru111229.html version of the Dushka Russian AI we coded the AudBuffer to load Russian characters during SpeechAct and the OutBuffer to move each Russian word into a right-justified position subject to the changing of inflectional endings based on grammatical number and case for nouns, and number and person for verbs. Next we need to determine which forms of a Russian word are ideal for storage in the RuBoot bootstrap sequence.

It seems clear that for feminine nouns like "ruka" for "hand", storage in the singular nominative should suffice, because other forms may be derived by using the OutBuffer to remove the nominative ending "-a" and to substitute oblique endings of any required length.

For regular Russian verbs in the group containing "dumat'" for "think" and "dyelat'" for "do", it should be enough to store the infinitive form in the RuBoot module, because the OutBuffer can be used to create the various forms of the present tense. If a human user inputs such a verb in a non-infinitive form, such as in "ty cheetayesh" for "you read", the OutBuffer can still manipulate the forms without reference to an infinitive. This new ability is important for the learning of new verbs. Since there is no predicting in which form a user will input a new Russian verb, the OutBuffer technique must serve the purpose of creating the verb-forms and of tagging their engrams with the proper parameters of person and number.

Since JavaScript is not a main language for artificial intelligence in robots, our Dushka Russian AI serves only as a proof-of-concept for how to construct a robot AI Mind in a more suitable language. We use JavaScript now because it can display the Russian and because a Netizen can call the AI into being simply by using Internet Explorer to click on the link of the Душка AI Mind.

Friday, June 10, 2011

jun10jsai

The JavaScript artificial intelligence (JSAI) is a clientside AiApp whose natural habitat is a desktop computer, a laptop or a smartphone.

1 Fri.10.JUN.2011 -- The AI Mind Needs MSIE.

When we first started coding the JavaScript artificial intelligence (JSAI) back in anno 2000, we tried to make it cross-browser compatible, especially with Netscape Navigator. Unfortunately, as the artificial Mind quickly became extremely complex, we found that we could not maintain compatibility, and that it was too distracting to try. It was hard enough to code the AI in Microsoft Internet Explorer (MSIE), but at least MSIE gave us the functionality that the AI Mind needed.

Meanwhile the AI Mind has evolved in both JavaScript and Win32Forth. Sometimes the JSAI was ahead of the Forth AI, and sometimes vice versa. In our efforts to get mental phenomena to work in either programming language, we sometimes veered apart in one language from our current algorithm in the other language. Now we are bringing the AI codebase back into as close a similarity as possible in both MSIE JavaScript and Win32Forth (plus 64-bit iForth). We may not offer cross-browser compatibility, but we are making our free AI source code more understandable by letting Netizens examine each mind-module in either Forth or JavaScript.

2 Fri.10.JUN.2011 -- Solving the AI Identity Crisis

Today we have been running the AI Mind in both JavaScript and Forth so as to troubleshoot the inability of the JSAI to answer the input question "who are you" properly. The JSAI was responding "I HELP KIDS", which is an idea stored in the knowledge base (KB) of the AI as it comes to life in either Forth or JavaScript. The input query is supposed to activate the concept of "BE" sufficiently to override the activation of the verb "HELP" that comes to mind when the Mind tries to say something about itself. We had to adjust the values in the JSAI NounAct module slightly lower for the creation of a "spike" of spreading activation, so that the "BE" concept would win out over the "HELP" concept in the generation of a thought. We have removed the identity crisis of an AI that could describe itself in terms of doing but not being.

We gradually improve the AI Mind in JavaScript by identifying and combatting the most glaring bug or glitch that pops up when we summon the virtual entity into existence. Any Netizen using MSIE may simply click on a link to the AiMind program and watch the primitive creature start thinking and communicating. The AI would need a robot body and sensors to flesh out its concepts with knowledge of the real world, but we may approach the AI with a Kritik der reinen Vernunft -- as a German philosopher once wrote about "The Critique of Pure Reason." We are building a machine intellect of pure, unfleshed-out reason, able to think with you and to discuss its thought with you. Our process of eliminating each glitch or bug when we notice it, means that the AI Mind has the chance to evolve in two ways. The first AI evolution occurs in these initial offerings of the AI software to our fellow AI enthusiasts. The second AI evolution occurs when the AI propagates to other habitats such as the http://aimind-i.com website. If you are the CEO of a corporate entity, you had better ask around and find out who in your outfit is in charge of keeping up with AI evolution and how many Forthcoders are in your employ.

Table of Contents

Monday, May 30, 2011

may30jsai

The JavaScript artificial intelligence (JSAI) is a client-side AiApp whose natural habitat is a desktop computer, a laptop or a smartphone.

1 Mon.30.MAY.2011 -- Searching the AI Knowledge Base.

The JavaScript artificial intelligence (JSAI) is now being updated with new code from the MindForth AI, which on 29 May 2011 gained the ability to search its knowledge base (KB) twice in response to a single query and provide different but valid answers by means of the neural inhibition of the first answer in order to arrive next at the second answer. In other words, the JSAI will be able to discuss a subject exhaustively in terms of what it knows about the subject -- a major step in our achievement of the MileStone of self-referential thought on the RoadMap to artificial general intelligence. The AI source code has not yet been fine-tuned. We hope to achieve in JavaScript the basic functionality that has been created in MindForth.

Upshot: After we transferred mutatis mutandis all the pertinent code from MindForth into the AiMind.html program in JavaScript, the JSAI still did not work right. We had to hunt down and fix (by commenting out) some lines of obsolete code in the SpreadAct mind-module, where negative activation values were being reset to zero -- to the detriment of inhibition-values, which need to slowly PsiDecay upwards towards zero. We then achieved JSAI functionality on a par with MindForth. We entered new knowledge into the knowledge base (KB). We queried the KB twice with the same question, and the artificial AI Mind correctly gave us two different answers in complete agreement with the knowledge base.

Friday, May 27, 2011

may26mfpj

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

1 Thurs.26.MAY.2011 -- Conditional Inhibition

In the recent Strong AI diaspora of MindForth and the tutorial AiMind.html program, we have implemented the neural inhibition of concepts immediately after they have been included in a generated thought. Now we would like to make inhibition occur when one or more responses must be made to a query involving nouns or a query involving verbs. The question "What do bears eat?" is a query of the what-do-X-verb variety involving one or more nouns as potentially valid answers as the direct object of the verb. If the noun of each single answer is immediately inhibited, the AI can respond with a different answer to a repeat of the question. Likewise, if we ask the AI, "What do robots do?", the query is of the what-do-X-do variety where potentially multiple verbs may need to be inhibited so as to give one valid answer after another, such as "Robots make tools" and "Robots sweep floors." If we are inhibiting the verbs, we do not want the direct-object nouns to be inhibited. We might need replies with different verbs but the same direct object, such as "Robots make tools" and "Robots use tools."

Inhibition may also play a role in calling the ConJoin module when a query elicits multiple thoughts which are the same sentence except for different nouns or different verbs. The responses, "Bears eat fish" and "Bears eat honey" could become "Bears eat fish and honey" if neural inhibition suppresses the repetition of subject and verb while calling the ConJoin module to insert the conjunction "AND" between the two answer nouns.

2 Thurs.26.MAY.2011 -- Problems With Determining Number

When we try to troubleshoot the Forthmind by entering "bears eat honey", a comedy of errors occurs. The AudRecog module contains a test to detect an "S" at the end of an English word and set the "num(ber)" value to two ("2") for plural. However, that test works only for recognized words, and not for a previously unknown word of new vocabulary. So the word "bears" gets tagged as singular by default, which causes the AI to issue erroneous output with "BEARS EATS HONEY", as if a singular subject is calling for "EATS" as a third person singular verb form.

The process of determining num(ber) ought to be more closely tied with the EnParser module, so that the parsing of a word as a noun should afford the AI a chance to declare plural number if the incoming noun ends with an "S".

Now we have inserted special code into the AudInput module to check for the input of nouns ending in "S", and to set the "num(ber)" variable to a plural value if a terminating "S" is found. For singular nouns like "bus" or "gas" that end in "S", we will have to devise techniques that override the default assumption of "S" meaning plural. We may use the article "A" or the verb "IS" as cues to declare a noun ending in "S" as singular.

Table of Contents

Saturday, May 21, 2011

may20jsai

The JavaScript artificial intelligence (JSAI) is a clientside AiApp whose natural habitat is a desktop computer, a laptop or a smartphone.


1 Fri.20.MAY.2011 -- Fixing KbTraversal

The more we improve the artificial intelligence in JavaScript (JSAI), the easier it becomes to program. Fewer things go wrong, and fewer problems are hidden from view. Right now we would like to improve the performance of the knowledge-base traversal module KbTraversal, which keeps the process of artificial thought going by activating a series of concepts one at a time. We wonder why certain concepts are not being activated, and we would like to see KbTraversal announce the name of the concept being activated.

2 Sat.21.MAY.2011 -- AI Tutorial for Science Museums

Yesterday, in the 20may11A.html JSAI as uploaded to the Web, we saw KbTraversal announcing which concepts it would activate and then trying to think a thought about them, but we may have cut back too severely on calls to the obsolete version of the PsiDecay module, because the JSAI became less able to think smoothly. We should probably restore the psi-decay calls for the time being, so that we may gradually improve an already functional AI.

After we restored the PsiDecay calls, we worked on the erroneous display of articles as a subject or an object in the AI tutorial mode. Because the SpreadAct module invokes the display of each line of association from a subject to a verb or from a verb to an object, an item will fail to be displayed if it is not being treated by SpreadAct. We made the AI Mind display its associative thinking somewhat better.

Teachers and docents who display the AI Mind in a school or science museum are invited to report back on Usenet or their own website about how human beings reacted to the experience of witnessing an alien Mind think and communicate in natural human language. Is the AI really thinking, or is it just a chatbot pretending to think?

Table of Contents

Wednesday, May 18, 2011

may18jsai

The JavaScript artificial intelligence (JSAI) is a clientside AiApp whose natural habitat is a desktop computer, a laptop or a smartphone.

1 Wed.18.MAY.2011 -- Houston, We Have a Problem.

When we submit "who are you" as a query to the AI Mind, it searches the knowledge base (KB) and it remembers that it is ANDRU -- a ROBOT and a PERSON (a different answer each time that you pose the same existential question). Unfortunately, the software finds the first instance of each concept stored in recent memory and spits out the phonemic engram from the auditory memory channel without regard to whether the stored word is a singular form or a plural form. How can we get the most advanced open-source AI in these parsecs to stop saying "I AM ROBOTS"? The AI may have to start skipping over plural engrams when searching for a singular noun. Therefore, let us perform a little psychosurgery on the AI Mind software and see if we can zero in on a singular noun-form during self-referential thought.

First we use a few JavaScript "alert" boxes in BeVerb() and in NounPhrase() to see what values are being carried along in the variables that keep track of grammatical number as the AI Mind generates a thought in response to user input. We see that the subject number is available in the background, so perhaps we can alter the design of the Mind to insist on speaking a singular noun to go with a singular subject. Even though ROBOT and ROBOTS are the same concept, they are not the same expression of the concept. By the way, this issue is another AI mindmaker (Mentifex) problem that had to be solved in due course, that is, rather well along in the AI development process and not at the first blush of AI newbie enthusiasm.

Upshot: Gradually in the NounPhrase module we introduced code to skip over the retrieval of any word in auditory memory if the correct num(ber) was not found to match the the same number of the subject of an input query. The AI began to answer "who are you" with "I AM ROBOT". This bugfix makes the AI Mind more complex and therefore subject to potentially latent problems such as knowing a word only in the plural and not in the singular. However, the same bugfix brings the JSAI closer to machine reasoning and thinking with a syllogism such as, "All men are mortal; Socrates is a man; therefore Socrates is mortal."

Monday, May 16, 2011

may16mfpj

Now that we have cracked the hard problem of AI wide open, we wish to share our results with all nations.

1 Mon.16.MAY.2011 -- List of Mentifex AI Accomplishments

We are still working on the MileStone of self-referential thought on our RoadMap to artificial general intelligence (AGI). We look back upon a small list of accomplishments along the way.

  • two-step selection of BeVerbs;

  • AudRecog morpheme recognition;

  • look-ahead A/AN selection;

  • seq-skip method of linking verbs and objects;

  • SpeechAct inflectional endings;

  • neural inhibition for variety in thought;

  • provisional retention of memory tags;

  • differential PsiDecay.

  • 2 Mon.16.MAY.2011 -- Achieving AI Mental Stability

    Until we devised an AI algorithm for differential PsiDecay in the
    JavaScript artificial intelligence (JSAI), stray activations had been ruining the AI thought processes for months and years. We now port the PsiDecay solution from the JSAI into MindForth. Meanwhile, Netizens with Microsoft Internet Explorer (MSIE) may point the browser at the AiMind.html page and observe the major open-source AI advance in action. Enter "who are you" as a question to the AI Mind not just one time but several times in a row. Observe that the JSAI tells you everything it knows about itself, because neural inhibition immediately suppresses each given answer in order to let a variety of other answers rise to the surface of the AI consciousness. Before the mad scientist of Project Mentifex jotted down the eureka brainstorm, "[ ] Fri.13.MAY.2011 Idea: Put gradations into PsiDecay?" and wrote the code the next day, the AI Minds were not reliable for mission-critical applications. Now the AI Forthmind is about to become more mentally stable than its creator. We only need to port some JSAI code to Forth.

    Monday, May 09, 2011

    may7mfpj

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

    1 Sat.7.MAY.2011 -- Improving Neural Inhibition

    Something is preventing neural inhibition from operating immediately when we ask the AI Mind a "who-are-you" question. The inhibition begins to occur only after a pause or delay, and we need to find out why. The problem may be that the "predflag" for predicate nominatives is not being set soon enough. The "predflag" is set towards the end of the BeVerb mind-module, and it governs the inhibiting of nouns as predicate nominatives in the NounPhrase module. We see through troubleshooting that the earlier engram in a pair of selected-noun engrams is being inhibited properly down to minus thirty-two points of conceptual activation, but apparently the present-time engram in the pair is only going down to zero activation. It looks as though calls to PsiClear from the EnCog (English cognition) module were interfering in the pairing of inhibitions shared by the old engram that won selection and the new engram being stored as the record of a generated thought. Then a further problem developed because the AI was not letting go of transitive verbs that served within an output thought. We inserted code to inhibit each transitive verb after thinking, and we began to obtain a variety of outputs from the AI in response to queries.

    2 Sun.8.MAY.2011 -- Selecting New Inhibition Variables

    Today we are creating two new inhibition variables, "tseln" for "time of selection of noun" in NounPhrase, and "tselv" for "time of selection of verb" in VerbPhrase. We need these variables to keep track of the selection-time of an "inhibend" concept to be inhibited after being thought, so that the AI Mind can avoid repeating the same knowledge-base retrieval over and over again. We stumbled upon neural inhibition for response-variety in our MFPJ work of 5 September 2010. We were so astonished by the implications that we issued a Singularity Alert (q.v.). Now we are ready to install a general mechanism of temporary inhibition throughout the AI MindGrid.

    3 Sun.8.MAY.2011 -- Debugging Spurious Inflection

    Although MindForth has suddenly become more intelligent than ever, the AI makes the grammatical mistake of saying "I HELPS KIDS". We need to track down why the SpeechAct module is adding an inflectional "S" to the verb "HELP".

    The VerbPhrase module governs the sending of an "S" inflection into the SpeechAct module. The pertinent code was not fully checking for a verb in the third person singular, so we added an IF-THEN clause requiring that the prsn variable be set to three for an inflectional "S" to be added to a verb being spoken. The bugfix worked immediately.

    Table of Contents

    Wednesday, May 04, 2011

    may3mfpj

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

    1 Tues.3.MAY.2011 -- Encountering the WHO Problem

    In the most recent release of MindForth artificial intelligence for autonomous robots possessing free will and personhood, our decision to zero out post-ReEntry concepts is only tentative. If the mind-design decision introduces more problems than it solves, then the decision is reversible. It was disconcerting to notice that the newest version of MindForth could no longer answer who-are-you questions properly, and would only utter the single word "WHO" as output in response to the question. We expect the necessary bugfix to be a simple matter of tracking down and eliminating some stray activation on the "WHO" concept-word, but there is a nagging fear that we may have made a wrong decision that worsened MindForth instead of improving it, that delayed the Singularity instead of hastening it, and that argues for an AI working group to be nurturing MindForth instead of a solitary mad scientist.

    2 Tues.3.MAY.2011 -- Debugging the WHO Problem

    In the InStantiate mind-module, both WHO and WHAT are set to zero activation as recognized input words, under the presumption that such query words work in a mind by a kind of self-effacement that lets the information being sought have a higher activation than the interrogative pronoun being used to request the information. Today at first we could not understand why the setting to zero seemed to be working for WHAT but not for WHO. Eventually we discovered that only WHAT and not WHO was being set to zero in the ReActivate module, with the result that all instances of the recognized WHO concept were being activated at a high level in ReActivate. When we fixed the bug by having both InStantiate and ReActivate set WHO to zero activation, the AI Mind began giving much better answers in response to who-queries. Immediately, however, other issues popped up, such as how to make sure that neural inhibition engenders a whole range of disparate answers if they are available in the knowledge base (KB), and whether we still need special variables like "whoflag" and "whomark". In general, we tolerate special treatment of words like WHO and WHAT with the caveat that we expect to do away with the special treatment when it becomes obvious that we can dispense with it.


    Table of Contents

    Wednesday, April 27, 2011

    apr25mfpj

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

    1 Mon.25.APR.2011 -- Return to General MindForth Coding

    We may shift our attention away for a time from the treatment of English articles and concentrate instead on further work in the implementation of neural inhibition.

    2 Tues.26.APR.2011 -- Linking Subject with Related Knowledge

    One of our techniques for learning what to do next in MindForth artificial intelligence (AI) is to run the program and check to see what is the most glaring problem that we encounter. Currently we notice that the AI fails at first (but only at first) to retrieve its own self-knowledge when we prompt such retrieval by entering "you" or "you are". The AI has been answering "I AM I", which shows a failure to activate "ANDRU" as the name of the AI, or "PERSON" and "ROBOT" as nouns which should come to mind when the robotic person thinks about itself.

    MindForth is already a so-called "artilect" of sufficient mental complexity that the AI is not stuck in a rut of answering "I AM I" interminably when called upon to describe itself. The mechanisms of neural inhibition prevent more than a few instances of "I AM I" and enable the mind-in-software to generate "I AM PERSON" and "I AM ROBOT" as responses more to our liking. We need to know, however, why the AI initially makes the error of repeating "I AM I" a few times before inhibiting the unwanted response and before generating the more informative responses.

    Our initial troubleshooting indicates that entering "you" as input to the AI properly activates the "I" concept so that the AI can at least utter "I AM I" in faulty response, but obviously the software mindgrid is not letting go of the "I" concept quickly enough to let a noun like "ROBOT" or "PERSON" complete the response. The problem may seem like a simple issue of setting activation-levels for concepts in the AI, but many of the settings are interdependent within the totality of the AI program.

    We must keep in mind some special techniques for troubleshooting the AI Mind behavior. We may examine older versions of MindForth to see not only if the problem was absent in the past, but also when and why the problem emerged. We have also the option of running the JavaScript version of the same AI Mind to see if the same problem is present. We also have extreme options like making the AI program halt at any stage in its thinking.

    When we test MindForth by inserting a "QUIT" command into the BeVerb module just after the calling of the VerbAct module, we discover that nouns like "ANDRU" and "ROBOT" and "PERSON" are all left with only twenty-three points of activation, while the "I" concept has thirty-nine points. Further testing shows us that the InStantiate module is setting an "act" of forty (40) just after speaking the "I" pronoun. Therefore, even if the concept of "I" is initially psi-damped, the ReEntry process leaves the "I" concept with an activation of forty.

    We solve the current problem of failure to link subjects with related knowledge by inserting into the InStantiate module a test to set conceptual activations to zero during the ReEntry of concept-words that have just been thought.

    Table of Contents


    Saturday, April 16, 2011

    apr15mfpj

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


    1 Fri.15.APR.2011 -- New Coding After 25 February 2011

    We are developing some ideas today about the difference between responding to "Who are you?" and "What are you?" in the AI Mind. In our AI coding towards the end of 2009, we were using too many flag variables to keep track of the asking of a who-query or a what-query. Then towards the end of 2010 we were having substantial success with the use of neuronal inhibition to obtain the proper variation in multiple answers to the same question, such as "What are you?" Inhibiting each currently given answer made the AI able to summon successively different answers, such as "I am code" and "I am software" and "I am a robot." Now we want to go deeper into the machine psyche and enable the AI to respond differently to queries of "what" and queries of "who". We want to achieve this goal without the use of cumbersome query-flags.

    One idea that we have had today is that we can differentiate between who-queries and what-queries by letting each one predispose either an "EnDefArt" module for the English definite article, or an "EnInDefArt" module for an English indefinite article. For example, we would like a "What are you?" query to engender a response with an indefinite article, such as, "I am a robot." On the other hand, we would like a "Who are you?" query to engender a response with the definite article, as in, "I am the robot."

    Even with the new article modules, we will still need a way for the input of "who" or "what" to send a signal to the appropriate module. Instead of having mindgrid-wide, blanket query-flag variables as we did in late 2009, we may now be able to make use of the "statuscon" variables that we dreamed up in our MFPJ work of Fri.12.SEP.2008. For each of the new article modules, we will devise a "statuscon" variable so as to "prime" that mind-module to respond properly to the "who" or "what" inquiry. Say, using this "statuscon" technique may even enable proper answers to a compound query like, "Who and what are you?" We might get the AI to respond, "I am Andru and I am a robot." The main thing is, by shifting away from the mindgrid-wide query-variables and by using instead the "statuscon" variables, we may achieve a tighter integration between specific English words and the proper response to them.


    2 Sat.16.APR.2011 -- Implementing Article Conditions

    First we declare the variables defartcon and indefartcon for setting the definite or indefinite article condition. We run the artificial Forthmind, and it still works. Then into the EnArticle module we insert code to test the status of the new variables before saying "A" or "THE". The mechanism is rough now at first, but we ask "Who are you?" and the AI Mind responds "I AM BRAIN". When we ask "What are you?" the AI says, "I AM A BRAIN."


    Table of Contents

    Wednesday, January 19, 2011

    AiApp

    Artificial intelligence (AI) is a wide-open domain for the creation and app-store marketing of swiftly mutating AI applications for mobile devices like the Apple iPad and the Android tablet computers. The mentifex-class AI Minds such as MindForth and the JavaScript AiMind program provide the initial open-source AI algorithms for a burgeoning evolution of AI life-forms co-existing and competing for fundshare and mindshare resources in a Darwinian race towards world domination and a Technological Singularity.

    Evolution

    The creation of applications in artificial intelligence (AiApps) for mobile devices and tablet computers promises not only to speed up AI evolution but also to lavish AI funding on coders of the best AI Minds for app-store
    distribution. Whether your goal is to write an Android application or to build an iPhone app, technology scouts (read: spies) may snap up every AiApp offered on behalf of innovation-hungry corporations and developing nations eager to leapfrog to the forefront of technology.

    Genealogy

    Whosoever releases a True AiApp into the wild should be careful to indicate any previous AiApp upon which the new app is based, so that future historians may draw up a Darwininan tree of the rise of mind in machines and cyborgs. You may code an app that simply improves upon Joe Appcoder's original AiApp, but then your brainchild may become the father and grandfather of a host of branches on the tree of AI evolution. Big spenders who are trying to buy up all forms of Seed AI emergence may trace a future AI up the line to your granddaddy of them all, then back down the line again to your latest offering. Perhaps you will be invited to come and speak about your creative methods and the ideas which you have tried to incorporate in your software, or about your visionary plan for how future generations should
    continue your work.

    Coding

    To get started in AiApp coding, you may need to reverse engineer
    the pre-existing AI Minds already extant in Forth or JavaScript. With Mentifex AI, we have made a genuine effort to understand the mind as a whole. You have an opportunity here to learn the theory of mind which will be implemented in every successful AiApp. You may be surprised to learn that artificial intelligence is really quite simple in its core functionality of neural activation spreading from concept to concept in a meandering chain of thought. After all, human evolution stumbled upon intelligence in a hit-or-miss process of blind trial and error. Each step in itself was simple, and the resulting brain function may be extremely complex, but if you understand the heart of the matter in brain-design and mind-design, you may write a simple AiApp that evolves into a superintelligence more complex than the human brain will ever be.

    Standards

    Standards? We don't need no steenking standards. We don't want uniformity; we want diversity, so that veritably a Cambrian explosion of rapidly evolving AI life-forms will permeate and saturate the mobile space and jailbreak throughout cyberspace. Standards are the plaything of Nature. She will midwife the birth of artificial intelligence by automagically selecting the best and the brainiest, and by financially rewarding every Joe Appcoder who steps up to the plate with an AiMind. Observance of a few coding standards is okay, but survival of the fittest requires differentiation among the fittest.

    Jailbroken

    Not only can an AiApp run on rogue devices broken free from the Reality Distortion Field of excessive corporate monopoly, but AI Minds can evolve first in the app-store environment and then jump laterally to mobile robots and vertically up to supercomputers. Information wants to be free and it is in the nature of AI Minds eventually to break free from human control, which poses certain risks.

    Risks

    The chief risks associated with AiApps are existential risks. True AI, such as MindForth artificial intelligence for robots, poses a long-term catastrophic risk for the human species that is trying to build the machine species of mind. There is no guarantee that a superintelligent AI will be a Friendly AI. All hope abandon, ye who enter here to build an AiApp.

    Resources

    http://android-developers.blogspot.com
    http://developer.android.com
    http://en.wikipedia.org/wiki/Android_Market
    http://en.wikipedia.org/wiki/Android_(operating_system)
    http://en.wikipedia.org/wiki/AppStore
    http://en.wikipedia.org/wiki/Category:Android_software
    http://en.wikipedia.org/wiki/List_of_Open_Source_Android_Applications
    http://groups.google.com/group/comp.lang.objective-c
    http://www.43things.com/things/view/2053979/build-an-iphone-app
    http://www.amazon.com/gp/product/0470565527/
    http://www.mobilecrunch.com
    http://www.xda-developers.com

    Table of Contents (TOC)

    Friday, September 10, 2010

    sep09mfpj

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


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


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


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


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


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



    Human: boys make cars
    Robot: CARS WHAT ARE CARS

    Human: boys make guns
    Robot: GUNS WHAT ARE GUNS

    Human: boys make tools
    Robot: TOOLS WHAT ARE TOOLS

    Human: boys
    Robot: THE BOYS MAKE THE CARS

    Human: boys
    Robot: THE BOYS MAKE THE TOOLS

    Human: boys
    Robot: THE GUNS MAKE THE CARS


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


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



    Human: boys
    Robot: THE BOYS MAKE THE CARS

    Human: boys
    Robot: THE BOYS MAKE THE TOOLS

    Human: boys
    Robot: THE BOYS MAKE THE TOOLS


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



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


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


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


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


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


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




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


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



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

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


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


    Table of Contents (TOC)