Konceptalternativ för maskväljare

Träningsutmaning

Lär AI:n att arbeta med otydliga gränser mellan flera färdigheter eller strategier där:

  • Färdigheterna är tydligt identifierbara: din uppgift delas upp i flera färdigheter eller strategier för olika situationer och du måste skapa ett urvalskoncept för att välja mellan dem.
  • Gränserna mellan färdigheterna är oklara: punkten när AI:n övergår från en färdighet till en annan är subjektiv, så det är svårt att programmera en enda regel för att bestämma när var och en ska användas.
  • Vissa färdigheter är uppenbart olämpliga eller till och med farliga i vissa stater: det blir lättare att identifiera lämplig färdighet när systemtillståndet rör sig bort från gränsen mellan färdigheter.

Som ett exempel kan du överväga Bonsai Quanser Qube-exemplet, som ber en AI att flytta en stolpe från rakt ner till rakt upp och hålla den balanserad upprätt:

  • De relevanta färdigheterna är att svänga stången uppåt (SwingUp) och hålla stången upprätt (Balance) kan läras separat.
  • Ett väljarkoncept kan lära sig att välja mellan de två färdigheterna i rätt ögonblick, men gränsen där uppgiften växlar från att svänga stången till att hålla den balanserad är fuzzy.
  • Det är uppenbart att Balance bör användas om stången är curretly balanserad och SwingUp bör användas om stången är "långt borta" från vertikal.

Med väljarmaskering kan du minska sökutrymmet för väljaren så att hjärnan kan lära sig mer effektivt.

Lösning

Steg 1: Definiera maskfunktioner för varje färdighet

Ange ditt maskeringsbeteende som funktioner vars indatatyp är samma som indatatypen för hjärnan:

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

Maskeringsfunktioner returnerar 0 om hjärnan ska tillåtas att välja färdigheten i det angivna tillståndet och returnera ett värde som inte är noll om färdigheten ska vara otillåten (maskerad). Ett exempel:

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
}

Tips

Testa dina maskeringsfunktioner med hjälp av Felsökningskonsolen för Inkling innan du tränar ditt väljarkoncept.

Steg 2: Lägg till dina maskfunktioner i väljarkonceptet

Ange relevanta maskfunktioner i väljarens koncept med nyckelordet mask :

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

Viktigt

Se till att minst ett alternativ alltid är tillgängligt (omaskerat) för alla möjliga tillståndsindata.

Steg 3: Träna och utvärdera maskeringsbeteendet

När du tränar ditt koncept visar strömningsdiagrammen det valda konceptet över tid.

Streaming training chart showing selected concept

Strömmande träningsdiagram som visar det valda konceptet vid varje iteration.

Använd diagrammen för att förfina dina maskeringsfunktioner och begränsa gränsen mellan färdigheter så mycket som möjligt.