@Smeilz1
За любое развитие

Как reinforcement learning сохраняет найденную оптимальную стратегию?

Продолжаю разбирать код программы 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? А ведь есть еще на порядок более сложные игры, например покер. На сохранение всех сочетаний карт уйдут годы.
  • Вопрос задан
  • 261 просмотр
Решения вопроса 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
С нейросетью все ясно - сохраняем веса и потом воссоздаем сеть для другого набора данных.
А как быть с результатом обучения на Q-learning.
учите Q-learning
Слайды

PS: Здесь понятнее код и правильнее!
Ответ написан
@ivodopyanov
NLP, python, numpy, tensorflow
Похоже, что массив из 9 символов 'X', 'O', ' ' - это текущее состояние игры; целое число после него - это номер клетки, куда делаем ход; вещественное число - полезность хода.
Да, при прогоне для каждой текущей позиции получаем пары <возможный ход>-<его полезность>, и берем максимальный
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы