Як "думати" шахові двигуни?


28

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


Шахові двигуни дивляться на кілька мільйонів позицій в секунду, тому вони насправді можуть переглядати всі, поки вони не пройдуть кілька кроків углиб.
RemcoGerlich

2
Це дивовижне запитання, мені дуже сподобалися відповіді.
Тревіс J

В основному вони заздалегідь шукають алгоритм пошуку (наприклад, мінімакс) і оцінюють позиції за допомогою попередньо запрограмованої евристики. Хоча деякі останні двигуни (наприклад, AlphaZero) розробляють власні методи оцінювання за допомогою самої гри.
Інерційне ігнорування

Відповіді:


22

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

http://www.chess.com/blog/zaifrun містить серії чи статті про створення шахового двигуна, якщо ви хочете більш глибоко подивитися, як вони працюють.


Приємна відповідь, тому коли ви бачите глибину 30, чи означає це, що двигун шукав 30 вузлів глибиною? Також, що це означає під Ply?
xaisoft

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

5
Шлях - це половина ходу. Рух у шахах - це один повний "набір", якщо ви будете білим + чорним. Шлях - це половина, тож лише один колір.
ErebusBat

21

Ви задаєте досить складне запитання, але добре повернутися до основ. Є кілька концепцій, які слід врахувати:

Оцінка

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

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

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

А як же тонкі, глибокі позиційні ходи?

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

Пошук

Я спеціально випустив щось із вищесказаного, про що більшість реальних гравців одразу подумають - чи є спосіб негайно виграти гру для обох сторін? Будь-які товариші чи «висячі» шматки видно? Хоча трівіалізувати це легко, але це не що інше, як банальне.

Що означає для гравця повну впевненість у поєднанні? Зрештою, це зводиться до обчислення всіх варіантів. Реальні гравці зазвичай цього не роблять (за винятком тривіальних або дуже вимушених товаришів), більшість часу ми будемо розглядати лише кілька варіантів і виключати інших, які здаються "неконструктивними" або очевидно призводять до втрати . Ми часто робимо помилки під час цього розрахунку, наприклад, ми можемо усвідомити, що зміна замовлень на переміщення змушує загрози випаровуватися тощо. Справа в тому, що, щоб бути повністю впевненим у комбінації, потрібно насправді обчислити весь шлях до її висновку, припускаючи кожен гравець зробить лише найкращий можливий хід, доступний їм (це позначається як "min / max").

Тепер, враховуючи, що шахи мають набагато більший простір пошуку (саме на це йдеться про "всі можливі кроки в майбутньому"), ніж те, що комп’ютеру можливо розрахувати, потрібно робити компроміси. Як і люди, комп'ютери можуть вирішити ігнорувати цілі лінії думки на основі певних критеріїв. Це відомо як евристика . Варто зауважити, що, хоча ви можете бути впевнені у комбінації лише у тому випадку, якщо ви змусили її виконувати грубу силу, складна функція оцінювання часто може виявити наявність загроз (наприклад, ми могли б порахувати вилки, можливості шампура тощо, щоб керувати пошуком у цьому напрямку ).

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

Висновок / поєднання все це

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


6

Я згоден з відповідями.

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

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

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

EDIT

Дивіться також Вікі про шахові програми .


4

Просто неможливо, щоб комп'ютери виглядали досить глибоко (25 слоїв і більше) і перевіряли кожен можливий хід.

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

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

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

Отже, підводячи підсумок - ви праві, вони не можуть переглядати всі рухи, якщо вони грають у стратегічні шахи, але можуть дуже швидко подивитися на гідні кроки. Проблема все ще полягає в дуже довгострокових планах і горизонті, на який вони можуть бачити, але над цим працює (Рибка аналізує набагато повільніше, але грає в набагато більш позиційні шахи, в той час як Гудіні романтичний, коли «механічне серце» обчислює більше рухів і грати більш агресивно). Навіть комп’ютери мають свої стилі!


3

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

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

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

Інші книги, які можуть бути актуальними, - це «Невидимі шахові рухи» Еммануеля Неймана та «Шалечі шахи» Чарльза Хертана, обидві з яких стверджують важливість врахування неправдоподібних чи дивних рухів у гострих положеннях. Гертан навіть розмовляє про розробку «комп'ютерних очей» для такої тактики.

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