Objašnjeno jednostavno: Kako je AI program svladao drevnu igru ​​Go

Riječ je o AlphaGo-u , Google DeepMind-ovom Go-u koji igra AI koji je 2016. potresao tehnološki svijet pobijedivši jednog od najboljih igrača na svijetu, Leeja Sedola.

Go je drevna društvena igra koja na svakom koraku ima toliko mogućih poteza da je teško predvidjeti buduće pozicije - i zato joj je potrebna snažna intuicija i apstraktno razmišljanje. Iz tog razloga vjerovalo se da samo ljudi mogu biti dobri u igranju Goa. Većina istraživača mislila je da će i dalje trebati desetljeća za izgradnju AI koji bi mogao razmišljati na taj način. Zapravo, objavljujem ovaj esej danas jer ovaj tjedan (8.-15. Ožujka) obilježava dvogodišnjicu utakmice AlphaGo vs Sedol!

Ali AlphaGo se tu nije zaustavio. Osam mjeseci kasnije odigrala je 60 profesionalnih igara na web stranici Go, prerušena u igrača pod imenom “Master”, i pobijedila je u svakoj pojedinoj utakmici, protiv desetaka svjetskih prvaka, naravno bez odmora između igara.

Naravno, ovo je bilo OGROMNO postignuće na polju umjetne inteligencije i potaknulo je svjetske rasprave 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 razložiti ga odlomak po odlomak jednostavnim engleskim jezikom.

Nakon ovog eseja vrlo ćete jasno znati što je AlphaGo i kako djeluje. Također se nadam da nakon što ovo pročitate nećete vjerovati svim naslovima vijesti koje su novinari plašili zbog AI-a, već ćete se zbog toga osjećati uzbuđeno.

Zabrinutost zbog rastućih postignuća AI-a je poput brige o rastućim sposobnostima Microsoft Powerpointa. Da, s vremenom će biti sve bolje s dodavanjem novih značajki, ali ne može samo nekontrolirano izrasti u nekakvo holivudsko čudovište.

Ne trebate znati igrati kako biste razumjeli ovaj članak. Zapravo sam i sam pročitao samo prva 3-4 retka u uvodnom odlomku Wikipedije o tome. Umjesto toga, iznenađujuće, koristim neke primjere iz osnovnog šaha kako bih objasnio algoritme. Jednostavno morate znati što je društvena igra za dva igrača, u kojoj se svaki igrač izmjenjuje, a na kraju je jedan pobjednik. Osim toga, ne trebate znati fiziku, naprednu matematiku ili bilo što drugo.

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

Ako nemate prethodno znanje o AI i neuronskih mreža, možete pročitati odjeljak „Deep učenje” u jednom od mojih prethodnih eseja ovdje . Nakon što to pročitate, moći ćete proći kroz ovaj esej.

Ako i vi želite plitko razumjeti pojačano učenje (neobavezno štivo), možete ga pronaći ovdje .

Evo izvornog rada ako ga želite probati pročitati:

Što se mene tiče: Bok, ja sam Aman, inženjer umjetne inteligencije i autonomnih robota. Nadam se da ćete svojim radom uštedjeti puno vremena i truda ako biste ovo sami proučavali.

Pričaš li Japanski? Ryohji Ikebe ljubazno je napisao kratki dopis o ovom eseju na japanskom jeziku, u nizu Tweetova.

Započnimo!

Sažetak

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

Da bih razumio ovaj izazov, dopustite mi da prvo razgovaram o nečemu sličnom učinjenom za šah. Početkom 1990-ih IBM je izašao s računalom Deep Blue koji je u šahu pobijedio velikog prvaka Garryja Kasparova . (On je također vrlo kul momak, svakako o njemu pročitajte kasnije!) Kako je svirao Deep Blue?

Pa, koristila je vrlo grubu metodu. U svakom koraku igre pregledavalo se sve moguće zakonske poteze koji su se mogli odigrati te se istraživalo svaki potez da se vidi što će se dogoditi. I neko bi vrijeme istraživao potez za potezom, formirajući svojevrsno VELIKO stablo odluka od tisuće poteza. A onda bi se vratilo duž tog stabla, promatrajući koji potezi izgledaju vjerojatno da će donijeti dobar rezultat. Ali, što podrazumijevamo pod pojmom "dobar rezultat"? Pa, Deep Blue je u sebe imao mnogo pažljivo osmišljenih šahovskih strategija koje su ugradili stručni šahisti kako bi mu pomogao da donosi bolje odluke - na primjer, kako odlučiti hoće li zaštititi kralja ili iskoristiti prednost negdje drugdje? U tu svrhu napravili su specifični "algoritam procjene",za usporedbu koliko su različite pozicije na ploči korisne ili nepovoljne (IBM-ove tvrdo kodirane stručne šahovske strategije uključuju ovu funkciju ocjenjivanja). I na kraju odabire pažljivo proračunat potez. Na sljedećem zavoju u osnovi opet prolazi cijelu stvar.

Kao što vidite, to znači da je Deep Blue razmišljao o milijunima teoretskih pozicija prije izvođenja svakog poteza. Ovo nije bilo toliko impresivno u smislu AI softvera tvrtke Deep Blue, već hardverski - IBM je tvrdio da je to jedno od najsnažnijih računala dostupnih na tržištu u to vrijeme. Mogao bi promatrati 200 milijuna pozicija na ploči u sekundi.

Sad smo došli do Go. Samo mi vjerujte da je ova igra puno otvorenija i ako biste isprobali Deep Blue strategiju na Gou, ne biste mogli igrati dobro. Na svakom koraku trebalo bi pogledati TOLIKO pozicija da bi bilo jednostavno nepraktično da računalo prolazi kroz taj pakao. Na primjer, na početnom potezu u šahu postoji 20 mogućih poteza. U Go prvi igrač ima 361 mogući potez, a taj opseg izbora ostaje širok tijekom igre.

To oni podrazumijevaju pod izrazitim prostorom za pretraživanje. Štoviše, u Gou nije tako lako prosuditi koliko je određena pozicija ploče korisna ili nepovoljna u bilo kojem određenom trenutku igre - na neki način morate neko vrijeme igrati cijelu igru ​​prije nego što možete utvrditi tko pobjeđuje. Ali recimo da ste magično imali način za oboje. I tu dolazi do dubokog učenja!

Tako je u ovom istraživanju DeepMind koristio neuronske mreže za oba ova zadatka (ako još nikada niste čitali o neuronskim mrežama, evo opet veze). Oni su istrenirali „neuronsku mrežu“ kako bi odlučili koji su najrazumniji potezi u određenom položaju na ploči (pa je to kao da slijedite intuitivnu strategiju za biranje poteza s bilo kojeg položaja). I obučili su "vrijednosnu neuronsku mrežu" kako bi procijenili koliko je određeni raspored dasaka povoljan za igrača (ili drugim riječima, kolika je vjerojatnost da ćete pobijediti u igri s ove pozicije). Oni su te neuronske mreže prvo uvježbali na primjerima ljudskih igara (vaše dobro staro obično nadzirano učenje). Nakon toga AI je mogao oponašati ljudsko igranje u određenoj mjeri, pa je djelovao poput slabog ljudskog igrača. A onda da bi se mreže dodatno uvježbale,milijuni su puta natjerali AI da se igra protiv sebe (ovo je dio "učenja pojačanja"). S ovim je AI postao bolji jer je imao više prakse.

Samo s ove dvije mreže, DeepMind-ov AI mogao je dobro igrati protiv najsuvremenijih programa za igranje Go koje su drugi istraživači prije izgradili. Ti su se drugi programi koristili već popularnim već postojećim algoritmom igranja igara, nazvanim „Monte Carlo Tree Search“ (MCTS). O tome više kasnije.

Ali pogodite što, još uvijek nismo razgovarali o stvarnom dogovoru. DeepMind-ov AI ne odnosi se samo na politike i mreže vrijednosti. Ne koristi ove dvije mreže kao zamjenu pretraživanja Monte Carlo Tree. Umjesto toga, koristi neuronske mreže kako bi MCTS algoritam radio bolje ... i postao je toliko bolji da je dosegao nadljudske razine. OVA poboljšana varijacija MCTS-a je "AlphaGo", AI koji je pobijedio Lee Sedol i ušao u povijest AI kao jedno od najvećih otkrića ikad. Dakle, u osnovi je AlphaGo jednostavno poboljšana implementacija sasvim uobičajenog algoritma informatike. Shvaćate li sada zašto se AI u sadašnjem obliku apsolutno ne treba bojati?

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

Dobro - da bismo od ovog trenutka razumjeli članak, prvo ćemo razgovarati o strategiji igara nazvanoj algoritam Monte Carlo Tree Search. Za sada ću samo objasniti ovaj algoritam na dovoljno dubini da ovaj esej ima smisla. Ali ako želite o tome detaljno naučiti, neki pametni ljudi također su o tome napravili izvrsne videozapise i postove na blogovima:

1. Kratka video serija iz Udacityja

2. Objašnjenje MCTS-a Jeffa Bradberryja

3. MCTS tutorijal Fullstack Academy

Sljedeći je odjeljak dugačak, ali lako razumljiv (potrudit ću se) i VRLO važan, zato ostanite uz mene! Ostatak eseja ići će puno brže.

Razgovarajmo o prvom paragrafu gore navedenog eseja. Sjećate se što sam rekao o Deep Blueu kako stvara ogromno drvo od milijuna položaja i poteza na ploči u svakom koraku igre? Morali ste napraviti simulacije i pogledati i usporediti svaki mogući potez. Kao što sam već rekao, 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 na svijetu, vjerojatno bi dizajnirao slično rješenje.

Ali razmislimo o tome kako ljudi sami igraju šah? Recimo da ste usred igre na određenom položaju na ploči. Prema pravilima igre, možete učiniti desetak različitih stvari - premjestite ovog pijuna ovdje, pomaknite kraljicu dva kvadrata ovdje ili tri kvadrata tamo i tako dalje. Ali doista napravite li popis svih mogućih poteza koje možete povući sa svim svojim dijelovima, a zatim odaberete jedan potez s ovog dugog popisa? Ne - vi se "intuitivno" sužavate na nekoliko ključnih poteza (recimo da ste smislili 3 razumna poteza) za koje mislite da imaju smisla, a onda se pitate što će se dogoditi u igri ako odaberete jedan od ova 3 poteza. Možda ćete potrošiti 15–20 sekundi uzimajući u obzir 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 samo "izvesti" nekoliko mentalnih poteza vođeni svojom intuicijom bez PREVELIKOG pažljivog razmišljanja (dobro, dobar igrač razmišljao bi dalje i dublje od prosječnog igrača). To je zato što imate ograničeno vrijeme,i ne možete točno predvidjeti što će vaš protivnik raditi na svakom koraku u toj lijepoj budućnosti koju kuhate u svom mozgu. Stoga ćete jednostavno morati dopustiti da vas osjećaju u crijevima vode. Ovaj ću dio procesa razmišljanja nazvati "uvođenjem", zato ga uzmite na znanje!

Dakle, nakon što "iskotrljate" svojih nekoliko razumnih poteza, napokon kažete zajebajte i samo odigrate potez koji vam najbolje odgovara.

Tada protivnik pravi potez. To bi mogao biti potez koji ste već dobro predvidjeli, što znači da ste sada prilično sigurni u ono što trebate učiniti dalje. Ne morate ponovno trošiti previše vremena na uvođenja. ILI može biti da vas protivnik pogodi prilično cool potezom koji niste očekivali, pa morate biti još oprezniji pri sljedećem potezu.

Ovako se igra nastavlja, a kako se približava i približava završnoj točki, bilo bi vam lakše predvidjeti ishod vaših poteza - tako da vaša uvođenja ne uzimaju toliko vremena.

Svrha ove duge priče je opisati što MCTS algoritam radi na površnoj razini - oponaša gore navedeni proces razmišljanja gradeći svaki put "stablo pretraživanja" poteza i položaja. Opet, za više detalja trebali biste provjeriti veze koje sam ranije spomenuo. Ovdje je novost da umjesto da prolazi kroz sve moguće poteze na svakom položaju (što je učinio Deep Blue), umjesto toga inteligentno odabire mali skup razumnih poteza i istražuje ih. Da bi ih istražio, "izbacuje" budućnost svakog od ovih poteza i uspoređuje ih na temelju njihovih zamišljenih ishoda.

(Ozbiljno - ovo je sve što mislim da trebate razumjeti ovaj esej)

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

To znači da, s obzirom na stanje igre s , postoji funkcija v * (s) koja može predvidjeti ishod, recimo vjerojatnost da ćete pobijediti u ovoj igri, od 0 do 1. Zovu je "funkcija optimalne vrijednosti" . Budući da je vjerojatnije da će neke pozicije na ploči dovesti do vaše pobjede od ostalih pozicija na ploči, mogu se smatrati "vrijednijima" od ostalih. Da ponovim: Vrijednost = vjerojatnost između 0 i 1 od vas koji ste pobijedili u igri.

Ali pričekajte - recite da je pored vas sjedila djevojka Foma dok igrate šah i ona vam na svakom koraku ponavlja da li pobjeđujete ili gubite. "Pobjeđuješ ... Gubiš ... Ne, još uvijek gubiš ..." Mislim da vam to ne bi puno pomoglo u odabiru koraka koji trebate poduzeti. Također bi bila prilično dosadna. Ono što bi vam umjesto toga pomoglo jest da nacrtate cijelo stablo svih mogućih poteza koje možete povući i stanja do kojih bi ti potezi doveli - a onda bi vam Foma za cijelo stablo rekao koje države pobjeđuju, a koje države države koje gube. Tada možete odabrati poteze koji će vas neprestano voditi do pobjedničkih država. Odjednom je Foma vaš partner u zločinu, a ne dosadni prijatelj. Ovdje se Foma ponaša kao vaša optimalna funkcija vrijednosti v * (s). Ranije,vjerovalo se da za igru ​​Go nije moguće imati točnu vrijednost vrijednosti poput Fome, jer su igre imale toliko neizvjesnosti.

ALI - čak i ako ste imali divnog Fomu, ova strategija čudesnih zemalja koja izvlači sve moguće pozicije koje Foma može procijeniti neće uspjeti u stvarnom svijetu. U igri poput Chess or Go, kao što smo već rekli, ako pokušate zamisliti čak 7-8 poteza u budućnost, može biti toliko mogućih pozicija da nemate dovoljno vremena da ih sve provjerite s Fomom.

Dakle, Foma nije dovoljan. Morate suziti popis poteza na nekoliko razumnih poteza koje možete uvesti u budućnost. Kako će to učiniti vaš program? Uđi Lusha. Lusha je vješt šahist i entuzijast koji je proveo desetljeća gledajući velike majstore kako igraju šah jedni protiv drugih. Ona može pogledati položaj vaše ploče, brzo pogledati sve dostupne poteze koje možete povući i reći vam koliko bi vjerojatno bilo da šahist napravi bilo koji od tih poteza ako bi sjedili za vašim stolom. Dakle, 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 puno veću vjerojatnost, a drugi besmisleni potezi vrlo malu vjerojatnost. Na primjer: ako ste u šahu, recimo da je vaša kraljica u jednom kutu igre u opasnosti,možda još uvijek imate mogućnost premjestiti malog pijuna u drugi kut igre Ona je vašafunkcija politike , p (a \ s). Za dano stanje s, ona vam može dati vjerojatnosti za sve moguće poteze koje bi stručnjak povukao.

Vau - možete iskoristiti Lushinu pomoć koja će vas voditi kako odabrati nekoliko razumnih poteza, a Foma će vam reći vjerojatnost pobjede iz svakog od tih poteza. Možete odabrati potez koji odobravaju i Foma i Lusha. Ili, ako želite biti posebno oprezni, možete izvesti poteze koje je odabrala Lusha, zatražiti da ih Foma procijeni, odabrati nekoliko njih za izvođenje dalje u budućnost i nastaviti dopuštati Fomi i Lushi da vam pomognu predvidjeti VRLO daleko budućnost igre - puno brža i učinkovitija nego prolaziti kroz sve poteze na svakom koraku u budućnost. OVO podrazumijevaju pod "smanjenjem prostora za pretraživanje". Upotrijebite funkciju vrijednosti (Foma) za predviđanje ishoda, a funkciju politike (Lusha) daje vam vjerojatnosti velemajstora da vam pomogne suziti poteze koje izvodite. Oni se nazivaju “Monte Carlo rollouts”.Zatim, dok se vraćate iz budućnosti u sadašnjost, možete uzeti prosječne vrijednosti svih različitih poteza koje ste izveli i odabrati najprikladniju akciju. Do sada je ovo djelovalo samo na slaboj amaterskoj razini u Go-u, jer funkcije politike i funkcije vrijednosti pomoću kojih su vodile ova predstavljanja nisu bile tako sjajne.

Fuj.

Prvi redak je samorazumljiv. U MCTS-u možete započeti s nekvalificiranim Fomom i nekvalificiranom Lushom. Što više igrate, to su bolji u predviđanju solidnih ishoda i poteza. „Sužavanje pretraživanja na snop radnji velike vjerojatnosti“ samo je sofisticirani način da se kaže: „Lusha vam pomaže da suzite poteze koji su vam potrebni za izvođenje dodavanjem vjerojatnosti da će ih stručnjak odigrati“. Prethodni rad koristio je ovu tehniku ​​za postizanje jakih AI igrača na amaterskoj razini, čak i uz jednostavne (ili "plitke", kako ih nazivaju) funkcije politike.

Da, konvolucijske neuronske mreže izvrsne su za obradu slika. A budući da neuronska mreža uzima određeni ulaz i daje izlaz, to je u osnovi funkcija, zar ne? Tako možete koristiti neuronsku mrežu da biste postali složena funkcija. Tako možete jednostavno prenijeti sliku položaja ploče i pustiti da neuronska mreža sama shvati što se događa. To znači da je moguće stvoriti neuronske mreže koje će se ponašati VRLO precizne funkcije politike i vrijednosti. Ostalo je prilično objašnjivo.

Ovdje ćemo razgovarati o tome kako su Foma i Lusha bili obučeni. Da biste obučili mrežu politika (predviđanje za datu poziciju koju bi odabrali 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 će se koristiti za predstavljanja; ovaj će biti manji i brži. Recimo samo da joj, budući da je Lusha toliko iskusna, treba neko vrijeme da obradi svaku poziciju. Dobro je započeti postupak sužavanja, ali ako je pokušate natjerati da ponovi postupak, ipak će joj trebati malo previše vremena. Dakle, vi osposobljavate * bržu mrežu pravila * za postupak uvođenja (nazvat ću ga ... Lushin mlađi brat Jerry? Znam da znam, dosta s ovim imenima). Nakon toga, nakon što dovoljno obučite obje sporo i brze mreže s pravilima koristeći podatke o ljudskom igraču, možete pokušati pustiti Lushu da se nekoliko dana igra protiv sebe na Go tabli i dobiti više vježbe. Ovo je dio podučavanja za jačanje - stvaranje bolje verzije mreže politika.

Zatim trenirate Fomu za predviđanje vrijednosti: određivanje vjerojatnosti pobjede. Pustite AI da vježba kroz sebe iznova i iznova u simuliranom okruženju, svaki put promatrate krajnji rezultat i učite na njegovim pogreškama kako biste postali sve bolji i bolji.

Neću ulaziti u detalje kako su ove mreže obučene. Više tehničkih detalja možete pročitati u kasnijem odjeljku rada ('Metode') koji ovdje nisam obrađivao. Zapravo, stvarna svrha ovog rada nije pokazati kako su koristili učenje ojačanja na tim neuronskim mrežama. Jedan od prethodnih radova DeepMinda, u kojem su AI naučili igrati ATARI igre, već je detaljno raspravljao o nekim tehnikama učenja pojačanja (A već sam ovdje napisao objašnjenje tog rada). Za ovaj rad, kao što sam olako spomenuo u Sažetku i također podvukao na gornjoj snimci zaslona, ​​najveća inovacija bila je činjenica da su koristili RL s neuronskim mrežamaza poboljšanje već popularnog algoritma za igranje igara, MCTS. RL je sjajan alat u alatu koji su koristili za fino podešavanje neuronskih mreža politike i vrijednosti nakon redovitog nadgledanog treninga. Ovaj istraživački rad govori o dokazivanju koliko je ovaj alat svestran i izvrstan, a ne o učenju kako ga koristiti. U televizijskom žargonu, list Atari bio je RL reklamni oglas, a ovaj AlphaGo članak je reklama.

U redu, napokon smo završili s dijelovima "uvoda". Do sada već imate vrlo dobar osjećaj za ono što je AlphaGo bio.

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

Kratka napomena prije nego što krenete dalje. Želite li mi pomoći da napišem još takvih eseja koji objašnjavaju sjajne istraživačke radove? Ako ozbiljno mislite, bilo bi mi drago surađivati ​​s vama. Molim vas ostavite komentar i javiću vam se.

Dakle, prvi korak je osposobljavanje naše politike NN (Lusha), kako bismo predvidjeli koje će poteze vještak odigrati. Cilj ove NN je omogućiti AI-u da se ponaša slično kao stručnjak. Ovo je konvolucijska neuronska mreža (kao što sam već spomenuo, to je posebna vrsta NN-a koja je vrlo korisna u obradi slika) koja uzima pojednostavljenu sliku rasporeda ploče. “Ispravljačke nelinearnosti” su slojevi koji se mogu dodati u mrežnu arhitekturu. Daju mu sposobnost da nauči složenije stvari. Ako ste ikada prije trenirali NN-ove, možda ste koristili sloj "ReLU". To su to.

Podaci o treningu ovdje su bili u obliku slučajnih parova položaja na ploči, a oznake su bile radnje koje su ljudi odabrali kad su bili na tim položajima. Samo redovno učenje pod nadzorom.

Ovdje koriste "stohastički gradijent ASCENT". Pa, ovo je algoritam za razmnožavanje. Ovdje pokušavate maksimizirati funkciju nagrađivanja. A funkcija nagrade samo je vjerojatnost radnje koju je predvidio ljudski stručnjak; želite povećati ovu vjerojatnost. Ali hej - zapravo ne trebaš previše razmišljati o ovome. Mrežu obično trenirate tako da minimalizira funkciju gubitka, š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 doista su koristili redoviti gradijentni spust . Lako možete pronaći funkciju gubitka koja se ponaša suprotno od funkcije nagrađivanja tako da će minimiziranje ovog gubitka maksimizirati nagradu.

Mreža politika sastoji se od 13 slojeva i naziva se „mreža SL politike“ (SL = nadzirano učenje). Podaci su došli s ... Samo ću reći da je to popularna web stranica na kojoj milijuni ljudi igraju Go. Koliko je dobra bila ova mreža politike SL?

Bilo je točnije od onoga što su drugi istraživači radili ranije. Ostatak odlomka prilično je samorazumljiv. Što se tiče "politike uvođenja", sjećate li se od prije nekoliko odlomaka, kako je mreža Lusha SL politike spora, pa se ne može dobro integrirati s MCTS algoritmom? I istrenirali smo još jednu bržu verziju Lushe zvanu Jerry koja joj je bila mlađi brat? Pa, ovo se odnosi na Jerryja ovdje. Kao što vidite, Jerry je upola točniji od Lushe ALI to je tisuće puta brže! Stvarno će vam pomoći da brže prođemo kroz uvedene simulacije budućnosti kada primijenimo MCTS.

U ovom sljedećem odjeljku ne morate * znati * već o Učvršćivanju, ali tada ćete morati pretpostaviti da sve što kažem bude funkcioniralo. Ako stvarno želite istražiti detalje i uvjeriti se u sve, možda ćete prvo htjeti pročitati malo o RL-u.

Jednom kad stvorite SL mrežu, obučeni na nadgledan način koristeći poteze ljudskog igrača s podacima o ljudskim potezima, kao što sam već rekao, morate joj dopustiti da vježba sama i da se poboljša. To je ono što mi ovdje radimo. Dakle, samo uzmete mrežu s pravilima SL, spremite je u datoteku i napravite još jednu njezinu kopiju.

Zatim koristite učvršćivanje kako biste ga fino podesili. Ovdje natjerate mrežu da se igra protiv sebe i učite iz ishoda.

Ali postoji problem u ovom stilu treninga.

Ako samo zauvijek vježbate protiv JEDNOG protivnika, a taj protivnik također vježba samo s vama, nema puno novog učenja koje možete učiniti. Samo ćete trenirati kako biste vježbali kako pobijediti OVOG igrača. Ovo je, pogađate, prekomjerno opremanje: vaše tehnike igraju dobro protiv jednog protivnika, ali ne generalizirajte dobro za druge protivnike. Pa kako to popraviti?

Pa, svaki put kad fino podesite neuronsku mrežu, ona postaje nešto drugačija vrsta igrača. Dakle, ovu verziju neuronske mreže možete spremiti na popis "igrača", koji se svi ponašaju malo drugačije, zar ne? Sjajno - sada dok trenirate neuronsku mrežu, možete je slučajno natjerati da igra protiv mnogih različitih starijih i novijih verzija protivnika, izabranih s tog popisa. Oni su inačice istog igrača, ali svi igraju malo drugačije. I što više trenirate, VIŠE igrača dobivate s još više treninga! Bingo!

Na ovom treningu jedino što vodi trenažni proces je krajnji cilj, tj. Pobjeda ili poraz. Ne trebate posebno obučavati mrežu da radi stvari poput zauzimanja više područja na ploči itd. Samo joj dajete sve moguće pravne poteze iz kojih može izabrati i recite: "moraš pobijediti". I zato je RL tako svestran; može se koristiti za osposobljavanje politika ili mreža vrijednosti za bilo koju igru, ne samo za Go.

Ovdje su testirali koliko je ta mreža RL politike bila točna, samo po sebi bez ikakvog MCTS algoritma. Kao što se sjećate, ova mreža može izravno zauzeti poziciju odbora i odlučiti kako će je stručnjak igrati - tako da je možete koristiti za samostalno igranje igara.

Rezultat je bio da je RL fino podešena mreža pobijedila SL mrežu koja je uvježbana samo na ljudskim potezima. Pobijedio je i protiv drugih jakih Go play programa.

Ovdje moramo imati na umu da je i prije treninga ove mreže RL politika mreža SL politika već bila bolja od stanja tehnike - a sada se još poboljšala ! A nismo ni došli do ostalih dijelova procesa poput vrijednosne mreže.

Jeste li znali da dječji pingvini mogu kihati glasnije nego što pas može lajati? Zapravo to nije istina, ali mislio sam da biste ovdje željeli malu šalu kako biste odvratili pozornost od gornjih jednadžbi zastrašujućeg izgleda. Ponovno dolazimo do eseja: ovdje smo završili s treningom Lushe. Sada se vratimo na Fomu - sjetite se "funkcije optimalne vrijednosti": v * (s) -> koja vam govori samo kolika je vjerojatnost pobjede na vašoj trenutnoj poziciji na ploči ako oba igrača od tada igraju savršeno?

Tako je očito, da bismo trenirali NN da postane naša vrijednosna funkcija, trebao bi nam savršeni igrač ... kojeg nemamo. Dakle, mi samo koristimo svoj najjači plajer, koji je slučajno naša mreža RL politika.

Potrebno je trenutno stanje stanja ploče i daje vjerojatnost da ćete pobijediti u igri. Igrate igru ​​i upoznajete ishod (pobjeda ili poraz). Svaka država igre djeluje kao uzorak podataka, a ishod te igre djeluje kao oznaka. Dakle, igrajući igru ​​s 50 poteza, imate 50 uzoraka podataka za predviđanje vrijednosti.

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

Skup podataka o treningu morao je biti pažljivo odabran kako bi se izbjeglo prekomjerno opremanje. Svaki potez u igri vrlo je sličan sljedećem, jer se krećete samo jednom i to vam daje novu poziciju, zar ne? Ako uzmete stanja na svih 50 tih poteza i dodate ih podacima vježbanja s istom oznakom, u osnovi imate puno "nekako duplikata" podataka, a to uzrokuje prekomjerno opremanje. Da biste to spriječili, odabirete samo vrlo izrazita stanja igara. Tako, na primjer, umjesto svih 50 poteza igre, odaberete samo 5 i dodate ih u set treninga. 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!

Nešto konceptualno ovdje : postoje dva načina za procjenu vrijednosti pozicije odbora. Jedna od mogućnosti je čarobna funkcija optimalne vrijednosti (poput one koju ste prethodno trenirali). Druga je mogućnost jednostavno uvođenje u budućnost pomoću svoje trenutne politike (Lusha) i pogledati konačni ishod u ovom uvođenju. Očito je da prava igra rijetko ide prema vašim planovima. Ali DeepMind je usporedio kako rade obje ove opcije. Također možete napraviti kombinaciju obje ove opcije. O ovom „parametru miješanja“ saznat ćemo malo kasnije, zato zabilježite ovaj koncept u mislima!

Pa, vaša pojedinačna neuronska mreža koja pokušava približiti optimalnu funkciju vrijednosti JA JE BOLJA od izvođenja tisuća mentalnih simulacija korištenjem politike uvođenja! Foma je ovdje stvarno izudarao dupe. Kada su zamijenili brzo predstavljanje politike s dva puta kao točne (ali sporo) RL politike Lusha, i učini tisuće simulacija uz to , to je bolje od Foma. Ali samo malo bolje i presporo. Dakle, Foma je pobjednica ovog natjecanja, dokazala je da je se ne može zamijeniti.

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

U ovom biste odjeljku idealno trebali malo dublje razumjeti unutarnji rad MCTS algoritma, ali ono što ste do sada naučili trebalo bi biti dovoljno da vam pruži dobar osjećaj za ono što se ovdje događa. Jedino što biste trebali primijetiti je kako koristimo vjerojatnosti politike i procjene vrijednosti. Kombiniramo ih tijekom izbacivanja kako bismo suzili broj poteza koje želimo izvesti na svakom koraku. Q (s, a) predstavlja funkciju vrijednosti, a u (s, a) je pohranjena vjerojatnost za taj položaj. Objasnit ću ti.

Imajte na umu da mreža pravila koristi nadzirano učenje za predviđanje poteza stručnjaka? I to vam ne daje samo najvjerojatniji potez, već vam daje vjerojatnostiza svaki mogući potez koji govori koliko je vjerojatno da će to biti potez stručnjaka. Ta se vjerojatnost može pohraniti za svaku od tih radnji. Ovdje je nazivaju "prethodnom vjerojatnošću" i očito je koriste dok odabiru akcije koje će istražiti. Dakle, u osnovi, da biste odlučili hoćete li istražiti određeni potez, razmotrite dvije stvari: Prvo, igrajući ovaj potez, kolika je vjerojatnost da ćete pobijediti? Da, već imamo svoju „mrežu vrijednosti“ koja će odgovoriti na ovo prvo pitanje. I drugo je pitanje, koliko je vjerojatno da bi stručnjak odabrao ovaj potez? (Ako je malo vjerojatno da će potez odabrati stručnjak, zašto uopće gubiti vrijeme na to. To dobivamo iz mreže politika)

Zatim razgovarajmo o „parametru miješanja“ (pogledajte vratili se na to!). Kao što je ranije rečeno, za procjenu pozicija imate dvije mogućnosti: jednu, jednostavno upotrijebite mrežu vrijednosti koju ste cijelo vrijeme koristili za procjenu stanja. Kao drugo, možete pokušati brzo odigrati predstavu s vašom trenutnom strategijom (pod pretpostavkom da će i drugi igrač igrati slično) i vidjeti hoćete li pobijediti ili izgubiti. Vidjeli smo kako je funkcija vrijednosti bolja od općenitog predstavljanja. Ovdje kombiniraju oboje. Pokušavate svakom predviđanju dati 50–50 važnosti, 40–60 ili 0–100 itd. Ako na prvu priložite% X, morat ćete priložiti 100-X na drugu. To znači ovaj parametar miješanja. Rezultati pogodaka i pokusa vidjet ćete ih kasnije u članku.

Nakon svakog uvođenja ažurirate stablo pretraživanja bilo kojim informacijama koje ste stekli tijekom simulacije, tako da je sljedeća simulacija inteligentnija. I na kraju svih simulacija, samo odaberete najbolji potez.

Zanimljiv uvid ovdje!

Sjećate se kako je RL fino podešena politika NN bila bolja od samo politike NN koju je obučio čovjek? Ali kad ih stavite u MCTS algoritam AlphaGoa, pokazalo se da je upotreba ljudski obučenog NN-a bolji izbor od fino podešenog NN-a. Ali u slučaju funkcije vrijednosti (za koju biste se sjetili da koristi snažnog igrača za približavanje savršenom igraču), trening Fome pomoću RL politike djeluje bolje od treninga s SL politikom.

„Provođenje svih ovih procjena zahtijeva puno računalne snage. Zaista smo morali iznijeti velike puške da bismo mogli pokretati ove proklete programe. "

Objašnjenje samo po sebi.

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

To se ponovno vraća na onaj "parametar miješanja". Dok su ocjenjivali položaje, dajući jednaku važnost i funkciji vrijednosti i predstavljanjima, postigli su bolji učinak nego samo korištenje jedne od njih. Ostalo je samorazumljivo i otkriva zanimljiv uvid!

Objašnjenje samo po sebi.

Objašnjenje samo po sebi. Ali pročitajte ponovo onu crveno podvučenu rečenicu. Nadam se da sada možete jasno vidjeti da je ova crta upravo ovdje sažetak svega o čemu se radi u cijelom ovom istraživačkom projektu.

Zaključni odlomak. "Hvalimo se još malo ovdje jer smo to zaslužili!" :)

Ako ste znanstvenik ili tehnološka tvrtka i trebate pomoć u objašnjavanju svoje znanosti netehničkim ljudima za marketing, PR ili obuku itd., Mogu vam pomoći. Pošaljite mi poruku na Twitter: @mngrwl