Библиотеки Python для онлайн-машинного обучения MDP

Я пытаюсь изобрести агента итеративного процесса принятия решений (MDP) в Python со следующими характеристиками:

  • наблюдаемое состояние
    • Я обрабатываю потенциальное "неизвестное" состояние, резервируя некоторое пространство состояний для ответа на ходы типа запроса, сделанные DP (состояние при t+1 будет идентифицировать предыдущий запрос [или ноль, если предыдущее перемещение не было запросом), а также встроенный вектор результата) это пространство дополняется нулями до фиксированной длины, чтобы сохранить состояние кадра выровненным независимо от ответа на запрос (длина данных которого может изменяться)
  • действия, которые не всегда могут быть доступны во всех штатах
  • функция вознаграждения может меняться со временем
  • политика конвергенции должна быть постепенной и рассчитываться только за ход

Таким образом, основная идея состоит в том, что MDP должен сделать наилучшее предположение, оптимизированное движение в точке T, используя свою текущую вероятностную модель (и, поскольку его вероятностное движение, которое он делает, является ожидаемым стохастическим, подразумевающим возможную случайность), соедините новое входное состояние в T+1 с вознаграждением от предыдущего шага в T и переоценить модель. Конвергенция не должна быть постоянной, поскольку вознаграждение может модулироваться или доступные действия могут измениться.

Я хотел бы знать, есть ли какие-либо текущие библиотеки Python (желательно кроссплатформенные, так как я обязательно изменяю среды между Windoze и Linux), которые уже могут делать такие вещи (или могут поддерживать их с помощью подходящей настройки, например: производный класс поддержка, которая позволяет переопределить, скажем, метод вознаграждения своим собственным).

Я нахожу информацию об онлайновом обучении MDP за ход довольно скудно. Кажется, что большинство случаев использования MDP, которые я могу найти, сосредоточены на решении всей политики в качестве шага предварительной обработки.

2 ответа

Я аспирант, делающий много вещей MCMC на Python, и, насколько мне известно, ничто не реализует MDP напрямую. Самая близкая вещь, о которой я знаю, это PyMC. Это можно найти в документации, которая дает советы по расширению классов. У них определенно нет вознаграждений и т. Д., Доступных из коробки.

Если вы серьезно относитесь к разработке чего-то хорошего, вы можете рассмотреть вопрос о расширении и создании подклассов PyMC для создания ваших процессов принятия решений, так как тогда вы можете включить это в следующее обновление PyMC и помочь многим будущим людям.

Вот набор инструментов Python для MDP.

Предостережение: это для ванильных MDPs из учебников, а не для частично наблюдаемых MDP (POMDP) ​​или любого вида нестационарности в наградах.

Второе предупреждение: я обнаружил, что документации действительно не хватает. Вам нужно заглянуть в код на python, если вы хотите узнать, что он реализует, или вы можете быстро просмотреть их документацию для аналогичного набора инструментов, который они имеют для MATLAB.

Другие вопросы по тегам