Options de concept de sélecteur de masque

Défi de formation

Apprenez à l’IA à travailler avec des limites approximatives entre plusieurs compétences ou stratégies où :

  • Les compétences sont clairement identifiables : votre tâche est décomposée en plusieurs compétences ou stratégies pour différentes situations et vous devez créer un concept de sélecteur pour choisir parmi eux.
  • Les limites entre les compétences ne sont pas claires : le point où l’IA passe d’une compétence à l’autre est subjectif, de sorte que la programmation d’une règle unique pour décider quand utiliser chacun est difficile.
  • Certaines compétences sont clairement inappropriées ou même dangereuses dans certains états : il devient plus facile d’identifier la compétence appropriée à mesure que l’état du système s’éloigne de la limite entre les compétences.

Par exemple, considérez l’exempleBonsai Quanser Qube, qui demande à une IA de déplacer un pôle de droite vers le haut et de maintenir l’équilibre droit :

  • Les compétences pertinentes font pivoter le pôle vers le haut (SwingUp) et maintenir le pôle droit (Balance) peuvent être enseignés séparément.
  • Un concept de sélecteur peut apprendre à choisir parmi les deux compétences au bon moment, mais la limite où la tâche passe de l’balançoire au pôle pour maintenir son équilibre est floue.
  • Il est évident que Balance doit être utilisé si le pôle est équilibré de façon curretly et SwingUp doit être utilisé si le pôle est « éloigné » de la verticale.

Le masquage du sélecteur vous permet de réduire l’espace de recherche du sélecteur afin que le cerveau puisse apprendre plus efficacement.

Solution

Étape 1 : Définir des fonctions de masque pour chaque compétence

Spécifiez votre comportement de masquage en tant que fonctions dont le type d’entrée est identique au type d’entrée pour le cerveau :

# The state type which defines the input to the brain
graph (input: ObservableState) { ... }

Les fonctions de masquage retournent 0 si le cerveau doit être autorisé à sélectionner la compétence dans l’état fourni, et retourne une valeur non nulle si la compétence doit être interdite (masquée). Par exemple :

function DisallowSkillA(s: ObservableState):number {
    # return 0 if the skill should be allowed, non-zero if it should be masked out
    return s.skillA_should_be_masked_out
}

function DisallowSkillB(s: ObservableState):number {
    # return 0 if the skill should be allowed, non-zero if it should be masked out
    return s.stateVar > 42 or s.stateVar < 7
}

Conseil

Testez vos fonctions de masquage à l’aide de la console Debug Inkling avant d’entraîner votre concept de sélecteur.

Étape 2 : Ajouter vos fonctions de masque au concept de sélecteur

Spécifiez les fonctions de masque appropriées dans le concept de sélecteur avec le mask mot clé :

    concept selectStrategy(input): Action {
        select SkillA {
            mask DisallowSkillA
        }
        select SkillB {
            mask DisallowSkillB
        }
        select SkillC # no mask function, so always allowed
        
        curriculum {
           ...
        }

Important

Vérifiez qu’au moins une option est toujours disponible (masquée) pour chaque entrée d’état possible.

Étape 3 : Entraîner et évaluer le comportement de masquage

Lorsque vous entraînez votre concept, les graphiques de diffusion en continu affichent le concept sélectionné au fil du temps.

Streaming training chart showing selected concept

Graphique d’entraînement de streaming montrant le concept sélectionné à chaque itération.

Utilisez les graphiques pour affiner vos fonctions de masquage et affiner la limite entre les compétences autant que possible.