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 za nju potrebna snažna intuicija i apstraktno razmišljanje. 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 tu nije zaustavio. 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.

Naravno da je ovo bilo ogromno postignuće na polju AI i potaknulo 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 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.

Zabrinuti zbog rastućih dostignuća AI je poput zabrinutosti zbog rastućih sposobnosti Microsofta Powerpoint. Da, s vremenom će biti bolje s dodavanjem novih značajki, ali to ne može samo nekontrolirano prerasti u nekakvo holivudsko čudovište.

Ne biste trebali znati kako igrati Idi da biste razumjeli ovaj rad. Zapravo sam 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 bolje razumjeti Ojačavanje 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. Obavezno 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 naprijed da istraži svaki potez kako 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 njega ugradili stručni šahisti kako bi mu pomogli donijeti bolje odluke - na primjer, kako odlučiti hoćemo li zaštititi kralja ili dobiti prednost negdje drugdje? 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 slijedeć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 u hardveru - 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 da ste isprobali Deep Blue strategiju na Go-u, nećete moći igrati dobro. 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 oni znače pod "ogromnim pretraživačkim prostorom". Štoviše, u Go-u nije tako lako prosuditi koliko je određeni položaj ploče povoljan ili nepovoljan u bilo kojem određenom trenutku igre - nekako morate igrati cijelu igru ​​za dok prije nego što možete odrediti tko pobjeđuje. Ali recimo da ste čarobno imali način da to učinite i jedno i drugo. I tu dolazi duboko učenje!

Dakle, u ovom istraživanju DeepMind je koristio neuronske mreže da obavi oba ova zadatka (ako nikada još niste čitali o neuronskim mrežama, evo opet veze). Osposobili su "neuronsku mrežu politika" da odluče koji su najosjetljiviji potezi u određenoj poziciji odbora (tako da je slijeđenje intuitivne strategije za odabir poteza s bilo koje pozicije). I trenirali su „neuronsku mrežu vrijednosti“ da procijene koliko je pogodan određeni raspored ploče za igrača (ili drugim riječima, kolika je vjerojatnost 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 toga, AI je mogao 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, naterali su AI da igra protiv sebe milijune puta (ovo je dio „učiteljskog učenja“). S tim je AI postao bolji jer je imao više prakse.

S ove dvije mreže, DeepMindov AI bio je u stanju igrati se protiv vrhunskih Go programa koji sviraju ranije. 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. AI DeepMind ne odnosi se samo na politike i mreže vrijednosti. Ne koristi ove dvije mreže kao zamjenu za Monte Carlo stablo pretraživanja. Umjesto toga, koristi neuronske mreže kako 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, proveli smo dosta vremena samo na Sažetku.

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

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

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

Razgovarajmo o prvom odlomku 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 imao sva najjača računala svijeta, vjerojatno bi osmislio slično rješenje.

Ali, razmislimo o tome kako ljudi sami igraju šah? Recimo da ste na određenoj poziciji ploče 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 sužavate na nekoliko ključnih poteza (recimo da ste smislili 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 tri 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 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 i ne možete precizno predvidjeti što će protivnik raditi na svakom koraku u onoj lijepoj budućnosti koju kuhate u svom mozgu. Stoga ćete jednostavno morati pustiti da vas osjećaj crijeva vodi. Ja ću ovaj dio procesa razmišljanja nazvati "rollout", pa uzmite u obzir to!
Dakle, nakon što „izbacite“ svojih 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 ponovo trošiti previše vremena na izvode. ILI, može biti da vas protivnik udari prilično hladnim 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 vaš izvođenje ne oduzima 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 pojedinosti trebali biste provjeriti veze 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" (pročitajte definiciju na vezi, 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 pogodite 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 te 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, i ona vam u 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 pobjeđuju 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 pogledati 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.

Vau - možete potražiti pomoć Lushe 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 odabrala Lusha, Foma ih procijeni, odaberite 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 pomoću funkcije 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 je to funkcioniralo 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 je red sam po sebi razumljiv. U MCTS-u možete započeti s nekvalificiranom Fomom i nekvalificiranom Lusom. Što više igrate, bolji će vam biti 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 joj pokušate ponoviti postupak, ipak će joj trebati malo previše vremena. Dakle, trenirate * bržu mrežu pravila * za proces pokretanja (nazvat ću ga ... Lusin 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 Lusha 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čili da igraju ATARI igre, već je detaljno raspravljao o nekim tehnikama učenja ojačavanja (a 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 dokazivanju koliko je ovaj alat svestran i izvrstan, 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 što je AlphaGo radio.

Zatim ćemo malo dublje ući u svaku stvar o kojoj smo gore raspravljali. Možda ćete vidjeti neke ružne i opasno izgledajuće matematičke jednadžbe i izraze, ali oni su jednostavni (objašnjavam im 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 da radim s vama. Molimo ostavite komentar i kontaktirat ću vas.

Fotografija dviju japanskih žena kako igraju Go, smještena ovdje za slučaj da vam je već dosadilo gledanje dugih ploča teksta.

Dakle, prvi je korak u obuci naše politike NN (Lusha) kako bismo predvidjeli koji će potez vjerovatno igrati stručnjak. Cilj NN-a je omogućiti AI-u da igra slično ljudskom stručnjaku. Ovo je konvolucionarna neuronska mreža (kao što sam već spomenuo, to je posebna vrsta NN-a koja je vrlo korisna u obradi slike) koja uzima pojednostavljenu sliku rasporeda ploče. "Nelinearnosti ispravljača" slojevi su 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 ovo.

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 trebate previše razmišljati o tome. Mrežu obično trenirate 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 doista koristili redovitim silaznim padom. 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 zove se mreža „politika politika SL“ (SL = učenje pod nadzorom). Podaci su došli iz ... Samo ću reći da je to popularna web lokacija 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 tako da se ne može dobro integrirati u algoritam MCTS? I trenirali smo 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 * o Ojačavanju učenja već morate 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 je ono što radimo ovdje. Stoga jednostavno 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 na rezultatima.

Ali postoji problem u ovom stilu treninga.

Ako samo vječno vježbate protiv JEDNOG protivnika, a protivnik također vježba isključivo s vama, nema mnogo novog učenja što možete učiniti. Samo ćete 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 na druge 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, odabranih s te liste. 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 jedino što vodi u procesu treninga je krajnji cilj, tj. Pobjeda ili gubitak. Ne trebate posebno uvježbavati mrežu da biste činili stvari poput zauzimanja veće površine na ploči itd. Jednostavno joj dajte 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čna mreža RL pravila bila samo po sebi bez MCTS algoritma. Kao što biste se sjećali, ova mreža može izravno zauzeti položaj ploče i odlučiti kako će je 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. Pobjedila je i protiv drugih jakih Go play programa.

Ovdje moram napomenuti da je i prije osposobljavanja ove mreže politika RL mreža SL politika bila već bolja od stanja tehnike - a sada se još poboljšala! 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 trebali malo šaliti da biste odvratili pozornost od zastrašujućih jednadžbi koje su gore. Ponovno dolazimo do eseja: ovdje smo završili trening Lusha. Vratite se Fomi - sjetite se "funkcije optimalne vrijednosti": v * (s) -> koja vam govori samo koliko ste vjerojatni da ćete pobijediti u svom trenutnom položaju na ploči ako od tog trenutka oba igrača igraju savršeno?
Dakle, očito, da bismo trenirali NN da postane naša vrijednost, potreban bi nam bio savršen igrač ... kojeg nemamo. Zato samo koristimo naš najjači igrač, koji se događa kao naša politika pravila o RL-u.

Potrebno je trenutno stanje stanja 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. Ovaj pristup je naivan. Ne možete koristiti svih 50 poteza iz igre i dodati ih skupu podataka.

Skup podataka za trening mora biti pažljivo biran 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 trening set. 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 je mogućnost da se jednostavno izvučete u budućnost koristeći svoju trenutnu politiku (Lusha) i pogledate konačni ishod u ovom izgledu. 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 funkciju optimalne vrijednosti je VEĆ BOLJE nego raditi tisuće mentalnih simulacija koristeći politiku izvlačenja! Foma je ovdje stvarno razbio dupe. Kad 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.

Sada kada smo obučili funkcije politike i vrijednosti, možemo ih kombinirati s MCTS-om i roditi našeg bivšeg svjetskog prvaka, uništenika velikih majstora, proboj generacije, težine dvije stotine i šezdeset 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 tome što se ovdje događa. Jedino što biste trebali primijetiti je kako koristimo vjerojatnosti pravila i procjene vrijednosti. 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 cu

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 koliko je vjerojatno 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" (pogledajte vratio se na to!). Kao što smo ranije raspravljali, za procjenu pozicija imate dvije mogućnosti: jednu, jednostavno koristite vrijednosnu mrežu 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 pogotka 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 svih ostalih programa koji su stigli 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 pročitajte još jednom 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 obrazovanje itd., Mogu vam pomoći. Pošaljite mi poruku na Twitteru: @mngrwl