Як вибрати найкращий алгоритм для настільної гри, як шашки?


15

Як вибрати найкращий алгоритм для настільної гри, як шашки?

Поки що я розглянув лише три алгоритми, а саме: мінімакс, обрізка альфа-бета та пошук дерев в Монте-Карло (MCTS). Мабуть, і альфа-бета обрізка, і MCTS - це розширення основного алгоритму minimax.

Відповіді:


18

tl; dr:

  • Жоден із цих алгоритмів не є практичним для сучасної роботи, але це хороші місця для початку педагогічної роботи.

  • Завжди слід віддавати перевагу використанню обрізки Alpha-Beta при голому пошуку мінімаксу.

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

  • Вам слід віддати перевагу використанню пошуку Монте-Карло-Дерева, коли вам не вистачає хорошої евристики, коли обчислювальні ресурси обмежені та коли помилки не матимуть великих наслідків у реальному світі.

Детальніше:

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

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

Є два загальних способи, як можна точно обходити надзвичайні обчислювальні витрати на вирішення таких ігор:

  1. Використовуйте евристичний (A * пошук - це звичайний алгоритм для педагогічних цілей, але пошук Quiescence - аналогічна ідея у двох іграх). Це лише функція, яка дає оцінку значення стану гри. Замість того, щоб розглянути всі рухи в грі, ви можете просто розглянути кроки на деяку кінцеву відстань вперед, а потім використовувати значення евристики, щоб оцінити значення станів, до яких ви дійшли. Якщо ваша евристика послідовна (по суті: якщо вона завжди завищує якість штатів), то це все одно дасть правильну відповідь, але з величезними прискореннями на практиці.

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


* * Насправді, схоже, не вписується в ігри для двох гравців, як це роблять інші алгоритми? Примітка в MCTS: типові реалізації не "враховують усі рухи вниз до деякої фіксованої глибини", а потім запускають розгортання; натомість типові реалізації динамічно реалізують поступово дерево пошуку дерев, зростаючи його в більш перспективних частинах (частинах, де багато розгортання підштовхуються до стратегії вибору), зростаючи менше в менш перспективних частинах.
Денніс Сомерс

1
@JohnDoucette, чому б ви сказали: "Жоден із цих алгоритмів не є практичним для сучасної роботи, але це гарні місця для початку педагогічної роботи". У випадку з MCTS, це здається дуже доречним для сучасної роботи навіть для пошуку одного гравця, коли перехід до наступного стану дає стан і дію чітко визначено. Чи погодились би ви?
Мігель Сараїва

1
@ MiguelSaraiva Сам по собі MCTS - це не те, що ви зазвичай використовуєте для сучасного додатку. У поєднанні з чимось на кшталт DNN для надання вивченої евристики було б дуже добре.
Джон Дукетт

1
@JohnDoucette "MCTS - це не те, що ви зазвичай використовуєте для сучасного додатку". Перш за все, «сучасність», про яку ви посилаєтесь, мала свій великий прорив у 2016 році (MCTS + DNN), і, здається, ви натякаєте на те, що все, що було раніше, застаріле (очевидно, помилкове). Насправді, може бути навіть більш правдоподібно сказати, що MCTS зазвичай не використовується через протилежне: це TOO вдосконалено: Є безліч додатків у промисловості, які дійсно застаріли і можуть бути оновлені до MCTS. Для багатьох з цих MCTS + DNN - це просто далека мрія, оскільки попередня підготовка майже немислима.
Йоган

1
@Johan Це звучить як для промислових програм , але питання про "настільну гру, як шашки". Для таких проблем із іграшками, я думаю, MCTS - це не правильний сучасний підхід. Однозначно, існує багато проблем із реальним світом, де було б величезне покращення існуючих розгорнутих систем.
Джон Дусетт

7

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

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

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

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

Зв'язок між Minimax та MCTS менш прямий / очевидний, ніж зв'язок між Minimax та Alpha-Beta, але все ще існує принаймні на концептуальному рівні. Я б стверджував, що добре розуміти Minimax спочатку все-таки корисно перед зануренням у MCTS ; зокрема, розуміння Minimax та його недоліків / слабких моментів може забезпечити корисний контекст / допомогти зрозуміти, чому MCTS стали "необхідними" / популярними.


На закінчення, на мій погляд:

  • Альфа-Бета суворо краща за Minimax, але також сильно пов'язана / побудована на вершині Minimax; тож почніть з Minimax, перейдіть до Alpha-Beta згодом, якщо дозволяє час
  • MCTS має різні сильні / слабкі сторони, часто краще, ніж Альфа-Бета в «сучасних» проблемах (але не завжди), добре розуміння Minimax, ймовірно, буде корисним, перш ніж почати занурюватися в MCTS

Чи є якийсь інший алгоритм, який ви б запропонували, щоб я також міг використовувати? Це приблизно на рівні альфа-бета-обрізки
Joey

@Joey Хм ні, не дуже. Minimax - це дуже природна відправна точка, я дуже наполегливо рекомендую, якщо ви тільки починаєте роботу. В основному це був перший алгоритм, розроблений для таких ігор, як шахи / шашки / tic tac toe / що завгодно. Згодом були розроблені сотні, якщо не тисячі удосконалень, багато з яких ви, ймовірно, можете знайти на chessprogramming.wikispaces.com/Search . Альфа-бета - це найприродніше розширення, яке слід шукати на вершині Minimax.
Денніс Сомерс

@Joey Монте-Карло Дерево Пошук дещо інший (не обов'язково є Minimax в якості основи), цікавий, веселий, популярний і дуже актуальний у "сучасних" ШІ. Але основи важливі, я б не рекомендував негайно починати з MCTS, якщо ви ще не розумієте Minimax + Alpha-Beta, хоча це технічно можливо.
Денніс Сомерс

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

@Joey Я не на 100% впевнений, чи шахопрограмування - це найпростіший веб-сайт, на якому можна дізнатися (і, здається, вверху є страшне повідомлення про те, що сайт може зникати наприкінці липня). Якщо я добре пам’ятаю, багато описів досить короткі / напевно, нелегкі для розуміння, якщо ви новачок у цій галузі. Принаймні, це буде хороша, всебічна колекція назв усіх видів алгоритмів / удосконалень, і ви можете спробувати знайти оригінальні джерела або переглянути всі ці імена для отримання більш детальної інформації в іншому місці.
Денніс Сомерс

1

Я повинен вибрати між обрізкою Minimax та Alpha-Beta, ви повинні вибрати Alpha-beta. Це більш ефективно та швидко, оскільки може обрізати значну частину дерева розвідки. Але вам потрібно впорядкувати дії від найкращого до гіршого залежно від точки зору max або min, так що алгоритм може швидко зрозуміти, чи потрібна розвідка.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.