Aktuální vydání

celé číslo

12

2020

Systémy DCS pro kontinuální a dávkové výrobní procesy

Provozní analytická technika

celé číslo

Návrh riadiacich systémov metódou Reinforcement Learning

Umelá inteligencia už dlhšiu dobu mení náš pohľad na návrh algoritmov v rôznych oblastiach priemyslu. Medzi prvými sa vyvíjali algoritmy strojového učenia. V oblasti spracovania obrazu a signálov sa následne vďaka výborným výsledkom dostali do popredia konvolučné neurónové siete. Poslednou oblasťou, do ktorej umelá inteligencia preniká, je riadenie. Výpočtové prostredie Matlab spoločnosti MathWorks tu ponúka samostatnú nadstavbu Reinforcement Learning Toolbox

Tradičný návrh regulačných obvodov využíva spätnú väzbu zo systému na stanovenie regulačnej odchýlky medzi želanou hodnotou a aktuálnym stavom systému. Na základe regulačnej odchýlky regulátor určí akčný zásah tak, aby sa systém dostal do požadovaného stavu. Hoci tradičná teória riadiacich systémov poskytuje niekoľko spoľahlivých metód návrhu regulátorov, nárastom zložitosti systému nemusí byť jednoduché regulátor navrhnúť. Zložitým systémom je myslený systém, ktorý nemožno ľahko popísať, je vysoko nelineárny, obsahuje veľa stavov alebo na jeho riadenie treba niekoľko interagujúcich vnorených slučiek.

 

Princíp metódy

Riešením spomenutých problémov môže byť metóda Reinforcement Learning (obr. 1). Metóda je súčasťou strojového učenia, avšak namiesto statických dát využíva dynamické prostredie. Cieľom je nájsť akcie, ktoré vedú na optimálne správanie sa natrénovaním agenta. Agent obsahuje stratégiu (aproximačnú funkciu), ktorá prijíma pozorovania (stavy systému, vstupy) a mapuje ich na akcie (výstupy). Okrem stratégie obsahuje agent učiaci sa algoritmus. Prostredie generuje pre agenta odmenu a určuje mieru úspešnosti akcie vzhľadom na splnenie cieľa úlohy. Učiaci algoritmus neustále aktualizuje parametre stratégie na základe akcií, pozorovaní a odmien. Cieľom algoritmu učenia je teda nájsť optimálnu stratégiu, ktorá maximalizuje kumulatívnu odmenu získanú počas úlohy. Použitie metódy Reinforcement Learning typicky spočíva v nasledujúcich krokoch: vytvorenie prostredia, definícia odmeny, vytvorenie agenta, trénovanie agenta a nasadenie stratégie (obr. 2).

 

Vytvorenie prostredia

Na natrénovanie agenta treba prostredie. Oproti tradičnému riadeniu je prostredie všetko okrem agenta. Ako prvé je teda potrebné stanoviť, ako bude reprezentované prostredie. Prostredie môže byť skutočné fyzikálne prostredie (napr. hardvér), alebo simulačný model. Využitie reálneho prostredia pri metódach pokus–omyl by nemuselo dopadnúť najlepšie, hlavne pri extrémnych prípadoch, preto sa často využívajú simulačné prostredia. Okrem rizika poškodenia hardvéru simulácie môžu bežať rýchlejšie a dokonca paralelne. Pokiaľ sa užívateľ snaží nahradiť tradičné riadenie, je možné, že model prostredia už dokonca má. S využitím výpočtového prostredia Matlab a jeho nadstavby Simulink už má k dispozícií niekoľko možností, ako prostredie vytvoriť. Napríklad môže modelovať dynamiku vozidla alebo lietadla vstavanými blokmi, využiť modul Simscape na modelovanie fyzikálnych komponentov či aproximovať dynamiku na základe dát pomocou identifikácie parametrov (obr. 3).

 

Definícia odmeňovania

Po vytvorení prostredia je potrebné si uvedomiť, čo má agent robiť a ako ho odmeniť. Preto je potrebné vytvoriť funkciu odmeňovania, aby trénovací algoritmus vedel, kedy sa stratégia zlepšuje. Výstupom odmeňovacej funkcie je číslo (skalár), ktoré reprezentuje vhodnosť akcie v aktuálnom stave. Všeobecne funkcia vracia pozitívnu odmenu, keď je vhodné agenta podporiť v akcii, a naopak negatívnu odmenu (pokutu) pri potrebe agenta od akcie odradiť. Reinforcement learning nekladie obmedzenia na tvorbu funkcie, avšak jej návrh vzhľadom na požadovaný cieľ je jedna z najzložitejších úloh celej metódy. Inžinieri môžu využiť pri tvorbe funkcie znalosti systému, ale či je funkcia zvolená správne, môžu zistiť až po niekoľkých iteráciách trénovania. V prostrediach Matlab a Simulink možno vytvoriť odmeňovanie ako funkciu, popr. subsystém (obr. 4).

 

Vytvorenie agenta

Po vytvorení prostredia a definícii odmeňovania sa zvyčajne prechádza k vytvorení agenta. Agent sa skladá zo stratégie a učiaceho sa algoritmu, ktorý sa snaží nájsť optimálnu stratégiu. Stratégia je funkcia, ktoré prijíma pozorovania z prostredia a vracia akcie. Existuje niekoľko spôsobov, ako takúto funkciu reprezentovať, ale najčastejšie sa používajú tabuľky, polynómy alebo neurónové siete. Veľkú popularitu si v súčasnosti získali neurónové siete, vrátane konvolučných neu­rónových sietí. Učiaci algoritmus môže mať niekoľko podôb, ale veľkú popularitu majú agenti typu actor–critic. Prostredie Matlab ponúka niekoľko vstavaných algoritmov pre agentov, ako sú Deep Q-Network (DQN), Advantage Actor Critic (A2C), Deep Deterministic Policy Gradients (DDPG) a mnoho ďalších. Prostredie Simulink obsahuje samostatný blok pre agenta (obr. 5). Okrem vstavaných algoritmov možno vytvoriť vlastného agenta, popr. importovať model pomocou štandardného formátu ONNX (Open Neural Network Exchange).

 

Trénovanie a jeho akcelerácia

Pokiaľ sú vytvorené všetky súčasti metódy, možno pristúpiť k trénovaniu. Metóda Reinforcement Learning vyžaduje k natrénovaniu schopnej stratégie veľa dát a vo väčšine prípadov i veľa simulácií. V tom pomôžu paralelné výpočty. Trénovanie neurónových sietí možno realizovať aj na grafickom procesore (GPU). Funkcia train poskytuje modul Reinforcement Learning Episode Manager, pomocou ktorého je možné sledovať tréningový proces vizuálne (obr. 6).

 

Nasadenie stratégie

Posledným krokom při použitiu metódy Reinforcement Learning je nasadenie stratégie na cieľové zariadenie, podobne ako by to bolo u klasického riadenia. Ak by bola väčšina učenia realizovaná simulačne, je niekedy potrebné pokračovať v učení aj po nasadení. Simulačné prostredie nemusí dokonale modelovať reálny svet, ktorý sa navyše môže časom meniť. Preto je dobré nasadiť aj učiaci sa algoritmus. Takto je možné zapnúť alebo vypnúť učenie podľa potreby. Stratégie sa v prostrediu Matlab dajú konvertovať na optimalizovaný kód C/C++ alebo kód CUDA. Navyše je možné nasadiť stratégie ako zdieľané knižnice v jazykoch, ako je .NET, Java alebo Python.

 

Ako začať?

Metóda Reinforcement Learning obsahuje niekoľko častí, ktoré nemusí byť pre začiatočníkov s touto metódou jednoduché zostrojiť. Spoločnosť MathWorks pripravila k nástroji Reinforcement Learning Toolbox rozsiahlu dokumentáciu. Dokumentácia je členená na kapitoly podľa jednotlivých častí metódy, v ktorých sa užívateľ vie jednoducho orientovať. Okrem dokumentácie sú k dispozícií modely prostredí v nástrojoch Matlab a Simulink, ktoré možno využiť na testovanie rôznych typov agentov. Referenčné príklady užívateľa prevedú kompletným návrhom v rôznych oblastiach vrátane robotiky a autonómneho riadenia áut. Okrem dokumentácie a príkladov je k dispozícii séria videí na stránke spoločnosti MathWorks (https://www.mathworks.com/videos/series/reinforcement-learning.html) jako a aj články popisujúce jednotlivé súčasti metódy detailnejšie (https://www.mathworks.com/campaigns/offers/reinforcement-learning-with-matlab-ebook.html). 

Michal Blaho, Humusoft s. r. o.

Obr. 1. Schéma metódy Reinforcement Learning

Obr. 2. Kroky pri využití metódy Reinforcement Learning

Obr. 3. Ilustrácia modelu prostredia pro Reinforcement Learning v programu Simulink: inverzné kyvadlo

Obr. 4. Príklad funkcie odmeňovania pre trénovací algoritmus

Obr. 5. Zapojenie agenta s modelom prostredia

Obr. 6. Grafická vizualizácia tréningového procesu (zdroj: prostredie Reinforcement Learning Episode Manager)