Я знаю, что это глупый вопрос, но я не могу найти хороший способ выразить его.
Я работал с TensorFlow и TFAgents, а теперь перехожу на Ray RLlib. Глядя на все фреймворки/библиотеки RL, я запутался в разнице между двумя ниже:
Например, в TensorFlow есть коды Keras, а Ray RLlib поддерживает как TensorFlow, так и PyTorch. Как они все связаны?
Насколько я понимаю, Keras позволяет создавать нейронные сети, а TensorFlow — это скорее математическая библиотека для RL (у меня недостаточно понимания PyTorch). А библиотеки, такие как TFAgents и RLlib, используют такие фреймворки, как Keras и TensorFlow, для реализации существующих алгоритмов RL, чтобы программисты могли легко их использовать.
Может кто-нибудь объяснить, как они взаимосвязаны/различны? Большое спасибо.
Да вы как бы правы. Такие фреймворки, как Keras, TF (который также использует keras, кстати) и Pytorch, являются общими фреймворками глубокого обучения. Для большинства случаев использования искусственных нейронных сетей эти фреймворки работают просто отлично, и ваш типичный конвейер будет выглядеть примерно так:
Тем не менее, Reinforcement Learning существенно отличается от большинства других приложений машинного обучения Data Science. Начнем с того, что в RL вы фактически генерируете свой собственный набор данных, когда ваша модель (агент) взаимодействует со средой; это существенно усложняет ситуацию, особенно с вычислительной точки зрения. Это связано с тем, что в традиционном сценарии ML большая часть тяжелой вычислительной работы выполняется вызовом model.fit(). И хорошая вещь в вышеупомянутых фреймворках заключается в том, что после этого вызова ваш код фактически входит в очень эффективный код C/C++ (обычно также реализующий библиотеки CUDA для использования GPU).
В RL большой проблемой является среда, с которой взаимодействует агент. Я разделяю эту проблему на две части:
а) Среда не может быть реализована в этих фреймворках, потому что она всегда будет меняться в зависимости от того, что вы делаете. Таким образом, вы должны кодировать среду, и, скорее всего, это будет не очень эффективно.
б) Среда является ключевым компонентом в коде, и она постоянно несколько раз взаимодействует с вашим агентом, и существует множество способов, которыми это взаимодействие может быть опосредовано.
Эти два фактора приводят к необходимости стандартизации среды и взаимодействия между ней и агентом. Эта стандартизация позволяет использовать код с высокой степенью повторного использования, а также код, который лучше интерпретируется другими в том, как он точно работает. Кроме того, таким образом можно, например, легко запускать параллельные среды (например, TF-агенты позволяют это), даже если ваш объект среды на самом деле не написан для управления этим.
Таким образом, фреймворки RL обеспечивают эту стандартизацию и функции, которые с ней связаны. Их отношение к платформам глубокого обучения заключается в том, что библиотеки RL часто поставляются с множеством предварительно реализованных и гибких архитектур агентов, которые были одними из наиболее актуальных в литературе. Эти агенты обычно представляют собой не что иное, как какую-то причудливую архитектуру ИНС, обернутую в какой-то класс, который стандартизирует их работу в рамках данной структуры RL. Поэтому в качестве основы для этих моделей ANN платформы RL используют платформы DL для эффективного выполнения вычислений.
именно такой
Большое спасибо за подробный ответ! Итак, резюмируя мое понимание: TensorFlow, Keras и PyTorch — это просто общие фреймворки ML, а библиотеки RL, такие как RLlib и TF-Agents, обеспечивают необходимую стандартизацию сред RL и взаимодействие между ним и агентом. Таким образом, библиотеки RL создаются поверх этих платформ ML, поскольку они более сложные.