У меня уже есть:
- Класс нейронной сети типа feed-forward (со встроенным расчётом градиента на произвольной модели и пр.
- Класс pair data (пар данных для обучения с учителем)
- Класс поля крестиков-ноликов с методами для стандартного хода (по номеру клетки), методом getNextStates(), который возвращает список возможных будущих состояний (соответственно, крестики и нолики меняются местами, чтобы поле было "от лица соперника"), методом getAsVector(), который возвращает состояние поля в виде вектора 9 значений +-1 или 0 в зависимости от того, что находится в клетке.
Так вот - как правильно обучить бота для крестиков-ноликов обучением с подкреплением? (при условии, что ход нейросети будет заключаться в подсчёте V-функции для всех будущих состояний доски и выборе "наихудшего" с точки зрения соперника состояния).
P.S. Я не использую какие-либо библиотеки, поэтому приводите, пожалуйста алгоритм на псевдокоде.