AudMem Auditory Memory Module of the

First Working Artificial General Intelligence

ghost.pl for webservers -- MindForth for robots


1. Diagram of AudMem Auditory Memory Mind-Module


   /^^^^^^^^^\ Recall Of Knowledge On Seeing A Cat /^^^^^^^^^\
  /   EYE     \ REACTIVATED                       /   EAR     \
 /             \ CONCEPTS                        /  _________  \
|   _______     |   | | |    SEMANTIC MEMORY    |  /MindBoot \  |
|  /"cat"  \!!!!|!!!|!| |                       | / English   \ |
| / image   \---|---|-+ |    __________         | \ bootstrap / |
| \ recog   /   |   |c| |   /          \        |  \"vault"  /  |
|  \_______/    |   |a| |  (  Sentence  )       |   \_______/   |
|               |   |t| |   \__________/--------|-------------\ |
| recognition   |   |s| |      |   \  ______    | AudMem short| |
| of "cat"      |  e| | |      |    \/EnVerb\   | term memory | |
| results in    |  a| | |      |    ( Phrase )  | where ideas | |
| spreading     |  t| | |   ___V__  /\______/   | are heard or| |
| activation    |   | |f|  /EnNoun\/    |       | generated,  | |
| among related |   | |i| ( Phrase )    |       | then stored | |
| concepts      |   | |s|  \______/     |       |   ________  | |
|   _______     |   | |h|      |       _V_____  |  /        \ | |
|  /new    \    |   |_|_|     _V___   /English\ | /  "cats"  \| |
| / percept \   |  /     \   / En  \  \ Verbs /-|-\  "eat"   /  |
| \ engram  /---|--\ Psy /--/ Nouns \  \_____/  |  \ "fish" /   |
|  \_______/    |   \___/   \_______/-----------|---\______/    |


2. Purpose

When AudMem() starts out in the Ghost Perlmind AI, the MindBoot sequence has created a blank line in memory with

$t=2424; $ear[$t] = " ,0,0"; # 2016may23: blank space
storing an auditory engram. AudMem always needs to store a word after at least one blank space, so that AudRecog can recognize each word.

The question arises -- when the AI is steadily thinking, without human input, should AudInput be sending any phonemes "$pho" into AudMem for storage?

The recent Perlmind from ghost175.pl on has a simplified auditory memory format that does not store a continuation "ctu" flag, and so the AudRecog software must rely on one more blank phoneme beyond any stored word to detect the end of a recognizand word. It is the job of AudInput and AudMem to store that extra blank character at the end of each word.


3. Algorithm

AudMem stores the incoming character $pho (for phoneme) in the first of three columns in a row in the @ear auditory memory array. The second of three spaces in the array is for any momentary activation on the auditory engram during pattern-matching for word-recognition. The third and final slot in the row of the auditory array is for holding the $audpsi concept-number for the abstract concept which the English or Russian word represents.

After storing each character coming in from AudInput in the first slot of the current-most row of the auditory memory array, AudMem sends the $pho character into the AudRecog module to report back any recognized word so that AudInput may call the OldConcept module. If no recognition of a known word comes back from AudRecog, the AudInput module automatically calls the NewConcept module to create and thus learn a new concept. This process is machine learning in its truest sense, because the machine is learning new ideas and new words to express the ideas.

The AudMem module stores the $audpsi concept-number of a recognized word in the third slot of the auditory memory array-row for the last character in the recognized word, and also for one or more characters which are not quite at the end of the word, but which may be part of an inflectional ending attached to the stem of the word, as the letter "S" may be attached to the word "book" in creating the plural form "BOOKS". These not-quite-final $audpsi tags are necessary for the AI Mind to be able to recognize word-stems in the future.


4. Code of AudMem() from the ghost273.pl AI Mind in Perl

sub AudMem() {  # http://ai.neocities.org/AudMem.html
  if ($pho eq chr(13)) { $pov = 2 }  # 2017-03-31: for sake of pause-counter
  $ear[$t] = "$pho,0,0";     # 2017-03-16: store the character in the first column;
  if ($t > $vault) {  # 2017-03-15: Engrams in vault do not need auditory recognition.
   if ($pho eq chr(13)||$pho eq chr(32)||$pho=~/[A-Z]/) {AudRecog()} #2017-12-23
    if ($pho eq "\x80"||$pho eq "\x81"||$pho eq "\x82"){AudRecog()} #2017-12-26
    if ($pho eq "\x83"||$pho eq "\x84"||$pho eq "\x85"){AudRecog()} #2017-12-26
    if ($pho eq "\xF0"||$pho eq "\x86"||$pho eq "\x87"){AudRecog()} #2017-12-26
    if ($pho eq "\x88"||$pho eq "\x89"||$pho eq "\x8A"){AudRecog()} #2017-12-26
    if ($pho eq "\x8B"||$pho eq "\x8C"||$pho eq "\x8D"){AudRecog()} #2017-12-26
    if ($pho eq "\x8E"||$pho eq "\x8F"||$pho eq "\x90"){AudRecog()} #2017-12-26
    if ($pho eq "\x91"||$pho eq "\x92"||$pho eq "\x93"){AudRecog()} #2017-12-26
    if ($pho eq "\x94"||$pho eq "\x95"||$pho eq "\x96"){AudRecog()} #2017-12-26
    if ($pho eq "\x97"||$pho eq "\x98"||$pho eq "\x99"){AudRecog()} #2017-12-26
    if ($pho eq "\x9A"||$pho eq "\x9B"||$pho eq "\x9C"){AudRecog()} #2017-12-26
    if ($pho eq "\x9D"||$pho eq "\x9E"||$pho eq "\x9F"){AudRecog()} #2017-12-26
  }  # 2017-03-15: end of test for time-point beyond MindBoot vault. 
  if ($audpsi > 0) {  # 2017-03-15: if there is a recognized audpsi
    if ($t > $vault) {  # 2017-03-15: during normal time beyond MindBoot vault...
      my @aud=split(',',$ear[($t-1)]);    # 2017-10-25: look at penultimate row
      # 2017-03-16: above line yields $aud[0] $aud[1] $aud[2]
      $ear[$t-1] = "$aud[0],$aud[1],$audpsi";  # 2017-10-20: store just prior to 32=SPACE.
      if ($aud[0] eq chr(83)) {   # 2018-09-16: if word ends in 83=S like a plural...
        my @aud=split(',',$ear[($t-2)]);  # 2018-09-16: go back one line earlier.
        # 2018-09-16: above line yields $aud[0] $aud[1] $aud[2]
        $ear[$t-2] = "$aud[0],$aud[1],$audpsi";  # 2018-09-16: store back one space.
      }  # 2018-09-16: end of test for "S" possibly indicating an inflection.
    }  # 2017-03-15: end of test for time past "vault" of MindBoot.
  }  # 2017-03-15: end of test for recognized word.
}  # 2017-03-15: AudMem() returns to AudInput().


5. Troubleshooting and Robotic Psychosurgery

5.1.a. Symptom: (Something goes wrong.)
5.1.b. Solution: (AI Mind Maintainer devises solution.)


6. Variables

$audpsi -- concept number of word in @ear auditory memory array.

$pho -- a "phoneme" or character of auditory input.

$pov -- point-of-view: 1=self; 2=dual; 3=alien. When pov=1, the word "you" is somebody in the external word. When pov=2, the word "you" refers to the self-concept "I" in the AI. When pov=3, the word "you" is interpreted as part of a conversation by a third-party or as a word in a text, not referring to the self-concept of either the AI or of someone talking to the AI.

$t -- lifetime Ghost AI experiential time "$t"

$vault -- size of MindBoot() sequence in time-points.


7. Future Development

AudMem will eventually have to work with true acoustic phonemes.


8. Resources


Please see

http://mind.sourceforge.net/audstm.html

http://www.scholarpedia.org/article/Memory


9. AiTree of First Working AGI Mind-Modules


Return to top; or to
http://en.wikipedia.org/wiki/Natural_language_understanding -- solved.
http://old.reddit.com/r/ControlProblem -- NOT SOLVED.
javascript subreddit for AI Mind discussion;
Forth subreddit for MindForth discussion;
Perl subreddit for ghost.pl AI Mind Maintainers.
If you have any questions about the First Working AGI, please Join the Discussion.
Cyborg shows AI Mind Programming Journals.