http://www.scn.org/~mentifex/mindforth.txt (source code) MindForth Programming Journal (MFPJ) excerpts:
Sun.4.SEP.2011 -- Improvements Accentuate Glitches Yesterday in the 3sep11A.F version of MindForth artificial intelligence, we improved the basic functionality of the AI Mind, but the overall performance of the AI was superficially degraded. The AI was getting stuck in the repetition of monotonous outputs, and the KbTraversal mechanism was not sufficiently activating a change of subject for the AI to break out of its doldrums. We had to upload some code in order to "release early, release often", but at the same time we were eager to get back to rectifying the various problems. One new problem is that the default adoption of the self-concept of "I" in NounPhrase, when no other concept is active enough, can cause even an inhibited I-engram to be selected for the subject of a thought, when its associated verb-engram remains too inhibited to be selected as the next element in the thought. We could perhaps use an "svo2" subject-verb locking mechanism to cause the re-selection of even an inhibited verb, but we are worried that the AI might get stuck in the repetitive thinking of the same thought over and over again. On the other hand, if the repetitive thought is a response to "who are you" as an input query, the human user might stop entering the same query when faced with undue repetition of the same answer. One rather pleasant-to-have problem is that the inhibition-levels were too severe and had to be made much more shallow just before the release-by-uploading of the 3sep11A.F MindForth yesterday. Our troubleshooting and debugging had eliminated so many glitches in the overall program, that the mindgrid of the AI was functioning much better than ever before. Subject-candidates were no longer inexplicably at zero activation, and the AI could reliably exhaust its KB-retrievals on a given subject through neural inhibition. With the knowledge being retrieved so reliably, it was obviously more important to bring briefly inhibited knowledge "back on-line" than to keep the mindgrid in an ultra-inhibited state for purposes of unambiguous troubleshooting. Mon.5.SEP.2011 -- General Reactivation Problem Even if the NounPhrase low-activation DeFault is to activate the "50=I" concept, the threshold-test mechanisms should still prevent "50=I" from generating an unwarranted assertion. When the KB tidbits about "50=I" have been exhausted, perhaps the problem is that both the I-concept and the BE-concept have been re-activated by the input-query. Apparently the incessant entry of "who are you" fails to reactivate the inhibition-exhausted engrams of "50=I", but does indeed reactivate the abundant BE-engrams. Perhaps we would like to cut the thought-generation off already in NounPhrase with the insufficiently activated "50=I" engram, but there is a DeFault activation of "50=I" that gets us out of NounPhrase and unwarrantedly into VerbPhrase, where the BE-verb concept has been reactivated by the input. We may have to alter the verb+object lock-mechanism so that it operates only when there is no failure of a threshold-test. But such a proleptic step might not be possible. Okay, we could keep the lock-mechanism but countermand it when it encounters an inhibited object or an inhibited predicate nominative. In response to the "who are you" inputs, a stange thing is happening. NounPhrase is using a "50=I" not from "I AM PERSON" at "t=408" in the bootstrap sequence, but from "I HELP KIDS" at "t=422", possibly because each "50=I" may have equal activation and the first one encountered in the backwards search is at "t=422" for "I HELP KIDS". We know that the selection is being made after the entire "who are you" has been processed, so there should be some way to steer the selection away from "I HELP KIDS" to an "I AM..." engram somewhere. The "AM" is coming from "t=411" where "I AM PERSON" is recorded in the bootstrap, and we assume that there was compound subject+verb activation on the "t=411" verb-node. No, maybe the "50=I" at "t=408" did not go into NounAct to create any compound activation on the verb. But it did go into NounAct. Suddenly a major mind-design question arises. When a query like "who are you" or "what do you think" comes into the AI Mind, should there be only a blanket activation of each subject node and each verb-node from the query, or should there be some cross-influence or "trans-influence" between the reactivated verb-nodes and the reactivated subject-nodes? It is certainly possible to implement such an arrangement, but would it be needlessly complicated? Tues.6.SEP.2011 -- Backwards SpreadAct As we ponder the mind-design problem of exactly how to re-activate concepts after the input of a knowledge-base query, we try to shed more light on the subject by moving into the new territory of asking how the AI Mind will deal with situations based on the operation of SpreadAct in reverse, where backwards associations must be followed in order to answer questions like "What carries passengers?" or "Which animals have wings?" Since the original design of the SpreadAct module (see AI4U page 169), it has carried more ativation forwards than backwards. We may have to let more activation be carried backwards from a verb to a "pre" concept so that a "what-vacuum" in a query may be filled with sufficient activation to provide an answer to a query. Thus a question like "What carries passengers?" could be answered with the activation of a noun like "BUS" or "FERRY" or "AIRPLANE". In case the question were repeated with "What else carries passengers?", we would probably want the inhibition of subjects to continue operating, so that all known answers could be exhausted one by one. To deal with the general reactivation problem, we were thinking of no longer inhibiting subjects and of only inhibiting verbs and their objects, but now we see that subject-inhibition may be too valuable to give up. Tues.6.SEP.2011 -- Solving the Too-equal Reactivation Problem Just as we created the variables "flex1 flex2 flex3" to handle inflections such as "-ing" on English words, we can create the variables "prox1 prox2 prox3" etc. to help the ReActivate module to reactivate associated words more pronouncedly than unassociated words. If a query like "who are you" comes in, we will throw away the "WHO" concept, but we will assign "58=BE" to "prox1" and "50=I" to "prox2". Then, as ReActivate imposes activation on "oldpsi", if "prox1" is "oldpsi", we will have the loop test for "pre" or "seq" matching "prox2" (the other word), and extra activation will be imposed if there is a match. In this way, our AI mindgrid will be better able to deal with clusters of input words. Wed.7.SEP.2011 -- Implementing the "prox" Variables The idea from yesterday of using "prox" variables came when we were quite stymied. If it succeeds, it will be a case of making the AI software function more like a complex neural net. Now we need to implement the scheme. First we declare the new variables, and they do not seem to conflict with Forth. Next we need to figure out where to assign values during the input of a query. In the InStantiate module, where we have recently set the "moot" variable when "firstword" is "59=DO" or "87=DOES", we set the "proxcon" flag when "firstword" is "54=WHAT" or "55=WHO". In that way, we hope to cycle through the words of a single input and assign the "prox" values. First, though, we need a way to turn off the "proxcon" flag. We turn off "proxcon" in the AudInput module, when a "13=CR" has been detected. By then, the "proxcon" variable should be done with its work of causing "prox1" and "prox2" to be filled with the psi-numbers of the query-concepts. Also in the AudInput module, we use the "ordo" variable as a determinant in setting the "prox" variables after each word of input is followed by a "32=SPACE" terminator. We could perhaps use "ordo" to set up to a dozen or more "prox" variables, but for test purposes at first we need to set only two "prox" values. Hmm, perhaps we should skip over using "prox1" at first and use the "ordo" number as a test to set "prox2" and "prox3". In that way, we are proleptic in making it possible in the future to keep track of a dozen or more "prox" concepts, including a "prox1" concept. Now we have a problem because the "audpsi" values of AudInput have not yet been instantiated into their proper Psi concepts. We may need to see if the "ordo" variable can be used in the InStantiate module to set the true Psi values for the "prox" variables. Ha! When we moved the ordo-tests from AudInput into InStantiate, and we transferred not "audpsi" but "psi" to the "prox2" and "prox3" variables, we got "prox2 prox3 = 58 50" after inputting "who are you" as a query. The "58=BE" and "50=I" can now be used to try to impose extra activation upon associated concepts in the ReActivate module. Wed.7.SEP.2011 -- Implementing Disparate Reactivation In the MindForth artificial intelligence, we are now going into the ReActivate module and inserting conditional IF-THEN code to make mutually associated input-concepts find likewise mutually associated engram-ideas and impose a somewhat higher activation than normal upon the matching engrams. Somewhere we need to zero out the "prox2" and "prox3" variables after using them. Let us try at the end of the EnCog module. When we submit "who are you" as a query multiple times, we still have a problem even when we are using the "prox" variables to achieve disparate reactivation. Apparently the extra activation is not getting through to the inhibited "50=I" engrams. We could try using an absolute activation, so that even an inhibited engram would become positively activated again, with an expectation that the verb will remain inhibited and prevent an unwarranted thought. Or we might have to let the extra activation get through to engrams at a negative level, simply so that they will flip over to positive activation a lot sooner. Thurs.8.SEP.2011 -- Reconciling "proxcon" and Inhibition We have recently had both a major point of being stymied, and also a minor point of being stymied. We were stymied for two days when we could not at first see how to solve the problem of too-equal activations on psi-concepts in response to query inputs. We solved the problem by introducing "prox" variables to achieve the disparate reactivation of concepts associated inside a cluster of concepts forming an input query. Then immediately we were somewhat stymied with the problem of how to use the powerful new technique. At the same time, we are accumulating a lore of documentation of aspects of disparate reactivation. For instance, we notice that the new technique does not work until at least two "prox" concepts have come in during the input query. If we ask the AI "who are you" and "are" is the first "prox" concept, there is no other "prox" concept to associate it with until the "you" concept comes in. The phenomenon was interesting, but not problematical. We noticed quite soon that the force of the disparate mechanism was being blunted by the neural inhibition still in effect when a repeated query has exhausted the available KB-data. So we experimented yesterday with letting the disparate mechanism override the negative activations of inhibited concepts. Then immediately we saw that even if we dealt with too much inhibition on query-subjects, there was rampantly too much activation on query-verbs at the wrong temporal engram-points. Letting a wrong verb-engram be activated was resulting in the generation of erroneous assertions. So we are faced with the prospect of implementing an "svo2" subject-verb lock-mechanism. We go into the NounPhrase module to the point where a "motjuste" is being selected as the subject for a sentence, and we transfer the psi-number of the associated verb to the "svo2" variable as the "un-derailable verb" that goes with the particular noun-engram or pronoun-engram. Thus we are building up the subject-verb lock-mechanism. Even after introducing "svo2" code similar to the "svo3" code, we are still getting "I AM MAGIC" as an erroneous assertion. It is possible that the use of the "svo2" subject-verb locking mechanism prevents the setting of the "svo3" verb-object locking mechanism. Fri.9.SEP.2011 -- Achieving Valid KB Retrieval It looks as though we are having difficulty in using both a noun-verb lock and a verb-object lock simultaneously. When we use disparate reactivation to override inhibitions on valid KB-responses, we want a thought to be generated from a time-slice starting with a subject-engram. It may be better to rely on disparate reactivation for both the subject and the verb, and not to use engram-locks. It may be possible to turn the SVO engram-locks on and off by commenting out the pertinent code. Let us try turning off the "svo3" lock. Nothing much changed. Now let us try turning off the "svo2" lock. Again not much of anything changed. But why did the AI again say "I AM MAGIC"? The "prox" mechanism is letting "50=I" be activated and selected at 395 for "50=I (am a robot)", but why is the nearby "58=BE" verb not being selected? Apparently all the "58=BE" nodes are at an activation of fifty, and the first one to be found is at "t=527" in the previous "WHO BE I" query. Now, why do all those BE-nodes have equal activation? When we stopped requiring in SpreadAct that a "spike" be transferred to an uninhibited, positive "seqpsi", we stopped getting the erroneous "I AM MAGIC" output, and the AI started cycling validly through its three KB tidbits of knowledge about itself. Mentifex (Arthur) -- http://aimind-i.com http://www.scn.org/~mentifex/AiMind.html http://cyborg.blogspot.com/2011/01/aiapp.html http://www.chatbots.org/ai_zone/viewthread/240/ ------------------------------------------- AGI Archives: https://www.listbox.com/member/archive/303/=now RSS Feed: https://www.listbox.com/member/archive/rss/303/21088071-c97d2393 Modify Your Subscription: https://www.listbox.com/member/?member_id=21088071&id_secret=21088071-2484a968 Powered by Listbox: http://www.listbox.com
