Uw simulatie valideren voor machine teaching
De Bonsai trainingsent engine maakt gebruik van RL (Reinforcement Learning) om Machine Teaching te structureren voor hersenen. Simulaties ondersteunen bekrachtigingstraining met gegevens en een interactieve omgeving voor iteratieve training. Maar niet alle simulaties zijn compatibel met Machine Teaching. Het controleren van de gereedheid van uw simulatie is essentieel voor het trainen van een brein met Bonsai .
Belangrijk
De onderstaande stappen vertegenwoordigen de basisprocedures voor simulatievalidatie. Uiteindelijk vereist het ontwikkelen van een uitgebreid, domein-relevant validatieproces situatiespecifieke experimenten en vergelijkingen met echte gegevens. Het doel van een validatieplan is het identificeren en aanpakken van kritieke hiaten tussen uw gesimuleerde omgeving en de echte omgeving waarin uw brein wordt geïmplementeerd.
Voordat u begint
- Zorg ervoor dat u programmatisch met uw simulatie kunt communiceren. U kunt de programmeertaal van uw keuze gebruiken.
- Zorg ervoor dat Bonsai uw simulatieplatform (of taal) wordt ondersteund.
Stap 1: uw stapsgewijse functie controleren
Ter ondersteuning van bekrachtigings learning moet uw simulator reageren op iteratieve informatiewijzigingen. Als u iteratieve wijzigingen wilt afhandelen, moet uw simulatie een opstapfunctie bevatten. De opstapfunctie accepteert invoervariabelen (actie) en retourneert uitvoerwaarden (statuswaarden) tenzij er een terminale voorwaarde optreedt.
- Invoervariabelen vertegenwoordigen acties die door Bonsai uw brein zijn ondernomen tijdens de vorige iteratie. Bonsai
- Uitvoervariabelen bieden resultaatinformatie die het brein gebruikt tijdens de huidige iteratie.
Denk bijvoorbeeld aan een apiaire HVAC-simulatie die de temperatuur bepaalt door het bewerken van de luchtbesturingselementen. Het aantal en de positie van open luchtgaten zijn de invoervariabelen. De interne temperatuur van de apiary is de uitvoertoestand. Als u met machine teaching wilt werken, moet de simulatie iteratieve wijzigingen in de positie en het aantal open luchtgaten toestaan en de nieuwe temperatuur bij elke iteratie retourneren.
Uw opstapfunctie controleren:
- Controleer of de set verwachte invoerbeheeracties overeenkomen, of een superset is van, de set acties die uw brein gaat trainen.
- Controleer of uw opstapfunctie deterministisch is. Met andere woorden, alle mogelijke invoer heeft een bijbehorende uitvoer- of terminalvoorwaarde.
- Controleer of de informatie over de uitvoertoestand de juiste eenheden gebruikt. Als het brein bijvoorbeeld temperatuur in Celsius verwacht, controleert u of uw simulatie geen temperatuurgegevens in Kelvins verstuurt.
Stap 2: de terminalvoorwaarden controleren en de functie opnieuw instellen
Een belangrijk onderdeel van iteratieve simulatie is weten wanneer het proces moet worden gestopt en opnieuw moet worden ingesteld. Terminale omstandigheden laten de simulatie weten wanneer het brein een punt heeft bereikt waarop herstel niet meer mogelijk is. De temperatuur in een apiary heeft bijvoorbeeld een punt bereikt waarop de bijen zijn uitgekomen.
Wanneer er een terminale toestand optreedt, moet de functie reset de omgeving in uw simulatie weer instellen op de verwachte begintoestand, zodat uw brein het opnieuw kan proberen.
De terminalvoorwaarden controleren en de functie opnieuw instellen:
- Controleer of de terminalvoorwaarden daadwerkelijk kunnen optreden als onderdeel van de simulatie-uitvoer. Als uw apiaire simulatie bijvoorbeeld is ingesteld in een omgeving met een computer en uw simulatie alleen wordt beëindigd wanneer de temperatuur onder het vriespunt zakt, wordt deze nooit beëindigd.
- Controleer of uw functie voor opnieuw instellen zichtbaar is voor gebruikers, zodat deze kan worden aangeroepen door het Bonsai platform.
- Controleer of u edge-cases correct afhandelt. Als het bijvoorbeeld mogelijk is dat temperaturen in een iteratie met meer dan 1 graden veranderen, controleert u op waarden die groter zijn dan een grenswaarde in plaats van gelijkheid.
Stap 3: uw configuratievariabelen controleren
Uw simulator moet ondersteuning bieden voor het initialiseren van omgevingsvariabelen, zodat Bonsai uw brein kan trainen op verschillende scenario's. Een apiaire HVAC-simulatie moet bijvoorbeeld een redelijke begintemperatuur ondersteunen.
Uw configuratievariabelen controleren:
- Controleer of de set beschikbare configuratievariabelen alle relevante informatie over de begintoestand bevat.
- Controleer of de configuratievariabelen kunnen worden ingesteld door de functie reset.
- Controleer of de eenheden tussen uw simulatie en het brein overeenkomen of op de juiste wijze worden geconverteerd.
Stap 4: een basistestprotocol ontwerpen
Met een basistestprotocol wordt een eenvoudige (basis)case vastgesteld en worden de simulatiestappen uitgevoerd in een lus voor dat geval een vooraf gedefinieerd aantal iteraties. Gebruik de gegenereerde uitvoergegevens voor een nadere analyse om te bevestigen dat uw simulator werkt zoals verwacht.
Uw basistestprotocol is afhankelijk van twee metrische gegevens:
- Controlefrequentie (CF): hoe vaak het brein actie onderneemt om de gesimuleerde omgeving te controleren als een meting van gebeurtenissen per metrische gegevens, die doorgaans worden vermeld in Hertz (Hz). De metrische gegevens van het controlevenster moeten de werkelijke meting (tijd, afstand) weerspiegelen die het getrainde brein verwacht te gebruiken bij het evalueren en ondernemen van actie om de echte omgeving te controleren.
- Simulatietijd (ST): de werkelijke kloktijd die nodig is om het gewenste controlevenster te simuleren. De ST voor een bepaalde iteratie varieert op basis van de complexiteit van de simulatie.
Bereken het aantal controlegebeurtenissen dat uw brein moet verwerken in een zinvolle eenheid van uw controlemetrische gegevens om een geschikte controlefrequentie te bepalen. Controlesystemen op basis van tijd berekenen doorgaans CF in gebeurtenissen per seconde, terwijl controlesystemen op basis van afstand doorgaans CF in gebeurtenissen per meter berekenen.
Stel dat u wilt dat uw apiaire HVAC-brein de status van de apiary evalueert en elke 100 ms actie onderneemt wanneer deze wordt geïmplementeerd. Om uw productieomgeving effectief na te bootsen, moet elke trainings iteratie een venster van 100 ms simuleren met één besturingsactie per iteratie.
1 gebeurtenis per 100 ms → 1 gebeurtenis100 ms
1000 ms per seconde → (1gebeurtenis 100 ms) × (1000 ms1seconde ) → doelfrequentie is 10 controlegebeurtenissen per seconde
Per definitie:
1 Hz = 1 gebeurtenis per seconde
Om te bevestigen dat uw simulatie de omgeving op de juiste manier repliceert, moet uw basistestprotocol een controlefrequentie van 10 Hz gebruiken.
Notitie
Het definiëren van de controlefrequentie is gebruikelijk, maar niet vereist. Uiteindelijk moet u bepalen hoeveel controlegebeurtenissen u wilt voor een bepaalde meting. Zodra u weet hoe vaak uw controlegebeurtenissen moeten plaatsvinden, kunt u de rest van de testvariabelen bepalen.
Zodra u de controlefrequentie hebt berekend, kunt u de volgende stappen gebruiken om een algemeen basisprotocol te ontwerpen dat u kunt aanpassen aan de details van uw simulatie:
- Voer uw simulatie uit met een standaardconfiguratie om een typisch logboekbestand te genereren.
- Bepaal op basis van uw CF en het logboekbestand het maximum aantal iteraties dat u wilt toestaan voor trainingstraining.
- Zorg ervoor dat u de volgende informatie voor elke iteratie van de test kunt berekenen en in een logboek kunt logboeken:
- Alle uitvoer van de simulator.
- De werkelijke CF-waarde die wordt bereikt door de simulatie.
- De ST-waarde voor de iteratie.
- Analyseer de relatie tussen de invoer en uitvoer van uw logboekbestand om een eenvoudig configuratiescenario (test) te identificeren.
- Definieer ten minste één vast testscenario. Selecteer een geschikte beginconfiguratie en bepaal de verwachte besturingsacties (beleidsreacties) voor elke iteratie van het testscenario.
- Definieer ten minste één willekeurig testscenario. Voor een willekeurige beginconfiguratie schrijft u testcode die willekeurig een van de beschikbare besturingsacties selecteert voor elke iteratie van het testscenario.
- Schrijf testcode om de opstapfunctie aan te roepen met de gewenste invoer (vast of willekeurig) voor elke iteratie en herhaal het proces totdat deze een terminale voorwaarde of het maximum aantal iteraties heeft bereikt dat u eerder hebt bepaald.
Stap 5: een basistestprotocol uitvoeren
Simulatievalidatie is een iteratief proces. U kunt ervan uit gaan dat u uw testprotocol meerdere keren met verschillende beginconfiguraties moet uitvoeren en het protocol opnieuw moet uitvoeren wanneer u aanpassingen aan de simulatie maakt.
Tip
Voor de beste resultaten moet u meerdere configuraties hebben gedefinieerd voor uw vaste en willekeurige beleidsregels.
Voor elke test wordt het volgende uitgevoerd:
- Stel de simulator in met de initiële status voor uw testscenario.
- Voer de simulatie uit met verschillende invoer voor het vaste testscenario.
- Voer de simulatie uit met verschillende invoer in het scenario voor willekeurig testen.
- Voer de simulatie uit voor een groot aantal iteraties, zodat er opnieuw kan worden ingesteld.
- Voer de simulatie uit en dwing het opnieuw instellen op een willekeurig punt af.
- Voer de simulatie uit met een eerste configuratie die het opnieuw instellen dwingt.
Stap 6: de resultaten van uw test analyseren
Er is geen juiste manier om de resultaten van een simulatietest te analyseren. Hieronder vindt u enkele best practices, maar u moet ook vertrouwen op uw creativiteit en expertise om het gedrag van uw simulatie te evalueren. Het plotten van uw resultaten als invoer versus uitvoer kan het eenvoudiger maken om simulatorgedrag te analyseren en de resultaten aan anderen te communiceren.
Betrouwbaarheid evalueren
De betrouwbaarheid van uw simulatie is rechtstreeks gerelateerd aan de relatie invoer-uitvoer (actie-status) in uw basisprotocol. Het uitvoeren van hetzelfde scenario met een vast controlebeleid en een willekeurig controlebeleid maakt het gemakkelijker om de betrouwbaarheid te bepalen:
- Het vaste beleid moet resulteren in een goed begrepen resultaat.
- Het willekeurige beleid genereert onverwachte omstandigheden in de simulator.
Het vaste beleid helpt u bij het controleren van goed gedrag, terwijl het willekeurige beleid helpt bij het identificeren van randgevallen waarbij de simulatie traag is, vastloopt of andere problemen raakt.
In de APIARY HVAC-simulatie moet het openen van een luchtventer bijvoorbeeld de temperatuur in de apiary verlagen. Als de temperatuur in plaats daarvan stijgt, geeft dit aan dat simulatie een fout is.
Flexibiliteit evalueren
De flexibiliteit van uw simulatie heeft rechtstreeks betrekking op hoe goed deze uiteenlopende configuraties verwerkt. Bekijk de logboeken voor uw vaste en willekeurige controlebeleid. Bepaal voor elk van de beginconfiguraties of de bijbehorende wijzigingen in de gesimuleerde omgeving zinvol zijn.
Als u bijvoorbeeld de grootte en het aantal naar de apiary wijzigt, moet er een overeenkomstige wijziging zijn in hoe snel of langzaam de temperatuur verandert wanneer de ventilatoren worden geopend.
Herstel evalueren
Een essentieel onderdeel van machine teaching is de mogelijkheid om de trainingsomgeving opnieuw in te stellen wanneer dat nodig is. Controleer uw testlogboeken op alle plaatsen waar een terminale voorwaarde is opgetreden en de omgeving opnieuw instellen. Noteer de simulatortoestand, de resulterende acties bij het opnieuw instellen en of het gedrag in die context zinvol is.
Belangrijk
Als u een fout-positieve of fout-negatieve terminale toestand ziet, geeft dit aan dat uw simulatie een fout is.
Heeft de apiary HVAC bijvoorbeeld opnieuw ingesteld toen de interne temperatuur een punt bereikt waarop alle planten in de omgeving uitsmerden en verdreed? Was de nieuwe interne temperatuur na het opnieuw instellen logisch als een begintemperatuur?
De gesimuleerde controlefrequentie evalueren
Als u van plan bent om uw brein te implementeren op hardware in plaats van deze als software te installeren, moet uw gesimuleerde controlefrequentie gelijk zijn aan, of een factor van, de controlefrequentie die u in de echte wereld verwacht te zien in productie. Op die manier kan uw stap zo vaak als nodig een lus maken om de CF van de simulatie in overeenstemming te houden met de verwachte hardware CF.
Als de hardware voor uw brein bijvoorbeeld een CF van 100 Hz heeft, moet uw simulatie invoer toestaan bij elke 10 ms simulatie in de echte wereld.
1 Hz = 1 gebeurtenis per seconde → 100 Hz = 100 gebeurtenissen per seconde
1000 ms per seconde → 1000 ms100 gebeurtenissen = 10 ms per gebeurtenis
Simulatiebesturingselementen van 1 ms, 2 ms en 5 ms werken ook. In elk geval kan de simulator aanvullende keren door de opstapfunctie lopen om de gewenste controlefrequentie te bereiken.
| Gesimuleerd besturingsvenster | Vereiste lussen | Gesimuleerde CF |
|---|---|---|
| 1 ms | 10 | 1000 Hz |
| 2 ms | 5 | 500 Hz |
| 5 ms | 2 | 200 Hz |
De simulatietijd evalueren
Bereken de gemiddelde ST-waarde voor alle iteraties, voor alle test runs. Als u betrouwbaar wilt werken met machine teaching en , moet de gemiddelde ST voor uw Bonsai simulatie ≤ 20 seconden zijn.
Als uw gemiddelde ST hoger is dan de ondersteunde drempelwaarde, wordt deze beschouwd als een trage simulator en kan het uw brein niet voorzien van een realistisch model voor training.
Volgende stappen
Nadat u de simulator hebt gevalideerd, kunt u deze lokaal uitvoeren op basis van een Inkling-basisbestand om te beginnen met integreren met Bonsai .