Codage mémoriel de niveau 0

Maurice.Clerc@WriteMe.com     octobre 1999
 

P'tit Bert 0

Chaque état mental est codé en binaire sur n bits, correspondants à l'activation ou non
des núuds d'un graphe à n sommets. Un état est donc une constellation d'activations.

Le système est éduqué à l'aide de recommandations :

  • après l'état i, il est souhaitable/très recommandé/impératif d'avoir l'état j (recommandation positive)
  • après l'état i, il est souhaitable/très recommandé/impératif  de ne PAS avoir l'état j (recommandation négative)

  •  

     

    La matrice de transition G indique pour chaque activation  éventuelle (bit p à 1 => bit q  à 1)une valeur d'énergie minimale nécessaire. En pratique, on mémorise en fait des "conductances" codées de 0 à 9, le seuil d'énergie étant donné par 9/G(p,q). Ainsi la valeur 0 indique une activation impossible, quelle que soit l'énergie disponible et la valeur 9 une activation possible avec le plus petit quantum d'énergie (1).
    Le système reçoit à chaque pas de temps un certain nombre d'unités d'un flux d'énergie qui peut être considéré comme une variable de contexte. Chaque activation effectuée décrémente le stock d'énergie. Le résultat net est qu'à chaque instant l'état suivant dépend non seulement de l'état actuel, mais aussi de la valeur du stock d'énergie

    Au début, la matrice de transition et générée au hasard. Après chaque recommandation, les valeurs sont ensuite modifiées en prenant en compte les paramètres suivants :

  • la force de la recommandation (entre -10 et 10) (plus ou moins impérative)
  • la rigidité du système, entre 0 et 100(dans cette version 0 elle est la même partout). On notera qu'un rigidité nulle implique un apprentissage  immédiat et parfait ... et un oubli tout aussi immédiat et parfait  de certaines connaissances déjà acquises).

  • Pour la facilité d'usage, les états ont des "noms" descriptifs, mais la structuration de l'espace des états mentaux
    est en fait indépendante du choix de ces noms.

    Plus précisément, chaque état peut être envoyé en entrée d'un "énonceur" : celui-ci indique en retour un nom, avec l'indication de la valeur de confiance entre 0 et 1 (pour l'instant, on se contente de comparer le code de l'état d'entrée avec ceux de la liste des états énonçables).

    Exemple
    On donne trois états énonçables :

    2*2
    9
    4

    Le but du jeu est d'apprendre à P'tit Bert à répondre 4 après 2*2.

    Phase 1 : affectation de codes, par exemple sur 5 bits. Elle se fait au hasard (il y a un module de correction de doublons). On trouve

    2*2/00100
      9/11000
      4/00110

    Phase 2 : initialisation de la matrice de transition. Elle se fait au hasard (avec interdiction de lignes nulles). On trouve

    05200
    00022
    10000
    08000
    00770

    Cela signifie, par exemple

  • que l'état de code 00010 donnera (facilement) l'état de code  01000 (cf. quatrième ligne de la matrice),
  • que l'état de code 10000 donnera l'état 01000 si le stock d'énergie est faible ou 01100 s'il est assez élevé.

  •  

     

    Pour l'instant, le code 00100 (état 2*2) donne le code  10000. L'énonceur propose le nom 9 (confiance 0.8) car ce code n'a qu'un bit de différent du code de l'état 9.

    Méthode positive
    On donne comme recommandation

    "après l'état 2*2, impérativement  donner (10) l'état 4. Rigidité=50"
    La matrice devient
    05200
    00022
    00440
    08000
    00770
    et à la question 2*2 ? le système répond bien 4 (confiance 1), car il trouve le code 00110.

    Méthode négative
    Puisqu'il y a trois états énonçables, on peut  tenter d'indiquer successivement au système que l'état suivant 2*2 ne doit être ni 9, ni 2*2 .

    "après l'état 2*2, impérativement de pas donner (-10) l'état 9. Rigidité=50"
    La matrice devient
    05200
    00022
    00444
    08000
    00770
    et à la question 2*2 ? le système répond  4 (confiance 0.8).

    "après l'état 2*2, impérativement de pas donner (-10) l'état 2*2. Rigidité=50"

    La matrice devient alors
    05200
    00022
    44044
    08000
    00770
    et à la question 2*2 ? le système répond  9 (confiance 0.6) !

    Autrement dit, en apprentissage incrémental, le mieux est parfois l'ennemi du bien. Les raisons sont les suivantes :

  • les états énonçables ne sont pas tous les états possibles. Par exemple le dernier code obtenu (11011) n'est pas énonçable.
  • les codes des états énonçables ne sont pas suffisamment distincts (parce que  les codes de 4 et  de 2*2 ont 80% de bits identiques, le fait de demander "pas 2*2" revient presque à dire "pas 4 ", d'où le résultat plus proche de l'état 9).

  •  

    P'tit Bert 1

    Pour pallier ce dernier problème, on peut , par ordre de difficulté croissante :
  • utiliser des codes plus longs,
  • définir une distance entre codes plus astucieuse,
  • attribuer dynamiquement des codes "significatifs" au fur et à mesure de l'apprentissage. Un code d'état est significatif s'il est à la fois proche des codes des ascendants de l'état et des codes de ses descendants. Ceci implique évidemment un remaniement simultané des codes et de la matrice de transition.

  •  

     

    En plus de ces amélorations, P'tit Bert  1 utilisera des rigidités locales, qui permettront d'imposer une plus ou moins grande stabilité de certaines connaissances stockées via la matrice de transition. 1