Självstudie: Skapa en utvärderingskonfigurationsfil
Följ den här självstudien för att lära dig:
- Så här utformar du anpassade utvärderingar.
- Så här skriver du en utvärderingskonfigurationsfil.
- Så här översätter
SimConfig
du typer till avsnittskonfigurationer.
Om du vill följa den här självstudien måste du ha ett Microsoft- eller Azure-konto och en Bonsai arbetsyta etablerad i Azure. Om du behöver ett konto eller en Utvärderingsversion av Azure följer du anvisningarna i Microsoft-kontokonfigurationen innan Bonsai du fortsätter.
visningsnamn, beskrivning och en uppmaning om att ladda upp en JSON-fil.
Utforma en anpassad utvärdering
I Maskinundervisning innebär utvärdering att utvärdera hur väl din AI implementerar en princip i en uppsättning scenarier (avsnittskonfigurationer).
Med utvärdering kan du fastställa kvaliteten och robustheten i det inlärda beteendet i simuleringen med dataloggning och, för simuleringar som stöder det, realtidsvisualiseringar.
Tänk på följande när du utformar en anpassad utvärdering:
- Börja med att identifiera de specifika element som du vill utvärdera om din principprestanda och utveckla utvärderingsplaner för vart och ett av dessa element.
- Om du har en mängd olika scenarier som du vill utvärdera bör du överväga att dela upp dem i separata utvärderingar för enklare dataanalys.
- Testa en mängd olika scenarier, inklusive vanliga fall, optimala fall och värsta fall.
- Överväg scenarier som är extrema eller inträffar sällan (kantfall och hörnfall).
- Om principen tillåter oväntade eller ogiltiga starttillstånd kan du inkludera ogiltiga scenarier i utvärderingen.
- Om simuleringen innehåller slumpmässiga sannolikhetsfördelningar (en stokastisk simulator) och du vill köra ett visst scenario flera gånger måste du ha flera poster i samma avsnittskonfiguration.
Skapa en tom utvärderingskonfigurationsfil
Bonsai använder utvärderingskonfigurationsfiler för att initiera simuleringsmiljön som används för att utvärdera målhjärnan. Utvärderingskonfigurationsfiler är enkla JSON-filer med tre fält: version
, context
och episodeConfigurations
:
{
"version": "ASSESSMENT_SCHEMA_VERSION",
"context": {},
"episodeConfigurations": []
}
Huvudelementet i utvärderingskonfigurationsfilen är fältet episodeConfigurations
. episodeConfiguration
är en matris med en eller flera poster som representerar startsimuleringskonfigurationer för din utvärdering baserat på SimConfig
typen av Inkling-fil. Om du inte anger explicita startvärden i konfigurationsfilen Bonsai använder standardvärdet enligt definitionen i träningssimuleringen.
Så här skapar du en ny utvärderingskonfiguration:
- Öppna önskad oformaterad textredigerare (Visual Studio Code, Atom osv.)
- Skapa en ny
.json
fil och namnge den med datumet och syftet med utvärderingen. Till exempel "BadTerrain-2021-01-21.json" eller "HighTemps-2021-02-05.json". - Kopiera konfigurationsmallen nedan till den nya filen.
{
"version": "1.0.0",
"context": {},
"episodeConfigurations": []
}
Tips
Du kan använda användargränssnittet Bonsai för att skapa en grundläggande konfigurationsfil:
- Öppna användargränssnittetBonsai.
- Välj den hjärnversion som du vill utvärdera.
- Välj på fliken Träna .
- Välj knappen + Ny utvärdering i utvärderingspanelen.
- Ange antalet avsnitt för utvärderingen.
- Ange ett värde, en uppsättning värden eller ett värdeintervall för alla konfigurerbara variabler som du vill begränsa med hjälp av Inkling-syntax.
- Klicka på Generera.
- Kopiera den genererade JSON-filen till en textredigerare och spara filen med filnamnstillägget .json.
- Följ resten av självstudien för att göra ytterligare anpassningar.
Översätta din SimConfig
typ till avsnittskonfigurationer
Den viktigaste delen av utvärderingskonfigurationsfilen är matrisen med avsnittskonfigurationer. Avsnittskonfigurationer visar Bonsai hur du konfigurerar simuleringen när utvärderingen startar. Varje utvärderingskonfigurationsfil måste ha minst en avsnittskonfiguration.
Avsnittskonfigurationer måste ha samma struktur som SimConfig
typen i Inkling-filen för den hjärnversion som du vill utvärdera.
Följande Inkling-typ:
type SimConfig {
ConfigField_1: Field_1_Type,
ConfigField_2: {
TypeSubField_1: SubField_1_Type,
TypeSubField_2: SubField_2_Type,
}
...
ConfigField_N: Field_N_Type,
}
Översätts till följande avsnittsdefinition i utvärderingskonfigurationen:
{
"ConfigField_1": "Value_1",
"ConfigField_2": {
"TypeSubField_1": "SubValue_1",
"TypeSubField_2": "SubValue_2",
},
...
"ConfigField_N": "Value_N",
}
Viktigt
De flesta talfält skickas som tal i konfigurationsfilen, men uppräknade nummertyper måste skickas som strängar.
Översättning av enfältstyper SimConfig
SimConfig
Anta att typen i Inkling-filen innehåller ett enda fält med namnet Drive
av typen Direction
:
type Direction number<Left = 0, Right = 1, Straight = 2, Back = 3>
type SimConfig { Drive: Direction }
Varje post i episodens konfigurationsmatris måste ange ett giltigt värde för Drive
enligt definitionen av Direction
typen . Ett exempel:
[
{"Drive": "Left"},
{"Drive": "Right"},
{"Drive": "Back"}
]
Eftersom simuleringskonfigurationsinformationen är ett enda värde Bonsai kan mappa värdena till fältet Drive
utan ett explicit fältnamn. Därför kan posterna i matrisen för episodkonfiguration utesluta fältnamnet för enkelhetens skull, om du föredrar följande:
[
"Left",
"Right",
"Back"
]
Översätta enkla SimConfig
typer
SimConfig
Anta att typen i Inkling-filen innehåller två värden som heter Drive
och RoadCondition
av typen Direction
och Terrain
:
type Direction number<Left = 0, Right = 1, Straight = 2, Back = 3>
type Terrain string<Bad = "B", Rough = "R", Clear = "C">
type SimConfig {
Drive: Direction,
RoadCondition: Terrain
}
Varje post i episodens konfigurationsmatris måste ange Drive
fält och RoadCondition
med giltiga värden som definieras av typerna Direction
och Terrain
.
Anta till exempel att du vill utvärdera den drivande hjärnan mot följande två scenarier:
- Börja med att köra vänster på en tuff väg.
- Börja med att köra vänster på en klar väg.
Konfigurationsfilen skulle ha två avsnittskonfigurationer. En som anger startvärdena till {Left, Rough}
och en som anger startvärdena till {Left, Clear}
:
[
{
"Drive": "Left",
"RoadCondition": "Rough"
},
{
"Drive": "Left",
"RoadCondition": "Clear"
}
Översätta SimConfig
med kapslade ordlistor
SimConfig
Anta att typen i Inkling-filen innehåller tre fält:
Namn | Typ | Syfte |
---|---|---|
Drive |
Movement |
anger aktuell orientering och vägförhållanden för en elbil. |
BatteryLevel |
number<0 .. 1> |
anger den aktuella laddningen av bilbatteriet i procent. |
AmbientTemp |
Temperature |
anger temperaturen i det omgivande området i Celsius. |
type Direction number<Left = 0, Right = 1, Straight = 2, Back = 3>
type Terrain string<Bad = "B", Rough = "R", Clear = "C">
type Movement {
Orientation: Direction,
RoadCondition: Terrain
}
type Temperature number<-90 .. 60>
type SimConfig {
Drive: Movement,
BatteryLevel: number<0 .. 1>,
AmbientTemp: Temperature
}
Varje post i episodens konfigurationsmatris måste ange giltiga startvärden för Drive
, BatteryLevel
och AmbientTemp
enligt definitionen av motsvarande typer.
Anta till exempel att du vill utvärdera den drivande hjärnan mot följande scenarier:
- Börja med att köra vänster på en tuff väg med ett fullt batteri på en vinterdag i Berkeley, CA.
- Börja med att köra bakåt på en klar väg med ett nästan tomt batteri på en sommardag i Berkeley, CA.
- Börja med att köra rakt på en dålig väg med ett halvt batteri på en vårdag i Berkeley, CA.
Konfigurationsfilen skulle ha tre avsnittskonfigurationer:
[
{
"Drive": {
"Orientation": "Left",
"RoadCondition": "Rough"
},
"BatteryLevel": 1,
"AmbientTemp": 14
},
{
"Drive": {
"Orientation": "Back",
"RoadCondition": "Clear"
},
"BatteryLevel": 0.1,
"AmbientTemp": 22
},
{
"Drive": {
"Orientation": "Straight",
"RoadCondition": "Bad"
},
"BatteryLevel": 0.5,
"AmbientTemp": 18
},
Nästa steg
Nu när du vet hur du skapar konfigurationsfiler för utvärdering kan du prova att använda en för att utvärdera en tränad hjärna.