Поговорили с Александром Дьяконовым — преподавателем курса по машинному обучению OzonMasters и одним из самых известных специалистов по машинному обучению в России о старте карьеры в Data Science, соревнованиях и таланте.

Биография

- Как вас занесло в анализ данных? И про учебу, если можно, с самого начала...

Я родился и до сих пор живу в подмосковном городе Ивантеевка. Причем, в нём жило 6 поколений моих предков, а теперь живут и мои дети. Родители до сих пор живут в частном доме, который принадлежал ещё моему прадеду. Здесь же, в Ивантеевке, и начинал учиться в обычной школе №3. В 90-х она превратилась в гимназию, тогда было модно переименовывать обычные школы в «гимназии» и «лицеи», добавились предметы типа латыни, французского языка, истории, религии и прочего. Забавно, что многие предметы не осели у меня в голове, например, по латыни я ничего не знаю сейчас. А потом я поступил в Школу Научно-Инженерного профиля №4 подмосковного города Королёв, в начале 90-х он назывался Калининградом. Сейчас, по-моему, школа называется Лицеем научно-инженерного профиля №4 и даже входит в пятерку лучших школ России.

Меня сильно нагружали в школе, поэтому даже университет ощущался легче, чем остальным — не было стресса перед экзаменами. 

После школы я поступил на факультет вычислительной математики и кибернетики (ВМК) в МГУ. Другие вузы даже не рассматривал — тогда в стране была Чеченская война и нужно было стабильное учреждение, чтобы его не затронули возможные изменения в стране. 

Почему не МехМат?

Дело в том, что на ВМК экзамены были раньше — до МГУ я уже поступил в несколько университетов и мне уже надоело сдавать вступительные экзамены. Поэтому на мехмат я уже документы не понёс — не хватило терпения. Тем более, на ВМК было программирование.

Вы уже им интересовались?

Да. Хотя это не было существенным доводом в выборе между ВМК и МехМатом, но я понимал, что программирование востребовано в современном мире (смеется). Скажем так, на ВМК я шел чуть больше за математикой, чем за программированием. В итоге так и получилось, потому что у нас 3 потока: первый – классической математики, на нём кафедры математической физики, общей математики, вычислительных методов и т.п.; второй – «кибернетический»: дискретная математика, оптимальное управление, исследование операций, математическая статистика; а третий – чисто программистский, с кафедрами системного программирования, алгоритмических языков. Я пошел не на третий поток, который был у нас самым популярным, потому что люди на ВМК шли программировать, а на второй, который «более прикладной» и на котором более современная математика, которую в МГУ называли «кибернетикой».И ни разу об этом не жалел. А что касается вопроса «почему анализ данных» – мне повезло. Через год после моего поступления – в 1997 году – создалась новая кафедра, которую возглавил Юрий Иванович Журавлёв, и это единственная кафедра на нашем факультете и во всём университете, где стали учить Машинному обучению. Только его по-другому называли, наш основной предмет был – «Математические методы распознавания образов», и он до сих пор у нас в сетке расписания стоит под этим самым названием (смеется). В МГУ проще создать новый курс, чем поменять название старому.

Даже конференция так называлась, кажется

Да-да-да. Нас тогда учили как раз нейросетям, SVM-у, методам ближайших соседей, решающим деревьям, просто не называя это Машинным обучением, хотя книжки, по которым учили, были довольно интересными и прогрессивными. Издательство «Мир» ещё переводило западные издания, например, Ту Гонсалес «Принципы распознавания образов» – очень неплохая книга для того времени. Вообще, интересно как изменились книги по нашей науке. У меня в шкафу до сих пор стоит старый трёхтомник Гренандера «Лекции по теории образов», сейчас такое студентов не заставишь изучать, а когда-то казалось «остриём науки». Ну и вот этот аппарат я освоил, но тогда он был нигде не применим, потому что в 2001 году специалист, который знает, что такое «нейросети», нигде не был нужен, более того – не было потребности в решении таких задач. Из нашего выпуска по специальности работал только 1 человек – распознавал номера на автомобилях. Несколько ребят пошли в аспирантуру, а остальные работали совершенно по другим специальностям, не связанными с теми предметами, что мы изучали.

А почему я пошел учиться именно на кафедру Журавлёва – наверное, это дело случая. Так как кафедра была новая, то ее коллектив не совсем знал «правила игры», принятые на факультете. Например, у нас ежегодно проводится мероприятие «Встреча с кафедрами», где каждая кафедра рассказывает о себе, хвалит себя и агитирует «идите к нам». Так вот, кафедра математических методов прогнозирования – на которую я в итоге пошёл – провела эту встречу довольно оригинально, было совсем не похоже на остальные кафедры, которые приходили и говорили: «на нашей кафедре делается следующее…» и на доске начинали писать: «пусть икс есть банахово пространство…» А с нашей встречи до сих пор помню слова Рудакова: «Вы хотите быть великими? Вот Эйлер (показывает внизу), а вот вы (показывает наверху). Идите к нам» (смеется). Выглядело нахально и дерзко, а это притягивает. Ну и была более живая беседа, какие-то истории из жизни, примеры прикладных задач. Часть кафедры сотрудничала с межбанковской валютной биржей, опять же, всё, что связано с деньгами в конце 90-х выглядело аппетитно. В итоге, я клюнул на самое яркое представление кафедры, стал «жертвой рекламы». Потом я понял, что так получилось только из-за того, что кафедра немного нетрадиционно подошла к своему представлению, я в жизни подобное часто использую: впечатление производится отличием от других, хочешь быть заметным – будь непохожим. Когда я занимал какие-то административные посты типа ученого секретаря или тоже занимался агитацией – я уже знал, как делать, чтобы завлечь народ.

Александр Геннадьевич, трудно поверить, что вы у Журавлёва с самого старта начали делать DS.

В том-то и дело, что известный подход Журавлёва к научному курированию студентов и аспирантов – растить исследователей-универсалов. Мне он, кстати, нравится – тоже взял на вооружение: человек в своей жизни должен позаниматься всем. (смеется) Юрий Иванович рассказывал как-то байку про математика, на похоронах которого сказали, что «он всю жизнь прожил на отрезке от нуля до единицы», потому что он всегда занимался рядами функций на этом отрезке (смеется). Соответственно, Журавлёв своим ученикам любил менять темы. Во-первых, у него было несколько научных семинаров. Обычно в МГУ каждый научный руководитель объявляет один, Журавлёв заявил три семинара: по алгебраическому подходу к распознаванию образов, который Журавлёв пропагандировал, по дискретной математике и её приложениям и по так называемым «эвристическим методам распознавания образов». Честно говоря, я немного испугался более сложных тем, хотя в последствии пришлось поработать по тематике всех семинаров. Выбрал третий спецсеминар, он выглядел попроще (смеется), по крайней мере, я представлял, чем я буду заниматься, точнее думал, что представлял. Но оказалось, что задачи, которые Журавлёв предлагал по теме семинара были комбинаторными. Свою первую научную статью писал, грубо говоря, по комбинаторике. В итоге за два курса у меня получилось достичь неплохих результатов, которые вылились в три публикации. Две – по комбинаторике, одна – немного с уклоном в теорию булевых функций. За них, как раз, получил медаль Академии Наук за лучшую работу среди студентов вузов.

Понятно, что здесь играет роль не только результат, но и у кого в коллективе и в парадигме какой научной школы ты делаешь исследования и где и как это потом применяется… Но всё равно приятно, конечно. А после того, как в комбинаторике что-то удалось (хотя я и не думал, что когда-то в жизни буду ей заниматься), Журавлёв меня переключил на «классическую дискретную математику» и я стал заниматься минимизацией булевых функций. Кандидатскую писал как раз по этой теме. Сообщество дискретчиков в России меня до сих пор воспринимает как своего. Мало того, что я воспитанник классика Российской дискретки Журавлёва, но и сам получил интересные результаты, выступал на конференциях, поэтому многие даже думают, что я до сих пор этим занимаюсь – никакого машинного обучения, анализа данных и так далее (смеется). Хотя в диссертации была связь с задачами классификации, там целая глава про приложения в машинном обучении. Как раз, главная фишка работы – создание практически эффективных алгоритмов синтеза ДНФ для поиска логических закономерностей в задачах с бинарной и k-значной информацией. То есть, все теоретические задачи работы индуцировались практическими нуждами. В этом мне тоже повезло с научным руководителем, Юрий Иванович считал, что надо заниматься на границе между чистой теорией и практикой.

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

Знаете, Юрий Гаврилович Евтушенко и его коллеги, которые с ним работают – они тоже не любят стохастические методы оптимизации

Ну да, это можно понять. То, чему ты учишься первые годы и над чем интенсивно работаешь в научном плане очень сильно формирует тебя как научного исследователя. Часто при этом возникает неприязнь к конкурирующим подходам для решения задач, над которыми ты работаешь. Но дело не в том, что тебя к чему-то приучили, а от чего-то отучили. Просто если ты с чем-то интенсивно работал, то сам как-то у'же смотришь на остальное. Мне потом пришлось, конечно, немножко переучиваться. Первое осознание пришло после того, как я увидел, что случайные леса чуть эффективнее моих алгоритмов. Там совсем «на эпсилон», но обидно. И я думаю: «Черт возьми! Вот у меня всё оптимально и детерминировано, а тут как-то случайно, но в результате получается получше». Пришлось полюбить подобные алгоритмы, и было много подобных случаев, случайные леса я для примера привёл.Кстати, то же самое с нейросетями. Когда нас учили, говорили, что нейросети – зло, они не работают и это тупиковая ветвь в ML (смеется). Примерно так и было – они не работали... Кто же знал, что лет через 15 после этих слов мир так перевернется?! Поэтому к сетям изначально у меня тоже было пренебрежительное отношение, которое пришлось менять. Я сам стараюсь избегать категоричных утверждений, например, что нет ничего лучше нейросетей, как знать... Или что метод ближайшего соседа устарел, а смотрим гитхаб фейсбука – они обновляют свою библиотеку поиска соседей. Или вот классические ядра, так называемые «kernel methods», вроде их эпоха прошла, а в последних вариантах эффективных трансформеров снова ожили... Нет бесполезных знаний, нет устаревших методов, есть только умения их применять.

А потом какой областью науки занимались?

Потом, после дискретной математики, докторскую писал больше по алгебре. Но она тоже имела отношение к Машинному обучению, поскольку лежит в русле «алгебраического подхода Журавлёва к решению задач распознавания образов». Если честно, там гораздо меньше практики Машинного обучения, а больше исследований всяких теоретических конструкций. Здесь и алгебра, и немножко дискретной математики, даже теория категорий есть. У Рудакова Константина Владимировича как раз диссертация по алгебраическому подходу со стороны теории категорий. Я её не касаюсь, но по стилю и сути наши работы, смею надеяться, похожи. Поэтому это еще было одно такое кардинальное изменение того, чем я занимался по науке.

У Вас просто постоянно какие-то переходы

И не только в научном плане, мне это даже нравится. Во многих других аспектах моей жизни то же самое. Вся жизнь делится на непересекающиеся отрезки, на каждом я занимался тем, чем я не думал, что когда-то займусь, и теперь этим уже точно никогда не займусь (смеется). Сейчас каждый такой отрезок воспринимаешь, как какую-то автономную жизнь (со своими привычками, заботами, товарищами и успехами). Мне повезло прожить много таких жизней, в том числе и в научной карьере – это очень здорово!

Когда вы начали участвовать в соревнованиях по анализу данных?

Мой интерес к соревнованиям начался с победы Василия Громова (мы с ним учились вместе) на престижном турнире по программированию «GridWars». После этого я открыл для себя разные программистские соревнования и олимпиадное программирование в целом. 

После нескольких мелких соревнований я нашёл BCI Competition — в смысле формата это был улёт. Только подумайте: на сайте выложили сигналы головного мозга, а участникам по ним нужно было определить ментальные действия. Конечно, я за это взялся! В результате я написал на Матлабе алгоритм, который занял на конкурсе 3 место. 

Организаторы, помню, ещё ответили мне: «Удивительно, что в современном мире ещё изобретают новые и простые методы решения конкретных задач».

Студенты интересуются, почему вы перестали участвовать на Kaggle. Разлюбили?

Да просто нет времени — я на их сайт несколько лет уже не заходил. Последнее, где участвовал — «Сантадер» пару лет назад, но там нашли лазейку и соревнование свелось к поиску похожих последовательностей в данных.

Стало ли сейчас со временем сложнее побеждать в соревнованиях?

Я об этом думал… например, кэглеры какого периода сильнее? Некорректно сравнивать, по той же причине, как некорректно сравнивать футбол разных поколений, например, кто лучше: Пеле или Роналду, Месси или Марадона. Люди играли в разных эпохах, даже немного по разным правилам и соперники были разные и соревнования: их схема и уровень. То же самое и здесь. Конечно, нынешние топы Kaggle гораздо более продвинуты в современной практике, потому что они в курсе тонкостей всех библиотек, новых методов, за короткое время могут написать код, который работает и даёт приемлемое качество. В современных условиях я однозначно им проигрываю, но если их поместить в условия «моих лет»: нет библиотек для Python’а, всё решалось на С++ или на пиратском MATLAB’e… Даже загрузить данные было проблемой! Помню, решал тогда задачу на платформе TunedIT и выиграл соревнование по рекомендации лекций. Человек смотрит какую-то лекцию, а ему надо предложить новую. Там лекции были на разных языках, пришлось писать стемеры разных языков. Где сейчас найдёшь человека, который сам реализовал и провёл эксперименты со стемерами 10 популярных языков? Или не очень популярных... там словенский был, я сам по словарю словенского языка придумывал правила обрезки слов. Сейчас таким уже никто не занимается.

Раньше в большинстве соревнований не было leaderboard, ты готовишь решение – ответы на контрольной выборке своего алгоритма, отправляешь по почте и результат узнаёшь в день подведения итогов. Никакого драйва погони за лидером, никакой информации, какое качество у конкурентов. Кстати, такие условия более честные и естественные, но кто на них сейчас согласится? И обмена кодом не было. Сейчас на Kaggle куча выложенных «кёрнелов» – с примерами решения, низкий порог входа в соревнование – достаточно править чужой код, а тогда никаких примеров. А по многим областям, по которым проводились конкурсы, не было даже доступных статей! На arxiv регулярно не заливали препринты, sci-hub-а не было, на некоторые темы не писали, да и число всех статей по ML было на несколько порядков меньше. А сейчас накоплен «массовый опыт» по предобработке данных, калибровке и прочим фишкам.

В ранних соревнованиях было и народу меньше, т.е. конкуренция слабее, но опять же, это связано с большим порогом вхождения, а не только с меньшей раскрученностью соревновательных платформ. Вот помню, была серия ежегодных конкурсов по прогнозированию временных рядов «NN Forecasting» – там участвовали, в основном, всякие гуру в прогнозировании, в России такие эконометристами назывались. В один из годов ряды были с пропусками, это сразу сократило число участников в разы! Казалось бы, подумаешь пропуски, но подавляющее большинство профессионалов просто не знало, как подступиться к таким рядам. А сейчас бы это никого не остановило – есть много рецептов обработки пропусков и есть уже готовые модели, которые автоматически их обрабатывают (а те, кто их используют, часто даже не знают, как именно модели их обрабатывают). А вообще, это интересный феномен – как новые артефакты в данных сбивают людей с толку, его и сейчас можно наблюдать, но в меньшем масштабе, чем раньше.

Какие бонусы для карьеры приносят соревнования? 

Обойдёмся без списков — есть куча постов и роликов на эту тему. Я расскажу про две ситуации из жизни.

  1. В соревновании по банковскому скорингу с тысячей участников я занял 4 место, это был лучший результат среди российских участников. У нас на кафедре телефон разрывался от звонков из рисковых отделов российских банков. Раньше работодатели, как узнают телефон специалиста, заваливали его предложениями о сотрудничестве. По мою душу на кафедру звонили по 5-7 звонков за день. Короче, в плане заработка полезно узнать, что ты как специалист стоишь большей своей университетской зарплаты. 

  2. Ещё пример — в конкурсе не выиграл, но написал классный отчёт. Я очень с ним постарался, а потом он пошёл по рукам у профессионалов в индустрии. И вот, через год мне звонит высокопоставленный в индустрии человек и говорит: «Мне принесли ваш отчет, мы его постоянно перечитываем: написано божественно, целая энциклопедия. Нам нужен такой человек!» Иногда, выходит, участие работает на контакты и связи.

Преподавание

Вы сами решили давать студентам задачки с Kaggle?

Да. Так они соревнуются не только с одногруппниками, но и со всем миром – сразу становится понятен уровень. 

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

В ваших лекциях на OzonMasters мне очень нравится, как вы показываете картинки и спрашиваете: «А что, откуда эти данные взялись?» 

Да! Это моя фишка, а формулировку «что это за данные?» я взял из названия главы какой-то книги. Я тогда подумал — это же очень важное умение для специалиста – по визуализации понимать природу данных! Я всю жизнь смотрю на реальные данные и пытаюсь найти в них какие-то закономерности, но можно же посмотреть и обратную задачу — восстановить реальность по закономерностям.

Такие задачки здорово выявляют в студентах особенности: у одних хорошая память, другие могут перемножать большие числа в уме, а есть особая способность понимать данные — она сразу всплывает на  подобных задачах.

Что думаете об онлайн обучении? Какие фишки используете, чтобы взбодрить аудиторию?

На удалёнке я веду больше занятий, чем раньше — это сказывается на фокусе и разнообразии занятий. 

У меня не всегда хватает мотивации внедрять новые фишки. Многое лень делать, если понимаешь, что эффект будет слабый. Продумываешь кейсы, решаешь прикладную задачу со студентами, а потом замечаешь, что ты на это времени тратишь больше, чем они, и им это менее интересно, только ради зачёта.

Ещё на дистанционке стало сложнее обсуждать вопросы на семинарах — раньше их задавали по любому поводу, а сейчас всех смущают задержки и зум. 

А какие ещё «фишки» вы используете при обучении студентов?

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

Студенты друг у друга могут научиться гораздо большему, чем у преподавателя. Да я и сам у них учусь (смеётся).

О карьере в машинном обучении

Кем вы сейчас работаете, помимо преподавания в OzonMasters?

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

Я много кем успел поработать: и простым программистом и директором. А теперь – только исследования и доведение их до продакшена.

Если хочется развиваться, то куда идти — в академию или в крупные компании?

Некорректный вопрос. Сейчас «в компании» — размытое понятие. 

Можно быть исследователем, писать материалы для компании, выступать на конференциях. Можно быть программистом и писать код. Первое, конечно, предпочтительнее — позволяет держать руку на пульсе. 

Чего не хватает людям для работы после обучающих курсов? 

Это моё мнение, но работе с данными нельзя научить: нужен талант, подкреплённый хорошей практикой. Практика — это просто навык, как выпиливание лобзиком.

Я гораздо больше уважаю людей, у которых есть хороший репозиторий на гитхабе, а не тех, которые могут назвать все виды эффективных трансформеров. Хороший специалист может что-то конкретное. Главное — результат, чтобы работало!

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

Не буду давать прогнозы. Сами посудите — допустим, мне сейчас нравятся графовые нейронные сети, но 

  1. это не свежее направление;

  2. я не знаю, на сколько лет его хватит. 

Сейчас удачное время, поскольку всё, что разработано в парадигме классических нейронок переносится на графы: свёртки, рекуррентности и прочее. Но когда-то перенесут почти всё и придумают что-то новое. При современных скоростях исследований это год-два.

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

Могу пофантазировать: в ближайшем будущем мы увидим в России развитие открытых данных, ИИ в политике. Сложно спланировать карьеру, чтобы оказаться в нужное время в нужном месте. Проще заниматься любимым делом, это избавляет от необходимости прогнозировать.

Есть какие-то недооценённые и переоценённые направления в машинном обучении?

Мне кажется, что слишком много говорят об этике и законах вокруг ИИ. Это важные вопросы, но не до такой степени. Например, несколько лет назад на крупной конференции в США участники весь первый день спорили, стоит ли давать ИИ право голоса на выборах. 

Мы, люди, не научились выбирать, а уже пытаемся довериться ИИ, которого пока нет в природе. То есть решаются выдуманные проблемы вместо реальных. Или вот помните популярный вопрос «если алгоритм убьет человека, кто за это отвечает?».

Меня тоже часто об этом спрашивали, а я говорил: «А вас это реально волнует? Вы создали алгоритм, который уже убил пару людей? Или у которого есть шанс это сделать? Вот вы чем занимаетесь?». А мне отвечают — рекомендательными системами при онлайн продажах. Вот и вопрос отпал.

Что кроме машинного обучения стоит подучить для решения реальных бизнес-задач?

Надо хорошо знать предметную область — бизнес задачи решаются с помощью здравого смысла, а отдельная область науки – это просто одна из концентраций этого самого здравого смысла. Так что учиться правильнее не «направлениями», а просто интеллектуальными упражнениями.

В какую же смежную с анализом данных область лучше «заходить»?

В некоторых направлениях машинного обучения есть пустоты. Назову две: 

  1. Интерпретируемость моделей, их прозрачность и «честность». По нему много статей, а хороших практических кейсов явно не хватает. Чёрные ящики, короче, пока не превращаются в прозрачные для неспециалистов

  2. Проектирование архитектур нейронных сетей. Тут не хватает пока концепций и учебных курсов по теме. Генерации признаков учат, а созданию новых сетей – нет.

OzonMasters

Чем ваш курс в Masters отличается от курса на ВМК?

У меня на ВМК есть семестровый курс по машинному обучению. Это часть моего первого семестра в Ozon Masters. Ещё есть годовой курс на ВМК «Прикладные задачи анализа данных». Второй семестр Ozon Masters — это часть этого курса. 

Третий семестр Ozon Masters — это фрагмент моего курса по Deep Learning. Мы убрали часть, связанную с NLP, так как в Ozon Masters про это есть отдельный курс. 

На ВМК у меня полная власть над формой и содержанием курса, поэтому я экспериментирую. 

Что можете сказать о студентах OzonMasters?

Первый выпуск должен получиться классным — есть хорошие ребята. Ещё они дружные — связи и «тусовочка» особенно ценны в нашей отрасли. 

Ещё я удивился, когда на курсы пришли опытные дата-саентисты из крупных компаний. Всегда было интересно: а какая у них мотивация? У нас даже опрос был перед курсом: «насколько ты думаешь, что знаешь машинное обучение?». 20% респондентов сказали, что на пятерку знают.

А мне неловко — я каждый год убеждаюсь, что на пятёрку не знаю (смеётся), а тут отличников надо учить.

Будут ли тесты на проверку знаний?

Периодически я даю тесты, но наш набор пока оценивать рано. Да и сравнивать с моими студентами на ВМК выпускников Masters тоже некорректно — взаимодействие-то у нас с ними разное.  

Как можно улучшить Masters?

Я предложу убавить нагрузку у студентов — многие учатся после работы. Так что я считаю, что количество дисциплин на курсе нужно убавлять, а не прибавлять. 


Полная версия интервью выложена здесь.

OzonMasters - двухлетняя бесплатная образовательная программа от Ozon в области Data Science и аналитики. Подробнее о ней можно прочитать на нашем сайте.

Для участия в отборе на программу нужно до 29 июня пройти регистрацию.

Ждем Вас!

Комментарии (0)