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.

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)




    Friday, May 14, 2010

    AudRecog

    The AudRecog mind-module for auditory recognition in artificial intelligence (AI) tests user input one character or phoneme at a time to recognize words and morphemes that will activate a concept in the AI Mind or extract meaning from an idea.


    1. Diagram of AudRecog


    /^^^^^^^^^\ Auditory Recognition of "c-a-t-s" /^^^^^^^^^\
    / EYE \ REACTIVATED / EAR \
    / \ CONCEPTS /"CATS"=input \
    | _______ | | | | SEMANTIC MEMORY | |
    | /old \!!!!|!!!| | | | C match! |
    | / image \---|-----+ | ___ | -A match! |
    | \ fetch / | |c| | / \ | R stop |
    | \_______/ | |a| | / \ | S drop |
    | | |t| | / Old- \ | |
    | visual | |s| | ( Concept ) | C match! |
    | | e| | | \ / | -A match! |
    | memory | a| | | /\ /!!!!!|!!!!T match! |
    | | t| | | ______/ \___/------|-----S recog! |
    | reactivation | | |f| / \ | |
    | | | |i| (EnParser) | C match! |
    | channel | | |s| \______/ | -A match! |
    | _______ | | |h| | | --T match! |
    | /old \ | |_|_| _V_________ | ---S busy |
    | / image \ | / \ / \ | U drop |
    | \ store /---|--\ Psi /--( InStantiate ) | P drop |
    | \_______/ | \___/ \___________/ | |




    2. Algorithm of AudRecog

    AudRecog works by comparing each word of input against words stored in the auditory memory channel of the AI Mind. If a matching word is found in memory, the OldConcept module is called to reactivate the concept behind the known word. If no matching word is found in memory, the NewConcept module is called to treat the incoming word as a new concept to be learned by the AI. Note that even a misspelled word will briefly be treated as a new concept, which quickly falls into desuetude if the proper spelling is used during subsequent inputs. Note also that users (companions) of the AI are not permitted to backspace during input to correct a mistake, because AudRecog is processing input dynamically and does not wait for a buffer to be filled with input to be submitted.

    When AudRecog is trying to recognize a word like "CATS" as depicted above, all words starting with "C" are activated on both the initial "C" and on the next character stored after "C". Then one by one the input characters are tested for a continuing match-up between memory and input. If the chain of matching characters is broken, a candidate recall word is dropped from consideration. A remembered word that matches input in both length and content activates the deep Psi concept associated with the recognized word, and the AI Mind prepares to think in reaction to the input being recognized.

    During the sequencing of the human genome, a technique remarkably akin to the AudRecog algorithm was used to recognize patterns among short strings of human DNA.


    3. Complexity in AudRecog

    In some ways AudRecog is the most complex and intricate of the forty-odd MindForth mind-modules. Other modules engage in thinking, but they do so by the rather simple process of spreading activation from concept to concept under the supervision of a linguistic superstructure. A barely functional VisRecog module would be vastly more sophisticated and complex than AudRecog, but AI devotees will delay implementing vision in MindForth until the proof-of-concept AI proves itself sufficiently to warrant implantation in physical robots and outfitting with physical vision.

    What makes AudRecog so complex is the need to recognize not just complete words but also morphemes as parts of words. In September of 2008, AudRecog made perhaps not a saltational leap but a major step forward by incorporating an improved algorithm of using differential activation to recognize subwords or parts of words within a complete word.


    4. Source code of AudRecog from 10 May 2010


    : AudRecog ( auditory recognition )
    0 audrec !
    0 psi !
    8 act !
    0 actbase !
    midway @ spt @ DO
    I 0 aud{ @ pho @ = IF \ If incoming pho matches stored aud0;
    I 1 aud{ @ 0 = IF \ if matching engram has no activation;
    I 3 aud{ @ 1 = IF \ if beg=1 on matching no-act aud engram;
    \ audrun @ 1 = IF \ if comparing start of a word; 8may2010
    audrun @ 2 < IF \ if comparing start of a word; 8may2010
    I 4 aud{ @ 1 = IF \ If beg-aud has ctu=1 continuing,
    8 I 1+ 1 aud{ ! \ activate the N-I-L character,
    0 audrec !
    ELSE
    len @ 1 = IF
    I 5 aud{ @ monopsi !
    THEN \ End of test for one char length.
    THEN \ end of test for continuation of beg-aud
    THEN \ end of test for audrun=1 start of word.
    THEN \ end of test for a beg(inning) non-active aud0
    THEN \ end of test for matching aud0 with no activation
    I 1 aud{ @ 0 > IF \ If matching aud0 has activation,
    0 audrec ! \ Zero out any previous audrec.
    I 4 aud{ @ 1 = IF \ If act-match aud0 has ctu=1 continuing,
    2 act +! \ Increment act for discrimination.
    0 audrec ! \ because match-up is not complete.
    act @ I 1+ 1 aud{ ! \ Increment for discrimination.
    THEN \ end of test for active-match aud0 continuation
    I 4 aud{ @ 0 = IF \ If ctu=0 indicates end of word
    len @ 2 = IF \ If len(gth) is only two characters.
    \ I 1 aud{ @ 0 > IF \ Or test for eight (8).
    I 1 aud{ @ 7 > IF \ testing for eight (8).
    I 5 aud{ @ psibase ! \ Assume a match.
    THEN \ End of test for act=8 or positive.
    THEN \ End of test for two-letter words.
    THEN \ End of test for end of word.
    I 1 aud{ @ 8 > IF \ If activation higher than initial
    8 actbase ! \ Since act is > 8 anyway; 8may2010
    I 4 aud{ @ 0 = IF \ If matching word-engram now ends,
    I 1 aud{ @ actbase @ > IF \ Testing for high act.
    I 5 aud{ @ audrec ! \ Fetch the potential tag
    I 5 aud{ @ subpsi ! \ Seize a potential stem.
    len @ sublen ! \ Hold length of word-stem.
    I 5 aud{ @ psibase ! \ Hold onto winner.
    I 1 aud{ @ actbase ! \ Winner is new actbase.
    THEN \ End of test for act higher than actbase.
    ELSE
    0 audrec !
    monopsi @ 0 > IF
    monopsi @ audrec !
    0 monopsi !
    THEN \ End of inner test.
    THEN \ End of test for final char that has a psi-tag.
    THEN \ End of test for engram-activation above eight.
    THEN \ End of test for matching aud0 with activation.
    THEN \ End of test for a character matching "pho".
    I midway @ = IF \ If a loop reaches midway; 8may2010
    1 audrun +! \ Increment audrun beyond unity; 8may2010
    THEN \ End of test for loop reaching midway; 8may2010
    -1 +LOOP
    0 act !
    0 actbase !
    psibase @ 0 > IF
    psibase @ audrec !
    THEN
    audrec @ 0 = IF
    monopsi @ 0 > IF
    len @ 2 < IF
    monopsi @ audrec !
    THEN
    0 monopsi !
    audrec @ 0 = IF
    psibase @ 0 > IF
    psibase @ audrec !
    THEN
    THEN
    THEN
    THEN
    audrec @ 0 = IF
    morphpsi @ audrec !
    sublen @ 0 > IF
    len @ sublen @ - stemgap !
    THEN
    stemgap @ 0 < IF 0 stemgap ! THEN
    stemgap @ 1 > IF 0 subpsi ! THEN
    stemgap @ 1 > IF 0 morphpsi ! THEN
    stemgap @ 1 > IF 0 audrec ! THEN
    THEN
    subpsi @ morphpsi !
    0 psibase !
    0 subpsi !
    audrec @ 0 > IF
    stemgap @ 2 > IF
    0 audrec !
    THEN
    pho @ 83 = IF
    2 num !
    THEN
    THEN
    audrec @ audpsi !
    ; ( End of AudRecog; return to AudMem auditory memory )



    5. Troubleshooting AudRecog

    Temporary diagnostic messages may be inserted into the source code to display exactly what AudRecog is doing as it processes input. Typically such messages will identify important variables and immediately state their values. Remember to remove such diagnostic messages after debugging any mind-module.

    It is also helpful to stop the AI by pressing the Escape key after entering some test input and then to run the ".psi" or ".aud" array reports to see what values have been recorded during the operation of AudRecog. If a word is recognized properly, it will have the proper Psi concept number in both the auditory memory array and the Psi concept array.

    As a programmer, if you have tried to use simple string-matching to recognize words, your module becomes incapable of the more subtle operations afforded it when you use not only chains of activation to recognize a series of sounds, but differential activation to recognize subsets (morphemes) within a series of sounds. Think like a neuroscientist, not like a common, garden variety-show hacker hobbled by the groupthink of string-recognition.


    6. Teamwork for AudRecog

    Imagine that you are a made member of an elite Super-AI maintenance team charged and entrusted with the awesome responsibility of keeping a mission-critical AI Mind up and running, while safeguarding humanity against the dangers inherent in nurturing a higher form of intelligence capable at any time of breaking loose from human control and turning (or turing) against its human origins.

    If it is your job to focus exclusively on the AudRecog module, your professional standards require you to grok all ideas immanent in this current document and in whatever AudRecog literature you can glean from an exhaustive search of all pre-Cyborg, that is, human knowledge. Therefore this document was prepared with you in mind, mindkeeper or mind-maintainer or whatever your job description calls you. Be aware, be very aware, that other AI shops and other AI enterprises are most likely duplicating your every thought and your every action in the accelerating race to the Technological Singularity.



    7.History of AudRecog

    The MindForth AudRecog module was adapted from the Amiga MindRexx "Comparator" and "String_effect" modules of 1994, which jointly served to compare incoming phonemes against auditory engrams strung together into the memory of a word. In the archival 28may1998 MindForth as described in the ACM SIGPLAN Notices, Screen #28 is the String-Effect and Screen #49 is the Comparator precursor to AudRecog.

    The 11feb02A.f MindForth subsumes String-Effect into COMPARATOR, and the 4mar02A.f version of MindForth renames COMPARATOR as the AudRecog module. Although the word Comparator made sense for a module comparing input against memory, the overly broad term Comparator had to give way to the compound name AudRecog that would focus on the specific sense of audition and on the function of recognition, so that other sensory comparators could eventually be named with such appropriate terms as GusRecog, OlfRecog, TacRecog and VisRecog. Such precision in the naming of mind-modules frees up avenues of future AI development, because the names are already stubbed in for enterprising individuals to write the code.


    8. MindForth Programming Journal (MFPJ)

    Some but not all of the recent MFPJ entries dealing with AudRecog are available on-line among the following locations.

    Sat.16.AUG.2008 - Tweaking the audRecog Module
    http://mentifex.virtualentity.com/js080816.html

    Mon.18.AUG.2008 - audRecog Word-Stem Recognition
    http://mentifex.virtualentity.com/js080819.html

    Tues.30.SEP.2008 -- audRecog Word-Stem Recognition
    http://mentifex.virtualentity.com/fp080930.html

    Wed.12.MAY.2010 -- Solution and Bugfix of AudRecog
    http://advogato.org/person/mentifex/diary/45.html
    http://robots.net/person/AI4U/diary/20.html



    9. Future of AudRecog

    Just as MindForth is a precursor of next-generation AI Minds, likewise the AudRecog mind-module is a primitive implementation of AI technology that must mutate and evolve into a more advanced state of the art. Chief among the impending changes will be a switch-over from keyboard ASCII input to speech recognition of phonemic input. The SpeechAct module and the AudRecog module must both evolve in tandem so that the AI Mind may issue speech output and comprehend spoken input.



    Table of Contents (TOC)

    Friday, April 30, 2010

    EnPronoun

    The English pronoun (EnPronoun) module of the MindForth artificial intelligence substitutes a personal pronoun in place of a noun under discussion, so that thinking or conversation may flow more smoothly.

    1. History

    The EnPronoun (English pronoun) module is so new that the MindForth project has no legacy webpages describing it. It became necessary to create the EnPronoun module during the development of MindForth code for the answering of user input queries in the what-do-X-do format. If the user asks, "What do robots do?", it is only natural to use the English pronoun "they" in response, rather than repeating the noun "robots" in the answer. It was also easy for an AI coder to replace plural nouns with "they" and not have to worry about the agreement in gender between a singular pronoun and its antecedent. However, once the EnPronoun module existed, it was easy to take the next step of adding an mfn gender flag to the AI MindGrid and to code agreement between noun and pronoun with respect to gender.

    2. Implications

    As AI Minds evolve, the emergence of each new feature in mental functionality has implications for further development and for the approach of a Technological Singularity. In the case of the EnPronoun module, the implications are rather broad and sweeping. Before there was an EnPronoun module in MindForth, the AI Mind could at first think only about plural nouns, and then more recently about a singular noun when the AI became able to detect a singular stem within the input of a plural form. For instance, if the AI knew the word "books", it was able to understand that singular "book" and plural "books" were the same concept. This ability was not innate; it had to be coded into the AI Mind.

    As we augment the MindGrid with a lexical flag to keep track of gender, and we encode the handling of gender in the generation and comprehension of sentences of thought, MindForth becomes a better candidate AI for "porting" or translation into software that will handle gender-intensive human languages such as German, Russian, Spanish, French and Italian. When our use of pronouns causes the AI to develop a facility in handling gender, MindForth draws considerably closer to becoming a bilingual AI that speaks and thinks in both English and German. It could have become a bilingual AI in English and Latin, but we have not yet developed the time-travel feature that will teleport the AI back into ancient Roman times when Latin was the lingua franca of the civilized world. Instead, we must make do with the language of Beethoven and Nietzsche and Heinrich Heine, not Vergil.


    Table of Contents (TOC)

    Wednesday, November 18, 2009

    MainLoop

    The mind.frt AI in iForth and the older mind.f AI in Win32Forth have the luxury of a top-down, Main Loop mind-design because they are based on an original Theory of Mind providing the definitive cognitive architecture which bottom-up designs lack.

    1. Purpose of MainLoop

    The Main Loop serves as both the start of the Mind program and as the controlling module which oversees the operation of the major subordinate mind-modules, such as

    SeCurity
    SensoryInput
    EmotiOn
    ThInk
    FreeWill
    MotorOutput

    The Main Loop sequences and coordinates the operation of the constituent modules of the artificial Mind. By calling a lower mind-module in such a way as to make its output ready as the input for the next module, the Main Loop simulates the operation of a massively parallel (maspar) neuronal mind in which inputs and outputs flow like rivers of data across broad channels of the cortical mindgrid.

    The quickening of the non-stop MainLoop and its associated mental mechanisms is a milestone on the way to the generation of thought and other Milestones of AI development. Since we are currently working on the milestone of self-referential thought, we anticipate the genesis of Linux supercomputers that can accumulate so much self-knowledge as to achieve self-awareness and consciousness.

    2. Algorithm of MainLoop

    MainLoop uses the same potentially infinite BEGIN ... AGAIN loop in the Win32Forth AI and in 32/64-bit iForth, as documented on page 41 of the iForth Reference Manual. The expression "infinite loop" means more with an AI Mind program than with an ordinary program, because the AI Mind is a form of potentially immortal artificial life, subject to death or termination only by misadventure.

    If an AI Mind were written in a more dynamic language than Forth, that is, with an ability to change the underlying source code on the fly and at no risk to the living AI Mind, then its MainLoop could be more truly immortal, if not exactly infinite.

    When a version of an AI Mind is first being coded, it is important to provide one or two "Escape" mechanisms for stopping the otherwise infinite MainLoop. One way, as used in mind.frt being ported into iForth from Win32Forth, is to stub in a SensoryInput module that uses the Escape key to halt the program. Another way is to increment time "t" and not let the Main Loop continue above an arbitrarily low value of the time variable.

    3. Troubleshooting MainLoop

    Although the MainLoop of a mentifex-class AI Mind is rather simple, it may at some point be necessary to troubleshoot it. The AI coder has a choice of embedding diagnostic tools within the MainLoop, or of briefly inserting and then removing special code to diagnose a problem.

    4. Resources

    5. To-Do Tasks and Opportunities

    The Main Loop is the most stable of the AI mind-modules over time, because of its simplicity and because new powers of thought and reasoning are added not at the top, but in the subordinate modules, of a top-down AI Mind design. Some tasks remain.

    AI enthusiasts have an opportunity to take the Forth AI MainLoop, re-express it in another programming language, and hang it out on the Web as a starting-point for devotees of each different language to tweak and twin into another full-blown AI Mind evolving away from MindForth, like the http://AIMind-i.com clone that added major new powers such as as the ability to send and receive e-mail and to surf the Web.

    Abolish the MainLoop! When our 32/64-bit AI for supercomputers becomes massively parallel, there will not be a MainLoop but rather a main SynErgy of mind-modules working together in massively parallel processing (MPP).

    Table of Contents (TOC)

    Tuesday, November 03, 2009

    Linux

    As 32-bit MindForth in Win32Forth expands upwards into 64-bit iForth and sideways into the Linux open-source operating system, Forth AI approaches installation on supercomputers running 64-bit Linux.

    MindForth expands from Windows to Linux

    The announcement was made on 25 October 2009 in the Yahoo Win32Forth discussion forum that MindForth was expanding into Linux x86-64 iForth. Because the expansion was to be slow and gradual, to announce it was also to invite AI and Linux enthusiasts to jump ahead and create their own versions of 64-bit Forth AI for Linux. A baby AI results when Linux creates a new process from two parent processes. Since AI Evolution requires genetic diversity for the survival of the fittest, the announcement of the very possibility of Linux Forth AI creates the fear, uncertainty and doubt (FUD) that everybody had better get going because anybody could already be ahead in the race to True AI and the Technological Singularity.

    Achieving the 64-bit goal among AI Standards

    By expanding into the Linux operating system (OS), Forth AI postions itself for the destination-wall of supercomputer platforms. A destination wall is a limit or a superlative condition towards which (r)evolutionary AI grows or expands. The AI destination walls among AI Standards include:

    speed (of thought);
    supercomputer installation;
    superintelligence;
    Solar System (off-planet migration);
    Turing Test AI-Complete pass-with-ease.
    AI enthusiasts may eventually need a foundry to make specialized AI chips, more similar to a human brain than to a traditional computer CPU. For instance, among AI Minds, who needs floating point? The human brain has no specialized area for floating point mathematics. Forth AI chips, or AI chips in general, could dispense with the whole rigamarole of floating point. But because Forth AI hackers on any OS will need 64-bit CPU chips, we issue the following advisory mandate. You shall be on the look-out for something of priceless value approaching zero cost. In flea markets and on Craig's gist, at garage sales (West coast) or at tag sales (East coast), you shall surreptitiously snag, bag and hag(gle) for 64-bit chips being sold or given away for almost nothing. If a computer has been essentially destroyed but the 64-bit chip is still intact, latch onto it like an unrecognized Picasso or the Holy Grail of beach-combing. There are hardware hackers who can bring a 64-bit chip to life, if you catch my drift. This injunction does not mean that you have to go ghoulishly into that dark night of computer graveyards and become a
    body-snatcher. It only means that a 64-bit chip is a precious resource and must be salvaged from otherwise junked computers wherever possible. When the goobermint realizes what we Linux hackers can do with an AI-ready 64-bit CPU chip, they will slap a controlled-substance designation on such chips faster than you can take a directory. Have you often phantasized about cornering a black market in some precious commodity? Psst! Graduate to 64-bit CPU chips, Benjamin, not plastics!

    AI for 64-bit Linux Supercomputers

    Since 64-bit computing is a feature of supercomputers, and since there are supercomputers that use Linux, a 64-bit AI Mind in 32/64-bit iForth is a candidate for installation on Linux supercomputers.

    The Top 500 supercomputers may not currently include any high-performance computer dedicated to artificial intelligence, but that sorry state of affairs is due for a total reversal, after which it will be hard to find a
    Top 500
    supercomputer site that is not dedicated to some form of artificial intelligence.

    Any nation that claims bragging rights for a superfast supercomputer ought to shift its focus to having a superintelligent supercomputer. Then you may have not only bragging rights but world domination in commerce or politics or science as an added cap-feather.

    AI for Linux-based Robots

    Linux plus robotics equals Robotux! Any robot that uses the x86-64 instruction set to run Linux may also become host to to 32/64-bit iForth True AI. The barriers have been dropped, and the roads are open.

    Robot hardware is already available with control software written in Forth at such resource websites as

    http://www.strobotics.com
    http://www.newmicros.com
    There are projects such as Robot Bridgeware on Google Code which endeavor to provide a bridge between the main software of a robot and the subordinate control software for sub-elements of the robot Motorium. Programmers who learn Linux for True AI may discover, however, that the sub-elements of motor control may have to be more tightly integrated with the overall cognitive architecture of the central AI Mind of the robot. It may be a linchpin of early Linux AI Minds that, just as the retina is part of the human brain, control software for all manner of robot actuators will have to be written in 32/64-bit iForth for the sake of tight integration with the quasi-CNS MindGrid. Message-passing may not be good enough for communication between a robot AI Mind and its motor devices interacting with the physical world, either because such communications are too slow, or because graceful motion requires a total, seamless integration between the Overmind and the mechanical mind. If so, if such is the case, legions of Linux line-coders may be let loose on the labor market for making potentially all robot output devices compatible with the ineluctably Linux codebase of machine intelligence.

    Usenet discussion forums

    http://groups.google.com/group/alt.comp.hardware.amd.x86-64
    http://groups.google.com/group/comp.ai.philosophy
    http://groups.google.com/group/comp.lang.forth
    http://groups.google.com/group/comp.os.linux.development.apps
    http://groups.google.com/group/comp.robotics.misc
    http://groups.google.com/group/comp.sys.super

    Table of Contents (TOC)