Подача входной выборки по выборке (без последовательностей) в рекуррентной нейронной сети - PullRequest
0 голосов
/ 20 ноября 2018

В настоящее время я использую Keras (серверную часть Tensorflow) для написания агента обучения подкреплению с использованием алгоритма Ayncchronous Advantage Actor-Critic (A3C) с использованием входных данных изображения.Чтобы протестировать структуру сети и процесс обучения, я хочу, чтобы агент научился управлять средой OpenAI-Gym Pendulum-v0 (из-за пространства непрерывных действий).

Архитектура сети выглядит следующим образом:

Ввод (маятниковая сцена) -> CNN -> LSTM Layers -> Плотные слои -> Вывод политики и значений

Поскольку одно изображение текущей сцены не доставляет никакой временной информации (в данном случаео скорости маятников, которая обязательна для решения этой задачи), я добавил повторяющиеся слои LSTM поверх части извлечения объектов (CNN).Я также не хочу использовать несколько изображений из предыдущих временных шагов в качестве входных данных (например, путем размещения последних 4 изображений сцены в качестве плиток) из-за соображений эффективности, временные зависимости должны обрабатываться слоями LSTM.

Поскольку мой предыдущий опыт ограничивался простыми нейронными сетями с прямой связью, я подготовил себя, обучив CNN для классификации набора данных Cifar10.Для повторяющейся части я написал сеть LSTM для генерации текста на основе истории чата WhatsApp.Ни один из них не сталкивался со мной серьезными проблемами, но, кажется, есть некоторые вещи, связанные с объединением этих двух в обучающий агент подкрепления, которые я не получаю:

Слоям LSTM нужен ввод последовательности!В случае генерации текста это не было проблемой, так как я поставил последние 100 символов в качестве ввода последовательности, получил следующий символ в качестве вывода и добавил его к вводу, одновременно удаляя первую запись для генерации следующего символа.

Но в случае с подкрепляющим обучающим агентом с политическими градиентами у меня нет последовательности (например) 100 состояний в виде изображений перед предсказанием первого действия, которое нужно предпринять.Какой обычный метод выбрать при обработке временных зависимостей (не обязательно при глубоком обучении с подкреплением) без динамического ввода?Я предполагаю, что должен быть способ соединить извлечение объектов и рекуррентную часть, чтобы я мог подавать в сеть одно входное изображение на каждом временном шаге и, тем не менее, обрабатывать временные зависимости , используя рекуррентные слои после извлечения объектовpart.

Есть ли хорошие примеры, учебные пособия или фрагменты кода о том, как спроектировать такую ​​сеть? Я читал о Keras "TimeDistributed" -Wrapper, но на первый взгляд кажется, что он работаетвопреки тому, что мне нужно.

Определение длины последовательности сети LSTM, равной 1, и изменение формы выходного сигнала CNN (BatchSize, 1, n_out) также кажется «неправильным» способом решения этой проблемы.проблема.

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...