В чем разница между платформами нейронных сетей и библиотеками алгоритмов RL?

Я знаю, что это глупый вопрос, но я не могу найти хороший способ выразить его.

Я работал с TensorFlow и TFAgents, а теперь перехожу на Ray RLlib. Глядя на все фреймворки/библиотеки RL, я запутался в разнице между двумя ниже:

  • фреймворки, такие как Keras, TensorFlow, PyTorch
  • Библиотеки реализации RL, такие как TFAgents, RLlib, OpenAi Baseline, Tensorforce, KerasRL и т. д.

Например, в TensorFlow есть коды Keras, а Ray RLlib поддерживает как TensorFlow, так и PyTorch. Как они все связаны?

Насколько я понимаю, Keras позволяет создавать нейронные сети, а TensorFlow — это скорее математическая библиотека для RL (у меня недостаточно понимания PyTorch). А библиотеки, такие как TFAgents и RLlib, используют такие фреймворки, как Keras и TensorFlow, для реализации существующих алгоритмов RL, чтобы программисты могли легко их использовать.

Может кто-нибудь объяснить, как они взаимосвязаны/различны? Большое спасибо.

Udacity Nanodegree Capstone Project: Классификатор пород собак
Udacity Nanodegree Capstone Project: Классификатор пород собак
Вы можете ознакомиться со скриптами проекта и данными на github .
3
0
257
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да вы как бы правы. Такие фреймворки, как Keras, TF (который также использует keras, кстати) и Pytorch, являются общими фреймворками глубокого обучения. Для большинства случаев использования искусственных нейронных сетей эти фреймворки работают просто отлично, и ваш типичный конвейер будет выглядеть примерно так:

  1. Предварительно обработайте свой набор данных
  2. Выберите подходящую модель для этой проблемы
  3. model.fit(набор данных)
  4. Анализ результатов

Тем не менее, 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, поскольку они более сложные.

Kai Yun 16.12.2020 02:18

именно такой

Federico Malerba 16.12.2020 12:58

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