Кілька сумнівів щодо застосування підкріплюючого навчання до ігор, як шахи


9

Я винайшов шахову настільну гру. Я побудував двигун, щоб він міг грати автономно. Двигун - це в основному дерево рішень. Складається з:

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

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

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

Яка ще нагорода є в грі, яка є виграш-виграш (1 або 0)? Якщо я використовую інші винагороди, як, наприклад, результат з функції оцінки на кожному кроці, як я можу це реалізувати? Як змінити функцію оцінювання для кращої ітерації нагород після ітерації?

Відповіді:


6

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

Будьте попереджені: Підсилення навчання - це великий складний предмет. Хоча це може зайняти вас в дорозі від ігрових ботів, можливо, ви захочете вивчити основи RL. Хорошим місцем для початку є навчання зміцнення Саттона та Барто : вступ

Яка ще нагорода є в грі, яка є виграш-виграш (1 або 0)?

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

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

Якщо я використовую інші винагороди, як, наприклад, результат з функції оцінки на кожному кроці, як я можу це реалізувати?

Зазвичай ви цього не робите. Що застосовуватиме самостійний гра RL - це дізнатися функцію повернення (іноді її називають утилітою ), яка прогнозує очікування вашої загальної + 1/0 / -1 нагороди до кінця гри. Ви б використали це замість вашого поточного евристичного для пошуку в мінімаксі. Або, можливо, ви могли б налаштувати свою поточну евристичну функцію для виведення в одному діапазоні і використовувати RL для оптимізації її ваг, щоб зробити найкраще наближення до справжньої оптимальної функції повернення відтворення (що, ймовірно, занадто складно, щоб точно обчислити).

Як змінити функцію оцінювання для кращої ітерації нагород після ітерації?

Ось до чого всі спроби зробити різні RL, існує безліч різних вирішувачів. Немає короткого способу пояснити це. Ви можете почати з простого методу, такого як Q-навчання . Q-навчання вивчає оцінки Q (s, a) (називається значенням дії), яка є очікуваною віддачею в стані s та вживанні заходів a, а потім після оптимальної політики. Зробити довільну здогадку для початку та уточнити її ближче до справжнього значення з кожним кроком, зробленим у навчальному середовищі. Прості табличні Q-студенти роблять це вдосконалення, просто зберігаючи велику таблицю всіх станів і дій з найкращою оцінкою досі справжнього значення і усереднюючи кожну нову оцінку, як вона переживається.

Також можливо поєднувати метод евристики RL з пошуком в міні-максі вперед - саме це робив оригінальний AlphaGo і те, що робить AlphaGo Zero під час тренувань. Це потужний підхід, оскільки пошук у minimax буде працювати для подвійної перевірки евристики, породженої RL. Хоча для досить простих ігор RL може вивчити ідеальну евристику, і вам знадобиться лише локальний пошук (яким повинен бути наступний крок).

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

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


"Навчання підсиленням призначене для вирішення середовища із запізненням на винагороду. Додавання нагород" помічників "для тимчасових нецілей зазвичай є контрпродуктивним." Я хотів би зазначити, що є документ, який намагається вирішити проблему з обмеженими винагородами, запроваджуючи посередницькі цілі " Replay Reperience Replay ".
nbro

1
@nbro: Є багато спроб вирішити рідкісні нагороди, це велике відкрите питання в RL, один із способів посилити виклик проблеми - зробити нагороди більш рідкими. Сліди відбору - це ще одна спроба, ієрархічна RL - ще одна перспективна область. . . Я не думаю, що я хочу тут додати ці методи до відповіді, оскільки мова йде більше про доцільність проблеми ОП та вступ до теми
Ніл Слейтер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.