Я пишу просту гру з іграшками з наміром навчити поверх неї глибоку нейронну мережу. Правила гри приблизно такі:
- У грі є дошка, складена з шестикутних клітин.
- Обидва гравці мають однакову колекцію творів, яку вони можуть вибрати для вільного розташування на дошці.
- Розміщення різних типів очок за присвоєння фігур (або зменшення очок противника) залежно від їх положення та конфігурації.
- У кого більше очок, той і виграє.
Існують додаткові правила (про повороти, кількість та типи творів тощо), але вони не важливі в контексті цього питання. Я хочу розробити глибоку нейронну мережу, якій можна ітеративно вчитися, граючи проти себе. Мої запитання стосуються представлення вводу та виводу. Зокрема:
- Оскільки візерунок шматочків має значення, я думав мати хоча б кілька звивистих шарів. Дошка може бути різного розміру, але в принципі дуже мала (6х10 на моїх тестах, щоб розширити на кілька комірок). Чи є сенс? Який пул я можу використовувати?
- Як представляти обидві сторони? У цій роботі про ходу автори використовують дві вхідні матриці, одну для білих каменів та одну для чорних каменів. Чи може це працювати і в цьому випадку? Але пам’ятайте, у мене є різні типи фігур, скажімо, A, B, C і D. Чи слід використовувати 2x4 вхідні матриці? Мені це здається дуже рідким і малоефективним. Я побоююсь, що конволюційні шари зможуть працювати надто рідко.
- Я подумав, що результатом може бути розподіл ймовірностей по матриці, що представляє позиції дошки, плюс окремий масив ймовірностей, що вказує, яку частину грати. Однак мені також потрібно представляти здатність пройти поворот, що дуже важливо. Як я можу це зробити, не розбиваючи його значення серед інших ймовірностей?
- І найголовніше , чи я виконую лише виграшні ходи чи теж програють ходи? Забезпечити перемогу в ходах легко, оскільки я просто встановив бажані ймовірності до 1. Однак, коли програю, що я можу зробити? Встановити ймовірність переміщення на 0, а всі інші на одне значення? Крім того, чи є сенс застосовувати рухи за різницею різниці балів, навіть якщо це буде суперечити змісту результатів, які є приблизно ймовірними?
Також я розробив ігровий движок в node.js, думаючи використовувати Synaptic як фреймворк, але я не впевнений, що він може працювати з конволюційними мережами (я сумніваюся, є спосіб виправити ваги, пов'язані з локальними сприйнятливими полями). Будь-які поради щодо інших бібліотек, сумісних із вузлом?