Глава 11. Основы глубокого обучения с подкреплением
455
(
batchSize
) состояний игры благодаря парадигме обучения по батчам, которую мы
скоро обсудим.
Рис. 11.11.
Представление состояния доски игры «Змейка» в виде трехмерного тензора
формы [9, 9, 2]
Код преобразования экономичного представления состояния доски в тензоры,
подобные представленным на рис. 11.11, можно найти в функции
getStateTensor()
из файла
snake-dqn/snake_game.js
. Эта функция активно используется во время
обучения DQN, но мы не станем приводить здесь подробности ее внутреннего
устройства, поскольку она всего лишь механически присваивает значения элементам
тензорного буфера в соответствии с расположением змейки и фруктов.
Рис. 11.12.
Схематическая иллюстрация DQN, используемой для аппроксимации функции
Q(s, a)
для задачи змейки
Наверное, вы обратили внимание, что входной формат
[height,
width,
channel]
идеально подходит для обработки сверточными сетями. Архитектура DQN представ
ляет собой хорошо уже нам знакомую архитектуру сверточной сети. Код описания
456
Часть III • Продвинутые возможности глубокого обучения с TensorFlow.js
топологии DQN приведен в листинге 11.5 (он представляет собой фрагмент из файла
snake-dqn/dqn.js
, из которого удалена часть кода обработки ошибок ради большей
ясности). Как демонстрируют этот код и схема на рис. 11.12, наша сеть состоит из
набора слоев conv2d, за которыми следует MLP. Для повышения возможностей
обобщения DQN добавлены дополнительные слои, включая слой нормализации
по батчам и слой дропаута. Форма выходного сигнала DQN:
[3]
(не считая измере
ния батчей). Три элемента выходного сигнала представляют собой предсказанные
Qзначения соответствующих действий (поворот влево, движение прямо и поворот
вправо). Таким образом, наша модель
Q
(
s
,
a
) представляет собой нейронную сеть
с состоянием среды в качестве входного сигнала и Qзначениями всех возможных
действий для этого состояния в качестве выходного сигнала.
Листинг 11.5.
Создание DQN для задачи змейки
Давайте на минуту отвлечемся и задумаемся: почему вообще имеет смысл ис
пользовать в этой задаче в качестве функции
Q
(
s
,
a
) нейронную сеть. Пространство
состояний игры «Змейка» — дискретное, в отличие от непрерывного пространства
состояний задачи балансировки шеста на тележке, выражаемого четырьмя чис
лами с плавающей точкой. Таким образом, функцию
Q
(
s
,
a
) можно, в принципе,
реализовать в виде поисковой таблицы, в которой каждому возможному сочетанию
позиции на доске и действия ставится в соответствие значение функции
Q
. Так по
Do'stlaringiz bilan baham: |