Библиотеки 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.