Vienkārši izskaidrots: kā AI programma apguva seno Go spēli

Tas ir par AlphaGo , Google DeepMind's Go spēlē AI, kas 2016. gadā satricināja tehnoloģiju pasauli, sakaujot vienu no labākajiem spēlētājiem pasaulē Lī Sedolu.

Go ir sena galda spēle, kurā katrā solī ir tik daudz iespējamo kustību, ka nākotnes pozīcijas ir grūti paredzamas - un tāpēc tās spēlēšanai nepieciešama spēcīga intuīcija un abstrakta domāšana. Šī iemesla dēļ tika uzskatīts, ka tikai cilvēki var labi spēlēt Go. Lielākā daļa pētnieku domāja, ka AI veidošana, kas varētu domāt tā, joprojām prasīs gadu desmitus. Patiesībā es šodien izlaižu šo eseju, jo šonedēļ (8. – 15. Marts) aprit divu gadu gadadiena kopš spēles AlphaGo vs Sedol!

Bet AlphaGo neapstājās pie tā. Pēc 8 mēnešiem tā Go vietnē spēlēja 60 profesionālās spēles, maskējoties kā spēlētājs ar nosaukumu “Master”, un uzvarēja katrā spēlē pret desmitiem pasaules čempionu, protams, neatpūšoties starp spēlēm.

Protams, tas bija MILZĪGS sasniegums AI jomā un izraisīja pasaules mēroga diskusijas par to, vai mums vajadzētu būt satraukti vai noraizējušies par mākslīgo intelektu.

Šodien mēs ņemsim oriģinālu pētījumu, ko DeepMind publicēja Nature žurnālā, un sadalīsim to pa daļām, izmantojot vienkāršu angļu valodu.

Pēc šīs esejas jūs ļoti skaidri zināt, kas ir AlphaGo un kā tas darbojas. Es arī ceru, ka pēc šīs informācijas izlasīšanas jūs neticēsiet visiem žurnālistu veidotajiem ziņu virsrakstiem, lai jūs nobiedētu par AI, un tā vietā jutīsities sajūsmā par to.

Uztraukšanās par AI pieaugošajiem sasniegumiem ir tāda pati kā satraukšanās par Microsoft Powerpoint pieaugošajām spējām. Jā, ar laiku tam būs labāk, pievienojot jaunas funkcijas, taču tas nevar vienkārši nekontrolējami izaugt par kaut kādu Holivudas briesmoni.

Lai saprastu šo dokumentu, jums nav jāzina, kā spēlēt. Patiesībā es pats par to esmu lasījis tikai pirmās 3–4 rindas Wikipedia sākuma rindkopā. Tā vietā, pārsteidzoši, es izmantoju dažus pamatšaha piemērus, lai izskaidrotu algoritmus. Jums vienkārši jāzina, kas ir 2 spēlētāju galda spēle, kurā katrs spēlētājs mainās un beigās ir viens uzvarētājs. Papildus tam jums nav jāzina ne fizika, ne matemātika, ne kaut kas cits.

Tas padarīs to pieejamāku cilvēkiem, kuri tikai tagad sāka mācīties par mašīnmācīšanos vai neironu tīkliem. Un jo īpaši tiem, kuri nelieto angļu valodu kā pirmo valodu (kas var ļoti apgrūtināt šādu darbu lasīšanu).

Ja jums nav iepriekšējas zināšanas par AI un neironu tīklu, jūs varat izlasīt "Deep Mācību" sadaļu vienā no maniem iepriekšējiem esejas šeit . Pēc tā izlasīšanas jūs varēsiet tikt cauri šai esejai.

Ja vēlaties gūt zemu izpratni arī par pastiprināšanas mācīšanos (izvēles lasīšana), to varat atrast šeit .

Ja vēlaties izmēģināt to izlasīt, ir oriģināls:

Kas attiecas uz mani: Sveiki, es esmu Aman, AI un autonoms robotu inženieris. Es ceru, ka mans darbs ietaupīs jums daudz laika un pūļu, ja jūs pats to mācītos.

Vai tu runā japāņu valodā? Ryohji Ikebe ir laipni uzrakstījis īsu piezīmi par šo eseju japāņu valodā, Tweets sērijā.

Sāksim!

Abstrakts

Kā jūs zināt, šī pētījuma mērķis bija apmācīt AI programmu spēlēt Go pasaules līmeņa profesionālu cilvēku spēlētāju līmenī.

Lai saprastu šo izaicinājumu, ļaujiet man vispirms runāt par kaut ko līdzīgu, kas izdarīts šaha labā. Deviņdesmito gadu sākumā IBM nāca klajā ar datoru Deep Blue, kas šahā sakāva lielisko čempionu Gariju Kasparovu . (Viņš ir arī ļoti foršs puisis, noteikti izlasiet vairāk par viņu vēlāk!) Kā spēlēja Deep Blue?

Nu, tā izmantoja ļoti rupja spēka metodi. Katrā spēles posmā tā apskatīja visus iespējamos likumīgos gājienus, kurus varēja spēlēt, un turpināja izpētīt katru kustību, lai redzētu, kas notiks. Un tas kādu laiku turpinātu izpētīt kustību pēc kustības, veidojot sava veida MILZĪGU lēmumu koku ar tūkstošiem kustību. Un tad tas atgriezīsies gar šo koku, novērojot, kuras kustības, visticamāk, nesīs labu rezultātu. Bet ko mēs saprotam ar “labu rezultātu”? Nu, Deep Blue bija daudz rūpīgi izstrādātu šaha stratēģiju, ko eksperti šaha spēlētāji bija iekļāvuši, lai palīdzētu tai pieņemt labākus lēmumus - piemēram, kā izlemt, vai aizsargāt karali vai gūt priekšrocības kaut kur citur? Šim nolūkam viņi izveidoja īpašu “novērtēšanas algoritmu”,lai salīdzinātu, cik izdevīgas vai neizdevīgas ir dažādas valdes pozīcijas (IBM stingri kodētas ekspertu šaha stratēģijas šajā vērtēšanas funkcijā). Un visbeidzot tā izvēlas rūpīgi aprēķinātu soli. Nākamajā pagriezienā tas būtībā atkal iziet visu.

Kā redzat, tas nozīmē, ka Deep Blue pirms katra gājiena izdomāšanas domāja par miljoniem teorētisko pozīciju. Tas nebija tik iespaidīgi attiecībā uz Deep Blue AI programmatūru, bet gan aparatūrā - IBM apgalvoja, ka tas ir viens no jaudīgākajiem datoriem, kas tajā laikā bija pieejami tirgū. Tajā varētu aplūkot 200 miljonus valdes vietu sekundē.

Tagad mēs nākam pie Go. Vienkārši ticiet man, ka šī spēle ir daudz atvērtāka, un, ja jūs izmēģinātu Deep Blue stratēģiju Go, jūs nevarētu spēlēt labi. Katrā solī būtu tik daudz pozīciju, uz kurām būtu jāskatās, ka būtu vienkārši nepraktiski, ja dators izietu šo elli. Piemēram, šaha sākuma gājienā ir 20 iespējamie gājieni. Pirmajā spēlētājā Go ir 361 iespējamais gājiens, un šī izvēle ir plaša visā spēlē.

To viņi domā ar “milzīgu meklēšanas vietu”. Turklāt lietā Go nav tik viegli spriest, cik izdevīga vai neizdevīga ir konkrētā dēļa pozīcija jebkurā konkrētā spēles brīdī - jums ir kādu laiku jāspēlē visa spēle, pirms varat noteikt, kurš uzvar. Bet pieņemsim, ka jums burvju veidā bija veids, kā izdarīt abus. Un tieši tur notiek dziļa mācīšanās!

Tātad šajā pētījumā DeepMind izmantoja neironu tīklus, lai veiktu abus šos uzdevumus (ja jūs vēl nekad neesat lasījis par neironu tīkliem, šeit ir saite vēlreiz). Viņi apmācīja “politikas neironu tīklu”, lai izlemtu, kuri ir saprātīgākie gājieni noteiktā kuģa pozīcijā (tātad tas ir tāpat kā pēc intuitīvas stratēģijas, lai izvēlētos kustības no jebkuras pozīcijas). Un viņi apmācīja “vērtības neironu tīklu”, lai novērtētu, cik konkrēta galda kārtība ir izdevīga spēlētājam (vai citiem vārdiem sakot, cik liela ir iespēja, ka jūs uzvarēsit spēli no šīs pozīcijas). Viņi vispirms apmācīja šos neironu tīklus, izmantojot cilvēku spēles piemērus (jūsu vecais labais parastais uzraudzītais mācību veids). Pēc tam AI varēja zināmā mērā atdarināt cilvēku spēli, tāpēc tas darbojās kā vājš cilvēka spēlētājs. Un tad apmācīt tīklus vēl tālāk,viņi lika AI spēlēt pret sevi miljoniem reižu (šī ir “mācīšanās pastiprināšanas” daļa). Ar to AI uzlabojās, jo tam bija vairāk prakses.

Tikai ar šiem abiem tīkliem DeepMind AI spēja labi spēlēt pret modernākajām Go atskaņošanas programmām, kuras citi pētnieki bija izveidojuši iepriekš. Šīs citas programmas bija izmantojušas jau populāru jau esošu spēļu spēles algoritmu ar nosaukumu “Montekarlo koku meklēšana” (MCTS). Vairāk par to vēlāk.

Bet uzminiet, mēs joprojām neesam runājuši par reālo darījumu. DeepMind AI nav tikai politika un vērtību tīkli. Tas neizmanto šos divus tīklus kā Montekarlo koku meklēšanas aizstājēju . Tā vietā tā izmanto neironu tīklus, lai MCTS algoritms darbotos labāk ... un tas kļuva tik daudz labāks, ka sasniedza pārcilvēcisko līmeni. ŠĪ uzlabotā MCTS variācija ir “AlphaGo”, AI, kas pārspēja Lī Sedolu un iegāja AI vēsturē kā viens no lielākajiem sasniegumiem jebkad. Tātad būtībā AlphaGo ir vienkārši uzlabota ļoti parasta datorzinātņu algoritma ieviešana. Vai tagad saprotat, kāpēc AI pašreizējā formā ir pilnīgi nekas, no kā jābaidās?

Wow, mēs esam pavadījuši daudz laika tikai abstraktam.

Labi - lai saprastu darbu no šī brīža, vispirms mēs runāsim par spēļu stratēģiju, ko sauc par Montekarlo koku meklēšanas algoritmu. Pagaidām es tikai pietiekami dziļi izskaidrošu šo algoritmu, lai būtu jēga no šīs esejas. Bet, ja vēlaties par to padziļināti uzzināt, daži gudri cilvēki par to ir izveidojuši arī lieliskus videoklipus un emuāra ierakstus:

1. Īsa video sērija no Udacity

2. Džefa Bradberija paskaidrojums par MCTS

3. Fullstack Academy MCTS apmācība

Nākamā sadaļa ir gara, bet viegli saprotama (es centīšos pēc iespējas labāk) un ĻOTI svarīga, tāpēc paliec pie manis! Pārējā eseja noritēs daudz ātrāk.

Parunāsim par esejas pirmo rindkopu iepriekš. Atcerieties, ko es teicu par to, ka Deep Blue izveidoja milzīgu koku ar miljoniem galda pozīciju un kustību katrā spēles solī? Jums vajadzēja veikt simulācijas un apskatīt un salīdzināt katru iespējamo kustību. Kā jau teicu iepriekš, tā bija vienkārša pieeja un ļoti vienkārša pieeja - ja vidusmēra programmatūras inženierim būtu jāveido spēle, kas spēlē AI, un viņam būtu visi spēcīgākie datori pasaulē, viņš vai viņa, iespējams, izstrādātu līdzīgu risinājumu.

Bet padomāsim par to, kā cilvēki paši spēlē šahu? Pieņemsim, ka spēles vidū atrodaties noteiktā galda pozīcijā. Pēc spēles noteikumiem jūs varat darīt duci dažādu lietu - pārvietot šo bandinieku šeit, pārvietot karalieni šeit divus vai četrus laukumus utt. Bet vai jūs patiešām izveidojat visu iespējamo kustību sarakstu, ko varat veikt ar visiem saviem gabaliem, un pēc tam atlasiet vienu kustību no šī garā saraksta? Nē - jūs “intuitīvi” sašaurināt līdz dažiem galvenajiem gājieniem (pieņemsim, ka jūs izdomājat 3 saprātīgus gājienus), kuriem, jūsuprāt, ir jēga, un tad jūs domājat, kas notiks spēlē, ja izvēlēsities kādu no šiem 3 gājieniem. Jūs varētu pavadīt 15–20 sekundes, apsverot katru no šiem 3 gājieniem un viņu nākotni - un ņemiet vērā, ka šo 15 sekunžu laikā jums nav rūpīgi jāplāno katra gājiena nākotne;jūs varat vienkārši “izveltīt” dažus prāta gājienus, vadoties pēc savas intuīcijas, bez pārāk lielas rūpīgas domāšanas (labi, labs spēlētājs domātu tālāk un dziļāk nekā vidējais spēlētājs). Tas ir tāpēc, ka jums ir ierobežots laiks,un jūs nevarat precīzi paredzēt, ko pretinieks darīs katrā solī tajā jaukajā nākotnē, kuru gatavojat savās smadzenēs. Tāpēc jums vienkārši jāļauj iekšējai sajūtai jūs vadīt. Es šo domāšanas procesa daļu apzīmēšu kā “ieviešanu”, tāpēc ņemiet to vērā!

Tātad, pēc dažu saprātīgo gājienu “izrullēšanas”, jūs beidzot sakāt, ka pieskrūvējat un vienkārši nospēlējat labāko kustību.

Tad pretinieks izdara kustību. Tas varētu būt solis, kuru jūs jau labi gaidījāt, kas nozīmē, ka tagad esat diezgan pārliecināts par to, kas jums jādara tālāk. Jums atkal nav jāpavada pārāk daudz laika izlaišanai. VAI var gadīties, ka pretinieks tevi sit ar diezgan foršu gājienu, kuru nebiji gaidījis, tāpēc ar nākamo gājienu ir jābūt vēl piesardzīgākam.

Tā spēle turpinās, un, tuvojoties un tuvojoties finiša punktam, jums būtu vieglāk paredzēt savu gājienu iznākumu - tāpēc jūsu izlaišana neaizņem tik daudz laika.

Šī garā stāsta mērķis ir aprakstīt to, ko MCTS algoritms dara virspusēji - tas atdarina iepriekš minēto domāšanas procesu, katru reizi izveidojot kustību un pozīciju “meklēšanas koku”. Atkal, lai iegūtu sīkāku informāciju, jums jāpārbauda saites, kuras es minēju iepriekš. Jauninājums šeit ir tāds, ka tā vietā, lai izietu visus iespējamos kustības katrā pozīcijā (ko Deep Blue izdarīja), tā vietā saprātīgi izvēlas nelielu saprātīgu kustību kopumu un tā vietā pēta tos. Lai tos izpētītu, tas “izvelk” katras šīs kustības nākotni un salīdzina tos, pamatojoties uz viņu iedomātajiem rezultātiem.

(Nopietni - tas ir viss, kas, manuprāt, jums ir nepieciešams, lai saprastu šo eseju)

Tagad - atgriežoties pie ekrānuzņēmuma no papīra. Go ir “perfekta informācijas spēle” (lūdzu, izlasiet definīciju saitē, neuztraucieties, ka tas nav biedējoši). Un teorētiski šādām spēlēm neatkarīgi no tā, kurā konkrētajā pozīcijā spēlē atrodaties (pat ja esat tikko spēlējis 1–2 gājienus), iespējams, ka varat pareizi uzminēt, kurš uzvarēs vai zaudēs (pieņemot, ka spēlē abi spēlētāji “Perfekti” no šī brīža). Man nav ne mazākās nojausmas, kas nāca klajā ar šo teoriju, taču tas ir fundamentāls pieņēmums šajā pētniecības projektā un tas darbojas.

Tātad tas nozīmē, ka, ņemot vērā spēles stāvokli s , ir funkcija v * (s), kas var prognozēt rezultātu, teiksim, varbūtību, ka jūs uzvarēsit šajā spēlē, no 0 līdz 1. Viņi to sauc par “optimālās vērtības funkciju” . Tā kā dažu valdes pozīciju rezultātā jūs, visticamāk, uzvarēsiet, nekā citas valdes pozīcijas, tās var uzskatīt par “vērtīgākām” nekā citas. Ļaujiet man to atkārtot vēlreiz: Vērtība = Varbūtība starp 0 un 1 no jums uzvarēt spēlē.

Bet pagaidiet - sakiet, ka, kamēr jūs spēlējat Šahu, blakus sēdēja meitene vārdā Foma, un viņa katrā solī turpina pateikt, vai jūs uzvarat vai zaudējat. "Jūs uzvarējat ... jūs zaudējat ... Nē, joprojām zaudējat ..." Es domāju, ka tas jums daudz nepalīdzētu izvēlēties, kura kustība jums jāveic. Viņa arī būtu diezgan kaitinoša. Kas jums tā vietā palīdzētu, ir tas, ja jūs uzzīmētu visu iespējamo kustību koku un stāvokļus, pie kuriem šīs kustības novestu - un tad Foma jums par visu koku pastāstītu, kuri stāvokļi ir uzvarošie stāvokļi un kuri stāvokļi ir zaudētājvalstis. Tad jūs varat izvēlēties kustības, kas jūs aizvedīs uz uzvarošajām valstīm. Pēkšņi Foma ir jūsu noziedzības partneris, nevis kaitinošs draugs. Šeit Foma darbojas kā jūsu optimālās vērtības funkcija v * (s). Agrāk,tika uzskatīts, ka Go spēlei nav iespējams iegūt precīzu vērtības funkciju, piemēram, Foma, jo spēlēs bija tik daudz nenoteiktības.

BET - pat ja jums būtu brīnišķīgā Foma, šī brīnumzemes stratēģija, kurā izklāstītas visas iespējamās pozīcijas, kuras Foma varētu novērtēt, reālajā pasaulē nedarbosies ļoti labi. Spēlē, piemēram, Šahs vai Go, kā mēs teicām iepriekš, ja mēģināt iedomāties pat 7–8 gājienus nākotnē, pozīciju var būt tik daudz, ka jums nav pietiekami daudz laika, lai pārbaudītu visas ar Foma.

Tātad ar Foma ir par maz. Jums jāsamazina pārvietošanās saraksts līdz dažiem saprātīgiem gājieniem, kurus varat ieviest nākotnē. Kā jūsu programma to darīs? Ievadiet Lušu. Luša ir prasmīgs šaha spēlētājs un entuziasts, kurš gadu desmitiem ir pavadījis, vērojot, kā lielmeistari viens pret otru spēlē šahu. Viņa var apskatīt jūsu dēļa pozīciju, ātri apskatīt visus pieejamos gājienus, ko jūs varat izdarīt, un pateikt, cik iespējams, ka šaha eksperts izdarīs kādu no šiem gājieniem, ja viņi sēdēs pie jūsu galda. Tātad, ja jums vienā brīdī ir 50 iespējamie gājieni, Luša jums pateiks varbūtību, ka katru kustību izvēlēsies eksperts. Protams, dažiem saprātīgiem gājieniem būs daudz lielāka varbūtība, un citiem bezjēdzīgiem gājieniem būs ļoti maza varbūtība. Piemēram: ja šahā, pieņemsim, ka jūsu karalienei vienā spēles stūrī draud briesmas,jums, iespējams, joprojām ir iespēja pārvietot nelielu bandinieku citā spēles stūrī. Viņa ir jūsupolitikas funkcija , p (a \ s). Konkrētā štatā viņa var sniegt varbūtību visiem iespējamiem eksperta veiktajiem gājieniem.

Wow - jūs varat izmantot Lušas palīdzību, lai palīdzētu jums izvēlēties dažus saprātīgus gājienus, un Foma jums pateiks uzvaras iespējamību no katra no šiem gājieniem. Jūs varat izvēlēties gājienu, kuru apstiprina gan Foma, gan Luša. Vai arī, ja vēlaties būt īpaši piesardzīgs, varat izvērst Lušas izvēlētos gājienus, likt Fomai tos novērtēt, izvēlēties dažus no tiem, lai tie izvērstos nākotnē, un ļaut Fomai un Lušai ​​palīdzēt jums ĻOTI tālu prognozēt spēles nākotne - daudz ātrāka un efektīvāka nekā veikt visus soļus katrā solī nākotnē. TAS ir tas, ko viņi domā, “samazinot meklēšanas vietu”. Izmantojiet vērtības funkciju (Foma), lai prognozētu iznākumus, un izmantojiet politikas funkciju (Lusha), lai dotu jums lielmeistara varbūtības, lai palīdzētu sašaurināt izvērstās kustības. Tos sauc par “Montekarlo ieviešanu”.Tad, kamēr jūs atgriezīsities no nākotnes uz tagadni, jūs varat ņemt visu vidējo vērtību vidējo vērtību un izvēlēties piemērotāko darbību. Līdz šim tas Go darbojās tikai vājā amatieru līmenī, jo politikas funkcijas un vērtību funkcijas, kuras viņi izmantoja, lai vadītu šos izlaišanas gadījumus, nebija tik lieliski.

Phew.

Pirmā rinda ir pašsaprotama. MCTS jūs varat sākt ar nekvalificētu Foma un nekvalificētu Lušu. Jo vairāk jūs spēlējat, jo labāk viņi var prognozēt stabilus rezultātus un kustības. “Meklēšanas sašaurināšana līdz lielas varbūtības darbību gaismai” ir tikai izsmalcināts veids, kā pateikt: “Luša palīdz jums sašaurināt kustības, kas jums vajadzīgas, lai piešķirtu tām varbūtības, ka eksperts tos izspēlēs”. Iepriekšējais darbs ir izmantojis šo paņēmienu, lai sasniegtu spēcīgus amatieru līmeņa AI spēlētājus pat ar vienkāršām (vai “seklām”, kā viņi to sauc) politikas funkcijām.

Jā, konvolucionālie neironu tīkli ir lieliski piemēroti attēlu apstrādei. Un, tā kā neironu tīkls ņem noteiktu ievadi un dod izvadi, tas būtībā ir funkcija, vai ne? Tātad, lai kļūtu par sarežģītu funkciju, varat izmantot neironu tīklu. Tātad jūs varat vienkārši nodot dēļa pozīcijas attēlu un ļaut neironu tīklam pats saprast, kas notiek. Tas nozīmē, ka ir iespējams izveidot neironu tīklus, kas rīkosies tāpat kā ĻOTI precīzas politikas un vērtību funkcijas. Pārējais ir diezgan pašsaprotams.

Šeit mēs apspriežam, kā Foma un Luša tika apmācīti. Lai apmācītu politikas tīklu (paredzot noteiktu pozīciju, kuru izvēlētos eksperti), jūs vienkārši izmantojat cilvēku spēļu piemērus un izmantojat tos kā datus vecām labām uzraudzītām mācībām.

Un jūs vēlaties apmācīt vēl vienu nedaudz atšķirīgu šī politikas tīkla versiju, ko izmantot izlaišanai; šis būs mazāks un ātrāks. Teiksim tikai tā, ka, tā kā Luša ir tik pieredzējusi, viņai nepieciešams zināms laiks, lai apstrādātu katru pozīciju. Viņa ir laba, lai sāktu sašaurināšanas procesu, bet, ja jūs mēģināt likt viņai atkārtot procesu, viņa joprojām aizņem mazliet pārāk daudz laika. Tātad jūs apmācāt * ātrāku politikas tīklu * ieviešanas procesam (es to sauktu ... Lušas jaunākais brālis Džerijs? Es zinu, ka zinu, pietiek ar šiem vārdiem). Pēc tam, kad esat pietiekami apmācījis abus lēnos un ātros politikas tīklus, izmantojot cilvēku spēlētāju datus, varat mēģināt ļaut Lušai ​​dažas dienas spēlēt pret sevi Go dēlī un iegūt vairāk prakses. Šī ir mācīšanās pastiprināšanas daļa - politikas tīkla labākas versijas veidošana.

Pēc tam jūs apmācāt Foma vērtības prognozēšanai: nosakot uzvaras varbūtību. Jūs ļaujat AI praktizēt, spēlējot sevi atkal un atkal simulētā vidē, katru reizi novērojot gala rezultātu un mācoties no tā kļūdām, lai kļūtu arvien labāks.

Es neiedziļināšos sīkāk par to, kā šie tīkli tiek apmācīti. Plašāku tehnisko informāciju varat izlasīt dokumenta vēlākajā sadaļā (“Metodes”), kuru šeit neesmu apskatījis. Faktiski šī konkrētā raksta patiesais mērķis nav parādīt, viņi izmantoja pastiprināšanas mācības šajos neironu tīklos. Vienā no iepriekšējiem DeepMind dokumentiem, kuros viņi iemācīja AI spēlēt ATARI spēles, jau ir padziļināti apspriestas dažas pastiprināšanas mācīšanās metodes (un es jau šeit esmu uzrakstījis šī raksta skaidrojumu). Šajā rakstā, kā es viegli minēju kopsavilkumā un arī pasvītroju iepriekš redzamajā ekrānuzņēmumā, lielākais jauninājums bija fakts, ka viņi izmantoja RL ar neironu tīkliemjau populārā spēļu algoritma MCTS uzlabošanai. RL ir lielisks rīku komplekta rīks, kuru viņi izmantoja, lai precīzi pielāgotu neironu tīklus pēc regulāras uzraudzītas apmācības. Šis pētījuma darbs ir par šī rīka daudzpusības un izcilības pierādīšanu, nevis par to, kā iemācīt to izmantot. Televīzijas valodās Atari papīrs bija RL informatīvs materiāls, un šis AlphaGo papīrs ir komerciāla reklāma.

Labi, mēs beidzot esam pabeiguši “ievada” daļas. Tagad jūs jau ļoti labi jūtaties par AlphaGo.

Tālāk mēs nedaudz iedziļināsimies katrā iepriekš apspriestajā lietā. Jūs varētu redzēt dažus neglītus un bīstamus matemātiskus vienādojumus un izteicienus, taču tie ir vienkārši (es tos visus izskaidroju). Atpūtieties.

Ātra piezīme, pirms dodaties tālāk. Vai vēlaties man palīdzēt uzrakstīt vairāk šādu eseju, izskaidrojot foršus pētnieciskos darbus? Ja jūs domājat nopietni, es labprāt sadarbotos ar jums. Lūdzu, atstājiet komentāru, un es sazināšos ar jums.

Tātad, pirmais solis ir mūsu politikas NN (Lusha) apmācība, lai prognozētu, kuras kustības, visticamāk, veiks eksperts. Šī NN mērķis ir ļaut AI spēlēt līdzīgi kā ekspertam cilvēkam. Tas ir konvolucionāls neironu tīkls (kā jau minēju iepriekš, tas ir īpašs NN veids, kas ir ļoti noderīgs attēlu apstrādē), kas uzņem vienkāršotu tāfeles izkārtojuma attēlu. “Taisngriežu nelinearitātes” ir slāņi, kurus var pievienot tīkla arhitektūrai. Viņi dod tai iespēju apgūt sarežģītākas lietas. Ja kādreiz esat apmācījis NN, iespējams, izmantojāt slāni “ReLU”. Tādi tie ir.

Apmācības dati šeit bija nejaušu dēļu pozīciju pāru veidā, un etiķetes bija darbības, ko cilvēki izvēlējās, atrodoties šajās pozīcijās. Tikai regulāra uzraudzīta mācīšanās.

Šeit viņi izmanto “stohastisko gradientu ASCENT”. Nu, tas ir pavairošanas algoritms. Šeit jūs mēģināt maksimizēt atlīdzības funkciju. Un atlīdzības funkcija ir tikai cilvēka eksperta paredzētās darbības varbūtība; jūs vēlaties palielināt šo varbūtību. Bet hei - par to patiesībā nevajag pārāk daudz domāt. Parasti jūs apmācāt tīklu tā, lai tas līdz minimumam samazinātu zaudējumu funkciju, kas būtībā ir kļūda / atšķirība starp paredzamo iznākumu un faktisko etiķeti. To sauc par gradientu DESCENT. Īstenojot šo pētījumu, viņi patiešām ir izmantojuši regulāru gradienta nolaišanos . Jūs varat viegli atrast zaudējumu funkciju, kas rīkojas pretēji atlīdzības funkcijai tā, ka, samazinot šo zaudējumu, maksimāli palielināsies atlīdzība.

Politikas tīklam ir 13 slāņi, un to sauc par “SL politikas” tīklu (SL = uzraudzīta mācīšanās). Dati tika iegūti no ... Es tikai teikšu, ka tā ir populāra vietne, kurā miljoniem cilvēku spēlē Go. Cik labi šis SL politikas tīkls darbojās?

Tas bija precīzāks par to, ko citi pētnieki bija darījuši iepriekš. Pārējā rindkopa ir diezgan pašsaprotama. Kas attiecas uz “izlaišanas politiku”, jūs pirms dažiem punktiem atceraties, kā Lusha SL politikas tīkls ir lēns, tāpēc to nevar labi integrēt MCTS algoritmā? Un mēs apmācījām vēl vienu ātrāku Lušas versiju, kuru sauca Džerijs, kurš bija viņas jaunākais brālis? Nu, tas attiecas uz Džeriju tieši šeit. Kā redzat, Džerijs ir tikai uz pusi precīzāks par Lušu, BET tas ir tūkstošiem reižu ātrāks! Kad mēs izmantosim MCTS, tas patiešām palīdzēs ātrāk pārvarēt ieviestās nākotnes simulācijas.

Šajā nākamajā sadaļā jums jau * nav * jāzina par pastiprināšanas mācībām, bet tad jums būs jāpieņem, ka viss, ko es saku, darbojas. Ja jūs patiešām vēlaties iedziļināties detaļās un pārliecināties par visu, vispirms vispirms vēlēsities mazliet izlasīt par RL.

Kad esat ieguvis SL tīklu, apmācīts uzraudzītā veidā, izmantojot cilvēka spēlētāja kustības ar cilvēka kustības datiem, kā jau teicu, pirms jums ir jāļauj viņai pašam praktizēt un labāk. To mēs šeit darām. Tātad jūs vienkārši paņemat SL politikas tīklu, saglabājat to failā un izveidojat vēl vienu tā kopiju.

Tad jūs izmantojat pastiprināšanas mācības, lai to precīzi pielāgotu. Šeit jūs liekat tīklam spēlēt pret sevi un mācīties no rezultātiem.

Bet šajā apmācības stilā ir problēma.

Ja jūs mūžīgi praktizējat pret VIENU pretinieku un arī šis pretinieks praktizē tikai ar jums, jūs neko daudz jauna nevarat iemācīties. Jūs vienkārši trenēsieties, kā praktizēt TO VIENU spēlētāju. Tas ir, jūs uzminējāt, pārspīlēts: jūsu paņēmieni spēlē labi pret vienu pretinieku, bet nepietiekami vispārina citus pretiniekus. Tātad, kā jūs to labojat?

Katru reizi, kad precīzi noregulējat neironu tīklu, tas kļūst par nedaudz atšķirīgu atskaņotāju. Tātad jūs varat saglabāt šo neironu tīkla versiju “spēlētāju” sarakstā, kuri visi pareizi rīkojas nedaudz atšķirīgi? Lieliski - tagad, trenējot neironu tīklu, varat nejauši likt tam spēlēt pret daudzām dažādām vecāka un jaunāka pretinieka versijām, kas izvēlētas no šī saraksta. Tās ir viena un tā paša spēlētāja versijas, taču tās visas spēlē nedaudz atšķirīgi. Un jo vairāk trenējaties, jo VAIRĀK spēlētājus jūs trenējat vēl vairāk! Bingo!

Šajā apmācībā vienīgais, kas vada apmācības procesu, ir galīgais mērķis, ti, uzvara vai zaudējums. Jums nav īpaši jāapmāca tīkls, lai veiktu tādas darbības kā uztvertu lielāku platību uz tāfeles utt. Jūs vienkārši dodat tam visas iespējamās likumīgās kustības, no kurām tā var izvēlēties, un sakiet: "jums ir jāuzvar". Un tāpēc RL ir tik universāls; to var izmantot, lai apmācītu politikas vai vērtību tīklus jebkurai spēlei, ne tikai Go.

Šeit viņi pārbaudīja, cik precīzs bija šis RL politikas tīkls, pats par sevi bez jebkāda MCTS algoritma. Kā jūs atceraties, šis tīkls var tieši ieņemt kuģa pozīciju un izlemt, kā eksperts to spēlētu - lai jūs to varētu izmantot, lai viens pats spēlētu spēles.

Rezultāts bija tāds, ka RL precīzi noregulētais tīkls uzvarēja pret SL tīklu, kas tika apmācīts tikai cilvēku kustībām. Tas uzvarēja arī pret citām spēcīgām Go spēles programmām.

Šeit jāatzīmē, ka pat pirms šī RL politikas tīkla apmācības SL politikas tīkls jau bija labāks par vismodernāko - un tagad tas ir vēl vairāk uzlabojies ! Un mēs pat neesam nonākuši pie citām procesa daļām, piemēram, vērtību tīkla.

Vai zinājāt, ka pingvīnu bērni var šķaudīt skaļāk, nekā suns var riet? Patiesībā tā nav taisnība, bet es domāju, ka jūs šeit vēlētos nelielu joku, kas novērš uzmanību no iepriekš biedējošā izskata vienādojumiem. Atkal atgriežoties pie esejas: mēs šeit pabeidzām apmācīt Lušu. Tagad atgriezīsimies pie Foma - atcerieties “optimālās vērtības funkciju”: v * (s) ->, kas jums norāda tikai to, cik liela ir iespējamība uzvarēt pašreizējā kuģa pozīcijā, ja abi spēlētāji spēlē perfekti no šī brīža?

Tāpēc, protams, lai apmācītu NN, lai tā kļūtu par mūsu vērtību funkciju, mums būtu nepieciešams ideāls spēlētājs ... kura mums nav. Tāpēc mēs vienkārši redzam savu spēcīgāko cilvēku , kas, iespējams, ir mūsu RL politikas tīkls.

Tas aizņem pašreizējo štata valdes stāvokli un izsaka varbūtību, ka jūs uzvarēsiet spēlē. Jūs spēlējat spēli un iepazīstat rezultātu (uzvaru vai zaudējumu). Katrs no spēles stāvokļiem darbojas kā datu paraugs, un šīs spēles rezultāts darbojas kā etiķete. Tātad, spēlējot 50 kustību spēli, jums ir 50 datu paraugi vērtības prognozēšanai.

Lol, nē. Šī pieeja ir naiva. Jūs nevarat izmantot visas 50 spēles kustības un pievienot tās datu kopai.

Apmācības datu kopa bija jāizvēlas uzmanīgi, lai izvairītos no pārspīlēšanas. Katrs spēles gājiens ir ļoti līdzīgs nākamajam, jo ​​jūs pārvietojaties tikai vienu reizi, un tas dod jums jaunu pozīciju, vai ne? Ja jūs ņemat stāvokļus visos 50 no šiem gājieniem un pievienojat tos treniņu datiem ar tādu pašu etiķeti, jums būtībā ir daudz “kinda duplicate” datu, un tas izraisa pārmērīgu uzstādīšanu. Lai to novērstu, jūs izvēlaties tikai ļoti atšķirīga izskata spēles stāvokļus. Tā, piemēram, visu spēles 50 gājienu vietā jūs izvēlaties tikai 5 no tiem un pievienojat tos treniņu komplektam. DeepMind ieņēma 30 miljonus pozīciju no 30 miljoniem dažādu spēļu, lai mazinātu iespēju, ka pastāv dublēti dati. Un tas izdevās!

Tagad šeit ir kaut kas konceptuāls : ir divi veidi, kā novērtēt dēļa pozīcijas vērtību. Viena no iespējām ir maģiska optimālās vērtības funkcija (piemēram, tā, kuru apmācījāt iepriekš). Otra iespēja ir vienkārši ieviest nākotni, izmantojot savu pašreizējo politiku (Lusha), un aplūkot šīs izlaišanas galīgo iznākumu. Acīmredzot īstā spēle reti ritētu pēc jūsu plāniem. Bet DeepMind salīdzināja, kā darbojas abas šīs iespējas. Varat arī veikt abu šo iespēju kombināciju. Mēs uzzināsim par šo “sajaukšanas parametru” mazliet vēlāk, tāpēc pierakstiet šo jēdzienu!

Jūsu vienīgais neironu tīkls, kas cenšas tuvināt optimālās vērtības funkciju, ir PAT LABĀKS, nekā tūkstošiem garīgo simulāciju, izmantojot izvēršanas politiku! Foma šeit tiešām iesita pa dupsi. Kad viņi aizstāja ātrās ieviešanas politiku ar divreiz precīzāku (bet lēnāku) RL politiku Lusha un veica tūkstošiem simulāciju ar to , tas veicās labāk nekā Foma. Bet tikai nedaudz labāk un pārāk lēni. Tātad Foma ir šo konkursu uzvarētāja, viņa ir pierādījusi, ka viņu nevar aizstāt.

Tagad, kad mēs esam apmācījuši politikas un vērtību funkcijas, mēs varam tos apvienot ar MCTS un dzemdēt mūsu bijušo pasaules čempionu, lielmeistaru iznīcinātāju, paaudzes izrāvienu, kas sver divsimt sešdesmit astoņas mārciņas, vienu un vienīgo Alphaaaaa GO !

Šajā sadaļā ideālā gadījumā jums vajadzētu nedaudz dziļāk izprast MCTS algoritma iekšējo darbību, taču līdz šim iemācītajam vajadzētu būt pietiekamam, lai jūs varētu labi sajust šeit notiekošo. Vienīgais, kas jums jāņem vērā, ir tas, mēs izmantojam politikas varbūtības un vērtību aprēķinus. Mēs tos apvienojam izlaišanas laikā, lai sašaurinātu to kustību skaitu, kuras vēlamies izlaist katrā solī. Q (s, a) apzīmē vērtības funkciju, un u (s, a) ir saglabāta varbūtība šai pozīcijai. Es paskaidrošu.

Atcerieties, ka politikas tīkls izmanto uzraudzītu mācīšanos, lai prognozētu ekspertu gājienus? Un tas ne tikai dod jums, visticamāk, kustību, bet drīzāk dod varbūtībaspar katru iespējamo gājienu, kas norāda, cik iespējams, ka būs eksperta gājiens. Šo varbūtību var saglabāt katrai no šīm darbībām. Šeit viņi to sauc par "iepriekšēju varbūtību", un viņi to acīmredzami izmanto, izvēloties darbības, kuras izpētīt. Tātad, lai izlemtu, vai izpētīt konkrētu kustību, jūs apsverat divas lietas: Pirmkārt, cik iespējams, ka jūs uzvarēsiet, spēlējot šo soli? Jā, mums jau ir savs “vērtību tīkls”, lai atbildētu uz šo pirmo jautājumu. Un otrs jautājums ir, cik iespējams, ka eksperts izvēlētos šo soli? (Ja ļoti maz ticams, ka eksperts izvēlēsies kādu soli, kāpēc pat tērēt laiku tā izskatīšanai. To mēs iegūstam no politikas tīkla)

Tad parunāsim par “sajaukšanas parametru” (skat. Pie tā atgriezās!). Kā tika apspriests iepriekš, lai novērtētu pozīcijas, jums ir divas iespējas: viena, vienkārši izmantojiet vērtību tīklu, kuru izmantojāt, lai stāvokļus novērtētu visu laiku. Un divi, jūs varat mēģināt ātri spēlēt izvēršanas spēli ar savu pašreizējo stratēģiju (pieņemot, ka otrs spēlētājs spēlēs līdzīgi), un noskaidrojiet, vai jūs uzvarat vai zaudējat. Mēs redzējām, kā vērtības funkcija bija labāka nekā vispārēja izlaišana. Šeit viņi apvieno abus. Jūs mēģināt katrai prognozei piešķirt 50–50 nozīmīgumu vai 40–60, vai 0–100 utt. Ja pirmajam pievienosit% X, otrajam jums būs jāpiesaista 100-X. Tas nozīmē šo sajaukšanas parametru. Šie trāpījumu un izmēģinājumu rezultāti tiks parādīti vēlāk dokumentā.

Pēc katras izlaišanas jūs atjaunojat meklēšanas koku ar visu simulācijas laikā iegūto informāciju, lai jūsu nākamā simulācija būtu saprātīgāka. Visu simulāciju beigās jūs vienkārši izvēlaties labāko kustību.

Interesants ieskats šeit!

Atcerieties, kā RL precizētā politika NN bija labāka nekā tikai SL cilvēku apmācītā politika NN? Bet, kad jūs tos ievietojat AlphaGo MCTS algoritmā, cilvēka apmācītā NN izmantošana izrādījās labāka izvēle nekā precīzi noregulētais NN. Bet vērtības vērtības gadījumā (kuru jūs varētu atcerēties, ka, lai tuvinātu perfektu spēlētāju, tiek izmantots spēcīgs spēlētājs), Foma apmācība, izmantojot RL politiku, darbojas labāk nekā viņas apmācība ar SL politiku.

“Veicot visu šo novērtējumu, ir nepieciešams liels skaitļošanas jauda. Mums patiešām bija jāizņem lielie ieroči, lai varētu vadīt šīs sasodītās programmas. ”

Pašsaprotams.

"LOL, mūsu programma burtiski nopūta bikses visām pārējām programmām, kas bija pirms mums"

Tas atkal atgriežas pie šī “sajaukšanas parametra”. Novērtējot pozīcijas, piešķirot vienādu nozīmi gan vērtības funkcijai, gan izlaišanai, tā darbojās labāk nekā tikai izmantojot vienu no tām. Pārējais ir pats par sevi saprotams un atklāj interesantu ieskatu!

Pašsaprotams.

Pašsaprotams. Bet vēlreiz izlasiet šo sarkano pasvītroto teikumu. Es ceru, ka jūs tagad skaidri redzat, ka šī rinda šeit ir diezgan īss kopsavilkums tam, kas bija viss šis pētniecības projekts.

Noslēguma punkts. "Ļaujiet mums nedaudz vairāk lielīties šeit, jo mēs to esam pelnījuši!" :)

Ak, un, ja jūs esat zinātnieks vai tehnoloģiju uzņēmums un jums nepieciešama palīdzība, izskaidrojot savu zinātni netehniskiem cilvēkiem mārketinga, sabiedrisko attiecību vai apmācības uc vajadzībām, es jums varu palīdzēt. Nometiet man ziņojumu Twitter: @mngrwl