Objašnjeno jednostavno: Kako je AI program ovladao drevnom igrom Go

Kreditna slika

Riječ je o AlphaGo-u, Google DeepMind's Go koji igra AI koji je 2016. uzdrmao tehnološki svijet pobijedivši jednog od najboljih igrača svijeta, Lee Sedol.

Go je drevna igra na ploči koja ima toliko mogućih poteza u svakom koraku da je buduće pozicije teško predvidjeti - i zato je potrebna snažna intuicija i apstraktno mišljenje. Zbog toga se vjerovalo da samo ljudi mogu biti dobri u igranju Goa. Većina istraživača mislila je da će trebati desetljeća da se napravi AI koji bi mogao tako razmišljati. Zapravo objavljujem danas ovaj esej jer ovaj tjedan (8.-15. Ožujka) obilježava dvogodišnju obljetnicu meča AlphaGo i Sedol!

Ali AlphaGo se nije zaustavio na tome. 8 mjeseci kasnije, ona je igrala 60 profesionalnih igara na web stranici Go pod krinkom igrača nazvanog "Master" i pobijedila u svakoj pojedinačnoj igri protiv desetaka svjetskih prvaka, naravno bez odmora između igara.

To je, naravno, bilo ogromno postignuće na polju AI i izazvalo rasprave u svijetu o tome trebamo li biti uzbuđeni ili zabrinuti zbog umjetne inteligencije.

Danas ćemo uzeti originalni istraživački rad koji je objavio DeepMind u časopisu Nature i raščlaniti ga stav po paragraf koristeći jednostavni engleski jezik.

Nakon ovog eseja vrlo ćete jasno znati što je AlphaGo i kako to funkcionira. Nadam se također da nakon što pročitate ovo nećete vjerovati svim naslovima vijesti koje su novinari napravili da bi vas plašili zbog AI-ja, i umjesto toga se osjećati uzbuđeno zbog toga.

Ne morate znati kako igrati Idite da biste razumjeli ovaj rad. Zapravo sam o tome pročitao samo prve 3-4 retke u uvodnom paragrafu Wikipedije. Umjesto toga, začudo, koristim neke primjere iz osnovnog šaha da objasnim algoritme. Samo morate znati što je igra na ploči s dva igrača u kojoj se svaki igrač izmjenjuje, a na kraju je jedan pobjednik. Osim toga, ne trebate znati fiziku ili naprednu matematiku ili bilo što drugo.

Ovo će ga učiniti pristupačnijim ljudima koji su tek tek počeli učiti o strojnom učenju ili neuronskim mrežama. A posebno za one koji ne upotrebljavaju engleski jezik kao svoj prvi jezik (što može otežati čitanje takvih radova).

Ako prethodno nemate znanja o AI i neuronskim mrežama, ovdje možete pročitati odjeljak "Duboko učenje" jednog od mojih prethodnih eseja. Nakon što pročitate to, moći ćete proći kroz ovaj esej.

Ako želite da steknete i podrobnije razumijevanje Ojačavajućeg učenja (neobavezno čitanje), možete ga pronaći ovdje.

Evo izvornog papira ako ga želite pokušati pročitati:

Što se mene tiče: Bok, ja sam Aman, inženjer AI i autonomni roboti. Nadam se da će vam moj rad uštedjeti puno vremena i truda ako biste to sami proučavali.

Pričaš li Japanski? Ryohji Ikebe ljubazno je napisao kratku uspomenu na ovaj esej na japanskom jeziku, u nizu Tweeta.

Započnimo!

Sažetak

Kao što znate, cilj ovog istraživanja bio je osposobiti AI program za igranje Go na razini profesionalnih ljudskih igrača svjetske klase.

Da bih razumio ovaj izazov, dopustite mi da prvo razgovaram o nečem sličnom učinjenom za Chess. Početkom 1990-ih, IBM je izašao s računarom Deep Blue koji je porazio velikog prvaka Garryja Kasparova u šahu. (On je također vrlo zgodan momak. Svakako pročitajte nešto više o njemu kasnije!) Kako se Deep Blue igrao?

Pa, koristio se vrlo grubom metodom. Na svakom koraku igre pregledao je sve moguće legalne poteze koji su se mogli igrati i krenuo prema istraživanju svakog poteza da bi vidio što će se dogoditi. I nastavit će neko vrijeme istraživati ​​potez nakon poteza, formirajući svojevrsno ogromno stablo od tisuća poteza. A onda bi se vratio uz to stablo, promatrajući koji potezi su najvjerojatnije donijeli dobar rezultat. Ali, što mislimo pod "dobrim rezultatom"? Pa, Deep Blue je imao mnogo pomno osmišljenih šahovskih strategija koje su u nju ugradili stručni šahisti kako bi mu pomogli da donese bolje odluke - na primjer, kako odlučiti hoćemo li zaštititi kralja ili iskoristiti neku drugu korist? U tu su svrhu napravili poseban „algoritam procjene“ kako bi usporedili koliko su povoljne ili nepovoljne različite pozicije odbora (IBM tvrdo kodirane stručne šahovske strategije u ovu funkciju ocjenjivanja). I na kraju odabere pomno izračunati potez. Na sljedećem skretanju ona u osnovi opet prolazi kroz cijelu stvar.

Kao što vidite, to znači da je Deep Blue razmišljao o milijunima teorijskih pozicija prije igranja svakog poteza. Ovo nije bilo toliko impresivno u pogledu AI softvera Deep Blue, nego hardvera - IBM je tvrdio da je to jedno od najmoćnijih računala dostupnih na tržištu u to vrijeme. Moglo bi gledati 200 milijuna položaja ploče u sekundi.

Sad smo došli do Go. Samo mi vjerujte da je ova igra puno otvorenija, a ako biste isprobali Deep Blue strategiju na Go-u, ne biste mogli dobro igrati. Bilo bi toliko MNOG stajališta da se gleda na svaki korak da bi jednostavno bilo nepraktično da računalo prođe kroz taj pakao. Na primjer, na početnom potezu u šahu postoji 20 mogućih poteza. U Go prvom igraču je moguće 361 poteza, a ovaj opseg izbora ostaje širok tijekom cijele igre.

To je ono što oni misle pod "ogromnim prostorom za pretraživanje". Štoviše, u Go-u nije lako presuditi koliko je određeni položaj ploče povoljan ili nepovoljan u bilo kojem određenom trenutku igre - nekako morate cijelu igru ​​igrati neko vrijeme prije nego što utvrdite tko pobjeđuje. Ali recimo da ste magično imali načina da to oboje učinite. I tu dolazi duboko učenje!

Dakle, u ovom istraživanju DeepMind je koristio neuronske mreže da obavi oba ova zadatka (ako nikad niste čitali o neuronskim mrežama, evo opet veze). Osposobili su "neuronsku mrežu politike" da odluče koji su najosjetljiviji potezi u određenoj poziciji odbora (tako da je kao slijediti intuitivnu strategiju odabira poteza iz bilo koje pozicije). I trenirali su „neuronsku mrežu vrijednosti“ kako bi procijenili koliko je pogodan određeni raspored ploče za igrača (ili drugim riječima, koliko je vjerovatno da ćete osvojiti igru ​​s ove pozicije). Oni su prvo uspoređivali ove neuronske mreže s primjerima ljudskih igara (vaše staro dobro obično uobičajeno nadgledanje). Nakon ovoga, AI je bio sposoban do određene mjere oponašati ljudsku igru, pa je djelovao poput slabog ljudskog igrača. A kako bi još više osposobili mreže, natjerali su AI da igra protiv sebe milijune puta (ovo je dio „učvršćenja učenja“). S tim je AI postao bolji jer je imao više prakse.

S ove dvije mreže, DeepMind-ov AI mogao je dobro igrati protiv vrhunskih programa Go, svirajući programe koje su ranije izgradili drugi istraživači. Ovi drugi programi koristili su već popularan već postojeći algoritam igranja igara, nazvan „Monte Carlo Tree Search“ (MCTS). Više o tome kasnije.

Ali pogodite što još uvijek nismo razgovarali o stvarnom dogovoru. DeepMindov AI ne odnosi se samo na politiku i mreže vrijednosti. Ne koristi ove dvije mreže kao zamjenu za pretraživanje Monte Carlo stabla. Umjesto toga, koristi neuronske mreže da bi MCTS algoritam radio bolje… i to toliko bolje da je dostigao nadljudske razine. OVA poboljšana varijanta MCTS-a je "AlphaGo", AI koji je pobijedio Lee Sedol i ušao u povijest AI-a kao jedan od najvećih proboja ikada. U osnovi, AlphaGo je jednostavno poboljšana implementacija vrlo običnog algoritma informatike. Shvaćate li sada zašto se AI u svom sadašnjem obliku apsolutno ničega ne treba bojati?

Wow, puno smo vremena potrošili samo na Sažetak.

U redu - da bismo od ovog trenutka shvatili rad, prvo ćemo razgovarati o strategiji igre koja se zove algoritam pretraživanja Monte Carlo Tree Tree. Za sada ću samo objasniti ovaj algoritam na dovoljnoj dubini da bih mogao shvatiti ovaj esej. Ali ako želite saznati o tome detaljno, neki pametni ljudi su snimili i odlične videozapise i postove na blogovima o ovome:

1. Kratka video serija iz Udacity-a 2. Objašnjenje Jeffa Bradberryja za MCTS 3. MCTS tutorial od Fullstack Academy

Sljedeći je odjeljak dugačak, ali lako razumljiv (pokušat ću sve od sebe) i VELIKO važan, zato ostanite uz mene! Ostatak eseja ići će mnogo brže.

Razgovarajmo o prvom stavku gornjeg eseja. Sjećate se što sam rekao o Deep Blueu kako stvara ogromno stablo od milijuna pozicija na dasci i poteza na svakom koraku igre? Morali ste napraviti simulacije i pogledati i usporediti svaki mogući potez. Kao što sam rekao prije, to je bio jednostavan pristup i vrlo izravan pristup - ako bi prosječni softverski inženjer morao dizajnirati igru ​​koja igra AI i imati sva najjača računala svijeta, vjerojatno će osmisliti slično rješenje.

Ali razmislimo o tome kako ljudi sami igraju šah? Recimo da ste na određenoj ploči u sredini igre. Po pravilima igre možete napraviti desetak različitih stvari - premjestite ovaj zalog ovdje, pomaknite kraljicu dva kvadrata ovdje ili tri trga tamo, i tako dalje. No, doista napravite popis svih mogućih poteza koje možete napraviti sa svim svojim komadima, a zatim odaberite jedan potez s ovog dugog popisa? Ne - "intuitivno" se suzite na nekoliko ključnih poteza (recimo da smislite 3 razumna poteza) za koja mislite da imaju smisla, a onda se pitate što će se dogoditi u igri ako odaberete jedan od ova tri poteza. Možete potrošiti 15–20 sekundi razmatrajući svaki od ova 3 poteza i njihovu budućnost - i imajte na umu da tijekom tih 15 sekundi ne morate pažljivo planirati budućnost svakog poteza; možete jednostavno „otkotrljati“ nekoliko mentalnih poteza vođenih svojom intuicijom bez TOO-a pomnog razmišljanja (dobro, dobar igrač bi razmišljao dalje i dublje od prosječnog igrača). To je zato što imate ograničeno vrijeme, a ne možete točno predvidjeti što će protivnik raditi na svakom koraku u onoj lijepoj budućnosti koju kuhate u svom mozgu. Tako da ćete jednostavno morati pustiti da vas osjećaj crijeva vodi. Nazvat ću ovaj dio procesa razmišljanja kao "rollout", zato ga uzmite u obzir! Dakle, nakon što “izbacite” nekoliko razumnih poteza, konačno izgovorite zajebavanje i samo igrajte potez koji vam je najbolji.

Tada protivnik kreće. To je možda potez koji ste već dobro očekivali, što znači da ste sada prilično sigurni u ono što trebate učiniti sljedeće. Ne morate opet trošiti previše vremena na izvode. ILI, može biti da vas protivnik udari prilično cool potezom koji niste očekivali, tako da morate biti još pažljiviji sa svojim sljedećim potezom. Ovako se igra nastavlja, a kako se bliži i bliži završnoj točki, lakše ćete predvidjeti ishod svojih poteza - tako da vam izvođenje ne traje toliko vremena.

Svrha ove duge priče je opisati što MCTS algoritam radi na površnoj razini - oponaša gore spomenuti proces razmišljanja tako što će svaki put izraditi „stablo pretraživanja“ poteza i položaja. Opet, za više detalja trebali biste provjeriti linkove koje sam ranije spomenuo. Inovacija je da umjesto da prođe kroz sve moguće poteze na svakoj poziciji (što je Deep Blue učinio), ona umjesto toga inteligentno odabire mali skup razumnih poteza i istražuje one. Da bi ih istražio, on “izvlači” budućnost svakog od tih poteza i uspoređuje ih na temelju njihovih zamišljenih rezultata. (Ozbiljno - ovo je sve što mislim da trebate razumjeti ovaj esej)

Sada - povratak na snimku zaslona s papira. Go je "savršena igra informacija" (molimo pročitajte definiciju na linku, ne brinite da nije zastrašujuće). I teoretski, za takve igre, bez obzira na kojoj se poziciji nalazite u igri (čak i ako ste upravo igrali 1-2 poteza), moguće je da točno možete pogoditi tko će pobijediti ili izgubiti (pod pretpostavkom da oba igrača igraju "Savršeno" od tog trenutka nadalje). Nemam pojma tko je došao do ove teorije, ali to je temeljna pretpostavka u ovom istraživačkom projektu i djeluje.

To znači da, s obzirom na stanje u igri, postoji funkcija v * (s) koja može predvidjeti ishod, recimo vjerojatnost da ćete pobijediti u ovoj igri, od 0 do 1. Zovu je "optimalna funkcija vrijednosti" , Budući da je vjerojatnije da ćete na nekim pozicijama dobiti pobjedu od drugih pozicija na ploči, oni se mogu smatrati vrednijima od ostalih. Dopustite mi da to ponovim: Vrijednost = Vjerojatnost između 0 i 1 kada ste pobijedili u igri.

Ali pričekajte - recite da je jedna djevojka po imenu Foma sjedila pored vas dok igrate šah, a ona vam na svakom koraku govori ako pobjeđujete ili gubite. "Pobjeđujete ... gubite ... ne, još uvijek gubite ..." Mislim da vam to ne bi puno pomoglo u odabiru koraka koji trebate napraviti. Također bi bila prilično neugodna. Ono što bi vam umjesto toga moglo pomoći jeste ako biste nacrtali cijelo stablo svih mogućih poteza koje možete učiniti, i stanja do kojih bi ti potezi vodili - i tada bi vam Foma rekao za cijelo stablo koje države osvajaju i koje su države gubite države. Tada možete odabrati poteze koji će vas voditi ka pobjedničkim državama. Odjednom vam je Foma partner u zločinu, a ne dosadan prijatelj. Ovdje se Foma ponaša kao funkcija optimalne vrijednosti v * (s). Ranije se vjerovalo da nije moguće imati točnu vrijednost vrijednosti poput Foma za igru ​​Go, jer su igre imale toliko neizvjesnosti.

Ali, čak i ako ste imali divnu Fomu, ova strategija čudotvornosti izvlačenja svih mogućih pozicija koje će Foma procijeniti neće funkcionirati baš u stvarnom svijetu. U igri poput Šah ili Go, kao što smo već rekli, ako pokušate zamisliti čak 7–8 poteza u budućnost, može postojati toliko mogućih pozicija da nemate dovoljno vremena da ih sve provjerite pomoću Foma.

Dakle, Foma nije dovoljna. Morate smanjiti popis poteza na nekoliko razumnih poteza koje možete razvaljati u budućnost. Kako će to učiniti vaš program? Uđi Lusha. Lusha je vješt šahist i entuzijasta koji je desetljećima gledao kako veliki majstori igraju šah jedan protiv drugog. Ona može pregledati vašu poziciju odbora, brzo pregledati sve raspoložive poteze koje možete učiniti i reći vam koliko je vjerovatno da bi šahist izveo bilo koji od tih poteza ako bi sjeli za vaš stol. Ako imate 50 mogućih poteza u jednom trenutku, Lusha će vam reći vjerojatnost da će svaki potez odabrati stručnjak. Naravno, nekoliko razumnih poteza imat će mnogo veću vjerojatnost, a drugi besmisleni potezi vrlo vjerojatno. Na primjer: ako je u šahu recimo da je vaša kraljica u opasnosti u jednom kutu igre, možda ćete i dalje imati mogućnost pomicanja maloga zalagaonice u neki drugi kut igre, ona je vaša funkcija politike, p (a \ s) , Za dano stanje, ona vam može dati vjerojatnost za sve moguće poteze koje bi stručnjak napravio.

Wow - možete potražiti Lushevu pomoć koja će vas voditi u odabiru nekoliko razumnih poteza, a Foma će vam reći vjerojatnost pobjede u svakom od tih poteza. Možete odabrati potez koji i Foma i Lusha odobravaju. Ili, ako želite biti dodatno oprezni, možete iskontrolirati poteze koje je odabrao Lusha, Foma ih procijeniti, odabrati nekoliko njih kako biste ih dalje razvili u budućnost, i dopustite da vam Foma i Lusha pomognu predvidjeti VELIKO u budućnost igre - mnogo brže i učinkovitije od prolaska kroz sve poteze na svakom koraku u budućnost. To je ono što oni misle pod "smanjenjem prostora za pretraživanje". Upotrijebite funkciju vrijednosti (Foma) za predviđanje ishoda i koristite funkciju politike (Lusha) da biste dobili vjerojatnosti velikog master-a da pomognete suziti poteze koje ukočite. Nazivaju se "Monte Carlo rollouts". Zatim dok napredujete od budućnosti do sada, možete uzeti prosječne vrijednosti svih različitih poteza koje ste izveli i odabrati najprikladniju radnju. Do sada, ovo je djelovalo samo na slaboj amaterskoj razini u Go-u, jer političke funkcije i vrijednosne funkcije koje su koristile za vođenje ovih izlaza nisu bile tako sjajne.

Uf.

Prvi redak je razumljiv. U MCTS-u možete započeti s nekvalificiranom Fomom i nekvalificiranom Lusom. Što više igrate, bolji će vam biti oni u predviđanju solidnih ishoda i poteza. "Sužavanje pretraživanja snopom radnji velike vjerojatnosti" samo je sofisticiran način da kažete: "Lusha vam pomaže suziti poteze koje trebate izvesti tako da im dodijelite vjerojatnosti da će ih stručnjak igrati". Prethodni rad koristio je ovu tehniku ​​za postizanje snažnih amaterskih AI igrača, čak i uz jednostavne (ili "plitke" kako ih nazivaju) političke funkcije.

Da, revolucionarne neuronske mreže izvrsne su za obradu slike. A budući da neuronska mreža uzima određeni ulaz i daje izlaz, ona je u osnovi funkcija, zar ne? Tako možete koristiti neuronsku mrežu da postanete složena funkcija. Tako možete jednostavno prikazati sliku položaja ploče i pustiti neuronsku mrežu da sama shvati što se događa. To znači da je moguće stvoriti neuronske mreže koje će se ponašati VJEROČNO točne funkcije politike i vrijednosti. Ostalo je prilično samorazumljivo.

Ovdje razgovaramo o tome kako su Foma i Lusha trenirali. Za osposobljavanje mreže politika (predviđanje za određenu poziciju u kojoj će se birati stručnjaci) jednostavno koristite primjere ljudskih igara i koristite ih kao podatke za dobro staro nadzirano učenje.

I želite osposobiti još jednu malo drugačiju verziju ove mreže pravila koja se koristi za izvođenje; ovaj će biti manji i brži. Recimo samo da, budući da je Lusha tako iskusna, treba vremena da obradi svaku poziciju. Dobro je započeti postupak sužavanja, ali ako ga pokušate navesti da ponovi postupak, ipak će joj trebati malo previše vremena. Dakle, trenirate * bržu mrežu pravila * za proces iznošenja (nazvat ću ga ... Lushin mlađi brat Jerry? Znam da znam, dosta s tim imenima). Nakon toga, nakon što dovoljno uvježbavate spori i brzi mrežni pravilnik koristeći podatke o ljudskim igračima, možete pokušati pustiti Lushu da igra protiv sebe na dasci Go nekoliko dana i dobiti više prakse. Ovo je dio učenja ojačanja - stvaranje bolje verzije mreže politika.

Zatim trenirate Foma za predviđanje vrijednosti: određivanje vjerojatnosti da ćete pobijediti. Dopuštate AI vježbu da se iznova i iznova igra u simuliranom okruženju, promatrate krajnji rezultat svaki put i učite iz njegovih grešaka kako biste postali bolji i bolji.

Neću ulaziti u detalje kako se te mreže treniraju. Više tehničkih detalja možete pročitati u kasnijem dijelu rada ('Metode') koji ovdje nisam obratio. Zapravo, stvarna svrha ovog konkretnog rada nije prikazati kako su koristili učenje ojačanja u tim neuronskim mrežama. Jedan od ranijih radova DeepMind-a, u kojem su AI-u podučavali igranje ATARI igara, već je detaljno raspravljao o nekim tehnikama učenja ojačanja (I objašnjenje tog rada već sam napisao ovdje). U ovom radu, kao što sam lagano spomenuo u Sažetak i također podcrtano na gornjoj snimci zaslona, ​​najveća inovacija bila je činjenica da su koristili RL s neuronskim mrežama za poboljšanje već popularnog algoritma igranja, MCTS. RL je sjajan alat u okviru alata koji su koristili za precizno prilagođavanje neuronskih mreža politike i vrijednosti nakon redovnog nadziranog treninga. Ovaj istraživački rad govori o dokazu koliko je ovo alat svestran i odličan, a ne o tome kako vas podučava kako ga koristiti. Na televizijskom lingo-u, Atari papir je bio RL infomercial i ovaj AlphaGo papir je reklama.

U redu, konačno smo završili s dijelovima „uvoda“. Do sad već imate vrlo dobar osjećaj za ono o čemu se AlphaGo radi.

Zatim ćemo malo dublje ući u svaku stvar o kojoj smo gore razgovarali. Možda ćete vidjeti neke ružne i opasno izgledajuće matematičke jednadžbe i izraze, ali oni su jednostavni (objašnjavam ih sve). Opustiti.

Kratka napomena prije nego što krenete dalje. Želite li mi pomoći napisati više takvih eseja koji objašnjavaju cool istraživačke radove? Ako ste ozbiljni, bilo bi mi drago raditi s vama. Molimo ostavite komentar i ja ću kontaktirati s vama.

Fotografija dviju japanskih žena kako igraju Go, smještena ovdje za slučaj da vam je već dosadno gledati duge ploče teksta.

Dakle, prvi je korak u obuci naše politike NN (Lusha) kako bismo predvidjeli koje će poteze vjerovatno igrati stručnjak. Cilj NN-a je omogućiti AI da igra slično ljudskom stručnjaku. Ovo je konvolucionarna neuronska mreža (kao što sam već spomenuo, posebna vrsta NN-a koja je vrlo korisna u obradi slike) koja uzima pojednostavljenu sliku rasporeda ploča. "Nelinearnosti ispravljača" su slojevi koji se mogu dodati arhitekturi mreže. Pružaju mu mogućnost učenja složenijih stvari. Ako ste ikada prije trenirali NN, možda ste koristili sloj "ReLU". To su ovi.

Podaci o treninzima ovdje su bili u obliku nasumičnih parova položaja na daskama, a oznake su radnje koje su ljudi birali kad su bili na tim položajima. Samo redovito nadzirano učenje.

Ovdje koriste "stohastički gradijent ASCENT". Pa, ovo je algoritam povratnog širenja. Ovdje pokušavate maksimizirati nagradnu funkciju. A funkcija nagrađivanja samo je vjerojatnost akcije koju je predvidio ljudski stručnjak; želite povećati ovu vjerojatnost. Ali hej - ne trebaš previše razmišljati o ovome. Uobičajeno trenirate mrežu tako da minimizira funkciju gubitaka, što je u osnovi pogreška / razlika između predviđenog ishoda i stvarne oznake. To se naziva gradijent DESCENT. U stvarnoj provedbi ovog istraživačkog rada oni su se zaista koristili redovitim nagibom prema nagibu. Jednostavno možete pronaći funkciju gubitka koja se ponaša suprotno funkciji nagrađivanja tako da minimiziranje gubitka maksimizira nagradu.

Mreža politika ima 13 slojeva, a naziva se mrežom „SL politika“ (SL = učenje pod nadzorom). Podaci su došli iz ... Samo ću reći da je to popularna web stranica na kojoj milijuni ljudi igraju Go. Koliko je dobra bila ova mreža pravila SL?

Bio je točniji od onog što su drugi istraživači ranije radili. Ostatak stavka je sam po sebi razumljiv. Što se tiče "politike rollouta", sjećate se prije nekoliko odlomaka kako je Lusha mreža pravila SL-a spora pa se ne može dobro integrirati s algoritmom MCTS? I mi smo trenirali još jednu bržu verziju Lushe zvane Jerry koji joj je bio mlađi brat? Pa, ovo se odnosi na Jerryja. Kao što vidite, Jerry je tek upola precizniji od Lushe, ALI to je tisućama puta brže! Doista ćemo pomoći brže proći uvrštene simulacije budućnosti kada primijenimo MCTS.

Za ovaj sljedeći odjeljak, morate * znati * već o Ojačavanju učenja, ali tada ćete morati pretpostaviti da sve što kažem funkcionira. Ako zaista želite ukopati se u detalje i uvjeriti se u sve, možda biste prvo trebali pročitati malo o RL-u.

Jednom kada imate mrežu SL-a, osposobljeni za nadzor korištenja poteza ljudskog igrača s podacima o ljudskim potezima, kao što sam rekao prije, morate joj dopustiti da sama vježba i da se poboljša. To radimo ovdje. Dakle, samo uzmete mrežu pravila SL-a, spremite je u datoteku i napravite drugu kopiju.

Zatim upotrijebite učenje pojačanja kako biste ga precizno prilagodili. Evo, natjerate mrežu da igra protiv sebe i učite iz ishoda.

Ali postoji problem u ovom stilu treninga.

Ako samo vječno vježbate protiv JEDNOG protivnika, a taj protivnik također vježba isključivo s vama, nema mnogo novog učenja što možete učiniti. Jednostavno ćeš trenirati kako vježbati kako pobijediti TO JEDNOG igrača. To je, pogađate, previdljivo: vaše tehnike igraju dobro protiv jednog protivnika, ali nemojte generalizirati dobro protivnike. Pa kako to popraviti?

Pa, svaki put kada fino podesite neuronsku mrežu, ona postaje nešto drugačija vrsta igrača. Tako možete ovu verziju neuronske mreže spremiti na popis "igrača", koji se svi ponašaju malo drugačije? Sjajno - sada dok trenirate neuronsku mrežu možete je nasumično natjerati da igra protiv mnogo različitih starijih i novijih verzija protivnika, izabranih s tog popisa. Verzije su istog igrača, ali svi igraju malo drugačije. I što više trenirate, VIŠE igrača morate trenirati još više! Bingo!

U ovom treningu jedini cilj koji vodi u trenažnom procesu je krajnji cilj, tj. Pobjeda ili gubitak. Ne trebate posebno osposobljavati mrežu da biste činili stvari poput zauzimanja veće površine na ploči itd. Samo joj dajete sve moguće legalne poteze koje može izabrati i kažete, „morate pobijediti“. I zato je RL tako svestran; može se koristiti za obučavanje politika ili mreža vrijednosti za bilo koju igru, a ne samo Go.

Ovdje su testirali koliko je ta mreža RL pravila bila samo po sebi bez MCTS algoritma. Kao što biste se sjetili, ova mreža može izravno zauzeti položaj ploče i odlučiti kako će ju stručnjak igrati - tako da je možete koristiti za samostalno igranje igara. Pa, rezultat je bio da je RL fino podešena mreža pobijedila protiv SL mreže koja je bila osposobljena samo za ljudske poteze. Pobjeđivala je i u ostalim jakim Go igranim programima.

Ovdje treba napomenuti da je i prije osposobljavanja ove mreže politika RL mreža politika politika SL bila već bolja od stanja tehnike - a sada se još poboljšala! A nismo stigli ni do ostalih dijelova procesa poput mreže vrijednosti.

Jeste li znali da dječji pingvini mogu kihnuti glasnije nego što pas može lajati? Zapravo to nije istina, ali mislio sam da biste se ovdje željeli malo šaliti da biste odvratili pozornost od gore zastrašujućih jednadžbi. Ponovo do eseja: ovdje smo završili s obukom Lushe. Vratite se Fomi - sjetite se "funkcije optimalne vrijednosti": v * (s) -> koja vam samo govori koliko je vjerovatno da ćete pobijediti u svom trenutnom položaju na ploči ako od tog trenutka oba igrača igraju savršeno? Dakle, očigledno da bismo za treniranje NN-a koji bi postao naša vrijednosna funkcija potreban nam je savršen igrač ... kojeg nemamo. Stoga koristimo samo najjači igrač koji se događa kao naša politika pravila o RL-u.

Uzima se trenutno stanje državne ploče i daje vjerojatnost da ćete pobijediti u igri. Igrate igru ​​i upoznate ishod (pobjedu ili poraz). Svaka stanja igre djeluju kao uzorak podataka, a ishod te igre djeluje kao oznaka. Dakle, igrajući igru ​​u 50 poteza, imate 50 uzoraka podataka za predviđanje vrijednosti.

Lol, ne. Taj je pristup naivan. Ne možete koristiti svih 50 poteza iz igre i dodati ih skupu podataka.

Skup podataka o treningu morao je biti izabran pažljivo kako bi se izbjeglo prekomjerno uklapanje. Svaki potez u igri je vrlo sličan sljedećem, jer se pomičete samo jednom i to vam daje novu poziciju, zar ne? Ako uzmete države na svih 50 tih poteza i dodate ih u podatke o treningu s istom oznakom, u osnovi imate puno "vrsta duplikata" podataka, a to uzrokuje prekomjerno opremanje. Da biste to spriječili, birate samo vrlo izražena stanja igara. Tako, na primjer, umjesto svih 50 poteza igre, odaberete samo 5 i dodate ih u set za trening. DeepMind je zauzeo 30 milijuna pozicija iz 30 milijuna različitih igara, kako bi smanjio bilo kakve šanse da postoje duplicirani podaci. I uspjelo je!

Ovdje je nešto konceptualno: postoje dva načina za procjenu vrijednosti položaja odbora. Jedna je mogućnost čarobna funkcija optimalne vrijednosti (poput one koju ste prethodno trenirali). Druga mogućnost je da se jednostavno otkotrljate u budućnost koristeći svoju trenutnu politiku (Lusha) i da pogledate konačni ishod ovog izvoda. Očito, prava igra rijetko bi išla prema vašim planovima. No DeepMind je usporedio kako to rade obje mogućnosti. Također možete napraviti mješavinu obje ove mogućnosti. O ovom „parametru miješanja“ naučit ćemo se nešto kasnije, stoga napišite ovaj koncept!

Pa, vaša pojedinačna neuronska mreža koja pokušava približiti optimalnu funkciju vrijednosti je VEĆA BOLJA nego raditi tisuće mentalnih simulacija koristeći politiku izvlačenja! Foma je ovdje stvarno razbio dupe. Kada su zamijenili politiku brzog pokretanja s dvostruko preciznom (ali sporom) RL politikom Lusha, i napravili tisuće simulacija s tim, to je bilo bolje nego Foma. Ali samo malo bolje i presporo. Dakle, Foma je pobjednica ovog natjecanja i dokazala je da je ne može zamijeniti.

Sad kad smo obučili funkcije politike i vrijednosti, možemo ih kombinirati s MCTS-om i roditi našeg bivšeg svjetskog prvaka, uništavača velikih majstora, proboj generacije, težine dvjesto šezdeset i osam kilograma, jedan i jedini Alphaaaaa GO !

U ovom bi dijelu idealno trebali malo dublje razumjeti unutarnje djelovanje algoritma MCTS, ali ono što ste do sada naučili treba biti dovoljno da biste dobili dobar osjećaj o ovome što se ovdje događa. Jedino što biste trebali primijetiti je kako koristimo procjene vjerojatnosti i vrijednosti politike. Kombiniramo ih tijekom izvađanja rolni kako bismo suzili broj poteza koje želimo uvesti u svakom koraku. Q (s, a) predstavlja funkciju vrijednosti, a u (s, a) pohranjena vjerojatnost za tu poziciju. Objasnit ću.

Sjetite se da mreža pravila koristi nadzirano učenje za predviđanje stručnih poteza? I ne daje vam samo najvjerovatniji potez, već vam daje vjerojatnost za svaki mogući potez koji govore koliko je vjerojatno da će biti stručni potez. Ova se vjerojatnost može pohraniti za svaku od tih radnji. Tu ga zovu "prethodna vjerojatnost", a očito ga koriste dok odabiru koje će akcije istraživati. U osnovi, da odlučite hoćete li istražiti određeni potez ili ne, uzmite u obzir dvije stvari: Prvo, igrajući ovaj potez, kolika je vjerojatnost da ćete pobijediti? Da, već imamo svoju "mrežu vrijednosti" da odgovorimo na ovo prvo pitanje. I drugo je pitanje kolika je vjerojatnost da će stručnjak odabrati ovaj potez? (Ako je struja super vjerojatna da će je odabrati stručnjak, zašto uopće gubiti vrijeme na to. To dobivamo iz mreže politika)

Zatim razgovarajmo o "parametru miješanja" (vidi vratio se na to!). Kao što je ranije spomenuto, za procjenu pozicija imate dvije mogućnosti: jednu, jednostavno koristite vrijednost vrijednosti koju ste cijelo vrijeme koristili za procjenu stanja. I dva, možete pokušati brzo igrati rollout igru ​​sa svojom trenutnom strategijom (pod pretpostavkom da će i drugi igrač igrati slično) i vidjeti hoćete li pobijediti ili izgubiti. Vidjeli smo kako je vrijednost vrijednosti bolja od izvođenja rollouts općenito. Ovdje kombiniraju oboje. Svakom predviđanju pokušavate dati važnost od 50 do 50, ili 40–60, ili 0–100, i tako dalje. Ako prvom dodate% X, na drugo ćete morati dodati 100-X. To znači ovaj parametar za miješanje. Te rezultate hit i suđenja vidjet ćete kasnije u radu.

Nakon svakog umetanja ažurirate svoje stablo pretraživanja s bilo kojim informacijama koje ste stekli tijekom simulacije kako bi vam sljedeća simulacija bila inteligentnija. I na kraju svih simulacija samo odaberete najbolji potez.

Zanimljiv uvid ovdje!

Sjećate se kako je RL fino prilagođena politika NN bila bolja od samo SL-ove obučene politike NN? Ali kad ih stavite u MCTS algoritam AlphaGo-a, korištenje NN obučenog čovjeka pokazalo se boljim izborom od fino podešenog NN-a. Ali u slučaju funkcije vrijednosti (za koju biste se prisjetili da koristi jakog igrača za približavanje savršenom igraču), obuka Foma pomoću RL pravila djeluje bolje nego vježbanje s njom prema politici SL.

„Učinjanje ove procjene iziskuje mnogo računalne snage. Zaista smo morali izvući velike puške da bismo mogli izvoditi ove proklete programe. "

Još jedna fotografija, iz prve igre AlphaGo vs Lee Sedol.

Samorazumljivo.

"LOL, naš je program doslovno skinuo hlače sa svakog drugog programa koji je došao prije nas"

To se opet vraća na onaj "parametar miješanja". Tijekom ocjenjivanja pozicija, davanje jednake važnosti i vrijednosti vrijednosti i prebacivanjima djeluje bolje nego samo jedno od njih. Ostatak je nerazumljiv i otkriva zanimljiv uvid!

Samorazumljivo.

Samorazumljivo. Ali ponovno pročitajte onu crvenu podvučenu rečenicu. Nadam se da sada možete jasno vidjeti da je ova crta ovdje zapravo prilično sažetak onoga što se radi o cijelom ovom istraživačkom projektu.

Završni odlomak. "Dajmo se još malo hvaliti ovdje, jer smo to zaslužili!" :)

Oh, i ako ste znanstvenik ili tehnološka tvrtka, i trebate pomoć u objašnjavanju svoje znanosti ne-tehničkim ljudima za marketing, PR ili trening itd., Mogu vam pomoći. Pošaljite mi poruku na Twitteru: @mngrwl