Алгоритм машинного навчання для гри на Connect Four


14

Я зараз читаю про машинне навчання і цікавився, як застосувати його до гри Connect Four .

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

На мою думку, вхідними функціями має бути стан (диск програвача 1, диск програвача 2, порожній) 7x6 = 42 полів сітки.

Виходом буде номер рядка, в який потрібно вставити диск. Оскільки це дискретне число від 1 до 7, я думаю, що це може трактуватися як багатокласова класифікаційна проблема.

Але як я можу генерувати приклади навчання, які можна використовувати під контрольним навчанням?

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

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


2
Google "Підсилення навчання"
Джордж

Гаразд, я думаю, що насправді стосується саме цієї проблеми. Здається, попереду ще багато читання. Якісь конкретніші вказівки чи рекомендації?
Том

1
Якби я знав більше, я би опублікував це як відповідь :) На жаль, у мене немає досвіду вивчення підкріплення. Я б почав із книги «Машинне навчання» Тома Мітчелла. Це дуже хороша вступна книга, а також є розділ про навчання зміцненню.
Джордж

1
Останнє, мені просто цікаво машинне навчання та намагання його познайомити.
Том

1
@Том, є кращі способи «познайомитися» з технікою машинного навчання. Я б почав з більш базових методів класифікації та регресії і рухався вперед. Ви можете взяти набори даних із сховища даних машинного навчання UCI, ознайомитись із записками про курси машинного навчання Ендрю Нґ (Stanford) та отримати реалізацію. Стрибки прямо в спробу вирішити підключення 4 за допомогою підкріплення навчання здаються досить незручними та надмірно складними.
Нік

Відповіді:


8

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

Для уточнення, minimax будує ігрове дерево, де кожен вузол позначений результатом з листя вгору (1 = гравець A виграє, 0 = гравець B виграє), припускаючи, що A вибирає рухи, які максимізують це число, і B обирає рухи які мінімізують його.

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

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


2

Я написав повідомлення в блозі про використання minimax для відтворення підключення чотири рази тому. Ви можете побачити код у дії тут . Якщо вам потрібно тренувати свої моделі, ви можете дозволити їй грати пару тисяч ігор проти моєї реалізації minimax.


Не соромтеся розсилати мій код на Github. github.com/lukasvermeer/minimax
Лукас Вермер

Ласкаво просимо до обміну стеками. Це сайт із запитаннями та відповідями . Прочитайте, будь ласка, наш факс , зокрема, як відповісти . Зокрема, ми не хочемо публікацій, які складаються виключно з посилання на відповідь. Дякуємо за ваш внесок, але чи можете ви, будь ласка, узагальнити тут основні моменти свого блогу?
Жил 'ТАК - перестань бути злим'

Вибачте, але первісне запитання було "як мені створити приклади навчання, які можна використовувати при контрольованому навчанні?" Я надав посилання на робочий код, який можна використовувати для їх створення. Я не бачу, як написання більше тексту вище допомогло б відповісти на початкову потребу.
Лукас Вермер

"Посилання на потенційне рішення завжди вітається, але, будь ласка, додайте контекст навколо посилання, щоб ваші колеги користувачі мали деяке уявлення, що це таке і чому воно існує. Завжди цитуйте найбільш релевантну частину важливої ​​посилання, на випадок, коли цільовий сайт недоступний або постійно переходить у режим офлайн ". Я думаю, що я зробив колишній. Останнє було б неактуальним. Оригінальне запитання потребує прикладних ігор, а не пояснення, як реалізувати рішення.
Лукас Вермер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.