Szimuláció ellenőrzése gépi tanításhoz

A Bonsai betanító motor meg megerősítési tanulás (RL) segítségével struktúrabeja a gépi tanítást az agy számára. A szimulációk támogatják a megkett adatokat megadó tanulást, és egy interaktív környezetet az iteratív betanításhoz. De nem minden szimuláció kompatibilis a gépi tanítással. A szimuláció készenlétének ellenőrzése kritikus fontosságú az agy Bonsaival való sikeres betanítása szempontjából.

Fontos

Az alábbi lépések a szimuláció érvényesítésének alapvető, ajánlott eljárásait képviselik. Végső soron egy átfogó, a tartományra vonatkozó ellenőrzési folyamat kialakításához helyzetspecifikus kísérletezésre és valós adatokkal való összehasonlításra van szükség. Minden érvényesítési terv célja a szimulált környezet és az agyát üzembe helyező valódi környezet közötti kritikus hiányosságok azonosítása és kezelése.

Előkészületek

  • Győződjön meg arról, hogy programozott módon tudja használni a szimulációt. Használhatja a választott programozási nyelvet.
  • Győződjön meg arról, hogy a Bonsai támogatja a szimulációs platformot (vagy nyelvet).

1. lépés: A léptető függvény ellenőrzése

A megerősítési tanulás támogatásához a szimulátornak válaszolnia kell az iteratív információk változásaira. Az iteratív módosítások kezeléséhez a szimulációnak tartalmaznia kell egy léptető függvényt. A léptető függvény fogadja a bemeneti (művelet) változókat, és kimeneti (állapot) értékeket ad vissza, hacsak nem áll elő terminálállapot.

  • A bemeneti változók a Bonsai-agy által az előző iteráció során tett műveleteket képviselik.
  • A kimeneti változók az agy által az aktuális iteráció során használt eredményadatokat biztosítanak.

Vesszünk például egy apiary HVAC-szimulációt, amely a hőmérsékletet a hőmérsékletet a hashálék manipulálásával szabályozza. A nyitott ventilátorok száma és pozíciója a bemeneti változók. Az apiary belső hőmérséklete a kimeneti állapot. A gépi tanításhoz a szimulációnak lehetővé kell tennie a nyitott légnyomások pozíciójának és számának iteratív változásait, és minden iteráción vissza kell térnie az új hőmérsékletre.

A léptető függvény ellenőrzése:

  1. Győződjön meg arról, hogy a várt bemeneti vezérlési műveletek egyeznek, vagy az agy által betanított műveletek egy halmaza.
  2. Győződjön meg arról, hogy a léptető függvény determinisztikus. Más szóval minden lehetséges bemenetnek megfelelő kimeneti állapota vagy terminálállapota van.
  3. Ellenőrizze, hogy a kimeneti állapot adatai a megfelelő egységeket használják-e. Ha például az agy Celsius-fokban várja a hőmérsékletet, győződjön meg arról, hogy a szimuláció nem küld hőmérsékleti adatokat a Kelvinsben.

2. lépés: A terminálfeltételek ellenőrzése és a reset függvény

Az iteratív szimuláció fontos része annak ismerete, hogy mikor kell leállítani és alaphelyzetbe állítani a folyamatot. A terminálfeltételek tudatják a szimulációval, ha az agy elérte azt a pontot, ahol a helyreállítás már nem lehetséges. Egy apiary-n belüli hőmérséklet például elérte azt a pontot, ahol a bee-k meghalnak.

Terminálállapot esetén a reset függvénynek vissza kell állítania a szimuláció környezetét a várt indítási állapotba, hogy az agy újra próbálkozhat.

A terminálfeltételek ellenőrzése és a reset függvény:

  1. Győződjön meg arról, hogy a terminálfeltételek ténylegesen bekövetkezhetnek a szimuláció kimenetének részeként. Ha például az apiary szimuláció egy környezeti környezetben van beállítva, és a szimuláció csak akkor áll le, ha a hőmérséklet fagypont alá esik, akkor az soha nem fog leállni.
  2. Ellenőrizze, hogy a reset függvény elérhető-e a felhasználók számára, hogy a Bonsai platform hívhatja meg.
  3. Ellenőrizze, hogy megfelelően kezeli-e a peremhálózati eseteket. Ha például egy iterációban a hőmérsékletek 1 foknál nagyobb mértékben változhatnak, akkor az egyenlőség helyett a cutoff értéknél nagyobb értékeket kell ellenőrizni.

3. lépés: A konfigurációs változók ellenőrzése

A szimulátornak támogatnia kell a környezeti változók inicializálását, hogy a Bonsai-agy többféle forgatókönyv alapján is betanítható legyen. Egy apiary HVAC-szimulációnak például minden ésszerű kezdőhőmérsékletet támogatnia kell.

A konfigurációs változók ellenőrzése:

  1. Ellenőrizze, hogy az elérhető konfigurációs változók halmaza tartalmazza-e az összes releváns kiindulási állapotinformációt.
  2. Ellenőrizze, hogy a konfigurációs változókat be tudja-e állítani a reset függvény.
  3. Győződjön meg arról, hogy a szimuláció és az agy közötti egységek megegyeznek, vagy megfelelően vannak konvertálva.

4. lépés: Alapteszt-protokoll tervezése

Az alaptesztelési protokoll egy egyszerű (alap) esetet hoz létre, és egy hurokban futtatja a szimuláció lépéseit egy előre meghatározott számú iterációhoz. A létrehozott kimeneti adatok használatával közelebbről is megvizsgálhatja, hogy a szimulátor a várt módon működik-e.

Az alapteszt-protokoll két metrikától függ:

  • Vezérlő gyakorisága (CF): az agy milyen gyakran vesz részt a szimulált környezet szabályozásában metrikaonkénti események mértékeként, jellemzően a Hertzben (Hz) jelezve. A vezérlőablak metrika a valós mértéknek (idő, távolság) kell, hogy legyen, amit a betanított agy használni fog a valós környezet kiértékeléskor és a valós környezet vezérlése érdekében.
  • Szimulációs idő (ST): a kívánt vezérlési ablak szimulálására szükséges valós óraidő. Egy adott iteráció ST-e a szimuláció összetettségétől függően változik.

A megfelelő vezérlési gyakoriság meghatározásához számítsa ki, hogy az agynak hány kontrolleseményt kell kezelnie a kontrollmetrika egy kifejező egységeként. Az időalapú vezérlőrendszerek általában másodpercenként számítják ki a CF-t az eseményekben, a távolságalapú vezérlőrendszerek pedig általában mérőnként számítják ki a CF-t az eseményekben.

Tegyük fel például, hogy azt szeretné, hogy az apiary HVAC agy kiértékelje az apiary állapotát, és 100 ezredm-ről 100 ezredútonként műveletet vegyen fel az üzembe helyezéskor. Az éles környezet hatékony utánzására minden betanítási iterációnak egy 100 ezredmes ablakot kell szimulálni, iterációnként egy vezérlési művelettel.

1 esemény 100 ms → 1 esemény / 100 ms

Másodpercenként 1000 ms → (1 esemény / 100 ms) ( × 1000 ms 1 másodperc ) cél gyakorisága másodpercenként / → 10 vezérlési esemény

Definíció szerint:

1 Hz = 1 esemény másodpercenként

Így annak ellenőrzéséhez, hogy a szimuláció megfelelően replikálja-e a környezetet, az alapteszt-protokollnak 10 Hz-es vezérlési gyakoriságot kell használnia.

Megjegyzés

A vezérlő gyakoriságának meghatározása jellemző, de nem kötelező. Végső soron azt kell meghatároznia, hogy hány vezérlőeseményt szeretne egy adott méréshez. Ha már tudja, milyen gyakran történjenek vezérlőesemények, meghatározhatja a többi tesztváltozót.

Miután kiszámítja a vezérlés gyakoriságát, a következő lépésekkel tervezhet meg egy általános alap protokollt, amely alkalmazkodik a szimuláció sajátosságaihoz:

  1. Futtassa a szimulációt egy alapértelmezett konfigurációval egy tipikus naplófájl létrehozásához.
  2. A CF és a naplófájl alapján határozza meg a betanítási eseményhez engedélyezni kívánt iterációk maximális számát.
  3. Győződjön meg arról, hogy ki tudja számítani és naplózhatja a következő információkat a teszt egyes iterációihoz:
    1. A szimulátor által biztosított összes kimeneti állam.
    2. A szimuláció által elért tényleges CF-érték.
    3. Az iteráció ST értéke.
  4. Egy egyszerű konfigurációs (tesztelési) forgatókönyv azonosításához elemezze a naplófájl bemenetei és kimenetei közötti kapcsolatot.
  5. Határozzon meg legalább egy rögzített tesztelési forgatókönyvet. Válasszon ki egy megfelelő kezdő konfigurációt, és határozza meg a várt vezérlőműveleteket (szabályzatválaszokat) a tesztelési forgatókönyv egyes iterációihoz.
  6. Határozzon meg legalább egy véletlenszerű tesztelési forgatókönyvet. Tetszőleges kezdőkonfiguráció esetén írjon tesztkódot, amely véletlenszerűen kiválasztja az elérhető vezérlési műveletek valamelyikét a tesztelési forgatókönyv egyes iterációihoz.
  7. Írjon tesztkódot, amely minden iterációhoz a kívánt bemenettel (rögzített vagy véletlenszerű) hívja meg a lépőfedő függvényt, és ismételje meg a folyamatot, amíg el nem éri a terminál feltételt vagy a korábban meghatározott iterációk maximális számát.

5. lépés: Alapteszt-protokoll futtatása

A szimuláció ellenőrzése iteratív folyamat. A tesztelési protokollt várhatóan többször is futtatnia kell különböző kezdőkonfigurációk használatával, és újra kell futtatnia a protokollt a szimuláció módosításainak végrehajtása során.

Tipp

A legjobb eredmény érdekében több konfigurációt is meg kell határoznia a rögzített és véletlenszerű szabályzatok számára.

Minden tesztelési futtatáshoz:

  1. Állítsa be a szimulátort a tesztelési forgatókönyv kezdeti állapotával.
  2. Futtassa a szimulációt különböző bemenetekkel a rögzített tesztelési forgatókönyvhöz.
  3. A véletlenszerű tesztelési forgatókönyv változó bemenetekkel futtatja a szimulációt.
  4. Futtassa a szimulációt nagy számú iterációhoz, hogy alaphelyzetbe állítás következhet be.
  5. Futtassa a szimulációt, és kényszerítsen alaphelyzetbe állítást egy véletlenszerű ponton.
  6. Futtassa a szimulációt egy kezdeti konfigurációval, amely alaphelyzetbe állítást kényszerít.

6. lépés: A teszt eredményeinek elemzése

A szimulációs tesztek eredményeit nem lehet megfelelő módon elemezni. Néhány ajánlott eljárás alább olvasható, de a szimuláció viselkedésének kiértékeléséhez a kreativitására és a szakterületi szakértelmére is támaszkodnia kell. Az eredmények bemenetként és kimenetként való ábrázolása megkönnyíti a szimulátor viselkedésének elemzését, és az eredmények másokkal való kommunikációját.

Megbízhatóság kiértékelése

A szimuláció megbízhatósága közvetlenül kapcsolódik az alap-protokoll bemeneti-kimeneti (műveletállapot) kapcsolatához. Ha ugyanazt a forgatókönyvet rögzített és véletlenszerű vezérlési szabályzatokkal futtatja, a megbízhatóság könnyebben meghatározható:

  • A rögzített szabályzatnak jól érthető eredményt kell eredményeznünk.
  • A véletlenszerű szabályzat váratlan feltételeket hoz létre a szimulátorban.

A rögzített szabályzat segít ellenőrizni a megfelelő viselkedést, míg a véletlenszerű szabályzat segít azonosítani azokat a peremhálózati eseteket, amelyekben a szimuláció lassú, elakadt vagy más problémákba ad vissza találatokat.

Az apiary HVAC szimulációban például egy hasonlék megnyitása csökkenti a hőmérsékletet az apiary-ban. Ha ehelyett a hőmérséklet emelkedik, az azt jelzi, hogy a szimuláció hibás.

Rugalmasság kiértékelése

A szimuláció rugalmassága közvetlenül kapcsolódik a különböző konfigurációk kezeléséhez. Tekintse át a rögzített és véletlenszerű vezérlési szabályzatok naplóit. Az egyes kezdő konfigurációknál állapítsa meg, hogy a szimulált környezet megfelelő módosításai értelmesek-e.

Például a fogárban lévő fogalyok méretének és számának módosításával egy megfelelő változásnak kell lennie abban, hogy milyen gyorsan vagy lassan változik a hőmérséklet, amikor a légbefúulás meg van nyitva.

Helyreállítás értékelése

A gépi betanítás kritikus része a betanítási környezet szükség esetén való alaphelyzetbe állítása. Ellenőrizze a tesztnaplókban, hogy vannak-e olyan helyek, ahol terminálállapot történt, és a környezet alaphelyzetbe áll. Figyelje meg a szimulátor állapotát, az alaphelyzetbe állításkor keletkező műveleteket, valamint azt, hogy a viselkedés értelmes-e ebben a környezetben.

Fontos

Ha téves pozitív vagy hamis negatív terminális feltételt észleli, az azt jelzi, hogy a szimuláció hibás.

Például alaphelyzetbe állítva lett az apiary HVAC, amikor a belső hőmérséklet elér egy olyan pontot, amikor a környezetben minden növény ki fog siklni és eltelik? Az új belső hőmérséklet az alaphelyzetbe állítás után kiindulási hőmérsékletnek tűnik?

A szimulált vezérlési gyakoriság értékelése

Ha nem szoftverként, hanem hardveren tervezi üzembe helyezni az agyát, a szimulált vezérlési gyakoriságnak meg kell egyenrangúnak vagy tényezőnek kell lennie az éles környezetben várható valós vezérlési gyakoriságnak. Így a lépték annyi hurkot futtathat, amennyire csak szükség van ahhoz, hogy a szimuláció CF összhangban legyen a várt hardverES CF-hez.

Ha például az agy hardverének CF-je 100 Hz,akkor a szimulációnak minden 10 ms valós szimulációnál engedélyeznie kell a bemeneteket.

1 Hz = 1 esemény másodpercenként → 100 Hz = 100 esemény másodpercenként

1000 ms másodpercenként → 1000 ms / 100 esemény = 10 ms eseményenként

A szimulációs vezérlők 1 ms, 2 ms és 5 ms is működnek. A szimulátor minden esetben többször is végiglépkedhet a léptető függvényen, hogy elérje a kívánt vezérlési gyakoriságot.

Szimulált vezérlőablak Szükséges hurkok Szimulált CF
1 ezredm 10 1000 Hz
2 ezredm 5 500 Hz
5 ezredm 2 200 Hz

A szimulációs idő kiértékelése

Számítsa ki az összes iteráció átlagos ST-értékét az összes tesztfuttetésre. Ahhoz, hogy megbízhatóan működjön a gépi tanítással és a Bonsai-val, a szimuláció átlagos ST-nek ≤ 20 másodpercnek kell lennie.

Ha az átlagos ST meghaladja a támogatott küszöbértéket, akkor lassú szimulátornak számít, és nem tud reális modellt biztosítani az agynak a betanításhoz.

Következő lépések

Miután érvényesítte a szimulátort, próbálja meg helyileg, egy alapszintű inkling fájlon futtatva elkezdeni az integrációt a Bonsai-val.