проблема с добавлением логики для недопустимых движений в тренажерном зале openai и стабильной базе
Я хочу интегрировать свою среду в тренажерный зал openAI, а затем использовать стабильную библиотеку базовых показателей для ее тренировки.
ссылка на стабильный базовый уровень:
https://stable-baselines.readthedocs.io/
Метод обучения в стабильной базовой линии - это однострочное обучение, и у вас нет доступа к действиям, предпринимаемым во время обучения.
model.learn(total_timesteps=10000)
В частности, вы не делаете строку, в которой вы выбираете из среды в своем коде:
action = space.sample()
Однако мне нравится добавлять некоторую логику в место, где я выбираю действие следующего состояния и отклоняю некоторые действия, которые логика к ним не применима (например, недопустимые ходы на шахматной доске), например:
for _ in range(1000):
action = env.space.sample()
if some_logic(action):
continue
один из способов сделать это - написать оболочку для функции action_space sample() и выбрать только юридические действия. Как здесьclass DiscreteWrapper(spaces.Discrete)
по следующей ссылке:
https://github.com/rockingdingo/gym-gomoku/blob/master/gym_gomoku/envs/gomoku.py
Но проблема в том, что стабильная базовая линия принимает только определенные типы данных и не допускает этого.
Как я могу сделать это таким образом, чтобы он был интегрирован в стабильную базовую среду и не нарушал критерии стабильной базовой линии? Если это вообще невозможно, знает ли кто-нибудь другой фреймворк обучения с подкреплением, который, в отличие от стабильной базовой линии, разрешает доступ к действиям?