Forklaret simpelt: Hvordan et AI-program mestrer det gamle spil Go

Det handler om AlphaGo , Google DeepMind s Go spiller AI, der rystede den teknologi verden i 2016 ved at besejre en af de bedste spillere i verden, Lee SEDOL.

Go er et gammelt brætspil, der har så mange mulige bevægelser ved hvert trin, at fremtidige positioner er svære at forudsige - og derfor kræver det stærk intuition og abstrakt tænkning for at spille. Af denne grund blev det antaget, at kun mennesker kunne være gode til at spille Go. De fleste forskere troede, at det stadig ville tage årtier at opbygge en AI, der kunne tænke sådan. Faktisk frigiver jeg dette essay i dag, for denne uge (8. - 15. marts) markerer to-årsdagen for AlphaGo vs Sedol-kampen!

Men AlphaGo stoppede ikke der. 8 måneder senere spillede det 60 professionelle spil på et Go-websted under forklædning som en spiller ved navn “Master” og vandt hvert eneste spil mod snesevis af verdensmestre, selvfølgelig uden at hvile mellem spil.

Naturligvis var dette en Kæmpe præstation inden for AI og udløste verdensomspændende diskussioner om, hvorvidt vi skulle være begejstrede eller bekymrede for kunstig intelligens.

I dag skal vi tage det originale forskningsoplæg, der er offentliggjort af DeepMind i Nature- tidsskriftet, og nedbryde det afsnit-for-afsnit ved hjælp af enkel engelsk.

Efter dette essay ved du meget klart, hvad AlphaGo er, og hvordan det fungerer. Jeg håber også, at efter at have læst dette, vil du ikke tro på alle de nyhedsoverskrifter, som journalister har lavet for at skræmme dig om AI, og i stedet føler dig begejstret for det.

At bekymre sig om AIs voksende præstationer er som at bekymre sig om Microsoft Powerpints voksende evner. Ja, det vil blive bedre med tiden med nye funktioner, der føjes til det, men det kan ikke bare ukontrollabelt vokse til en slags Hollywood-monster.

Du behøver IKKE at vide, hvordan man spiller Gå for at forstå dette papir. Faktisk har jeg kun kun læst de første 3-4 linjer i Wikipedia's indledende afsnit om det. I stedet for bruger jeg overraskende nogle eksempler fra grundlæggende skak til at forklare algoritmerne. Du skal bare vide, hvad et brætspil med to spillere er, hvor hver spiller skiftes, og der er en vinder i slutningen. Udover det behøver du ikke kende nogen fysik eller avanceret matematik eller noget.

Dette vil gøre det mere tilgængeligt for folk, der først lige begyndte at lære om maskinlæring eller neurale netværk. Og især for dem, der ikke bruger engelsk som deres første sprog (hvilket kan gøre det meget vanskeligt at læse sådanne papirer).

Hvis du ikke har noget forkendskab til AI og neurale netværk, kan du læse afsnittet "Deep Learning" i et af mine tidligere essays her . Efter at have læst det, vil du være i stand til at komme igennem dette essay.

Hvis du også ønsker at få en lav forståelse af forstærkningslæring (valgfri læsning), kan du finde den her .

Her er det originale papir, hvis du vil prøve at læse det:

Hvad mig angår: Hej jeg er Aman, en AI og autonome robottekniker. Jeg håber, at mit arbejde vil spare dig for meget tid og kræfter, hvis du selv studerer dette.

Snakker du japansk? Ryohji Ikebe har venligt skrevet et kort notat om dette essay på japansk i en række tweets.

Lad os komme igang!

Abstrakt

Som du ved, var målet med denne forskning at træne et AI-program til at spille Go på niveau med professionelle menneskelige spillere i verdensklasse.

For at forstå denne udfordring, lad mig først tale om noget lignende, der er gjort for skak. I begyndelsen af ​​1990'erne kom IBM ud med Deep Blue-computeren, der besejrede den store mester Garry Kasparov i skak. (Han er også en meget sej fyr, sørg for at læse mere om ham senere!) Hvordan spillede Deep Blue?

Nå, det brugte en meget brute force-metode. På hvert trin i spillet kiggede det på alle de mulige juridiske træk, der kunne spilles, og gik videre for at udforske hvert eneste træk for at se, hvad der ville ske. Og det ville fortsætte med at udforske bevægelse efter træk i et stykke tid og danne et slags KÆRLIG beslutningstræ med tusinder af træk. Og så ville det komme tilbage langs dette træ og observere, hvilke bevægelser der syntes mest sandsynligt at bringe et godt resultat. Men hvad mener vi med "godt resultat"? Deep Blue havde mange omhyggeligt designede skakstrategier indbygget i det af ekspert skakspillere for at hjælpe det med at træffe bedre beslutninger - for eksempel hvordan man beslutter sig for at beskytte kongen eller få fordel et andet sted? De lavede en bestemt "evalueringsalgoritme" til dette formål,for at sammenligne, hvor fordelagtige eller ugunstige forskellige bestyrelsespositioner er (IBM hårdkodede ekspertskakstrategier i denne evalueringsfunktion). Og endelig vælger det et nøje beregnet træk. Ved næste tur går det grundlæggende igennem det hele igen.

Som du kan se betyder det, at Deep Blue tænkte på millioner af teoretiske positioner, før de spillede hvert træk. Dette var ikke så imponerende med hensyn til AI-softwaren fra Deep Blue, men snarere i hardware - IBM hævdede, at det var en af ​​de mest kraftfulde computere, der var tilgængelige på markedet på det tidspunkt. Det kunne se på 200 millioner bestyrelsesstillinger pr. Sekund.

Nu kommer vi til Go. Tro mig bare, at dette spil er meget mere åbent, og hvis du prøvede Deep Blue-strategien on Go, ville du ikke være i stand til at spille godt. Der ville være så mange positioner at se på hvert trin, at det simpelthen ville være upraktisk for en computer at gennemgå det helvede. For eksempel er der ved åbningsbevægelsen i skak 20 mulige bevægelser. I Go har den første spiller 361 mulige træk, og dette valgmulighed forbliver bredt i hele spillet.

Dette er hvad de mener med "enormt søgerum." Desuden er det i Go ikke så let at bedømme, hvor fordelagtig eller ugunstig en bestemt brætsposition er på et bestemt tidspunkt i spillet - du er ganske lidt nødt til at spille hele spillet i et stykke tid, før du kan bestemme, hvem der vinder. Men lad os sige, at du på magisk vis havde en måde at gøre begge disse på. Og det er her, dyb læring kommer ind!

Så i denne forskning brugte DeepMind neurale netværk til at udføre begge disse opgaver (hvis du aldrig har læst om neurale netværk endnu, her er linket igen). De uddannede et ”politisk neuralt netværk” til at beslutte, hvilke der er de mest fornuftige træk i en bestemt bestyrelsesposition (så det er som at følge en intuitiv strategi for at vælge træk fra enhver position). Og de trænede et ”værdi-neuralt netværk” til at estimere, hvor fordelagtigt et bestemt bordarrangement er for spilleren (eller med andre ord, hvor sandsynligt det er, at du vinder spillet fra denne position). De trænede disse neurale netværk først med menneskelige spileksempler (din gode gamle almindelige overvågede læring). Efter dette var AI i stand til at efterligne menneskelig leg til en vis grad, så det fungerede som en svag menneskelig spiller. Og så for at træne netværkene yderligere,de fik AI til at spille mod sig selv millioner af gange (dette er "forstærkningslæringsdelen"). Med dette blev AI bedre, fordi det havde mere praksis.

Med disse to netværk alene var DeepMinds AI i stand til at spille godt mod de nyeste Go-spilprogrammer, som andre forskere havde bygget før. Disse andre programmer havde brugt en allerede populær allerede eksisterende algoritme for spil, kaldet "Monte Carlo Tree Search" (MCTS). Mere om dette senere.

Men gæt hvad, vi har stadig ikke talt om den rigtige aftale. DeepMinds AI handler ikke kun om politik og værdinetværk. Det bruger ikke disse to netværk som erstatning for Monte Carlo Tree Search. I stedet bruger det neurale netværk til at få MCTS-algoritmen til at fungere bedre ... og den blev så meget bedre, at den nåede overmenneskelige niveauer. DENNE forbedrede variation af MCTS er "AlphaGo", den AI, der slog Lee Sedol og gik ned i AI-historien som et af de største gennembrud nogensinde. Så i det væsentlige er AlphaGo simpelthen en forbedret implementering af en meget almindelig datalogisk algoritme. Forstår du nu, hvorfor AI i sin nuværende form absolut ikke er noget at være bange for?

Wow, vi har brugt meget tid på Abstract alene.

Okay - for at forstå papiret fra dette tidspunkt taler vi først om en spilstrategi kaldet Monte Carlo Tree Search-algoritmen. For nu vil jeg bare forklare denne algoritme i tilstrækkelig dybde til at give mening om dette essay. Men hvis du vil lære mere om det i dybden, har nogle smarte mennesker også lavet fremragende videoer og blogindlæg om dette:

1. En kort videoserie fra Udacity

2. Jeff Bradberrys forklaring af MCTS

3. En MCTS-tutorial af Fullstack Academy

Det følgende afsnit er langt, men let at forstå (jeg prøver mit bedste) og MEGET vigtigt, så bliv hos mig! Resten af ​​essayet går meget hurtigere.

Lad os tale om første afsnit i essayet ovenfor. Husk hvad jeg sagde om Deep Blue, der lavede et stort træ med millioner af brætspositioner og bevægelser på hvert trin i spillet? Du var nødt til at lave simuleringer og se på og sammenligne hver eneste mulige bevægelse. Som jeg sagde før, var det en enkel tilgang og meget ligefrem tilgang - hvis den gennemsnitlige softwareingeniør skulle designe et spil, der spillede AI og havde alle de stærkeste computere i verden, ville han eller hun sandsynligvis designe en lignende løsning.

Men lad os tænke over, hvordan mennesker selv spiller skak? Lad os sige, at du befinder dig på en bestemt brætposition midt i spillet. Ved spilleregler kan du gøre et dusin forskellige ting - flyt denne bonde her, flyt dronningen to firkanter her eller tre firkanter der osv. Men laver du virkelig en liste over alle mulige træk, du kan lave med alle dine brikker, og vælg derefter et træk fra denne lange liste? Nej - du indsnævrer "intuitivt" til nogle få vigtige træk (lad os sige, du kommer med 3 fornuftige træk), som du synes giver mening, og så spekulerer du på, hvad der vil ske i spillet, hvis du vælger et af disse 3 træk. Du bruger muligvis 15–20 sekunder på at overveje hvert af disse 3 træk og deres fremtid - og bemærk, at du i løbet af disse 15 sekunder ikke behøver at omhyggeligt planlægge fremtiden for hvert træk;du kan bare “rulle” et par mentale træk styret af din intuition uden for meget nøje tænkt (ja, en god spiller ville tænke længere og dybere end en gennemsnitlig spiller). Dette er fordi du har begrænset tid,og du kan ikke forudsige nøjagtigt, hvad din modstander vil gøre ved hvert trin i den dejlige fremtid, du laver mad i din hjerne. Så du bliver bare nødt til at lade din tarmfølelse guide dig. Jeg vil henvise til denne del af tænkningsprocessen som "udrulning", så vær opmærksom på det!

Så efter at have "rullet ud" dine få fornuftige træk, siger du endelig at skrue det og bare spille det træk, du finder bedst.

Så tager modstanderen et træk. Det kan være et træk, du allerede havde forventet, hvilket betyder, at du nu er ret sikker på, hvad du skal gøre næste. Du behøver ikke bruge for meget tid på udrulningen igen. ELLER det kan være, at din modstander rammer dig med et ret sejt træk, som du ikke havde forventet, så du skal være endnu mere forsigtig med dit næste træk.

Sådan fortsætter spillet, og når det kommer tættere og tættere på slutpunktet, ville det blive lettere for dig at forudsige resultatet af dine træk - så dine udrulninger tager ikke så meget tid.

Formålet med denne lange historie er at beskrive, hvad MCTS-algoritmen gør på et overfladisk niveau - den efterligner ovenstående tænkningsproces ved at opbygge et ”søgetræ” med bevægelser og positioner hver gang. Igen, for flere detaljer, skal du tjekke de links, jeg nævnte tidligere. Innovationen her er, at i stedet for at gennemgå alle de mulige bevægelser i hver position (som Deep Blue gjorde), vælger den i stedet intelligent et lille sæt fornuftige bevægelser og udforsker dem i stedet. For at udforske dem ”ruller det” fremtiden for hvert af disse træk ud og sammenligner dem baseret på deres forestillede resultater.

(Seriøst - dette er alt, hvad jeg tror, ​​du har brug for for at forstå dette essay)

Nu - kommer tilbage til skærmbilledet fra papiret. Go er et "perfekt informationsspil" (læs definitionen i linket, bare rolig, det er ikke skræmmende). Og teoretisk set er det muligt for sådanne spil, uanset hvilken bestemt position du er i spillet (selvom du lige har spillet 1–2 træk), at du korrekt kan gætte, hvem der vinder eller taber (forudsat at begge spillere spiller "Perfekt" fra det tidspunkt). Jeg har ingen idé om, hvem der kom op med denne teori, men det er en grundlæggende antagelse i dette forskningsprojekt, og det fungerer.

Så det betyder, givet en tilstand af spillet s , der er en funktion V * (S), som kan forudsige udfaldet, lad os sige sandsynlighed for dig at vinde dette spil, fra 0 til 1. De kalder det ”optimale værdi funktionen” . Da nogle bestyrelsesstillinger er mere tilbøjelige til at resultere i, at du vinder end andre bestyrelsesstillinger, kan de betragtes som mere "værdifulde" end de andre. Lad mig sige det igen: Værdi = Sandsynlighed mellem 0 og 1 af jer, der vinder spillet.

Men vent - sig, at der sad en pige ved navn Foma ved siden af ​​dig, mens du spiller skak, og hun fortæller dig ved hvert trin, om du vinder eller taber. "Du vinder ... Du mister ... Nej, stadig taber ..." Jeg tror, ​​det ville ikke hjælpe dig meget med at vælge, hvilket træk du skal foretage. Hun ville også være ret irriterende. Hvad der i stedet ville hjælpe dig er, hvis du tegner hele træet med alle de mulige bevægelser, du kan foretage, og de stater, som disse bevægelser vil føre til - og så vil Foma fortælle dig for hele træet, hvilke stater der vinder stater, og hvilke stater der er tabende stater. Derefter kan du vælge træk, der fortsat fører dig til vindende stater. Pludselig er Foma din partner i kriminalitet, ikke en irriterende ven. Her opfører Foma sig som din optimale værdifunktion v * (s). Tidligere,man troede, at det ikke var muligt at have en nøjagtig værdifunktion som Foma til spillet Go, fordi spillene havde så meget usikkerhed.

MEN - selvom du havde den vidunderlige Foma, fungerer denne vidunderlandsstrategi med at trække alle mulige positioner, som Foma kan evaluere, ikke rigtig godt i den virkelige verden. I et spil som skak eller gå, som vi sagde før, hvis du prøver at forestille dig, at selv 7–8 bevæger sig ind i fremtiden, kan der være så mange mulige positioner, at du ikke har nok tid til at kontrollere dem alle sammen med Foma.

Så Foma er ikke nok. Du skal indsnævre listen over træk til et par fornuftige træk, som du kan rulle ud i fremtiden. Hvordan vil dit program gøre det? Gå ind i Lusha. Lusha er en dygtig skakspiller og entusiast, der har brugt årtier på at se stormestre spille skak mod hinanden. Hun kan se på din bestyrelsesposition, se hurtigt på alle de tilgængelige træk, du kan foretage, og fortælle dig, hvor sandsynligt det ville være, at en skakekspert ville foretage nogen af ​​disse træk, hvis de sad ved dit bord. Så hvis du har 50 mulige træk ad gangen, fortæller Lusha sandsynligheden for, at hvert træk bliver valgt af en ekspert. Selvfølgelig vil et par fornuftige træk have en meget højere sandsynlighed, og andre meningsløse træk vil have meget lidt sandsynlighed. For eksempel: hvis vi er i skak, lad os sige, at din dronning er i fare i det ene hjørne af spillet,du har muligvis stadig mulighed for at flytte en lille bonde i et andet hjørne af spillet Hun er dinpolitikfunktion , p (a \ s). For en given tilstand kan hun give dig sandsynligheder for alle de mulige bevægelser, som en ekspert ville foretage.

Wow - du kan tage Lushas hjælp til at guide dig i, hvordan du vælger et par fornuftige træk, og Foma vil fortælle dig sandsynligheden for at vinde fra hvert af disse træk. Du kan vælge det træk, som både Foma og Lusha godkender. Eller hvis du vil være ekstra forsigtig, kan du rulle de bevægelser, der er valgt af Lusha, få Foma til at evaluere dem, vælge et par af dem til at rulle længere ind i fremtiden og fortsætte med at lade Foma og Lusha hjælpe dig med at forudsige MEGET langt ind i spillets fremtid - meget hurtigere og mere effektiv end at gennemgå alle bevægelser på hvert trin ind i fremtiden. DETTE er hvad de mener med "at reducere søgerummet". Brug en værdifunktion (Foma) til at forudsige resultater, og brug en politikfunktion (Lusha) til at give dig store master sandsynligheder for at hjælpe med at indsnævre de bevægelser, du ruller ud. Disse kaldes "Monte Carlo-udrulninger".Så mens du backtrack fra fremtid til nutid, kan du tage gennemsnitsværdier for alle de forskellige træk, du rullede ud, og vælge den mest passende handling. Indtil videre har dette kun fungeret på et svagt amatørniveau i Go, fordi de politiske funktioner og værdifunktioner, som de brugte til at styre disse udrulninger, ikke var så store.

Phew.

Den første linje er selvforklarende. I MCTS kan du starte med en ufaglært Foma og ufaglært Lusha. Jo mere du spiller, jo bedre bliver de til at forudsige solide resultater og bevægelser. "At indsnævre søgningen til en stråle med høj sandsynlighedshandlinger" er bare en sofistikeret måde at sige på, "Lusha hjælper dig med at indsnævre de bevægelser, du har brug for for at rulle ud, ved at tildele dem sandsynligheder for, at en ekspert ville spille dem". Tidligere arbejde har brugt denne teknik til at opnå stærke AI-spillere på amatørniveau, selv med enkle (eller "lavvandede" som de kalder det) politikfunktioner.

Ja, nedbrydningsneurale netværk er gode til billedbehandling. Og da et neuralt netværk tager et bestemt input og giver et output, er det i det væsentlige en funktion, ikke? Så du kan bruge et neuralt netværk til at blive en kompleks funktion. Så du kan bare sende et billede af tavlepositionen og lade det neurale netværk selv finde ud af, hvad der foregår. Dette betyder, at det er muligt at oprette neurale netværk, der opfører sig som MEGET nøjagtige politik- og værdifunktioner. Resten er ret selvforklarende.

Her diskuterer vi, hvordan Foma og Lusha blev trænet. For at træne politiknetværket (forudsigelse af en given position, som bevæger eksperter ville vælge), bruger du blot eksempler på menneskelige spil og bruger dem som data til god gammel overvåget læring.

Og du vil træne en anden lidt anden version af dette politiske netværk til brug ved implementeringer; denne bliver mindre og hurtigere. Lad os bare sige, at da Lusha er så erfaren, tager hun noget tid at behandle hver position. Hun er god at starte indsnævringsprocessen med, men hvis du prøver at få hende til at gentage processen, tager hun stadig lidt for meget tid. Så du træner et * hurtigere politiknetværk * til udrulningsprocessen (jeg kalder det ... Lushas yngre bror Jerry? Jeg ved, jeg ved det nok med disse navne). Efter det, når du har trænet begge de langsomme og hurtige politiske netværk nok ved hjælp af data fra menneskelige spillere, kan du prøve at lade Lusha spille mod sig selv på et Go-bræt i et par dage og få mere øvelse. Dette er forstærkelsesindlæringsdelen - at skabe en bedre version af politiknetværket.

Derefter træner du Foma til værdiforudsigelse: bestemmelse af sandsynligheden for, at du vinder. Du lader AI øve sig ved at spille sig selv igen og igen i et simuleret miljø, observere slutresultatet hver gang og lære af sine fejl for at blive bedre og bedre.

Jeg vil ikke gå i detaljer om, hvordan disse netværk trænes. Du kan læse flere tekniske detaljer i det senere afsnit af papiret ('Metoder'), som jeg ikke har dækket her. Faktisk er det egentlige formål med dette papir ikke at vise, hvordan de brugte forstærkningslæring på disse neurale netværk. Et af DeepMinds tidligere papirer, hvor de lærte AI at spille ATARI-spil, har allerede diskuteret nogle forstærkende læringsteknikker i dybden (Og jeg har allerede skrevet en forklaring på dette papir her). For dette papir, som jeg let nævnte i Abstract og også understreget i skærmbilledet ovenfor, var den største innovation det faktum, at de brugte RL med neurale netværktil forbedring af en allerede populær spil-algoritme, MCTS. RL er et sejt værktøj i en værktøjskasse, som de brugte til at finjustere politik og værdifunktion neurale netværk efter den regelmæssige overvågede træning. Denne undersøgelse handler om at bevise, hvor alsidig og fremragende dette værktøj det er, og ikke om at lære dig, hvordan du bruger det. I tv-lingo var Atari-papiret en RL-informationsmarked, og dette AlphaGo-papir er en reklame.

Okay, vi er endelig færdige med "introduktion" -delene. Nu har du allerede en meget god fornemmelse for, hvad AlphaGo handlede om.

Dernæst går vi lidt dybere ind på hver ting, vi diskuterede ovenfor. Du kan muligvis se nogle grimme og farlige matematiske ligninger og udtryk, men de er enkle (jeg forklarer dem alle). Slap af.

En hurtig note, inden du går videre. Vil du hjælpe mig med at skrive flere sådanne essays, der forklarer seje forskningsopgaver? Hvis du er seriøs, ville jeg være glad for at arbejde sammen med dig. Efterlad en kommentar, så kontakter jeg dig.

Så det første skridt er at træne vores politik NN (Lusha) for at forudsige, hvilke træk der sandsynligvis vil blive spillet af en ekspert. Dette NNs mål er at give AI mulighed for at spille svarende til et ekspert menneske. Dette er et sammenbrudt neuralt netværk (som jeg nævnte før, det er en særlig slags NN, der er meget nyttig i billedbehandling), der tager et forenklet billede af et kortarrangement. “Ensretterens ikke-lineariteter” er lag, der kan føjes til netværkets arkitektur. De giver det evnen til at lære mere komplekse ting. Hvis du nogensinde har trænet NN'er før, har du muligvis brugt "ReLU" -laget. Det er hvad disse er.

Træningsdataene her var i form af tilfældige par bordplaceringer, og etiketterne var de handlinger, som mennesker valgte, da de var i disse positioner. Bare regelmæssig overvåget læring.

Her bruger de “stokastisk gradient ASCENT”. Nå, dette er en algoritme til backpropagation. Her forsøger du at maksimere en belønningsfunktion. Og belønningsfunktionen er bare sandsynligheden for den handling, som en menneskelig ekspert forudsiger; du vil øge denne sandsynlighed. Men hej - du behøver ikke rigtig tænke for meget på dette. Normalt træner du netværket, så det minimerer en tabsfunktion, hvilket i det væsentlige er fejlen / forskellen mellem det forudsagte resultat og det faktiske mærke. Det kaldes gradient DESCENT. I den faktiske gennemførelse af denne forskning papir, har de rent faktisk brugt den almindelige gradient afstamning . Du kan let finde en tabsfunktion, der opfører sig modsat belønningsfunktionen, således at minimering af dette tab maksimerer belønningen.

Politiknetværket har 13 lag og kaldes “SL-politik” -netværk (SL = overvåget læring). Dataene kom fra en ... Jeg vil bare sige, at det er et populært websted, hvor millioner af mennesker spiller Go. Hvor god udførte dette SL-politiske netværk?

Det var mere præcist end hvad andre forskere havde gjort tidligere. Resten af ​​afsnittet er ret selvforklarende. Hvad angår "udrulningspolitikken", husker du for nogle få stykker siden, hvordan Lusha SL-politikkenettet er langsomt, så det ikke kan integreres godt med MCTS-algoritmen? Og vi trænede en anden hurtigere version af Lusha ved navn Jerry, der var hendes yngre bror? Nå, dette refererer til Jerry lige her. Som du kan se, er Jerry bare halvt så nøjagtig som Lusha, MEN det er tusinder af gange hurtigere! Det vil virkelig hjælpe med at komme igennem udrullede fremtidssimuleringer hurtigere, når vi anvender MCTS.

I dette næste afsnit behøver du ikke * at vide om forstærkningslæring allerede, men så bliver du nødt til at antage, at hvad jeg siger, fungerer. Hvis du virkelig vil grave i detaljer og sørge for alt, kan du først læse lidt om RL.

Når du først har SL-netværket, trænet på en overvåget måde ved hjælp af menneskelige spillerbevægelser med dataene om menneskelige bevægelser, som jeg sagde før, skal du lade hende øve sig selv og blive bedre. Det er det, vi laver her. Så du tager bare SL-politiknetværket, gemmer det i en fil og laver endnu en kopi af det.

Derefter bruger du forstærkningslæring til at finjustere den. Her får du netværket til at spille mod sig selv og lære af resultaterne.

Men der er et problem i denne træningsstil.

Hvis du kun for evigt træner mod EN modstander, og at modstanderen også kun praktiserer med dig, er der ikke meget af ny læring, du kan gøre. Du træner bare for at øve dig i at slå DENNE spiller. Dette er, du gættede det, overmontering: dine teknikker spiller godt mod en modstander, men generaliser ikke godt til andre modstandere. Så hvordan løser du dette?

Nå, hver gang du finjusterer et neuralt netværk, bliver det en lidt anden slags spiller. Så du kan gemme denne version af det neurale netværk på en liste over "spillere", som alle opfører sig lidt anderledes, ikke? Fantastisk - nu mens du træner det neurale netværk, kan du tilfældigt få det til at spille mod mange forskellige ældre og nyere versioner af modstanderen, valgt fra denne liste. De er versioner af den samme spiller, men de spiller alle lidt anderledes. Og jo mere du træner, jo flere spillere får du til at træne endnu mere med! Bingo!

I denne træning er det eneste, der styrer træningsprocessen, det ultimative mål, dvs. vinde eller tabe. Du behøver ikke at træne netværket specielt til at gøre ting som at fange mere område på tavlen osv. Du giver det bare alle de mulige juridiske træk, det kan vælge imellem, og siger "du er nødt til at vinde". Og det er derfor, RL er så alsidig; det kan bruges til at træne politik eller værdiansætte netværk til ethvert spil, ikke bare Go.

Her testede de, hvor nøjagtigt dette RL-politiknetværk var, bare i sig selv uden nogen MCTS-algoritme. Som du ville huske, kan dette netværk direkte indtage en bestyrelsesposition og beslutte, hvordan en ekspert ville spille det - så du kan bruge det til at spille spil på egen hånd.

Resultatet var, at RL-finjusteret netværk vandt mod SL-netværket, der kun var trænet i menneskelige bevægelser. Det vandt også mod andre stærke Go-afspilningsprogrammer.

Skal bemærke her, at selv før træning af dette RL-politiske netværk, var SL-politiske netværk allerede bedre end den nyeste teknologi - og nu er det forbedret yderligere ! Og vi er ikke engang kommet til de andre dele af processen som værdinetværket.

Vidste du, at babypingviner kan nys højere end en hund kan gø? Faktisk er det ikke sandt, men jeg troede, du gerne vil have en lille vittighed her for at distrahere fra de skræmmende ligninger ovenfor. Kommer til essayet igen: vi er færdige med at træne Lusha her. Nu tilbage til Foma - husk den “optimale værdifunktion”: v * (s) -> der kun fortæller dig, hvor sandsynligt det er, at du vinder i din nuværende bestyrelsesposition, hvis begge spillere spiller perfekt fra dette tidspunkt?

Så naturligvis, for at træne et NN til at blive vores værdifunktion, ville vi have brug for en perfekt spiller ... som vi ikke har. Så vi bruger bare vores stærkeste plaer, som tilfældigvis er vores RL-politiske netværk.

Det tager den aktuelle tilstandsstatus og udleder sandsynligheden for, at du vinder spillet. Du spiller et spil og lærer resultatet (sejr eller tab) at kende. Hver af spiltilstandene fungerer som en dataprøve, og resultatet af dette spil fungerer som etiketten. Så ved at spille et 50-træk-spil har du 50 dataprøver til værdiforudsigelse.

Lol nej. Denne tilgang er naiv. Du kan ikke bruge alle 50 træk fra spillet og føje dem til datasættet.

Træningsdatasættet skulle vælges nøje for at undgå overmontering. Hvert træk i spillet ligner meget det næste, fordi du kun bevæger dig en gang, og det giver dig en ny position, ikke? Hvis du tager staterne i det hele taget 50 af disse bevægelser og føjer dem til træningsdataene med den samme etiket, har du dybest set masser af "kinda duplicate" -data, og det forårsager overmontering. For at forhindre dette vælger du kun meget forskellige spiltilstande. Så for eksempel, i stedet for alle de 50 bevægelser i et spil, vælger du kun 5 af dem og tilføjer dem til træningssættet. DeepMind tog 30 millioner positioner fra 30 millioner forskellige spil for at reducere enhver chance for, at der var duplikatdata. Og det fungerede!

Nu, noget begrebsmæssigt her : der er to måder at evaluere værdien af ​​en bestyrelsesposition. En mulighed er en magisk optimal værdifunktion (som den du har trænet ovenfor). Den anden mulighed er simpelthen at rulle ud i fremtiden ved hjælp af din nuværende politik (Lusha) og se på det endelige resultat i denne udrulning. Det ægte spil går naturligvis sjældent efter dine planer. Men DeepMind sammenlignede, hvordan begge disse muligheder gør. Du kan også lave en blanding af begge disse muligheder. Vi vil lære om denne "blandingsparameter" lidt senere, så skriv dette koncept mentalt!

Nå, dit eneste neurale netværk, der prøver at tilnærme den optimale værdifunktion, er ENDEN BEDRE end at udføre tusindvis af mentale simuleringer ved hjælp af en implementeringspolitik! Foma sparkede virkelig røv her. Da de erstattede den hurtige udrulningspolitik med den dobbelt så nøjagtige (men langsomme) RL-politik Lusha og gjorde tusinder af simuleringer med det , klarede det sig bedre end Foma. Men kun lidt bedre og for langsomt. Så Foma er vinderen af ​​denne konkurrence, hun har bevist, at hun ikke kan erstattes.

Nu hvor vi har trænet politikken og værdifunktionerne, kan vi kombinere dem med MCTS og føde vores tidligere verdensmester, ødelægger af stormestre, en generations gennembrud, der vejer to hundrede og otteogtres pund, en og samme Alphaaaaa GO !

I dette afsnit skal du ideelt set have en lidt dybere forståelse af MCTS-algoritmens indre funktion, men det, du hidtil har lært, skal være nok til at give dig en god fornemmelse for, hvad der foregår her. Det eneste, du skal bemærke, er, hvordan vi bruger policesandsynlighederne og værdiansættelserne. Vi kombinerer dem under udrulning for at indsnævre antallet af træk, vi ønsker at rulle ud på hvert trin. Q (s, a) repræsenterer værdifunktionen, og u (s, a) er en lagret sandsynlighed for denne position. Jeg forklarer.

Husk at politiknetværket bruger overvåget læring til at forudsige ekspertbevægelser? Og det giver dig ikke kun sandsynligvis bevægelse, men snarere giver dig sandsynlighederfor hvert muligt træk, der fortæller, hvor sandsynligt det er at være et eksperttræk. Denne sandsynlighed kan gemmes for hver af disse handlinger. Her kalder de det "forudgående sandsynlighed", og de bruger det selvfølgelig, mens de vælger, hvilke handlinger der skal udforskes. Så grundlæggende, for at beslutte om du vil udforske et bestemt træk, overvejer du to ting: For det første ved at spille dette træk, hvor sandsynligt er du at vinde? Ja, vi har allerede vores "værdinetværk" til at besvare dette første spørgsmål. Og det andet spørgsmål er, hvor sandsynligt er det, at en ekspert vælger dette skridt? (Hvis det er meget usandsynligt, at en bevægelse vælges af en ekspert, hvorfor endda spilde tid på at overveje det. Dette får vi fra politikkenettet)

Lad os så tale om "blandingsparameteren" (se kom tilbage til det!). Som diskuteret tidligere har du to muligheder for at evaluere positioner: den ene skal du blot bruge det værdinetværk, du har brugt til at evaluere stater hele tiden. Og to, du kan prøve hurtigt at spille et udrulningsspil med din nuværende strategi (forudsat at den anden spiller spiller ens) og se om du vinder eller taber. Vi så, hvordan værdifunktionen var bedre end udførelse generelt. Her kombinerer de begge dele. Du prøver at give hver forudsigelse 50–50 betydning eller 40–60 eller 0–100 osv. Hvis du vedhæfter et% af X til det første, skal du vedhæfte 100-X til det andet. Det er hvad denne blandingsparameter betyder. Du kan se disse hit og prøveresultater senere i avisen.

Efter hver udrulning opdaterer du dit søgetræ med de oplysninger, du har fået under simuleringen, så din næste simulering er mere intelligent. Og i slutningen af ​​alle simuleringer vælger du bare det bedste træk.

Interessant indsigt her!

Husker du, hvordan RL-finjusteret politik NN var bedre end bare SL menneskelig trænet politik NN? Men når du placerer dem inden for AlphaTS Googles MCTS-algoritme, viste det sig at være et bedre valg end den finjusterede NN at bruge den menneskelige træning. Men i tilfælde af værdifunktionen (som du husker bruger en stærk spiller til at tilnærme en perfekt spiller), træner Foma ved hjælp af RL-politikken bedre end at træne hende med SL-politikken.

”At udføre al denne evaluering tager meget computerkraft. Vi var virkelig nødt til at bringe de store kanoner ud for at kunne køre disse forbandede programmer. ”

Selvforklarende.

“LOL, vores program sprang bogstaveligt talt bukserne af alle andre programmer, der kom foran os”

Dette går tilbage til den "blandingsparameter" igen. Under evaluering af positioner gav samme værdi til både værdifunktionen og udrulningen bedre end blot at bruge en af ​​dem. Resten forklarer sig selv og afslører en interessant indsigt!

Selvforklarende.

Selvforklarende. Men læs den røde understregede sætning igen. Jeg håber, du kan se tydeligt nu, at denne linje lige her er stort set resuméet af, hvad hele dette forskningsprojekt handlede om.

Afsluttende afsnit. "Lad os prale lidt mere her, fordi vi fortjener det!" :)

Åh, og hvis du er videnskabsmand eller teknologivirksomhed og har brug for hjælp til at forklare din videnskab for ikke-tekniske folk til markedsføring, PR eller træning osv., Kan jeg hjælpe dig. Send mig en besked på Twitter: @mngrwl