здійснення часової різниці в шахах


10

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

f(p)=w1material+w2kingsafety+w3mobility+w4pawn-structure+w5trapped pieces

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

Відповіді:


4

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

Приблизно вам потрібно буде змусити двигун грати в ігри один проти одного. Запишіть міні-оцінку для кожної позиції. В кінці гри ви отримаєте винагороду, яка становить {0,1, -1} за шахи. Тоді вам потрібно буде налаштувати параметри за допомогою:

введіть тут опис зображення

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

Далі вам потрібно буде використовувати нові параметри, щоб грати в нову гру. Повторюється до тих пір, поки ви не зможете дозволити собі стільки ігор, або коли вам здається, що це сходиться.

Кілька зауважень:

  1. У роботі, яку я цитую, застосовується коефіцієнт знижки. Це робиться за алгоритмом зворотної пропорції для нейронної мережі. Вам це не потрібно.
  2. Вам потрібно буде експериментувати з оптимальною швидкістю навчання (альфа в рівнянні). Занадто велике зробить ваше навчання нестабільним, занадто мало займе більше часу для сходження. Я бачив людей, які використовують 0,70. У роботі, яку я цитую, використано 1.0.

Привіт, я люблю вашу відповідь, але ви можете, будь ласка, зафіксувати посилання на папір?
падура

@padura Виправлено. Будь ласка, прочитайте. Це було хороше прочитання для науки про дані.
HelloWorld

(+1) Відмінна відповідь.
Любила

Це чудова стаття, прикро, що я не знав цього під час роботи над власним шаховим двигуном;) Цікаво, чи вдасться вдосконалитись, поєднуючи цю техніку: bjmc.lu.lv/fileadmin/user_upload/lu_portal/ projekti / bjmc /…
padura

2

Перше зауваження, ви повинні подивитися "Wargames", щоб знати, у що ви потрапляєте.

Те, що ви хочете, є f (p) таким, щоб f (p) було максимально наближеним до сили положення.

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

Іншим рішенням є вилучення позицій, тож у вас є таблиця '(матеріал, безпека, мобільність, структура пішака, ловушки) -> доброта позиції', де доброта позиції є деяким об'єктивним фактором (результат виграш / програш обчислюється за допомогою моделювання вище або відомі відповідники, глибина доступного дерева, кількість рухів під деревом, коли покращиться один із 5 факторів. Ви можете спробувати різні функціональні форми для своїх f (p), регресії, svm.


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