Продолжаю разбирать код программы
https://github.com/Smeilz/Tic-Tac-Toe-Reinforcemen...
1)Программа симулирует 200000 партий в игру 2 оппонентов в крестики-нолики 3x3
2)Сохраняет стратегию в файл при помощи pickle
3) Можно поиграть с обученной стратегий, она загружается опять же при помощи pickle
Я вывел через print сохраняемый объект, там вывелся огромный текст
'X', '0', '0', 'X', 'X', '0'), 3): 1.0, (('X', 'X', ' ', ' ', ' ', ' ', ' ', '0', '0'), 3): 1.203194073499, (('X', 'X', ' ', ' ', ' ', ' ', ' ', '0', '0'), 4): 0.97, (('X', 'X', ' ', ' ', ' ', ' ', ' ', '0', '0'), 5): 1.0, (('X', 'X', ' ', ' ', ' ', ' ', ' ', '0', '0'), 6): 1.0, (('X', 'X', ' ', ' ', ' ', ' ', ' ', '0', '0'), 7): 1.8822040593129998, (('X', 'X', ' ', '0', 'X', ' ', ' ', '0', '0'), 3): 0.92401, (('X', 'X', ' ', '0', 'X', ' ', ' ', '0', '0'), 6): 0.43899999999999995, (('X', 'X', ' ', '0', 'X', ' ', ' ', '0', '0'), 7): 1.8999999669669685, (('X', 'X', ' ', '0', 'X', ' ', '0', '0', '0'), 3): 1.0, (('X', 'X', ' ', '0', 'X', ' ', '0', '0', '0'), 6): 1.0, (('0', ' ', '0', ' ', 'X', ' ', 'X', ' ', ' '), 2): 1.899999952809955, (('0', ' ', '0', ' ', 'X', ' ', 'X', ' ', ' '), 4): 0.707281, (('0', ' ', '0', ' ', 'X', ' ', 'X', ' ', ' '), 6): 1.6262611862579543, .............
upd: Формат сохранения такой.
[Result1 of Q-function, Situation1 on the board, Cell number where do we go this round] : [Result2 of Q-function, Situation2 on the board, Cell number where do we go this round] : etc
Подскажите, если q-learning - это по сути функция накопления полезности действий игрока, то каким образом можно воссоздать сохраненную оптимальную стратегию агента для участия в последующих партий?
С нейросетью все ясно - сохраняем веса и потом воссоздаем сеть для другого набора данных.
А как быть с результатом обучения на Q-learning. Или он сохранил всю цепочку игр для всех позиций и в итоге просто сравнивает все возможные продолжения с любого места игры?
И затем уже выбирает только то продолжение, у которого индекс полезности(функция Q) Была max?
я верно понял логику программы?
Но что будет, если игра будет более сложная, чем эта. Там ведь список вариантов ходов будет просто огромен.
Например шахматы. Получается для шахмат невозможно будет применить Qlearning? А ведь есть еще на порядок более сложные игры, например покер. На сохранение всех сочетаний карт уйдут годы.