Per-Arne har koda et dataspill i Python og C++ som trener AI: - Det holder med vanlig maskinvare

- Det er en klar fordel å skrive ting i lavnivå, og lage bindings til høynivå senere, sier forskeren.

Spillet DeepRTS er en forenkling av sjangeren som StarCraft II baseres på: Real-time strategy games (RTS). 📸: Skjermdump
Spillet DeepRTS er en forenkling av sjangeren som StarCraft II baseres på: Real-time strategy games (RTS). 📸: Skjermdump Vis mer

- Spillene gjør forskere mindre avhengige av store datamaskiner. Det holder med vanlig forbrukermaskinvare, sier Per-Arne Andersen, utvikler og universitetslektor ved Universitetet i Agder, til kode24.

Forskeren, hvis fagfelt er dyp forsterkende læring, nylig levert doktoravhandlingen “Advances in Safe Deep Reinforcement Learning for Real-Time Strategy Games and Industry Applications”. I doktorgraden har Andersen tatt for seg hvordan man kan trene opp algoritmer på et problem med minimal risiko for å gjøre feil under trening.

Her har Andersen særlig vært opptatt av roboter i industrien. En liten feil kan fort bli dyr. For å gjøre dette har Andersen utviklet seks dataspill for å trene algoritmene.

- Algoritmene er et steg i riktig retning av gjøre forsterkende læring uten å risikere reparasjonskostnader, sier forskeren.

Utviklet et strategispill

Da Andersen startet med oppgaven hadde han behov for et simulert miljø og trene algoritmene i. Problemet var at det ikke fantes gode alternativer for å utføre forskningen, uten å bruke betydelig regnekraft på å drive en spillmotor som StarCraft II.

- Jeg utviklet derfor DeepRTS, som er en forenkling av sjangeren som StarCraft II baseres på: Real-time strategy games (RTS). Denne sjangeren er ofte forbundet med høy kompleksitet, og er vanskelig for en datamaskin å mestre uten betydelige maskinressurser, sier han.

For eksempel brukte DeepMind for noen år siden millioner av kroner på å trene sin AlphaStar-algoritme for å slå verdensmesteren i StarCraft II.

- I forlengelse av dette utviklet jeg flere spill, som tok for seg mer spesifikke problemstillinger som ressursallokering, langtidsminne og trening av algoritmer til industribruk, som man kan finne på GitHub-siden til Center for Artificial Intelligence Research (CAIR).

«Det er en klar fordel å skrive ting i lavnivå, og lage bindings til høynivå senere»

Er kostbart å gjøre feil

Neste steg i arbeidet var å benytte forsterkende læring for å trene opp "agenter" i industrielle miljø.

- Problemet med den virkelige verden og industrielle miljøer er at det vanligvis er kostbart for en agent å gjøre feil. Dersom en robot krasjer i veggen og knuser, kan dette potensielt koste hundrevis av tusen kroner, sier Andersen.

Han legger til at siste del av prosjektet derfor handlet om å undersøke om det var mulig å redusere risikoen fro at algoritmene gjorde feilvalg under trening.

- Uten at man instruerte roboten med hardkoding om hva som var lovlig og ulovlig oppførsel, sier Andersen.

Spillet "Deep Warehouse" etterligner omgivelsene i et varehus. 📸: Per-Arne Andersen.
Spillet "Deep Warehouse" etterligner omgivelsene i et varehus. 📸: Per-Arne Andersen. Vis mer

Lagde en "drømmeverden"

Ifølge Andersen er den første metoden basert på at man observerer et miljø over en viss tid, og lærer en dyplæringsmodell å konstruere en modell av det observerte miljøet. På denne måten får man et estimat av det virkelige miljøet som algoritmen kan gjøre trening.

- Man kan tenke på dette som en “drømmeverden”. Algoritmen kan “fantasere” og gjøre valg uten noen konsekvenser for det virkelige miljøet, sier Andersen.

Den andre metoden baserte seg på å gjøre "triksing" med de matematiske formlene under trening av algoritmen. Han instruerte algoritmen til å være konservativ med å gjøre valg som gikk utover det den allerede visste om miljøet den opererte i.

- Når det kommer til å redusere risiko for å feilsteg, fungerte disse metodene generelt sett bedre enn om man skulle gjort trening på vanlig måte. De er derfor ett skritt i riktig retning av tryggere trening av autonome roboter, sier Andersen.

Andersen har latt en algoritme observere et miljø over en viss tid, og lært den å konstruere en modell av det observerte miljøet. 📸: Per-Arne Andersen
Andersen har latt en algoritme observere et miljø over en viss tid, og lært den å konstruere en modell av det observerte miljøet. 📸: Per-Arne Andersen Vis mer

Kodet i Python og C++

I arbeidet med oppgaven har Andersen benyttet seg av flere ulike teknologier i møte med de forskjellige problemene.

- For dyplæringsbiten har jeg brukt Python som språk med TensorFlow for å bygge modellene.

Han brukte også Python da han lagde en prototype av spillene. For så å lage dem i C++ for høyere ytelse.

- Det ble for øvrig betydelig bedre ytelse, slik at det er en klar fordel å skrive ting i lavnivå, og lage bindings til høynivå senere, sier Andersen.

Per-Arne Andersen er utvikler og universitetslektor ved Universitetet i Agder. 📸: Privat
Per-Arne Andersen er utvikler og universitetslektor ved Universitetet i Agder. 📸: Privat Vis mer

Må være tålmodig

- Hva var det vanskeligste å få til?

- Det vanskeligste var å få algoritmene til å fungere. Dyp læring og dyp forsterkende læring er felt som er veldig nye, og metodene vi bruker for trening og optimalisering er ikke stabile. Derfor må man hele tiden justere på parameterne for å få en godt trent modell, sier Andersen.

Han legger til at det også er krevende å "være sta nok til å prøve og feile."

- Selv om alt stemmer overens med teorien, ser man at empirien ikke alltid er enig. Det gjelder å ha en god dose tålmodighet for å finne frem til en løsning som gir gode resultater, sier Andersen.