DQN - Как передать вход 4-х кадров из игры в виде одного состояния - PullRequest
1 голос
/ 01 мая 2019

Я читал этот блог о Deep Q-Learning .

1- В разделе блога The input я хотел узнать, как мы подаем 4 неподвижных кадра / снимка экрана из игры, которые представляют состояние ввода, в сеть Policy? Будут ли все 4 кадра подаваться в одном сплющенном тензоре (где заканчивается одно изображение, начинается следующее, образуя непрерывный входной ряд в одном тензоре)? Или они будут по отдельности подаваться один за другим в сеть?

2- Для предварительной обработки изображений мы избегаем использования этапа Max-pooling? Насколько я понимаю, этот процесс устраняет необходимость в пространственном / позиционном распознавании при распознавании изображения. В то время как в обычной Conv-Net это важно для распознавания функций изображения независимо от того, где они появляются в пространстве и на расстоянии (поэтому мы используем максимальный пул). В Q-learning для игр важное значение имеет пространство / положение различных элементов на изображении. Поэтому мы исключаем использование Max-pooling со стадии предварительной обработки. Это правильно?

3- Может ли кто-нибудь порекомендовать хороший ресурс для реализации глубокого Q-обучения, написанный с нуля (на Python), то есть без использования готовых библиотек, таких как PyTorch, Keras и Scikit-learn .. и т. д. для игры, где для ввода состояний требуются фреймы изображений из игры. Я думаю, что реализация этой модели с нуля дает лучший контроль над настройкой и точной настройкой гиперпараметров. Или лучше использовать готовую библиотеку? Любая реализация кода была бы очень полезной.

Большое спасибо заранее.

1 Ответ

1 голос
/ 02 мая 2019
  1. Нет, типичный подход состоит в том, чтобы складывать (серые) кадры так, чтобы входная форма становилась [height, width, num_frames], то есть кадры играют роль, которая обычно резервируется для цветовых каналов в изображении RGB , Это позволяет легко применять двумерные свертки.

  2. Да, это правильно. Вы не используете объединение, потому что не хотите выбрасывать информацию о пространственном местоположении.

  3. Я бы посоветовал против этого конкретного подхода. Вместо этого я бы предложил ознакомиться со всеми строительными блоками аппроксиматора функции (по крайней мере, на концептуальном уровне). Это может означать возвращение к mnist для изучения компонентов CNN. После этого вы, вероятно, не захотите реализовывать все с нуля. Вот пост в блоге, который я нашел довольно полезным:

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