Evoliucinis algoritmas vaizdo žaidimuose pranoksta gilaus mokymosi mašinas

Dėl neuroninių tinklų ir gilaus mokymosi metodų nesunku įsivaizduoti, kad kompiuterių mokslo pasaulį sudaro mažai kas kita. Galų gale, neuroniniai tinklai pradėjo pranokti žmones atliekant tokias užduotis kaip objektų ir veidų atpažinimas ir žaidimuose, tokiuose kaip šachmatai, Go ir įvairūs arkadiniai vaizdo žaidimai.





Šie tinklai yra pagrįsti žmogaus smegenų veikimo būdu. Niekas negali turėti daugiau potencialo už tai, tiesa?

Ne visai. Visiškai kitokio tipo skaičiavimas gali būti daug galingesnis nei neuroniniai tinklai ir gilus mokymasis. Ši technika pagrįsta procesu, kuris sukūrė žmogaus smegenis – evoliucija. Kitaip tariant, pasikartojančių pokyčių ir atrankos seka, kuri sukūrė sudėtingiausias ir pajėgiausias žmonijai žinomas mašinas – akį, sparną, smegenis ir pan. Evoliucijos galia yra stebuklas.

Štai kodėl kompiuterių mokslininkai jau seniai bandė panaudoti jos galimybes. Vadinamoji evoliucinė kompiuterija per 30 metų nuo tada, kai pirmą kartą buvo pradėta naudoti optimizuojant traktorių gamyklos gamybos linijas, padarė keletą nuostabių žygdarbių.



Tačiau per pastaruosius kelerius metus ši kompiuterių mokslo sritis turėjo groti antru smuiku prieš giluminio mokymosi mašinas ir jų didžiulę sėkmę.

Šiandien atrodo, kad lentelės apsivers Denniso Wilsono ir kelių kolegų iš Tulūzos universiteto Prancūzijoje darbo. Šie vaikinai parodė, kaip evoliucinis kompiuteris gali prilygti giliai besimokančių mašinų našumui. simbolinė užduotis, dėl kurios jie pirmą kartą išgarsėjo 2013 m. – sugebėjimas pranokti žmones arkadiniuose vaizdo žaidimuose pvz., „Pong“, „Breakout“ ir „Space Invaders“. Darbe teigiama, kad evoliucinis skaičiavimas turėtų būti paplitęs taip pat plačiai, kaip ir giliu mokymusi pagrįsti ryšiai.

Evoliucinis skaičiavimas veikia visiškai kitaip nei neuroniniai tinklai. Tikslas yra sukurti kompiuterinį kodą, kuris išspręstų konkrečią problemą, naudojant metodą, kuris yra šiek tiek priešingas.



Įprastas būdas sukurti kodą yra parašyti jį iš pirmųjų principų, turint omenyje konkretų tikslą.

Evoliucinis skaičiavimas naudoja kitokį metodą. Jis prasideda visiškai atsitiktinai sugeneruotu kodu. Ir ne tik viena jo versija, bet daugybė versijų, kartais šimtai tūkstančių atsitiktinai surinktų kodo dalių.

Kiekvienas iš šių kodų yra išbandomas, siekiant išsiaiškinti, ar jis pasiekia reikiamą tikslą. Ir, žinoma, visas kodas yra baisus, nes jis generuojamas atsitiktinai.



Tačiau atsitiktinai kai kurios kodo dalys yra šiek tiek geresnės nei kitos. Tada šios dalys atkuriamos naujos kartos kodu, kuriame yra daugiau geresnių kodų kopijų.

Tačiau kita karta negali būti identiška pirmosios kartos kopija. Vietoj to, jis turi kažkaip pasikeisti. Šie pakeitimai gali apimti dviejų terminų perjungimą kode – tam tikrą taškinę mutaciją. Arba jie gali apimti du kodus, kurie perpjaunami per pusę ir keičiamos pusės, pavyzdžiui, seksualinė rekombinacija.

Tada kiekviena naujoji karta yra išbandoma, siekiant išsiaiškinti, kaip gerai ji veikia. Geriausi kodo fragmentai pirmiausia atkuriami kitoje kartoje ir pan.



Tokiu būdu kodas vystosi. Laikui bėgant jis tampa geresnis, o po daugelio kartų, esant tinkamoms sąlygoms, jis gali tapti geresnis, nei gali sukurti bet kuris žmogaus programuotojas.

Kompiuterių mokslininkai sėkmingai taikė evoliucinius metodus sprendžiant problemas, pradedant robotų projektavimu ir baigiant orlaivių dalių kūrimu.

Tačiau jis nukrito iš palankumo dėl didžiulio susidomėjimo giliu mokymusi. Taigi svarbus klausimas yra, ar jis gali atitikti gilaus mokymosi mašinų našumą. Norėdami tai išsiaiškinti, Wilsonas ir bendradarbiai panaudojo metodą, kad sukurtų kodą, galintį valdyti 1980-ųjų ir 1990-ųjų arkadinius kompiuterinius žaidimus.

Šiuos žaidimus galima rasti duomenų bazėje, vadinamoje Arcade Learning Environment, kuri vis dažniau naudojama įvairių tipų algoritmų mokymosi elgsenai patikrinti. Duomenų bazėje yra 61 „Atari“ žaidimas, pvz., „Pong“, „Space Invaders“, „Breakout“ ir „Kung Fu Master“.

Užduotis yra sukurti algoritmą, kuris galėtų žaisti tokį žaidimą kaip Pong, žiūrint tik į išvestį ekrane, taip pat, kaip žaidžia žmonės. Taigi algoritmas turi išanalizuoti kiekvieną žaidimo poziciją ir nuspręsti, kaip judėti, kad padidintų rezultatą.

Visų žaidimų valdikliai yra vienodi. Tai atitinka aštuonias kryptis, kurias galima perkelti valdikliui (aukštyn, žemyn, kairėn ir dešinėn plius keturios įstrižainės kryptys), mygtuko paspaudimą, tuos pačius aštuonis judesius kartu su mygtuko paspaudimu ir nieko nedarydami. Ne visuose žaidimuose naudojamos visos 18 galimų derinių, o kai kuriuose – vos keturios.

Pirmiausia reikia sukurti kodą. Evoliuciniam požiūriui reikalingas terminų žodynas, kurį galima sujungti į kompiuterinį kodą. Terminai svyruoja nuo paprastų veiksmų, pvz., PRIDĖTI (x+y)/2, iki sudėtingesnių, pvz., grąžinti 1 elemento x vektorių, jei x yra skaliarinis.

Šį žodyną sudarančių terminų pasirinkimas yra svarbus, o Wilsonas ir bendrai naudoja rinkinį, jau apibrėžtą Dekarto genetiniam programavimui (taip vadinama jų technika).

Procesas prasideda atsitiktinai sukuriant kodą, kuriame yra 40 terminų. Tai yra programos genomas. Tada šis genomas išbandomas, kad būtų galima pamatyti, kaip gerai jis žaidžia žaidimą, įvertinus pagal rezultatą. Priklausomai nuo to, kaip gerai jis veikia, genomas atkuriamas su mutacijomis ir vėl išbandomas ir pan. Iš viso komanda tokiu būdu išbandė 10 000 genomų.

Rezultatai leidžia įdomiai skaityti. Iš pradžių genomai yra baisūs žaidžiant žaidimą. Tačiau laikui bėgant jie gerėja. Ir po daugelio kartų jie groja gerai, kartais geriau nei žmonės.

Daugelis genomų baigė žaisti visiškai naujas žaidimų strategijas, dažnai sudėtingas. Tačiau kartais jie rasdavo paprastų, kurių žmonės nepastebėjo.

Pavyzdžiui, žaidžiant Kung Fu meistrą, evoliucinis algoritmas atrado, kad vertingiausia ataka buvo pritūpimas. Pritūpimas yra saugesnis, nes išvengia pusės į žaidėją nukreiptų kulkų, taip pat puola bet ką šalia. Algoritmo strategija buvo pakartotinai naudoti šį manevrą be jokių kitų veiksmų. Žvelgiant atgal, naudoti pritūpimą yra prasminga.

Tai nustebino tyrime dalyvavusius žmones. Taikydamas šią strategiją ranka, buvo pasiektas geresnis rezultatas nei žaidžiant žaidimą įprastai, o dabar autorius šiame žaidime atakuodamas naudoja tik pritūpimus, sako Wilsonas ir kt.

Apskritai, sukurtas kodas puikiai veikė daugelį žaidimų, netgi pralenkdamas žmones tokiuose žaidimuose kaip Kung Fu Master. Lygiai taip pat svarbu, kad sukurtas kodas yra toks pat geras, kaip ir daugelis gilaus mokymosi metodų, ir pranoksta juos tokiuose žaidimuose kaip Asteroids, Defender ir Kung Fu Master.

Taip pat greičiau pasiekiamas rezultatas. Nors programos yra palyginti mažos, daugelis valdiklių yra konkurencingi su moderniausiais „Atari“ etalonų rinkinio metodais ir reikalauja mažiau mokymo laiko, sako Wilsonas ir kt.

Išplėtotas kodas turi dar vieną pranašumą. Kadangi jis mažas, nesunku suprasti, kaip jis veikia. Priešingai, gerai žinoma gilaus mokymosi metodų problema yra ta, kad kartais neįmanoma žinoti, kodėl jie priėmė konkrečius sprendimus, ir tai gali turėti praktinių ir teisinių pasekmių.

Apskritai tai yra įdomus darbas, kuris turėtų įspėti kompiuterių mokslininkams, kurie daugiausia dėmesio skiria giliajam mokymuisi, kad jiems gali trūkti gudrybės. Evoliucinis metodas yra galinga alternatyva, kurią galima pritaikyti įvairiose situacijose.

Iš tiesų, kai kurie tyrinėtojai pradėjo jį naudoti kurdami geresnius giluminio mokymosi įrenginius. Kas gali nutikti ne taip?

Nuoroda: https://arxiv.org/abs/1806.05695 : tobulėjančios paprastos programos, skirtos žaisti „Atari“ žaidimus

paslėpti