Як AlphaZero вчиться оцінювати позицію, яку вона ніколи не бачила?


12

Результати відповіді на:

Розуміння AlphaZero

Моє питання полягало б у тому, як нейронна сітка «вчиться», що робити у позиції, з якою вона не стикалася. Скажімо, фактичний AZ виконує MCTS, використовуючи зміщення + ваги від підготовленої нейронної мережі, просто відштовхує його крок до того, як нейронна сітка обчислює ці значення. Якщо це було через випадкову самоігру, без людських знань, то як вона вирішує, як зважувати позицію, яку вона ніколи не бачила?

Відповіді:


6

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

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

З статті на AlphaZero (стор. 3):

Параметри глибокої нейромережі в AlphaZero навчаються методом самостійного відтворення підкріплення, починаючи з випадково ініціалізованих параметрів. У ігри грають, вибираючи ходи для обох гравців MCTS. В кінці гри, кінцеве положення визначається за правилами гри для обчислення результату гри: −1 за програш, 0 за нічию та +1 за виграш. Параметри нейронної мережі оновлюються таким чином, щоб мінімізувати помилку між передбачуваним результатом та ігровим результатом, а також максимально схожий вектор політики на вірогідність пошуку.

[математичні символи вилучені з цитати]

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


Я повністю розумію ваше пояснення на алгоритмічному рівні, але я все ще вражений, що це працює. Я б подумав, що ранні ігри будуть настільки випадковими, що не матимуть ніякої цінності для навчання. Здається, неможливо оцінити результат кроку на цьому етапі, за винятком того, як розіграти його до мат-мату, оскільки це єдине, про що вам сказали. Але цей мат матиме місце лише після того, як піде велика кількість інших, по суті, випадкових речей. Моє відчуття кишки полягає в тому, що просто не вистачає значущих даних, щоб зробити якісь висновки. Чому я помиляюся?
Філіп Роу

@PhilipRoe Ви маєте рацію, кожна гра дає лише трохи інформації. Я фактично написав свій власний шаховий двигун, який навчається за еволюційним алгоритмом. Випадково модифіковані копії двигуна відтворюють одна одну; програші видаляються, а переможці видають більше модифікованих копій. Зазвичай на це потрібно від 10 000 до 20 000 ігор, щоб визначити правильний порядок цінностей (королева, грак, єпископ / лицар, пішак). Для досягнення своєї майстерності AlphaZero знадобилося 44 мільйони ігор (таблиця на сторінці 15 зв'язаного паперу).
Марк Н

Дякуємо за відгук! Але я все ж вражений. Існує величезний простір можливих позицій для оцінки. Але є також величезний простір можливих запитань. Антропоморфно я уявляю себе з нульовим попереднім знанням, крім правил, та величезною базою ігор, які граються на майже немислимому рівні некомпетентності (хоча я не думаю, що все запам’ятовується) слід порахувати шматки "Тоді скільки часу перед тим, як порахувати шматки, здається гарною ідеєю?
Філіп Роу

1
Мені дуже важко уявити, навіть якщо були б наводяться якісь сильні натяки на тему "Що є гарним питанням?" Але навіть незважаючи на це, я вразив, що в 20 000 іграх може бути встановлена ​​спадковість творів. Тому мені важко визнати, що табула справді раса. Деякі мінімальні інструкції щодо процесу створення та перегляду ваших правил (скільки, як часто?) Все ще здаються важливими.
Філіп Роу

1
@PhilipRoe У своїй програмі я кажу двигуну рахувати шматки, але не скільки коштує кожен шматок. Отже, я кажу моторові, на що слід дивитись, а не як зважувати те, що він бачить. AlphaZero набагато більше tabula rasa. Якщо вам цікаво: github.com/MarkZH/Genetic_Chess
Марк Н
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.