Как выиграть в игру с неизвестными правилами?
Привет, Хабр! Если кратко, приглашаем всех поучаствовать в необычном конкурсе по машинному обучению Black Box Challenge, который проходит при поддержке DCA.
Условия просты: нужно написать бота, который умеет играть в игру с неизвестными правилами. Победители получат ценные призы: от Xbox One до 300 тыс. рублей за первое место и возможность попасть в крутые компании на позицию специалиста по машинному обучению.
Ниже мы расскажем о соревновании в формате вопрос-ответ.
Что за соревнование?
Итак, нужно научить бота играть в игру с неизвестными правилами. На каждом шаге игры бот может узнать вектор состояния игровой среды, подумать, что хочет сделать в этом состоянии, и сделать одно из четырех возможных действий.
За совершенные действия бот получает награду, иногда сразу, иногда лишь через какое-то время после действия. То есть, не всегда можно сразу понять, было ли действие хорошим или нет.
Кроме того, игра не детерминирована, в наградах есть элемент случайности. Но случайность уже заморожена в файлах с уровнями. Это нужно для того, чтобы результат на уровне не зависел от запуска. Можно представить себе это так: мы подкинули монетку 100 раз и сохранили все исходы. После этого мы используем эти исходы для вычисления наград.
Подробнее об условиях и интерфейсе игры можно почитать на сайте конкурса. Там же можно ознакомиться с тестовыми примерами, спецификацией и полезными ссылками для изучения вопроса (хотя времени остаётся мало).
В чем отличие от Kaggle?
Kaggle — это самая известная международная платформа для соревнований по машинному обучению. Все соревнования на Kaggle устроены примерно следующим образом:
- Участник скачивает данные
- Обучает у себя какую-либо модель (например, классификатор) по этим данным
- Делает с помощью своей модели предсказания для неизвестных данных и создаёт статичный файл с ответами
- Заливает файл с ответами на сервер Kaggle, где проверяется качество его предсказаний. Побеждает тот, чей файл с ответами точнее.
Наше соревнование устроено иначе:
- Участник скачивает игровой симулятор и тренировочные уровни
- Обучает бота играть на тренировочных уровнях
- Заливает исходник своего бота на наш сервер, где проверяется, сколько очков он набирает на неизвестном для него уровне. Побеждает тот, чей бот набирает больше очков.
Иными словами, решение задачи на Kaggle это статичный файл с ответами. Решение в нашем соревновании — это обученный агент, взаимодействующий с неизвестной ему игровой средой.
Тогда в чем отличие от Russian AI Cup?
Если кратко, то тем, что правила неизвестны. Ежегодно наш партнёр Mail.ru проводит открытое соревнование по программированию искусственного — Russian AI Cup. Например, в прошлом году нужно было создать программу для управления одним или группой кодемобилей.
Если вы внимательно посмотрите на прошлогодних победителей Russian AI Cup, то окажется, что все их решения использовали априорные знания человека об устройстве игры и вообще не использовали машинное обучение.
Мы подумали, что интересней, когда система не использует человеческую экспертизу, а учится сама понимать окружающую среду, в частности играть в игры.
Чтобы поспособствовать этому мы создали игру с неизвестными правилами.
Кто-то уже умеет учить машины играть в игры?
Да, эта область машинного обучения называется Reinforcement Learning. Не так давно гугловская компания Deep Mind (та самая, что которая создала AlphaGo) выпустила отличную статью «Playing Atari with Deep Reinforcement Learning», в которой научила программу играть в десятки игр Atari 2600 на человеческом уровне. Некоторые участники пытаются использовать их идеи для нашей игры, но, судя по чату в Telegram, пока не очень успешно :)
Как сейчас обстоят дела у участников?
На сайте мы выложили пример простого бота, который немного умеет играть в нашу игру. Как мы его придумали, будет пока нашим секретом — мы не хотим ограничивать вашу фантазию своей идеей.
Результат этого бота (2090 очков на валидационной выборке) мы считаем базовым уровнем для участников. На данный момент из более чем 770 зарегистрированных участников, 39 смогли преодолеть этот уровень, это оказалось не так просто, как нам казалось.
Многие из преодолевших базовый уровень участников достигли этого просто немного улучшив коэффициенты нашего простого бота. Надеемся, что вам удастся превзойти их новыми подходами. :)
Что нужно, чтобы начать участвовать?
Достаточно иметь Python с установленным модулем numpy и уметь на нём программировать.
Если у вас почему-то нет питона, то рекомендуем установить Anaconda последней версии. Anaconda — это Python со множеством полезных библиотек для машинного обучения и анализа данных.
На каких языках можно писать?
Мы поддерживаем только Python. Ещё недавно можно было использовать только Python 2.7, но мы решили, что нет смысла противиться будущему и сделали поддержку Python 3.5.
Если у вас что-то не работает, не стесняйтесь, сразу же пишите нам. Стараемся всем помочь.
Какие призы?
Призовой фонд составляет более 600,000 рублей.
Эти средства будут распределены следующим образом:
1 место: 300,000 рублей
2 место: 170,000 рублей
3 место: 125,000 рублей
Кроме того, следующие 5 лучших участников получат Microsoft Xbox One.
А что там было про вакансии?
Партнёры соревнования — Data-Centric Alliance, Mail.ru, Skyeng постоянно ищут продвинутых специалистов по машинному обучению и анализу данных.
Участники, хорошо выступившие на нашем соревновании и предложившие нетривиальные подходы, будут приглашены на собеседования. А это значит, что впереди маячит карьера с ещё более интересными задачами в сфере машинного обучения.
Какие сроки?
30 мая 2016, 23:59 по Москве: крайний срок загрузки решений.
10 июня 2016: определение победителей.
Как следить за новостями?
У нас есть форум, где мы постим новости о соревновании, отвечаем на вопросы, и на котором участники делятся идеями. Также у нас есть два канала в Telegram для обсуждений: англоязычный и русскоязычный.
Задавайте свои вопросы в комментариях, мы с радостью ответим!