В этом блоге мы собираемся научить простой ИИ ходить с помощью обучения с подкреплением. Давайте сначала вкратце разберемся, что такое обучение с подкреплением и что это за ИИ, который мы собираемся обучать.

Обучение с подкреплением, краткое введение

Обучение с подкреплением - это ветвь машинного обучения. Идея в том, что у вас есть агент и среда. Агент предпринимает действия, и среда выдает вознаграждение на основе этих действий. Цель состоит в том, чтобы научить агента оптимальному поведению, чтобы максимизировать вознаграждение, получаемое средой.

Например, взгляните на схему. Этот лабиринт представляет нашу среду. Наша цель - научить агента оптимальной политике, чтобы он мог решить этот лабиринт. Лабиринт предоставит агенту награду в зависимости от качества каждого его действия. Кроме того, каждое действие, предпринимаемое агентом, приводит его к новому состоянию в среде.

Об ИИ

ИИ, который мы собираемся обучить, представляет собой среду OpenAIGym, и его имя - BipedalWalker.

OpenAIGym - это набор действительно крутых сред. Вам следует посетить веб-сайт OpenAIGym, чтобы узнать больше о средах обучения с подкреплением и о том, как их использовать.

Теперь давайте подробно рассмотрим среду BipedalWalker.

Двуногий

Награда дается за продвижение вперед, всего 300+ баллов до дальнего конца. Если робот падает, он получает -100. Применение крутящего момента двигателя стоит небольшое количество очков, более оптимальный агент получит лучший результат. Состояние состоит из угловой скорости корпуса, угловой скорости, горизонтальной скорости, вертикальной скорости, положения шарниров и угловой скорости шарниров, контакта ног с землей и 10 измерений лидарного дальномера. В векторе состояния нет координат.

Пространство действий

У BipedalWalker 2 ноги. На каждой ноге по 2 сустава. Вы должны научить двуногого ходить, прилагая крутящий момент к этим суставам. Таким образом, размер нашего рабочего пространства равен 4, что соответствует крутящему моменту, приложенному к 4 суставам. Вы можете применить крутящий момент в диапазоне (-1, 1)

Награда

  • Агент получает положительное вознаграждение, пропорциональное пройденному расстоянию по местности. Он может получить в общей сложности 300+ наград до самого конца.
  • Если агент упадет, он получит награду -100.
  • Существует некоторая отрицательная награда, пропорциональная крутящему моменту, приложенному к шарниру. Так что агент учится плавно ходить с минимальным крутящим моментом.

Существует две версии среды Двуногие в зависимости от типа местности.

  • Слегка неровная местность.
  • Жесткая местность с лестницами, пнями и ловушками.

Решение проблемы окружающей среды

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

В DDPG есть две разные сети, которые называются «Актер» и «Критик». Значение выходного действия актер-сеть при заданных ему состояниях. Критическая сеть выводит значение Q (насколько хороша пара состояние-действие), заданную пару значений состояния и действия (произведено актором-сетью). Вы можете подробно прочитать о DDPG из источников, доступных в Интернете. Я также прикрепил ссылку в конце.

Давайте сначала посмотрим на обучение BipedalWalker. Позже мы подробно рассмотрим алгоритм.

Визуализация тренировок (слегка неровная местность)

  • Вначале ИИ ведет себя очень хаотично. Он не умеет держать ноги в равновесии.

  • После 300 серий он учится ползать на одном колене и одной ноге. Этот ИИ сейчас перестраховывается, потому что если он упадет, он получит -100 награды.

  • После 500 серий он начал балансировать на обеих ногах. Но еще нужно научиться правильно ходить.

  • После 600 эпизодов он учится получать максимальные награды. Он идет в другом стиле. В конце концов, это ИИ, а не Человек. Это лишь один из способов пройтись, чтобы получить максимальную награду. Если я буду тренировать его снова, он может научиться другому оптимальному способу ходьбы.

Визуализация тренировок (хардкорная местность)

  • Я сохранил свой вес после предыдущей тренировки на простой местности и возобновил тренировки на жесткой местности. Я сделал это, потому что агент уже знал, как ходить по простой местности, и теперь ему нужно научиться преодолевать препятствия во время ходьбы.

  • После 1000 тренировок агент смог ходить по сложной местности. Но иногда падает. Чтобы иметь возможность полностью ходить по сложной местности, его нужно очень тщательно тренировать в течение большего количества времени.

Сетевая архитектура DDPG

Я выбрал для своей сети следующие гиперпараметры.

Ниже приведен фрагмент кода моей сети актеров. Актерская сеть состоит из 2 скрытых слоев с активацией batch-norm и relu. Размер скрытых слоев - 600 и 300. Я использую активацию tanh на последнем слое, потому что действие ограничено диапазоном (-1, 1). Вместо использования весов по умолчанию я инициализировал свои веса, что улучшило производительность.

Ниже приведен фрагмент кода моей сети критиков. Есть 2 скрытых слоя для состояния и 1 скрытое состояние для действия. Здесь я использую активацию batch-norm и relu. Скрытые слои действия и пространства добавляются вместе с активацией relu на нем.

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



Ресурсы

  • Это отличный вводный блог по обучению с подкреплением.
  • Я настоятельно рекомендую вам прочитать статью DDPG.
  • Прочтите этот документ, чтобы узнать, как использовать тренажерный зал.
  • Ознакомьтесь с другими классными средами на OpenAIGym.
  • Ниже приведено мое репозиторий GitHub, содержащий полный код.


Больше блогов по обучению с подкреплением от Шивы