Пояснено просто: Як програма ШІ опановувала давню гру Go

Це про AlphaGo , Google DeepMind's Go, який грає в AI, який потряс світ технологій у 2016 році, перемігши одного з найкращих гравців у світі Лі Седола.

Go - це старовинна настільна гра, яка має настільки багато можливих ходів на кожному кроці, що майбутні позиції важко передбачити - і тому для гри потрібна сильна інтуїція та абстрактне мислення. З цієї причини вважалося, що грати в Go можуть лише люди. Більшість дослідників вважали, що на створення ШІ, який міг би думати так, знадобляться десятки років. Насправді, я публікую це есе сьогодні, тому що цього тижня (8–15 березня) відзначається дворічна річниця матчу AlphaGo проти Седола!

Але AlphaGo на цьому не зупинився. 8 місяців по тому він зіграв 60 професійних ігор на веб-сайті Go під виглядом гравця на ім'я "Майстер" і виграв кожну партію проти десятків чемпіонів світу, звичайно, не відпочиваючи між іграми.

Звичайно, це було ВЕЛИЧЕЗНЕ досягнення у галузі ШІ і спричинило дискусії у всьому світі про те, чи варто нам хвилюватися чи турбуватися про штучний інтелект.

Сьогодні ми збираємося взяти оригінальну дослідницьку роботу, опубліковану DeepMind у журналі Nature , і розбити її по абзацах, використовуючи просту англійську мову.

Після цього есе ви будете чітко знати, що таке AlphaGo і як він працює. Я також сподіваюся, що прочитавши це, ви не повірите всім заголовкам новин, зробленим журналістами, щоб налякати вас про ШІ, а натомість відчуєте від цього захват.

Турбуватися про зростаючі досягнення ШІ - це все одно, що турбуватися про зростаючі можливості Microsoft Powerpoint. Так, з часом він буде покращуватися, додаючи до нього нові функції, але це не може просто нестримно перерости в якусь голлівудську чудовисько.

Вам НЕ потрібно знати, як грати Go, щоб зрозуміти цей документ. Насправді, я сам прочитав лише перші 3–4 рядки у вступному абзаці Вікіпедії про це. Натомість, як не дивно, для пояснення алгоритмів я використовую кілька прикладів з базових шахів. Ви просто повинні знати, що таке настільна гра для двох гравців, в якій кожен гравець чергує, а в кінці є один переможець. Крім цього, вам не потрібно знати ні фізики, ні просунутої математики, нічого іншого.

Це зробить його більш доступним для людей, які тільки зараз почали вивчати машинне навчання або нейронні мережі. І особливо для тих, хто не використовує англійську як свою першу мову (що може дуже ускладнити читання таких статей).

Якщо у вас є без попереднього знання штучного інтелекту і нейронних мереж, ви можете прочитати в розділі «Deep Learning» одного з моїх попередніх статей тут . Прочитавши це, ви зможете пройти це есе.

Якщо ви також хочете отримати неглибоке розуміння Підкріпленого навчання (необов’язкове читання), ви можете знайти його тут .

Ось оригінальний документ, якщо ви хочете спробувати його прочитати:

Щодо мене: Привіт, я Аман, інженер з штучного інтелекту та автономних роботів. Я сподіваюся, що моя робота заощадить вам багато часу та сил, якщо ви хочете вивчити це самостійно.

Ви говорите японською? Рьоджі Ікебе люб’язно написав коротку пам’ятку про цей нарис японською мовою у серії «Твітів».

Давайте розпочнемо!

Анотація

Як відомо, метою цього дослідження було навчити програму ШІ для гри в Go на рівні професійних гравців людського рівня світового класу.

Щоб зрозуміти цю проблему, дозвольте мені спочатку поговорити про щось подібне, зроблене для шахів. На початку 1990-х IBM вийшла з комп'ютером Deep Blue, який переміг великого чемпіона Гаррі Каспарова в шахах. (Він також дуже крутий хлопець, не забудьте прочитати про нього більше пізніше!) Як грав Deep Blue?

Ну, він використовував дуже грубу силу. На кожному кроці гри він переглядав усі можливі легальні кроки, які можна було зіграти, і продовжував вивчати кожен та кожен крок, щоб побачити, що буде. І це могло б продовжувати досліджувати хід за ходом деякий час, формуючи своєрідне ВЕЛИЧЕЗНЕ дерево рішень з тисяч ходів. І тоді воно повернеться вздовж цього дерева, спостерігаючи, які рухи, здавалося, найімовірніше принесли хороший результат. Але що ми маємо на увазі під «хорошим результатом»? Ну, Deep Blue мав багато ретельно розроблених шахових стратегій, вбудованих у неї досвідченими шахістами, щоб допомогти йому приймати кращі рішення - наприклад, як вирішити, захищати короля чи отримувати перевагу десь ще? Для цього вони створили специфічний "алгоритм оцінки",для порівняння того, наскільки вигідними чи невигідними є різні позиції дошки (жорстко закодовані експертні стратегії шахів IBM у цій функції оцінки). І нарешті воно обирає ретельно розрахований хід. На наступному повороті це в основному знову проходить все це.

Як бачите, це означає, що Deep Blue задумався про мільйони теоретичних позицій перед тим, як грати кожен хід. Це не настільки вражало з точки зору програмного забезпечення ШІ Deep Blue, а скоріше апаратного забезпечення - IBM стверджувала, що це один із найпотужніших комп'ютерів, доступних на ринку на той час. Це може розглядати 200 мільйонів позицій на дошці в секунду.

Тепер ми дійшли до Go. Просто повірте мені, що ця гра набагато відкритіша, і якщо ви спробуєте стратегію Deep Blue на Go, ви не зможете добре грати. На кожному кроці було б НАБАГО СТАТЬКО позицій, що комп’ютеру було б просто недоцільно пройти через це пекло. Наприклад, на початковому ході в шахах існує 20 можливих ходів. У Go перший гравець має 361 можливий хід, і ця сфера вибору залишається широкою протягом усієї гри.

Це те, що вони мають на увазі під «величезним простором пошуку». Більше того, в Go не так просто судити, наскільки вигідною чи невигідною є конкретна позиція дошки в будь-якому конкретному моменті гри - вам начебто доведеться на деякий час зіграти всю гру, перш ніж ви зможете визначити, хто виграє. Припустимо, у вас чарівним чином був спосіб зробити це обоє. І ось тут глибоке навчання!

Тож у цьому дослідженні DeepMind використовував нейронні мережі для виконання обох цих завдань (якщо ви ще ніколи не читали про нейронні мережі, ось посилання ще раз). Вони навчили "нейронну мережу політики" вирішувати, які найбільш розумні ходи в певній позиції дошки (тому це все одно, що слідувати інтуїтивній стратегії вибору ходів з будь-якої позиції). І вони навчили "ціннісну нейронну мережу", щоб оцінити, наскільки вигідна певна дошка для гравця (або іншими словами, наскільки висока ймовірність виграти гру з цієї позиції). Вони навчили ці нейронні мережі спочатку на прикладах людських ігор (ваше старе добро звичайне кероване навчання). Після цього ШІ міг до певної міри імітувати людську гру, тому діяв як слабкий людський гравець. А потім навчати мережі ще більше,вони змусили ШІ зіграти проти себе мільйони разів (це частина “навчання підкріплення”). З цим ШІ покращився, бо мав більше практики.

Лише за допомогою цих двох мереж ШІ DeepMind зміг добре зіграти проти найсучасніших програм відтворення Go, які інші дослідники будували раніше. Ці інші програми використовували вже популярний раніше існуючий алгоритм гри, який називався “Монте-Карло Пошук дерева” (MCTS). Детальніше про це пізніше.

Але вгадайте, ми все ще не говорили про реальну угоду. ШІ DeepMind стосується не лише політичних мереж та мереж цінностей. Він не використовує ці дві мережі як заміну пошуку дерев Монте-Карло. Натомість він використовує нейронні мережі, щоб змусити алгоритм MCTS працювати краще ... і він став настільки кращим, що досяг надлюдських рівнів. ЦЕЙ вдосконаленою версією MCTS є "AlphaGo", ШІ, який переміг Лі Седола і увійшов в історію ШІ як один з найбільших проривів за всю історію. Отже, по суті, AlphaGo - це просто вдосконалена реалізація звичайного алгоритму інформатики. Чи розумієте ви зараз, чому ШІ в його нинішньому вигляді абсолютно нічого не лякаєшся?

Ого, ми витратили багато часу лише на Анотацію.

Добре - щоб зрозуміти статтю з цього моменту, спочатку ми поговоримо про ігрову стратегію, яка називається алгоритмом пошуку дерева Монте-Карло. Наразі я просто пояснитиму цей алгоритм на достатній глибині, щоб зрозуміти цей нарис. Але якщо ви хочете дізнатися про це поглиблено, деякі розумні люди також зробили чудові відео та дописи в блозі на цю тему:

1. Короткий відеосеріал з Udacity

2. Пояснення Джеффа Бредберрі MCTS

3. Підручник MCTS від Академії Fullstack

Наступний розділ довгий, але зрозумілий (я постараюся з усіх сил) і ДУЖЕ важливий, тому залишайтеся зі мною! Решта есе піде набагато швидше.

Поговоримо про перший абзац есе вище. Пам’ятаєте, що я говорив про Deep Blue, що робить величезне дерево з мільйонів позицій та ходів на кожному кроці гри? Треба було моделювати, розглядати та порівнювати кожен можливий крок. Як я вже говорив раніше, це був простий і дуже прямий підхід - якби середній інженер-програміст мав розробляти ігри, що грають в ШІ, і мав усі найсильніші комп'ютери світу, він, чи вона, можливо, розробив би подібне рішення.

Але давайте подумаємо, як люди самі грають в шахи? Скажімо, ви знаходитесь на певній позиції дошки в середині гри. За правилами гри ви можете робити десяток різних речей - перемістити цю пішака сюди, перемістити королеву на два квадрати сюди або на три квадрати там тощо. Але чи справді ви складаєте список усіх можливих ходів, які ви можете зробити з усіма своїми фігурами, а потім вибираєте один хід з цього довгого списку? Ні - ви “інтуїтивно” звужуєтесь до кількох ключових ходів (припустимо, ви придумали 3 розумних ходи), які, на вашу думку, мають сенс, і тоді вам цікаво, що буде в грі, якщо ви вибрали один із цих 3 ходів. Ви можете витратити 15–20 секунд, розглядаючи кожен з цих 3 ходів та їхнє майбутнє - і зауважте, що протягом цих 15 секунд вам не потрібно ретельно планувати майбутнє кожного ходу;ви можете просто «розгортати» кілька розумових рухів, керуючись своєю інтуїцією, не надто ретельно продумуючи (ну, хороший гравець міркував би далі і глибше, ніж середній гравець). Це тому, що у вас обмежений час,і ви не можете точно передбачити, що буде робити ваш опонент на кожному кроці в тому прекрасному майбутньому, яке ви готуєте у своєму мозку. Тож вам просто доведеться дозволити почуттю в кишечнику керувати вами. Я буду називати цю частину процесу мислення "розгортанням", тому візьміть це до відома!

Отже, після «розгортання» ваших кількох розумних рухів, ви нарешті скажете «вкрутити» і просто розіграєте той крок, який вам найкращий.

Потім суперник робить ход. Це може бути крок, який ви вже давно передбачали, а це означає, що тепер ви досить впевнені в тому, що вам потрібно робити далі. Вам не доведеться витрачати занадто багато часу на розгортання знову. АБО, може бути так, що ваш суперник вразить вас досить крутим ходом, якого ви не очікували, тому вам слід бути ще обережнішим при наступному русі.

Ось так триває гра, і коли вона наближається все ближче і ближче до фінішної точки, вам буде простіше передбачити результат ваших ходів - тому ваші випуски не займуть стільки часу.

Мета цієї довгої історії - описати, що робить алгоритм MCTS на поверхневому рівні - він імітує вищезазначений процес мислення, будуючи щоразу «дерево пошуку» ходів та позицій. Знову ж таки, для отримання більш докладної інформації слід переглянути посилання, про які я згадав раніше. Інновація тут полягає в тому, що замість того, щоб пройти всі можливі рухи в кожній позиції (що робив Deep Blue), вона замість цього розумно відбирає невеликий набір розумних ходів і досліджує їх. Щоб дослідити їх, воно «розгортає» майбутнє кожного з цих кроків і порівнює їх на основі їх уявлених результатів.

(Серйозно - це все, на мою думку, вам потрібно зрозуміти цей нарис)

Тепер - повернення до знімка екрана з паперу. Go - це "досконала інформаційна гра" (будь ласка, прочитайте визначення у посиланні, не хвилюйтеся, це не страшно). І теоретично для таких ігор, незалежно від того, на якій конкретній позиції ви знаходитесь у грі (навіть якщо ви щойно зіграли 1-2 ходи), можливо, ви можете правильно вгадати, хто виграє чи програє (припускаючи, що грають обидва гравці "Ідеально" з цього моменту). Я не уявляю, хто придумав цю теорію, але це фундаментальне припущення в цьому дослідницькому проекті, і воно працює.

Так що це означає, з огляду на стан гри s , існує функція V * (s) , які можуть передбачити результат, скажімо , ймовірність вам перемоги в цій грі, від 0 до 1. Вони називають це «оптимальне значення функції» . Оскільки деякі позиції дошки, швидше за все, приведуть до виграшу, ніж інші позиції дошки, їх можна вважати більш «цінними», ніж інші. Дозвольте ще раз сказати: Співвідношення = ймовірність від 0 до 1 перемоги у грі.

Але зачекайте - скажіть, що біля вас, коли ви граєте в шахи, сиділа дівчина на ім’я Фома, і вона на кожному кроці постійно повторює вам, виграєте ви чи програєте. "Ви перемагаєте ... Ви програєте ... Ні, все ще програєте ..." Я думаю, це не сильно допоможе вам у виборі того, який рух вам потрібно зробити. Вона також була б досадною. Що натомість допомогло б вам, якщо ви намалювали ціле дерево з усіх можливих ходів, які ви можете зробити, і стани, до яких ці кроки призвели б - і тоді Фома сказав би вам по всьому дереву, які держави виграють, а які - держави, що програли. Тоді ви можете вибрати ходи, які будуть продовжувати вести вас до штатів-переможців. Раптом Фома - ваш партнер у злочині, а не надокучливий друг. Тут Foma поводиться як ваша функція оптимального значення v * (s). Раніше,вважалося, що неможливо мати точну функцію значення, як Фома для гри Go, оскільки в іграх було так багато невизначеності.

АЛЕ - навіть якби у вас був чудовий Фома, ця стратегія країни чудес, що стосується всіх можливих позицій, які Фома може оцінити, не спрацює дуже добре в реальному світі. У такій грі, як Chess or Go, як ми вже говорили раніше, якщо ви спробуєте уявити собі навіть 7–8 переїздів у майбутнє, можливих позицій може бути стільки, що у вас не вистачить часу, щоб перевірити всі з Фомою.

Тож Фоми недостатньо. Вам потрібно звузити перелік ходів до декількох розумних кроків, які ви можете розгорнути в майбутньому. Як ваша програма це зробить? Входить Луша. Луша - досвідчений шахіст і ентузіаст, який десятки років спостерігав, як великі майстри грають в шахи один проти одного. Вона може подивитися на позицію вашої дошки, швидко переглянути всі доступні ходи, які ви можете зробити, і сказати вам, наскільки ймовірно, що експерт з шахів зробить будь-який з цих ходів, якщо вони сидять за вашим столом. Отже, якщо у вас є 50 можливих ходів за один момент, Луша повідомить вам, що ймовірність того, що кожен хід буде обраний експертом. Звичайно, кілька розумних ходів матимуть набагато більшу ймовірність, а інші безглузді ходи матимуть дуже малу ймовірність. Наприклад: якщо в шахах, припустимо, ваша королева знаходиться в небезпеці в одному куточку гри,у вас все ще може бути можливість перенести трохи пішака в інший куточок гри. Вона вашафункція політики , p (a \ s). Для даного стану вона може дати вам ймовірність усіх можливих кроків, які зробить експерт.

Нічого собі - ти можеш скористатися допомогою Луші, яка допоможе тобі вибрати кілька розумних ходів, і Фома повідомить тобі ймовірність виграшу з кожного з цих ходів. Ви можете вибрати хід, який схвалюють і Фома, і Луша. Або, якщо ви хочете бути особливо обережними, ви можете розгорнути ходи, вибрані Лушею, попросити Фому оцінити їх, вибрати кілька з них, щоб розгорнути їх далі в майбутнє, і продовжувати дозволяти Фомі та Луші допомагати вам передбачити ДУЖЕ далеко майбутнє гри - набагато швидше та ефективніше, ніж пройти всі кроки на кожному кроці у майбутнє. ЦЕ те, що вони мають на увазі під „зменшенням простору пошуку”. Використовуйте функцію значення (Foma) для прогнозування результатів, а використовуйте функцію політики (Lusha), щоб дати вам імовірності великого майстра, щоб допомогти звузити ходи, які ви виконуєте. Вони називаються “випуском Монте-Карло”.Потім, повертаючись із майбутнього до сьогодення, ви можете взяти середні значення всіх різних ходів, які ви здійснили, і вибрати найбільш підходящу дію. Наразі це працювало лише на слабкому аматорському рівні в Go, оскільки функції політики та функції цінності, якими вони керували в цих випусках, були не такими чудовими.

Фу.

Перший рядок є зрозумілим. У MCTS можна починати з некваліфікованого Фоми та некваліфікованої Луші. Чим більше ви граєте, тим краще вони прогнозують вагомі результати та ходи. «Звуження пошуку до пучка дій з високою ймовірністю» - це просто вишуканий спосіб сказати: «Луша допомагає вам звузити ходи, які вам потрібно виконати, присвоюючи їм ймовірність того, що їх зіграє експерт». Попередня робота використовувала цю техніку для досягнення сильних гравців на рівні аматорського рівня, навіть із простими (або "дрібними", як вони їх називають) політичними функціями.

Так, згорткові нейронні мережі чудово підходять для обробки зображень. І оскільки нейронна мережа приймає певний вхід і дає вихід, це, по суті, функція, чи не так? Отже, ви можете використовувати нейронну мережу, щоб стати складною функцією. Отже, ви можете просто передати зображення позиції плати і дозволити нейромережі самостійно з’ясувати, що відбувається. Це означає, що можна створити нейронні мережі, які будуть вести себе як ДУЖЕ точні функції політики та значення. Решта досить пояснюється.

Тут ми обговоримо, як навчали Фому та Лушу. Щоб навчити політичну мережу (передбачення для певної позиції, яку ходи вибирають експерти), ви просто використовуєте приклади людських ігор і використовуєте їх як дані для старого доброго навчання під контролем.

І ви хочете навчити ще одну дещо іншу версію цієї мережі політик для використання для розгортань; цей буде меншим і швидшим. Скажімо просто, що, оскільки Луша така досвідчена, їй потрібен певний час, щоб обробити кожну позицію. Їй добре розпочати процес звуження, але якщо ви спробуєте змусити її повторити процес, вона все одно займе трохи занадто багато часу. Отже, ви навчите * швидшу політичну мережу * для процесу розгортання (я називатиму це ... Молодший брат Луші Джеррі? Я знаю, що знаю, досить із цими іменами). Після цього, коли ви достатньо навчите обидві повільні та швидкі політичні мережі, використовуючи дані людського гравця, ви можете спробувати дозволити Луші грати проти себе на дошці Go протягом декількох днів і отримати більше практики. Це підсилююча навчальна частина - створення кращої версії політичної мережі.

Потім ви тренуєте Фому для прогнозування цінності: визначення ймовірності виграшу. Ви дозволяєте ШІ практикуватися, граючи себе знову і знову в змодельованому середовищі, щоразу спостерігаючи за кінцевим результатом і вчившись на його помилках, щоб ставати все кращими і кращими.

Я не буду вдаватися в подробиці того, як навчаються ці мережі. Ви можете прочитати більше технічних деталей у наступному розділі статті («Методи»), який я тут не розглядав. Насправді, справжня мета цієї статті не в тому, щоб показати, як вони використовували підкріплення навчання в цих нейронних мережах. В одній з попередніх робіт DeepMind, в якій вони навчили ШІ грати в ігри ATARI, вже детально обговорювались деякі методи підкріплення (і я вже писав тут пояснення цієї статті). У цій роботі, як я злегка згадував у Рефераті, а також підкреслював на скріншоті вище, найбільшим нововведенням став той факт, що вони використовували RL з нейронними мережамидля вдосконалення вже популярного алгоритму гри MCTS. RL - це чудовий інструмент у наборі інструментів, який вони використовували для точної настройки нейронних мереж політики та функцій оцінки після регулярного тренінгу під наглядом. Ця наукова робота стосується доведення того, наскільки універсальним та чудовим є цей інструмент, а не про те, щоб навчити вас користуватися ним. У телевізійному жаргомі папір Atari був рекламним роликом RL, і цей папір AlphaGo є комерційним.

Добре, ми нарешті закінчили з частинами “вступу”. На даний момент ви вже дуже добре відчуваєте те, що було про AlphaGo.

Далі ми підемо трохи глибше в кожну річ, яку ми обговорювали вище. Можливо, ви побачите деякі потворні та небезпечні на вигляд математичні рівняння та вирази, але вони прості (я їх усі пояснюю). Розслабтесь.

Коротка примітка перед тим, як рухатись далі. Чи хотіли б ви допомогти мені написати більше таких нарисів, що пояснюють круті наукові праці? Якщо ви серйозно, я був би радий з вами попрацювати. Будь ласка, залиште коментар, і я з вами зв’яжусь.

Отже, перший крок - навчити нашу політику НН (Луша), щоб передбачити, які ходи, швидше за все, зіграє експерт. Мета цього НН - дозволити ШІ грати подібним чином до досвідченого людини. Це згорткова нейронна мережа (як я вже згадував раніше, це особливий тип NN, який є дуже корисним при обробці зображень), який робить спрощене зображення розташування плати. “Нелінійність випрямляча” - це рівні, які можна додати до архітектури мережі. Вони дають йому можливість пізнавати більш складні речі. Якщо ви коли-небудь раніше навчали NN, можливо, ви використовували рівень “ReLU”. Ось що це таке.

Дані про навчання тут були у формі випадкових пар позицій на дошці, а мітки - це дії, обрані людьми, коли вони знаходились на цих позиціях. Просто регулярне навчання під наглядом.

Тут вони використовують "стохастичний градієнт ВСХОД". Ну, це алгоритм зворотного розповсюдження. Тут ви намагаєтеся максимізувати функцію винагороди. А функція винагороди - це лише ймовірність дії, передбаченої експертом-людиною; ви хочете збільшити цю ймовірність. Але ей - вам насправді не потрібно надто думати над цим. Зазвичай ви тренуєте мережу так, щоб вона мінімізувала функцію втрат, яка, по суті, є помилкою / різницею між передбачуваним результатом та фактичною міткою. Це називається градієнтним НАСХОДОМ. У реальній реалізації цієї дослідницької роботи вони справді використовували регулярний градієнтний спуск . Ви можете легко знайти функцію збитків, яка поводиться протилежно функції винагороди, така що мінімізація цієї втрати призведе до максимізації винагороди.

Політична мережа має 13 рівнів і називається мережею „Політика SL” (SL = навчання під наглядом). Дані надійшли з ... Я просто скажу, що це популярний веб-сайт, на якому мільйони людей грають у Go. Наскільки успішно працювала ця політика мережі SL?

Це було точніше, ніж те, що робили інші дослідники раніше. Решта абзацу цілком зрозуміла. Щодо “політики розгортання”, ви пам’ятаєте з кількох абзаців тому, як мережа політик Lusha SL є повільною, тому вона не може добре інтегруватися з алгоритмом MCTS? І ми навчили ще одну швидшу версію Луші на ім’я Джеррі, який був її молодшим братом? Ну, це стосується Джеррі саме тут. Як бачите, Джеррі вдвічі менш точний, ніж Луша, АЛЕ це в тисячі разів швидше! Це дійсно допоможе швидше пройти розгорнуте моделювання майбутнього, коли ми застосуємо MCTS.

У цьому наступному розділі вам не потрібно * знати * про навчання з посилення, але тоді вам доведеться вважати, що все, що я скажу, працює. Якщо ви дійсно хочете заглибитися в деталі і переконатися у всьому, вам, можливо, спочатку потрібно прочитати трохи про RL.

Після того, як у вас є мережа SL, ви пройшли навчання під наглядом, використовуючи рухи людського гравця з даними про людські рухи, як я вже говорив, вам доведеться дозволити їй тренуватися самому і покращуватися. Це те, що ми тут робимо. Отже, ви просто берете мережу політик SL, зберігаєте її у файлі та робите ще одну її копію.

Потім ви використовуєте навчання підкріплення, щоб точно його налаштувати. Тут ви змушуєте мережу грати проти себе і вчитися на результатах.

Але в цьому стилі навчання є проблема.

Якщо ви лише назавжди тренуєтесь проти ОДНОГО супротивника, і цей опонент також практикується виключно з вами, нового навчального процесу ви не можете зробити багато. Ви просто будете тренуватися, щоб потренуватися, як бити ТОГО одного гравця. Це, як ви вже здогадалися, надмірне: ваші техніки добре грають проти одного супротивника, але не узагальнюють добре для інших супротивників. То як це виправити?

Щоразу, коли ви тонко налаштовуєте нейронну мережу, вона стає дещо іншим гравцем. Тож ви можете зберегти цю версію нейронної мережі у списку «гравців», які всі поводяться дещо інакше, правда? Чудово - тепер, навчаючи нейронну мережу, ви можете навмання змусити її грати проти багатьох різних старих та нових версій суперника, вибраних із цього списку. Вони є версіями одного і того ж гравця, але всі вони грають дещо по-різному. І чим більше ви тренуєтесь, тим БІЛЬШЕ гравців ви зможете тренуватися ще більше! Бінго!

На цьому тренуванні єдиним, чим керується тренувальний процес, є кінцева мета, тобто перемога або програш. Вам не потрібно спеціально навчати мережу робити такі речі, як захоплення більшої площі на дошці і т. Д. Ви просто даєте їй всі можливі юридичні кроки, з яких вона може вибрати, і говорите: "ти повинен перемогти". І саме тому RL настільки універсальний; його можна використовувати для навчання політик або мереж цінностей для будь-якої гри, а не лише для Go.

Тут вони перевірили, наскільки точною була ця політика мережі RL, сама по собі, без будь-якого алгоритму MCTS. Як ви пам’ятали, ця мережа може безпосередньо зайняти позицію дошки та вирішити, як буде грати в неї фахівець - так ви зможете використовувати її для самостійної гри.

Ну, результатом було те, що відрегульована мережа RL виграла проти мережі SL, яка тренувалася лише на людських кроках. Він також виграв у інших сильних програмах Go.

Тут слід зауважити, що навіть до навчання цій політичній мережі RL мережа політик SL вже була кращою за сучасний рівень - і тепер вона ще більше вдосконалилася ! І ми навіть не дійшли до інших частин процесу, як мережа цінностей.

Чи знали ви, що дитячі пінгвіни можуть чхати голосніше, ніж собака гавкати? Насправді це неправда, але я подумав, що ви хотіли б тут трохи жартувати, щоб відволіктися від наведених вище страшних рівнянь. Знову до есе: ми закінчили навчання Луші тут. Тепер повернімось до Фоми - пам’ятайте «функцію оптимального значення»: v * (s) ->, яка повідомляє лише про те, наскільки ймовірною є перемога на вашій поточній позиції дошки, якщо обидва гравці з цього моменту грають ідеально?

Отже, очевидно, що для того, щоб навчити НН стати нашою ціннісною функцією, нам потрібен ідеальний гравець ... якого у нас немає. Отже, ми просто використовуємо наш найсильніший плагін, який, як виявляється, є нашою мережею політик щодо RL.

Він приймає поточний стан дошки та відображає ймовірність того, що ви виграєте гру. Ви граєте в гру і дізнаєтесь результат (перемога або програш). Кожне зі станів гри виступає як зразок даних, а результат цієї гри виступає як мітка. Отже, граючи в гру на 50 ходів, у вас є 50 зразків даних для прогнозування значення.

Лол, ні. Такий підхід є наївним. Ви не можете використовувати всі 50 ходів гри та додати їх до набору даних.

Набір навчальних даних потрібно було вибирати ретельно, щоб уникнути переобладнання. Кожен хід у грі дуже схожий на наступний, тому що ви рухаєтеся лише один раз, і це дає вам нову позицію, так? Якщо взяти штати на всіх 50 із цих ходів і додати їх до навчальних даних з тим самим ярликом, то в основному у вас буде багато «дубльованих» даних, і це спричиняє перенапруження. Щоб цього не сталося, ви вибираєте лише дуже чітко виражені ігрові стани. Так, наприклад, замість усіх 50 ходів гри ви вибираєте лише 5 із них і додаєте їх до навчального набору. DeepMind зайняв 30 мільйонів позицій із 30 мільйонів різних ігор, щоб зменшити шанси на наявність дублікатів даних. І це спрацювало!

Тепер щось концептуальне : є два способи оцінити значення позиції правління. Одним із варіантів є магічна функція оптимального значення (подібно до тієї, яку ви навчили вище). Інший варіант - просто розгорнутись у майбутньому, використовуючи свою поточну політику (Луша), і подивитися на кінцевий результат цього викладу. Очевидно, що реальна гра рідко відповідає вашим планам. Але DeepMind порівняв, як працюють ці два варіанти. Ви також можете зробити суміш обох цих варіантів. Про цей “параметр змішування” ми дізнаємося трохи пізніше, тож зробіть розумову ноту цієї концепції!

Ну, ваша єдина нейронна мережа, яка намагається наблизити функцію оптимального значення, НАВІТЕ КРАЩА, ніж робити тисячі розумових симуляцій за допомогою політики розгортання! Фома справді штовхнув тут дупу. Коли вони замінили політику швидкого розгортання на двічі точнішу (але повільну) політику RL Луша і зробили тисячі симуляцій з цим , це зробило краще, ніж Фома. Але лише трохи краще і занадто повільно. Тож Фома є переможницею цього змагання, вона довела, що її не можна замінити.

Тепер, коли ми навчили політиці та ціннісним функціям, ми можемо поєднати їх з MCTS і народити нашого колишнього чемпіона світу, руйнівника великих майстрів, прорив покоління, що важить двісті шістдесят вісім фунтів, один і єдиний Alphaaaaa GO !

У цьому розділі в ідеалі ви повинні трохи глибше зрозуміти внутрішню роботу алгоритму MCTS, але того, що ви дізналися до цього часу, повинно бути достатнім, щоб дати вам гарне відчуття того, що тут відбувається. Єдине, на що слід звернути увагу, це те, як ми використовуємо ймовірності політики та оцінки вартості. Ми поєднуємо їх під час розгортання, щоб звузити кількість ходів, які ми хочемо виконати на кожному кроці. Q (s, a) представляє функцію значення, а u (s, a) - збережена ймовірність для цієї позиції. Поясню.

Пам'ятаєте, що політична мережа використовує контрольоване навчання для прогнозування дій експертів? І це не просто дає вам найімовірніший рух, а швидше дає ймовірностідля кожного можливого кроку, який показує, наскільки ймовірним є досвід експертів. Цю ймовірність можна зберегти для кожної з цих дій. Тут вони називають це «попередньою ймовірністю» і, очевидно, використовують її, вибираючи, які дії дослідити. Отже, в основному, щоб вирішити, досліджувати той чи інший хід, ви враховуєте дві речі: По-перше, зігравши цей хід, наскільки ймовірно, що ви виграєте? Так, ми вже маємо свою “мережу цінностей”, щоб відповісти на це перше запитання. І друге питання: наскільки ймовірно, що експерт обере цей крок? (Якщо переїзд навряд чи буде обраний експертом, навіщо взагалі витрачати час на його розгляд. Це ми отримуємо від мережі політик)

Тоді давайте поговоримо про “параметр змішування” (див. Повернувся до нього!). Як обговорювалося раніше, для оцінки позицій у вас є два варіанти: один, просто використовуйте мережу значень, яку ви використовували для оцінки станів весь час. По-друге, ви можете спробувати швидко зіграти в гру розгортання з вашою поточною стратегією (припускаючи, що інший гравець буде грати аналогічно) і перевірити, виграєте ви чи програєте. Ми побачили, як функція значення була кращою, ніж взагалі розгортання. Тут вони поєднують обидва. Ви намагаєтесь надати кожному передбаченню значення 50–50, або 40–60, або 0–100 тощо. Якщо ви прикріпите% X до першого, вам доведеться приєднати 100-X до другого. Ось що означає цей параметр змішування. Ці результати потрапляння та випробувань ви побачите пізніше у статті.

Після кожного розгортання ви оновлюєте дерево пошуку з будь-якою інформацією, отриманою під час моделювання, щоб наступне моделювання було більш розумним. І в кінці всіх моделювань ви просто обираєте найкращий хід.

Цікаве розуміння тут!

Пам’ятаєте, як RL відрегульована політика NN була кращою, ніж просто політика NN, навчена людьми? Але коли ви поміщаєте їх в алгоритм MCTS AlphaGo, використання навченої людиною NN виявилося кращим вибором, ніж відрегульована NN. Але у випадку функції значення (яку ви пам’ятаєте, використовує сильного гравця для наближення ідеального гравця), тренування Фоми за допомогою політики RL працює краще, ніж навчання її за політикою SL.

«Виконання всіх цих оцінок вимагає значних обчислювальних потужностей. Нам справді довелося вивести великі гармати, щоб мати можливість запускати ці прокляті програми ».

Пояснювальне.

"LOL, наша програма буквально підірвала штани будь-якої іншої програми, яка була до нас"

Це знову повертається до того «параметра змішування». Під час оцінки позицій, надаючи однакове значення як функції значення, так і розгортанню, було ефективнішим, ніж просто використання однієї з них. Решта пояснюється само собою, і відкриває цікаве розуміння!

Пояснювальне.

Пояснювальне. Але прочитайте це червоно підкреслене речення ще раз. Я сподіваюся, що ви зараз чітко бачите, що цей рядок тут - це майже підсумок того, про що був весь цей дослідницький проект.

Заключний абзац. "Давайте трохи більше похвалимось тут, бо ми цього заслужили!" :)

О, і якщо ви вчений або технічна компанія, і вам потрібна допомога в поясненні своєї науки нетехнічним людям для маркетингу, PR чи навчання тощо, я можу вам допомогти. Напишіть мені повідомлення у Twitter: @mngrwl