С 2014 года в МГУ им. М. В. Ломоносова действует образовательная программа в области Data Mining и информационного поиска от Mail.Ru Group. Ее студенты изучают различные дисциплины в данной сфере и стажируются в соответствующих подразделениях компании, а также в лаборатории при МГУ, которую мы открыли осенью 2014 года. Мы уже писали про Техносферу тут и тут, а в этой статье хотим поподробнее рассказать о программе обучения, ее результатах, о деятельности лаборатории в стенах университета, а также взять небольшое интервью у стажеров программы.
В настоящее время программа состоит из четырех семестров и десяти дисциплин, некоторые из них годовые (идут два семестра). В рамках каждой дисциплины делается акцент на практику, студенты выполняют проект индивидуально либо в группах. Изначально программа Техносферы была годовой, но довольно скоро мы поняли, что этого времени недостаточно, и решили расширить ее до двух лет, увеличив длительность изучения некоторых дисциплин. Добавили мы только одну дисциплину «Введение в анализ данных», куда вынесли некоторые необходимые аспекты из области математики и статистики, а также главные темы по используемому инструментарию (языки программирования, библиотеки и т. п.). С лекциями по этому курсу можно ознакомиться на нашем YouTube-канале. Остальные дисциплины мы расширили. В частности, к многопоточному программированию на С++ добавилась часть по углубленному изучению С++, а блок по информационному поиску стал ключевым.
Также, чтобы помочь тем, кто приходит с непрофильных факультетов, мы добавили подготовительный курс «Алгоритмы и структуры данных». На этом курсе ребята анализируют различные базовые алгоритмы и учатся обоснованно выбирать структуры данных для конкретных задач. Эти лекции также доступны в соответствующем плейлисте на YouTube.
Введение в анализ данных. В течение семестра ребята должны выполнить воспроизводимое исследование, основанное на открытых данных. Работа ведется в группах по 4–6 человек, у каждой команды своя тематика. Исследование выполняется в Project Jupyter, разрешается использовать языки Python, R, Java; в основу должна быть положена методология, схожая с CRISP-DM, которая определяет этапы исследования.
В качестве исходных дата-сетов ребятам предлагается несколько на выбор (открытые данные правительства США, данные социологической службы США, данные ООН, портал открытых данных Европейского союза), также можно самостоятельно найти другой дата-сет.
Алгоритмы интеллектуальной обработки больших объемов данных. Решается задача классификации пользователей социальной сети Twitter. В качестве входных данных студентам выдается список идентификаторов пользователей, для части из них дана категория, к которой принадлежит пользователь. Примером категории может быть увлечение компьютерными играми (увлекается / не увлекается). Цель проекта — создать алгоритм, который наиболее точно предскажет категорию тех пользователей, для которых она не дана. В ходе выполнения студенты самостоятельно собирают данные, используя открытые API веб-сервисов, реализуют и применяют различные алгоритмы конструирования и отбора признаков, а также алгоритмы машинного обучения.
Методы обработки больших объемов данных. Итоговый семестровый проект посвящен определению наличия мутации в клетках. Для этого использовался дата-сет p53 Mutants, особенностью которого является смещенное распределение меток: менее 1% положительных семплов. Работа может быть выполнена на любом языке программирования, но чаще всего ребята используют Python и C++.
Двухгодичное обучение ребят будет завершать семестр, полностью посвященный разработке выпускного проекта в командах. Каким он будет — расскажем весной следующего года, когда ребята доучатся до четвертого семестра.
Знания и навыки, которые получают студенты в рамках Техносферы, могут быть применены в самых разных подразделениях — рекламных технологий (таргетинг рекламы, категоризация новостей), Поиск Mail.Ru, Антиспам. В данный момент из 23 выпускников Техносферы 12 являются стажерами в проектах Tarantool, Мой Мир, Почта и некоторых других. Мы попросили их поделиться своими впечатлениями.
Святослав Фельдшеров
— В каком подразделении работаешь?
— Я работаю в подразделении Tarantool около трех месяцев. Выбрал именно его, потому что более-менее представлял, чем занимается команда, и понравилась атмосфера внутри. Кроме того, наш руководитель, Константин Осипов, читал в Техносфере семестровый курс, это было сложно и по-своему восхитительно: сразу знал, что у него огромное количество крутых задач.
— Какие задачи решаешь?
— Я работаю над большой и емкой задачей — внедрением поддержки SQL в Tarantool. Кроме меня, ей занимается еще один выпускник Техносферы. Дело в том, что сейчас общение с Tarantool происходит на языке Lua, а мы реализуем возможность использования SQL. Основная идея — чтобы больше пользователей смогли работать с нашей системой. Пишем в основном на С и С++.
— Где применяются результаты работы?
— Пока не применяются. Мы делаем прототип, а потом будет стадия рефакторинга и большая переработка наших результатов более опытными участниками. В общем, нам предстоит еще длинный путь.
— Какие планы по развитию — в каких подразделениях хотел бы работать?
— Мне нравится то, чем я сейчас занимаюсь. Если все сложится и пойму, что это мое, хочу углубиться в эту область. Но иногда почитаешь статьи, пообщаешься с товарищами, и очень хочется бросить все и продолжить заниматься анализом данных (это было основное направление обучения в Техносфере). Но пока еще совсем непонятно, как сложится. Время покажет.
Михаил Галков
— В каком подразделении работаешь, как впечатление?
— Я работаю в отделе рекомендательных систем, хотя ожидал, что буду работать в Поиске. Про рекомендательные системы я знал немного, познакомился только на лекции Техносферы, поэтому первое время пришлось наверстывать знания и читать много научных статей по теме, но мотивации хватало: перед нами стояли очень амбициозные задачи, которые действительно интересно решать. Из того, что рассказывали на лекциях, почти все так или иначе подтвердилось. Big data действительно «big». Понимание алгоритмов и инструментов для их обработки очень помогло, также почти верным оказалось распределение времени на работу с данными/алгоритмами, для себя я оцениваю примерно 70 на 30.
— Какие задачи решал в самом начале стажировки?
— Первое время я разбирал статьи с различными алгоритмами, исследовал их особенности и сравнивал по различным метрикам.
— Какие задачи решаешь сейчас?
— В основном я занимаюсь построением алгоритмов для нашей универсальной рекомендательной системы и подготовкой данных.
— Где применяются результаты работы?
— В Одноклассниках и на главной Поиска.
— Какие планы по развитию — в каких подразделениях хотел бы работать?
— Пока что я хочу продолжить заниматься рекомендациями, но было бы интересно применить полученные знания в самом поиске.
— Каковы твои впечатления о наставнике?
— Мне очень повезло, что Дмитрий Соловьев оказался моим наставником. Помимо полезных замечаний и помощи в постановке целей и их достижений, я особенно ценю обмен новыми идеями и готовность пробовать новое.
Осенью 2014 года, спустя всего лишь полгода после запуска Техносферы, мы решили открыть собственную лабораторию, где студенты нашего проекта могли бы работать над реальными задачами от подразделений компании. Самым заинтересованным в делегировании задач студентам оказалось одно из подразделений департамента рекламных технологий, которое занимается сегментированием аудитории. Мы задали руководителю этого подразделения, Артуру Кадурину, несколько вопросов. Ниже читайте наше интервью.
— Какие задачи ставились перед ребятами при проектировании лаборатории?
— Изначально мы планировали давать ребятам различные задачи — и исследовательские, и прикладные. Но нам как бизнесу сложно было сразу поверить, что студенты смогут выполнять часть задач удаленно, вне стен компании, ведь нам важно, чтобы задача была не просто выполнена, а выполнена своевременно. При этом нам очень хотелось попробовать поработать со студентами, и мы выделили среди всех задач, которые решались подразделением, самую подходящую для удаленной работы — это актуализация категорий внутри каталога рекламных рубрик. Она важна как для пользователей нашей системы (рекламодатели заинтересованы в выборе подходящей целевой аудитории, чтобы можно было более эффективно расходовать рекламный бюджет), так и для посетителей сайтов, на которых работает наша рекламная система (им меньше показывается неинтересной рекламы, меньше негатива к баннерам).
— А кто работает в лаборатории?
— В нашем подразделении на момент создания лаборатории уже работали два сотрудника — выпускника Технопарка из МГТУ им. Баумана, поэтому изначально при проектировании лаборатории был план набрать около десяти лаборантов из всех образовательных программ. Но, так как предлагаемые задачи довольно специфичны и требуют подготовки, решили набирать ребят только из Техносферы.
Всего в один момент времени в лаборатории работает около восьми человек. К сожалению, есть текучка. Она связана с тем, что программа была годовой и после окончания Техносферы ребята переходили в подразделения компании. Теперь, когда программа идет два года, ситуация улучшилась.
— Какие задачи решает лаборатория?
— Сейчас у нас есть несколько принципиально разных типов задач. Обязательная часть работы — это, по сути, асессорская разметка. Ребята собирают тематические сайты и страницы, пишут регулярные выражения или подбирают ключевые слова, для того чтобы мы могли точнее понимать интерес пользователя или то, что интерес изменился. Кроме того, они сами оценивают качество работы своих коллег, проверяя на анонимизированных данных, правильно ли система размечает страницы, и исправляют ошибки. Пожалуй, эта работа занимает больше всего времени.
Однако существенная часть процесса разметки так или иначе автоматизируется, и весомую долю этой автоматизации делают ребята. Они пишут скрипты для обработки дерева сайта, сбора ключевых слов и подготовки данных для написания регулярных выражений, а также автоматизируют само составление регулярных выражений.
Очевидно, что мы работаем с огромным количеством доменов и еще более огромным количеством страниц, поэтому собранные данные часто приходится хранить и обрабатывать средствами Hadoop, тогда ребята сами пишут MapReduce-задачи и запускают их на нашем учебном кластере.
Как бы то ни было, часть работы, а именно экспертную оценку, автоматизировать нельзя. И основная ценность работы лаборантов для нас — эта самая «человеческая» экспертиза. Первое время мы думали, что хорошо бы успевать полностью обновлять каталог тематик раз в год, сейчас, в том числе благодаря автоматизации, предложенной лаборантами, мы укладываемся в 4–6 месяцев и, скорее всего, еще ускоримся.
Кроме задач, связанных напрямую с тематическим каталогом, с конца прошлого года мы решили заниматься в лаборатории исследовательской работой. Наверное, это тоже не в полном смысле научные задачи, потому что они в любом случае идут от бизнеса, но все-таки это именно исследования, и среди KPI есть статьи и выступления на конференциях. Для этого из «производственной» части лаборатории мы выделили двух ребят, а также куратора с нашей стороны — мою сотрудницу Ларису Маркееву. Пока еще мы не можем похвастаться значительными результатами, однако могу сказать: то, что ребята уже сделали, обнадеживает.
— Какая структура в лаборатории?
— Помимо меня, ребят курирует наш коллега из МГУ Сергей Ступников. Сергей работает на факультете ВМК с 2008 года, также он является старшим научным сотрудником Института проблем информатики РАН. В лаборатории Техносферы он еженедельно курирует работу ребят, что обеспечивает делегирование задачи от компании вузу.
Про внутренние задачи лаборатории мы спросили куратора Сергея Ступникова.
— Есть ли различия в постановке и решении задач бизнеса, а не научных?
— В бизнесе часто достаточно найти в литературе подходящее решение и адаптировать его под нужды компании. Конечно, при этом необходимо довести реализацию до промышленного уровня, отточить эффективность. Для научных же задач характерно появление новой идеи, ее прототипирование.
— Расскажите о задачах, которые изначально ставились перед лабораторией?
— Лаборатория — это подразделение Техносферы, которое объединяет студентов проекта и позволяет им решать как сугубо практические задачи, так и задачи с научной составляющей и получать за это вознаграждение. В мои обязанности входит координация деятельности стажеров и отчеты перед отделом анализа данных и отделом исследований и образования. В научной части сейчас есть несколько интересных задач. Пара из них связана с фреймворком Giraph, который реализует вычислительную модель итеративного анализа графов. На нем можно реализовывать различные интересные алгоритмы. Сейчас усилия сосредоточены на аспектах глубинного обучения. Перспектив у этого метода много, сотрудники компании занимаются и этим в том числе.
— Как работа в лаборатории помогает студентам в научной деятельности?
— Конечно, в последнее время мы больше занимались прикладными задачами. Но работа помогает получить разные навыки, в том числе опыт коммуникации с руководством и в команде. Надеюсь, что в будущем появится и научный результат работы ребят.
Я могу выделить несколько составляющих работы в лаборатории. Самое важное — это умение и желание генерировать новые идеи, может быть поначалу и небольшие, как в прикладном, так и в научном плане. Можно также выделить практические навыки:
— Когда лучше поступать?
— Лаборатория требует инвестирования своего времени, самодисциплины. Работа в лаборатории позволяет не распыляться на различные области (когда студенты зарабатывают на жизнь часто не совсем по специальности), а сконцентрироваться на одной — анализе данных. У студентов, которые учатся в Техносфере, есть задания по основной учебе в университете, по учебе в Техносфере, и если они все успевают по этим двум направлениям, то я рекомендую взять дополнительную работу в лаборатории.
— Что бы ты пожелал студентам?
— Я бы пожелал им выбрать интересную сферу деятельности, которой они будут заниматься в своей жизни. Чтобы университет, помимо умения учиться, дал возможность познакомиться с разными бизнес-направлениями, где можно найти интересное применение своим знаниям и умениям. Я рад, что у студентов МГУ есть такая возможность.
Стажеры лаборатории Антон Гой и Мирас Амир также поделились своими впечатлениями о работе в лаборатории.
Антон Гой
— Что ты ожидал от стажировки и каковы твои впечатления?
— Здорово, что у меня учеба, дом и работа близко друг от друга. Во время работы разобрался во многих методах. Появлялись более глобальные задачи. У меня два наставника. Они помогают решить спорные вопросы, это здорово.
— Где применяются результаты твоей работы?
— В таргетинговой рекламе. Мы показываем пользователям рекламу, основываясь на их поведении в прошлом. Если человек заходил на сайты, которые содержатся в нашем каталоге, система это понимает и показывает то, что еще ему может быть интересно.
— Были смешные истории во время работы?
— Мне попадались разные тематики, и некоторые из них были забавными. Благодаря работе теперь разбираюсь во всех видах алкогольной продукции и знаю все о кредитной системе. Иногда также встречаются смешные названия сайтов.
— Как помогает работа в научной деятельности?
— Сейчас я занимаюсь проектом по нейрофизиологии — определением по снимкам областей мозга, которые связаны между собой. Данных очень много, и нужно правильно их обрабатывать. В этой работе я буду использовать знания, полученные в Техносфере и лаборатории.
— Чем ты хочешь заниматься?
— Машинным обучением, анализом данных. Со следующего учебного года планирую перейти в офис в какое-то подразделение компании, где есть подходящие задачи.
Мирас Амир
— Каковы твои впечатления от работы в лаборатории?
— Я работаю в лаборатории совсем недавно, меньше месяца. За две недели я узнал несколько новых вещей, общаюсь с ребятами и в результате заметно вырос. Наставник ставит перед нами практические задачи, и это сильно отличается от заданий в университете. Ты сразу по-другому смотришь на проблему и развиваешься профессионально.
— Как помогает работа в научной деятельности?
— Так как деятельность в лаборатории тесно связана с дисциплинами по моей учебной программе на кафедре ММП, думаю, их совмещение положительно влияет на мою успеваемость и саморазвитие: помогает более ответственно подходить к делу и качественно распределять свое время.
— Как ты видишь свое развитие?
— Недавно попалась на глаза вакансия по анализу данных, думаю, что, когда наберусь опыта тут, подам заявку на более серьезную позицию в компании.
— Что бы ты пожелал тем ребятам, которые только учатся, еще не работают?
— Я пожелал бы им организовать свое время так, чтобы побыстрее начать работу. Потому что развивается навык работы в команде, накапливается опыт.
Спустя год работы лаборатории мы подвели итоги и подсчитали эффективность работы ребят по сравнению с подрядчиками и сотрудниками, которые не имели базовой подготовки в области анализа данных. Оказалось, что ребята отлично справились. Они не только выполняли те задачи, которые ставил перед ними ментор лаборатории в МГУ Сергей Ступников, но и самостоятельно разрабатывали и предлагали инструменты автоматизации этих задач. Часть из них была немного дополнена и внедрена в бизнес-процессы компании.
Осенью 2015 года было запущено второе направление внутри лаборатории — научные исследования. Таким вопросам в компании также уделяется время. В частности, мы активно исследуем возможность применять нейронные сети в бизнес-задачах, но, к сожалению, испытать их «в бою» мы пока что не готовы: обеспечение их работы требует вложения огромных ресурсов, а польза новых методов пока неочевидна.
Тем не менее работы ведутся, и мы подключили к их решению стажеров из лаборатории. В данный момент двое из шести стажеров в лаборатории занимаются научными исследованиями.
Перед ребятами была поставлена задача, связанная с алгоритмом MCL. Она направлена на то, чтобы сделать кластеризацию в графе.
В марте 2016 года куратором направления стала Лариса Маркеева. Вместе с Артуром Кадуриным они поставили перед ребятами научную задачу.
Стажерам необходимо было разобраться с базовой интерпретацией алгоритма RBM (restricted Boltzmann machine) и реализовать ее под фреймворк Giraph. Таким образом, ребята должны построить систему распределенных вычислений на графах, за основу которой была взята архитектура Pregel.
Данная техника позволяет предобучать нейронные сети. А нейронную сеть, которая сможет учиться на кластере, в дальнейшем можно будет использовать, например, для оптимизации CTR в рекламе.
Как мы уже упомянули, мы пока что будем использовать нейронные сети в экспериментах. Возможно, эту наработку выложим в open source.
В рамках научного направления стажировки предлагается использовать различные технологии: Java, Hadoop. Для визуализации и прототипирования используется Python, Notebook. Также в планах использование Apache Spark. Потенциально алгоритмы, которые исследуют и разрабатывают стажеры, могут лечь в основу бакалаврской или магистерской работы.
Мы спросили одного из стажеров, Павла Коваленко, о работе в научном блоке лаборатории:
— Каковы твои впечатления от лаборатории?
— Меня позвали работать в лабораторию в феврале прошлого года. Для меня это первый опыт настоящей работы в коллективе. Формат лаборатории очень хорошо подходит для совмещения с учебой: работа дома плюс раз в неделю встреча в университете.
— Какие задачи решал в самом начале?
— В начале мы работали кем-то вроде асессоров. Требовалось регулярными выражениями разметить страницы крупных сайтов по тематике их содержимого (авто, недвижимость, одежда и т. д.). Набор обучающей выборки — это первый этап в решении задачи автоматизированной классификации страниц по тематике, над которой сейчас работают несколько студентов лаборатории.
— Какие задачи решаешь сейчас?
— В начале этого года мне и моему коллеге Александру Щербакову предложили новую интересную задачу: работу с Apache Giraph (надстройка над Hadoop для распределенной обработки графов), а именно создание распределенного варианта ограниченной машины Больцмана. Говорят, у кого-то в Mail.Ru Group появилась потребность применить машину Больцмана к действительно большим данным.
— Как помогает Техносфера в научной деятельности, учебе?
— Для меня Техносфера стала незаменимым опытом. Возможно, я пошел туда немного рано — в начале второго курса. Многие моменты были мне непонятны. В частности, курс Data Mining требует неплохих знаний теории вероятностей, а у меня тогда их не было совсем. Техносфера повлияла на мой выбор кафедры на ВМК — мне очень понравился курс Data Mining и сами идеи машинного обучения, поэтому я пошел на кафедру математических методов прогнозирования, которая, собственно, и занимается машинным обучением. Для работы в лаборатории очень помогает курс Hadoop Техносферы. Где еще можно получить практические навыки по работе на настоящем кластере?
Так получилось, что те задачи, которыми мы занимаемся в лаборатории, тесно связаны с моей учебой на кафедре, поэтому одно не мешает другому, а, наоборот, дополняет. Практическое использование знаний, полученных на лекциях, помогает лучше разобраться в принципах работы алгоритмов.
— Какие планы по развитию?
— Не хочу пока заглядывать настолько вперед. Я считаю, что в университете бoльшую часть времени нужно посвящать учебе и научной работе. Поэтому так удобен формат лаборатории: можно работать в удобное время, свободное от учебы, и не нужно далеко ездить.
— Каковы впечатления о наставнике?
— С новой задачей у нас появился новый наставник — Лариса Маркеева. С ней очень приятно работать, поскольку она действительно хорошо разбирается в этой области (Hadoop и Giraph) и всегда открыта для общения, помогает решить возникающие трудности и дает советы по реализации. В связи с этим недавно случилась забавная история. Для работы нам потребовался Hive (надстройка над Hadoop для распределенной обработки данных с использованием SQL-подобных команд). Hive был установлен на учебном кластере, однако из-за неправильной настройки он вообще не работал. Лариса написала кому-то в компании, кто занимался администрированием кластера, и он обещал разобраться в ближайшее время. А на следующий день он уволился из Mail.Ru Group. Надеюсь, это не мы его довели. :)
Помимо обучения в области больших объемов данных, в Mail.Ru Group также проводится два больших чемпионата, где ребята могут попробовать свои силы: Russian AI Cup и ML Boot Camp.
Russian AI Cup — ежегодный чемпионат по программированию искусственного интеллекта на примере игровых стратегий.
Проходит уже четыре года подряд. Каждый раз задания разные. В этом году участникам нужно было запрограммировать поведение гоночного автомобиля таким образом, чтобы он успешно обходил препятствия и не врезался в стенки трассы, а также расстреливал автомобили других участников.
Победители чемпионата традиционно получают ценные подарки, призовой фонд составляет около миллиона рублей, но самое главное — абсолютно все участники улучшили свои навыки в программировании искусственного интеллекта. Победитель Russian AI Cup 2015 по итогам соревнования устроился работать в Mail.Ru Group и теперь занимается разработкой искусственного интеллекта для игровых проектов компании.
ML Boot Camp — новая инициатива Mail.Ru Group по обучению разработчиков machine learning. На платформе у участников есть возможность научиться решать задачи по машинному обучению и анализу данных, попробовать свои силы в контестах и выиграть ценные призы. Желающие могут потренироваться в промежутках между соревнованиями, осваивая учебный материал и решая тестовые задачи. Периодически запускаются двухнедельные контесты, с целью выделить лучших специалистов по машинному обучению, а после этого наградить их призами.
***
Мы надеемся, что скоро сможем опубликовать первые научные результаты лаборатории, а пока предлагаем вам ознакомиться с материалами, которые относятся к исследованию данных и выпущены в рамках проекта Техносфера:
Программа Техносферы
В настоящее время программа состоит из четырех семестров и десяти дисциплин, некоторые из них годовые (идут два семестра). В рамках каждой дисциплины делается акцент на практику, студенты выполняют проект индивидуально либо в группах. Изначально программа Техносферы была годовой, но довольно скоро мы поняли, что этого времени недостаточно, и решили расширить ее до двух лет, увеличив длительность изучения некоторых дисциплин. Добавили мы только одну дисциплину «Введение в анализ данных», куда вынесли некоторые необходимые аспекты из области математики и статистики, а также главные темы по используемому инструментарию (языки программирования, библиотеки и т. п.). С лекциями по этому курсу можно ознакомиться на нашем YouTube-канале. Остальные дисциплины мы расширили. В частности, к многопоточному программированию на С++ добавилась часть по углубленному изучению С++, а блок по информационному поиску стал ключевым.
Также, чтобы помочь тем, кто приходит с непрофильных факультетов, мы добавили подготовительный курс «Алгоритмы и структуры данных». На этом курсе ребята анализируют различные базовые алгоритмы и учатся обоснованно выбирать структуры данных для конкретных задач. Эти лекции также доступны в соответствующем плейлисте на YouTube.
Разрабатываемые учебные проекты (несколько интересных примеров)
Введение в анализ данных. В течение семестра ребята должны выполнить воспроизводимое исследование, основанное на открытых данных. Работа ведется в группах по 4–6 человек, у каждой команды своя тематика. Исследование выполняется в Project Jupyter, разрешается использовать языки Python, R, Java; в основу должна быть положена методология, схожая с CRISP-DM, которая определяет этапы исследования.
В качестве исходных дата-сетов ребятам предлагается несколько на выбор (открытые данные правительства США, данные социологической службы США, данные ООН, портал открытых данных Европейского союза), также можно самостоятельно найти другой дата-сет.
Алгоритмы интеллектуальной обработки больших объемов данных. Решается задача классификации пользователей социальной сети Twitter. В качестве входных данных студентам выдается список идентификаторов пользователей, для части из них дана категория, к которой принадлежит пользователь. Примером категории может быть увлечение компьютерными играми (увлекается / не увлекается). Цель проекта — создать алгоритм, который наиболее точно предскажет категорию тех пользователей, для которых она не дана. В ходе выполнения студенты самостоятельно собирают данные, используя открытые API веб-сервисов, реализуют и применяют различные алгоритмы конструирования и отбора признаков, а также алгоритмы машинного обучения.
Методы обработки больших объемов данных. Итоговый семестровый проект посвящен определению наличия мутации в клетках. Для этого использовался дата-сет p53 Mutants, особенностью которого является смещенное распределение меток: менее 1% положительных семплов. Работа может быть выполнена на любом языке программирования, но чаще всего ребята используют Python и C++.
Двухгодичное обучение ребят будет завершать семестр, полностью посвященный разработке выпускного проекта в командах. Каким он будет — расскажем весной следующего года, когда ребята доучатся до четвертого семестра.
Где стажируются студенты?
Знания и навыки, которые получают студенты в рамках Техносферы, могут быть применены в самых разных подразделениях — рекламных технологий (таргетинг рекламы, категоризация новостей), Поиск Mail.Ru, Антиспам. В данный момент из 23 выпускников Техносферы 12 являются стажерами в проектах Tarantool, Мой Мир, Почта и некоторых других. Мы попросили их поделиться своими впечатлениями.
Святослав Фельдшеров
— В каком подразделении работаешь?
— Я работаю в подразделении Tarantool около трех месяцев. Выбрал именно его, потому что более-менее представлял, чем занимается команда, и понравилась атмосфера внутри. Кроме того, наш руководитель, Константин Осипов, читал в Техносфере семестровый курс, это было сложно и по-своему восхитительно: сразу знал, что у него огромное количество крутых задач.
— Какие задачи решаешь?
— Я работаю над большой и емкой задачей — внедрением поддержки SQL в Tarantool. Кроме меня, ей занимается еще один выпускник Техносферы. Дело в том, что сейчас общение с Tarantool происходит на языке Lua, а мы реализуем возможность использования SQL. Основная идея — чтобы больше пользователей смогли работать с нашей системой. Пишем в основном на С и С++.
— Где применяются результаты работы?
— Пока не применяются. Мы делаем прототип, а потом будет стадия рефакторинга и большая переработка наших результатов более опытными участниками. В общем, нам предстоит еще длинный путь.
— Какие планы по развитию — в каких подразделениях хотел бы работать?
— Мне нравится то, чем я сейчас занимаюсь. Если все сложится и пойму, что это мое, хочу углубиться в эту область. Но иногда почитаешь статьи, пообщаешься с товарищами, и очень хочется бросить все и продолжить заниматься анализом данных (это было основное направление обучения в Техносфере). Но пока еще совсем непонятно, как сложится. Время покажет.
Михаил Галков
— В каком подразделении работаешь, как впечатление?
— Я работаю в отделе рекомендательных систем, хотя ожидал, что буду работать в Поиске. Про рекомендательные системы я знал немного, познакомился только на лекции Техносферы, поэтому первое время пришлось наверстывать знания и читать много научных статей по теме, но мотивации хватало: перед нами стояли очень амбициозные задачи, которые действительно интересно решать. Из того, что рассказывали на лекциях, почти все так или иначе подтвердилось. Big data действительно «big». Понимание алгоритмов и инструментов для их обработки очень помогло, также почти верным оказалось распределение времени на работу с данными/алгоритмами, для себя я оцениваю примерно 70 на 30.
— Какие задачи решал в самом начале стажировки?
— Первое время я разбирал статьи с различными алгоритмами, исследовал их особенности и сравнивал по различным метрикам.
— Какие задачи решаешь сейчас?
— В основном я занимаюсь построением алгоритмов для нашей универсальной рекомендательной системы и подготовкой данных.
— Где применяются результаты работы?
— В Одноклассниках и на главной Поиска.
— Какие планы по развитию — в каких подразделениях хотел бы работать?
— Пока что я хочу продолжить заниматься рекомендациями, но было бы интересно применить полученные знания в самом поиске.
— Каковы твои впечатления о наставнике?
— Мне очень повезло, что Дмитрий Соловьев оказался моим наставником. Помимо полезных замечаний и помощи в постановке целей и их достижений, я особенно ценю обмен новыми идеями и готовность пробовать новое.
Лаборатория Техносферы для студентов
Осенью 2014 года, спустя всего лишь полгода после запуска Техносферы, мы решили открыть собственную лабораторию, где студенты нашего проекта могли бы работать над реальными задачами от подразделений компании. Самым заинтересованным в делегировании задач студентам оказалось одно из подразделений департамента рекламных технологий, которое занимается сегментированием аудитории. Мы задали руководителю этого подразделения, Артуру Кадурину, несколько вопросов. Ниже читайте наше интервью.
— Какие задачи ставились перед ребятами при проектировании лаборатории?
— Изначально мы планировали давать ребятам различные задачи — и исследовательские, и прикладные. Но нам как бизнесу сложно было сразу поверить, что студенты смогут выполнять часть задач удаленно, вне стен компании, ведь нам важно, чтобы задача была не просто выполнена, а выполнена своевременно. При этом нам очень хотелось попробовать поработать со студентами, и мы выделили среди всех задач, которые решались подразделением, самую подходящую для удаленной работы — это актуализация категорий внутри каталога рекламных рубрик. Она важна как для пользователей нашей системы (рекламодатели заинтересованы в выборе подходящей целевой аудитории, чтобы можно было более эффективно расходовать рекламный бюджет), так и для посетителей сайтов, на которых работает наша рекламная система (им меньше показывается неинтересной рекламы, меньше негатива к баннерам).
— А кто работает в лаборатории?
— В нашем подразделении на момент создания лаборатории уже работали два сотрудника — выпускника Технопарка из МГТУ им. Баумана, поэтому изначально при проектировании лаборатории был план набрать около десяти лаборантов из всех образовательных программ. Но, так как предлагаемые задачи довольно специфичны и требуют подготовки, решили набирать ребят только из Техносферы.
Всего в один момент времени в лаборатории работает около восьми человек. К сожалению, есть текучка. Она связана с тем, что программа была годовой и после окончания Техносферы ребята переходили в подразделения компании. Теперь, когда программа идет два года, ситуация улучшилась.
— Какие задачи решает лаборатория?
— Сейчас у нас есть несколько принципиально разных типов задач. Обязательная часть работы — это, по сути, асессорская разметка. Ребята собирают тематические сайты и страницы, пишут регулярные выражения или подбирают ключевые слова, для того чтобы мы могли точнее понимать интерес пользователя или то, что интерес изменился. Кроме того, они сами оценивают качество работы своих коллег, проверяя на анонимизированных данных, правильно ли система размечает страницы, и исправляют ошибки. Пожалуй, эта работа занимает больше всего времени.
Однако существенная часть процесса разметки так или иначе автоматизируется, и весомую долю этой автоматизации делают ребята. Они пишут скрипты для обработки дерева сайта, сбора ключевых слов и подготовки данных для написания регулярных выражений, а также автоматизируют само составление регулярных выражений.
Очевидно, что мы работаем с огромным количеством доменов и еще более огромным количеством страниц, поэтому собранные данные часто приходится хранить и обрабатывать средствами Hadoop, тогда ребята сами пишут MapReduce-задачи и запускают их на нашем учебном кластере.
Как бы то ни было, часть работы, а именно экспертную оценку, автоматизировать нельзя. И основная ценность работы лаборантов для нас — эта самая «человеческая» экспертиза. Первое время мы думали, что хорошо бы успевать полностью обновлять каталог тематик раз в год, сейчас, в том числе благодаря автоматизации, предложенной лаборантами, мы укладываемся в 4–6 месяцев и, скорее всего, еще ускоримся.
Кроме задач, связанных напрямую с тематическим каталогом, с конца прошлого года мы решили заниматься в лаборатории исследовательской работой. Наверное, это тоже не в полном смысле научные задачи, потому что они в любом случае идут от бизнеса, но все-таки это именно исследования, и среди KPI есть статьи и выступления на конференциях. Для этого из «производственной» части лаборатории мы выделили двух ребят, а также куратора с нашей стороны — мою сотрудницу Ларису Маркееву. Пока еще мы не можем похвастаться значительными результатами, однако могу сказать: то, что ребята уже сделали, обнадеживает.
— Какая структура в лаборатории?
— Помимо меня, ребят курирует наш коллега из МГУ Сергей Ступников. Сергей работает на факультете ВМК с 2008 года, также он является старшим научным сотрудником Института проблем информатики РАН. В лаборатории Техносферы он еженедельно курирует работу ребят, что обеспечивает делегирование задачи от компании вузу.
Про внутренние задачи лаборатории мы спросили куратора Сергея Ступникова.
— Есть ли различия в постановке и решении задач бизнеса, а не научных?
— В бизнесе часто достаточно найти в литературе подходящее решение и адаптировать его под нужды компании. Конечно, при этом необходимо довести реализацию до промышленного уровня, отточить эффективность. Для научных же задач характерно появление новой идеи, ее прототипирование.
— Расскажите о задачах, которые изначально ставились перед лабораторией?
— Лаборатория — это подразделение Техносферы, которое объединяет студентов проекта и позволяет им решать как сугубо практические задачи, так и задачи с научной составляющей и получать за это вознаграждение. В мои обязанности входит координация деятельности стажеров и отчеты перед отделом анализа данных и отделом исследований и образования. В научной части сейчас есть несколько интересных задач. Пара из них связана с фреймворком Giraph, который реализует вычислительную модель итеративного анализа графов. На нем можно реализовывать различные интересные алгоритмы. Сейчас усилия сосредоточены на аспектах глубинного обучения. Перспектив у этого метода много, сотрудники компании занимаются и этим в том числе.
— Как работа в лаборатории помогает студентам в научной деятельности?
— Конечно, в последнее время мы больше занимались прикладными задачами. Но работа помогает получить разные навыки, в том числе опыт коммуникации с руководством и в команде. Надеюсь, что в будущем появится и научный результат работы ребят.
Я могу выделить несколько составляющих работы в лаборатории. Самое важное — это умение и желание генерировать новые идеи, может быть поначалу и небольшие, как в прикладном, так и в научном плане. Можно также выделить практические навыки:
- задачи с научной составляющей предполагают чтение и анализ научных статей, в том числе на английском языке;
- нужно уметь прототипировать свои задачи (программировать алгоритмы), показывать их эффективность;
- свои результаты нужно уметь презентовать, оформлять в виде отчетов, статей.
— Когда лучше поступать?
— Лаборатория требует инвестирования своего времени, самодисциплины. Работа в лаборатории позволяет не распыляться на различные области (когда студенты зарабатывают на жизнь часто не совсем по специальности), а сконцентрироваться на одной — анализе данных. У студентов, которые учатся в Техносфере, есть задания по основной учебе в университете, по учебе в Техносфере, и если они все успевают по этим двум направлениям, то я рекомендую взять дополнительную работу в лаборатории.
— Что бы ты пожелал студентам?
— Я бы пожелал им выбрать интересную сферу деятельности, которой они будут заниматься в своей жизни. Чтобы университет, помимо умения учиться, дал возможность познакомиться с разными бизнес-направлениями, где можно найти интересное применение своим знаниям и умениям. Я рад, что у студентов МГУ есть такая возможность.
Стажеры лаборатории Антон Гой и Мирас Амир также поделились своими впечатлениями о работе в лаборатории.
Антон Гой
— Что ты ожидал от стажировки и каковы твои впечатления?
— Здорово, что у меня учеба, дом и работа близко друг от друга. Во время работы разобрался во многих методах. Появлялись более глобальные задачи. У меня два наставника. Они помогают решить спорные вопросы, это здорово.
— Где применяются результаты твоей работы?
— В таргетинговой рекламе. Мы показываем пользователям рекламу, основываясь на их поведении в прошлом. Если человек заходил на сайты, которые содержатся в нашем каталоге, система это понимает и показывает то, что еще ему может быть интересно.
— Были смешные истории во время работы?
— Мне попадались разные тематики, и некоторые из них были забавными. Благодаря работе теперь разбираюсь во всех видах алкогольной продукции и знаю все о кредитной системе. Иногда также встречаются смешные названия сайтов.
— Как помогает работа в научной деятельности?
— Сейчас я занимаюсь проектом по нейрофизиологии — определением по снимкам областей мозга, которые связаны между собой. Данных очень много, и нужно правильно их обрабатывать. В этой работе я буду использовать знания, полученные в Техносфере и лаборатории.
— Чем ты хочешь заниматься?
— Машинным обучением, анализом данных. Со следующего учебного года планирую перейти в офис в какое-то подразделение компании, где есть подходящие задачи.
Мирас Амир
— Каковы твои впечатления от работы в лаборатории?
— Я работаю в лаборатории совсем недавно, меньше месяца. За две недели я узнал несколько новых вещей, общаюсь с ребятами и в результате заметно вырос. Наставник ставит перед нами практические задачи, и это сильно отличается от заданий в университете. Ты сразу по-другому смотришь на проблему и развиваешься профессионально.
— Как помогает работа в научной деятельности?
— Так как деятельность в лаборатории тесно связана с дисциплинами по моей учебной программе на кафедре ММП, думаю, их совмещение положительно влияет на мою успеваемость и саморазвитие: помогает более ответственно подходить к делу и качественно распределять свое время.
— Как ты видишь свое развитие?
— Недавно попалась на глаза вакансия по анализу данных, думаю, что, когда наберусь опыта тут, подам заявку на более серьезную позицию в компании.
— Что бы ты пожелал тем ребятам, которые только учатся, еще не работают?
— Я пожелал бы им организовать свое время так, чтобы побыстрее начать работу. Потому что развивается навык работы в команде, накапливается опыт.
Спустя год работы лаборатории мы подвели итоги и подсчитали эффективность работы ребят по сравнению с подрядчиками и сотрудниками, которые не имели базовой подготовки в области анализа данных. Оказалось, что ребята отлично справились. Они не только выполняли те задачи, которые ставил перед ними ментор лаборатории в МГУ Сергей Ступников, но и самостоятельно разрабатывали и предлагали инструменты автоматизации этих задач. Часть из них была немного дополнена и внедрена в бизнес-процессы компании.
Осенью 2015 года было запущено второе направление внутри лаборатории — научные исследования. Таким вопросам в компании также уделяется время. В частности, мы активно исследуем возможность применять нейронные сети в бизнес-задачах, но, к сожалению, испытать их «в бою» мы пока что не готовы: обеспечение их работы требует вложения огромных ресурсов, а польза новых методов пока неочевидна.
Тем не менее работы ведутся, и мы подключили к их решению стажеров из лаборатории. В данный момент двое из шести стажеров в лаборатории занимаются научными исследованиями.
Перед ребятами была поставлена задача, связанная с алгоритмом MCL. Она направлена на то, чтобы сделать кластеризацию в графе.
В марте 2016 года куратором направления стала Лариса Маркеева. Вместе с Артуром Кадуриным они поставили перед ребятами научную задачу.
Стажерам необходимо было разобраться с базовой интерпретацией алгоритма RBM (restricted Boltzmann machine) и реализовать ее под фреймворк Giraph. Таким образом, ребята должны построить систему распределенных вычислений на графах, за основу которой была взята архитектура Pregel.
Данная техника позволяет предобучать нейронные сети. А нейронную сеть, которая сможет учиться на кластере, в дальнейшем можно будет использовать, например, для оптимизации CTR в рекламе.
Как мы уже упомянули, мы пока что будем использовать нейронные сети в экспериментах. Возможно, эту наработку выложим в open source.
В рамках научного направления стажировки предлагается использовать различные технологии: Java, Hadoop. Для визуализации и прототипирования используется Python, Notebook. Также в планах использование Apache Spark. Потенциально алгоритмы, которые исследуют и разрабатывают стажеры, могут лечь в основу бакалаврской или магистерской работы.
Мы спросили одного из стажеров, Павла Коваленко, о работе в научном блоке лаборатории:
— Каковы твои впечатления от лаборатории?
— Меня позвали работать в лабораторию в феврале прошлого года. Для меня это первый опыт настоящей работы в коллективе. Формат лаборатории очень хорошо подходит для совмещения с учебой: работа дома плюс раз в неделю встреча в университете.
— Какие задачи решал в самом начале?
— В начале мы работали кем-то вроде асессоров. Требовалось регулярными выражениями разметить страницы крупных сайтов по тематике их содержимого (авто, недвижимость, одежда и т. д.). Набор обучающей выборки — это первый этап в решении задачи автоматизированной классификации страниц по тематике, над которой сейчас работают несколько студентов лаборатории.
— Какие задачи решаешь сейчас?
— В начале этого года мне и моему коллеге Александру Щербакову предложили новую интересную задачу: работу с Apache Giraph (надстройка над Hadoop для распределенной обработки графов), а именно создание распределенного варианта ограниченной машины Больцмана. Говорят, у кого-то в Mail.Ru Group появилась потребность применить машину Больцмана к действительно большим данным.
— Как помогает Техносфера в научной деятельности, учебе?
— Для меня Техносфера стала незаменимым опытом. Возможно, я пошел туда немного рано — в начале второго курса. Многие моменты были мне непонятны. В частности, курс Data Mining требует неплохих знаний теории вероятностей, а у меня тогда их не было совсем. Техносфера повлияла на мой выбор кафедры на ВМК — мне очень понравился курс Data Mining и сами идеи машинного обучения, поэтому я пошел на кафедру математических методов прогнозирования, которая, собственно, и занимается машинным обучением. Для работы в лаборатории очень помогает курс Hadoop Техносферы. Где еще можно получить практические навыки по работе на настоящем кластере?
Так получилось, что те задачи, которыми мы занимаемся в лаборатории, тесно связаны с моей учебой на кафедре, поэтому одно не мешает другому, а, наоборот, дополняет. Практическое использование знаний, полученных на лекциях, помогает лучше разобраться в принципах работы алгоритмов.
— Какие планы по развитию?
— Не хочу пока заглядывать настолько вперед. Я считаю, что в университете бoльшую часть времени нужно посвящать учебе и научной работе. Поэтому так удобен формат лаборатории: можно работать в удобное время, свободное от учебы, и не нужно далеко ездить.
— Каковы впечатления о наставнике?
— С новой задачей у нас появился новый наставник — Лариса Маркеева. С ней очень приятно работать, поскольку она действительно хорошо разбирается в этой области (Hadoop и Giraph) и всегда открыта для общения, помогает решить возникающие трудности и дает советы по реализации. В связи с этим недавно случилась забавная история. Для работы нам потребовался Hive (надстройка над Hadoop для распределенной обработки данных с использованием SQL-подобных команд). Hive был установлен на учебном кластере, однако из-за неправильной настройки он вообще не работал. Лариса написала кому-то в компании, кто занимался администрированием кластера, и он обещал разобраться в ближайшее время. А на следующий день он уволился из Mail.Ru Group. Надеюсь, это не мы его довели. :)
Data Science чемпионаты Mail.Ru Group
Помимо обучения в области больших объемов данных, в Mail.Ru Group также проводится два больших чемпионата, где ребята могут попробовать свои силы: Russian AI Cup и ML Boot Camp.
Russian AI Cup — ежегодный чемпионат по программированию искусственного интеллекта на примере игровых стратегий.
Проходит уже четыре года подряд. Каждый раз задания разные. В этом году участникам нужно было запрограммировать поведение гоночного автомобиля таким образом, чтобы он успешно обходил препятствия и не врезался в стенки трассы, а также расстреливал автомобили других участников.
Победители чемпионата традиционно получают ценные подарки, призовой фонд составляет около миллиона рублей, но самое главное — абсолютно все участники улучшили свои навыки в программировании искусственного интеллекта. Победитель Russian AI Cup 2015 по итогам соревнования устроился работать в Mail.Ru Group и теперь занимается разработкой искусственного интеллекта для игровых проектов компании.
ML Boot Camp — новая инициатива Mail.Ru Group по обучению разработчиков machine learning. На платформе у участников есть возможность научиться решать задачи по машинному обучению и анализу данных, попробовать свои силы в контестах и выиграть ценные призы. Желающие могут потренироваться в промежутках между соревнованиями, осваивая учебный материал и решая тестовые задачи. Периодически запускаются двухнедельные контесты, с целью выделить лучших специалистов по машинному обучению, а после этого наградить их призами.
***
Мы надеемся, что скоро сможем опубликовать первые научные результаты лаборатории, а пока предлагаем вам ознакомиться с материалами, которые относятся к исследованию данных и выпущены в рамках проекта Техносфера:
Поделиться с друзьями