Использование модели Q-обучения без внешних библиотек - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь использовать обучение подкреплению в игре на основе Пакмана.Я хочу использовать методы Q-обучения для генерации действий моего агента.Я планировал использовать библиотеки openai-gym и keras для обучения моей модели, но я надеялся, что есть способ сохранить мою модель и использовать ее без библиотек open-gym и keras (после того, как она была обучена).Из того, что я понимаю, Q-learning можно использовать для генерации пар «состояние-действие», и мне было интересно, можно ли сохранить все возможные их комбинации для разрешимой системы, такой как Пакман.Это кажется несколько нереальным, поэтому, если у вас есть какие-либо другие идеи, я бы хотел их услышать.

1 Ответ

0 голосов
/ 08 апреля 2019

Из вашего вопроса кажется, что у вас есть модель мира (игры на основе Pacman), и вы хотите обучить алгоритм Q-обучения для решения окружающей среды.После завершения вы хотите сохранить модель.

Сохранение модели полностью зависит от того, какой алгоритм RL вы используете.И, конечно, все они могут быть сохранены, или это было бы бесполезно в реальном мире.

Tabular RL : Табличное Q-learning в основном хранит политику (Q-значения)агента в матрицу формы (S x A), где s - все состояния, a - все возможные действия.После того, как среда решена, просто сохраните эту матрицу в виде CSV-файла.Я быстро реализовал это на моем GitHub в разделе «Обучение усилению».

Линейный RL : Если пространство состояний и / или пространство действий слишком велико, вы можете использовать приближение функций.В этом случае вы строите линейную модель, которая приближается к Q-матрице.Чтобы сохранить эту модель, вам просто нужно сохранить веса этой линейной модели в виде CSV или даже текстового файла.

Deep RL : То же, что и линейный RL.Вам просто нужно сохранить вес нейронной сети.Если вы сами закодировали сеть, сохранить ее как файл csv будет тривиально.Если вы используете tenorflow, вы можете создавать контрольные точки следующим образом:

saver = tf.train.Saver()  # Builds the saver

где бы ни был конец вашего обучения, введите:

saver.save(sess, model_path)

У меня также есть реализация этого дляглубокий детерминированный политический градиент на моем GitHub.

...