Обучение правилам перемещения

Соревнование на школе молодых ученых ISyT 2017

В чем цель?

Цель этого соревнования предельно простая - научить интеллектуального агента перемещаться в лабиринте. Это учебная задача для моделирования поведения агента в простом окружении. Алгоритмов планирования траекторий и нахождения пути в графе существует большое количество (JPS, A* и др.), но здесь для нас важно создать эффективный алгоритм обучения, а не найти кратчайший путь. Построенная модель, возможно, будет искать не самые короткие пути в лабиринте, но зато будет это делать на основе предыдущего опыта перемещения, формируя и отбирая таким образом собственные правила наилучшего поведения. В целом, задача построения обобщенных правил на основе “сырой” информации (например, поступающей с сенсоров) сейчас очень актуальна в искусственном интеллеке и именно попрактивать свои силы в ее решении вам и предлагается. Успехов!

Как принять участие?

Нужно зарегистрироваться вот здесь. Для создания собственного решения вы можете использовать любой язык программирования, хотя базове решение (baseline) мы предоставляем на языке Python 2. При регистрации вам нужно будет указать адрес репозитория на github, bitbucket либо на любом подобном реурсе, в котором вы разместите свое решение.

Что нужно сделать?

Вам нужно предложить свою модель, обучающуюся с подкреплением. Обсудим задачу на примере базового решения.

Данные

Данные вы сможете найти в папке data. В подпапке raw находятся xml файлы c картами лабиринтов, а в imported - предобработанные карты для быстрой загрузки с помощью скрипта prepare.import. В том же пакете prepare вы можете найти скрипт генерации задачи для карты лабиринта - начальные и конечные точки пути с найденным с помощью обычного A* оптимальным путем. Вам достаточно будет взять имеющиеся 30 карт и сгенерировать для них столько задач, сколько вам нужно для обучения. Загрузка задачи происходит в классе TaskSet.

Окружение

Лабиринт и двжиение в нем моделируется с помощью библиотеки OpenAI Gym. В базовом решении уже реализован класс окружения PathFindingByPixelWithDistanceMapEnv, в котором задается алгоритм геренации вознаграждений агенту при его передвижении (метод step).

Агент

Ваша основная задача - реализовать свою версию агента - дописать класс BaseAgent. Вы можете использовать любой алгоритм машинного обучения: Q-таблицы, нейронные Q-сети, системы правил и т.д.

Решение

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

Базовое решение

Базовое решение написано на Python 2 и требует установки некоторых библиотек, указанных в файле requirements.txt. Скрипт запуска - run_agent.py. Некоторые участки кода оптимизированы с помощью CPython, поэтому перед запуском базового решения нужно скомпилировать pyx файлы с помощью срипта build_cython.sh.

Что мне за это дадут?

Трем лучшим участникам предполагаются небольшие памятные подарки и сертификаты от Российской ассоциации искусственного интеллекта. Лучшему участнику мы предложим пройти оплачиваемую стажировку в одной из научных лабораторий Российской академии наук, занимающейся широким спектром актуальных задач искусственного интеллекта.

Кому задать вопросы?

Любые вопросы можно задавать в Telegram - @grafft.