Как начать карьеру в области машинного обучения.
Ю. Д.: Александр Геннадьевич, насколько я понимаю, Вы, помимо образовательной активности, уже много лет занимаетесь индустриальным ML. Какой формат ваших работ: консультативный или ведете разработку внутри себя, как на аутсорсе для других компаний?
А. Д.: Я не буду рассказывать подробности проектов, как ни странно, это запрещено договором. Я руковожу исследованиями – их научной частью – группами исследователей-разработчиков. Часто я участвую в найме или увольнениях, но тут мое слово, хоть и имеет большой вес, все же не решающее. Также как вопросы, связанные с зарплатой я тоже не решаю. Когда-то у меня было больше полномочий (смеётся). Ну я много кем успел поработать: и простым программистом работал, и директором. А теперь – только исследования и доведение их до уровня готового внедрения в production. Из интересных фишек… у нас есть, например, семинары.
Ю. Д.: У Вас есть семинары внутри компании?
А. Д.: Мы регулярно обсуждаем что-то свежее и новое, методы, о которых кто-то что-то прочитал.
Ю. Д.: А у меня, кстати, студенты спрашивали: «Вы за новыми исследованиями и новыми методами, новыми библиотеками как-то следите? Сколько времени этому посвящаете? Как вообще эта работа по получению новых знаний у Вас устроена?»
А. Д.: Не уверен, что у меня устроено совсем эффективно, в том смысле, что я вижу недочеты в своей системе. Но общий совет очень простой. Есть некий список ресурсов, который надо мониторить. Например, arxiv, если Вы занимаетесь машинным/глубоким обучением. Чтобы сократить себе объем просмотров есть агрегаторы, фильтры по областям и т.д. Есть полезные блоги, из центральных – блоги ведущих компаний типа Google и Facebook.
Ю. Д.: А если хочется быть внутри, внедрять самые последние вещи, то лучше быть в рамках академической среды или в рамках R&D центров крупных компаний?
А. Д.: Тут вопрос не совсем корректный, потому что сейчас «в рамках компаний» – очень размытое понятие. Есть компании, где ты действительно researcher, то есть твоя задача — это читать и писать статьи, у тебя KPI такой: сколько ты статей напишешь с аффилиацией с данной компанией и выступишь на NeurIPS, ICML. А есть компании, где ты должен писать код, и это занимает весь твой рабочий день. Чтобы держать руку на пульсе, естественно первый вариант предпочтительнее второго. А есть, кстати, должности в компаниях, в обязанности которых входит хвататься за все новинки, пытаться в них быстренько разобраться, и потом докладывать на общем собрании, семинарах и т.д.
Ю. Д.: Как интересно, я не знал, что есть такие люди.
А. Д.: Да, бывают, но, опять же, у таких людей фокус размывается, они не могут ничего конкретного, потому что они все «просматривают». А есть люди, которые очень здорово разбираются в конкретной области. Вот, например, человек занимается синтезом звука, и он всё про это знает, и все новинки попробовал, и у него есть мнение по всем алгоритмам, но чуть-чуть в сторону и он будет плыть. Ему сложнее потом найти какую-то работу со сменой деятельности, поскольку больше шансов завалить собеседование по незнакомым вопросам.
Ю. Д.: А вот кстати, это важный вопрос. Есть учащиеся, они учатся на ВМК, у нас здесь в Masters, в каких-то других местах. Чего им не хватает (а может всего хватает, и я не прав), чтобы стать хорошим датасаентистом вот прямо сейчас. Пойти на работу и что-то делать.
А. Д.: У меня есть, но это чисто мое мнение, с ним, наверное, многие не согласны: работе с данными нельзя научить, нужен талант, подкреплённый хорошей практикой... это некое практическое умение, как умение выпиливать лобзиком.
Ю. Д.: Или шить ботинки...
А. Д.: Да, то есть, во-первых, здесь нужна практика, сложно заниматься данными и их не касаться. Датасаентист прежде всего программист. Я гораздо больше уважаю людей, у которых есть хороший репозиторий на гитхабе, нежели тех, которые могут, например, назвать все виды последних эффективных трансформеров. Хороший специалист может что-то конкретное. Хотя мочь тоже можно по-разному. Например, в диалоговых системах, допустим, делаем бота для общения. Кто-то с нуля может реализовать пайплайн, на основе современных идей, а кто-то разобраться в современных библиотеках и собрать решение из них как из кирпичиков. Главное – результат, чтобы работало!
Ю. Д.: Александр Геннадьевич, такой вопрос, даже два. Один связан вот с чем. Мы, когда делали курс по оптимизации, мы думали, что можно учить оптимизации как... учить пользователей, которые просто будут готовые какие-то инструменты использовать для решения какой-то своей конкретной задачи. А можно учить разработчиков, которые эти методы новые придумывают. В вашем примере это как человек, который готовое решение берет и пишет его с нуля, но может быть не обязательно придумывает. Вам какие интереснее было бы читать курсы? Которые для разработчиков или которые для пользователей?
А. Д.: Хороший вопрос, я что-то не задумывался о такой постановке. Мне кажется, что сложно эту концепцию реализовать, точнее людей разделить на два типа. На самом деле людей, которые могут придумать что-то принципиально новое, скорее всего, гораздо меньше.
Хотя, придумывание нового тоже можно автоматизировать (смеётся). Есть такие нечестные приёмы: подсматривать идеи и переносить на другие области. Например, в обработке текстов (NLP) есть локомотивная подобласть – автоматический машинный перевод. Подавляющее большинство алгоритмов, начиная от seq2seq заканчивая трансформерами, пришло сначала в NLP, потом в другие области машинного обучения оттуда. Поэтому можно просто мониторить новинки там и их быстро переносить на свою область, но это не совсем «придумывание нового». Хотя студентам я обычно показываю локомотивные области и говорю «смотрите сюда, скоро это появится ещё здесь, здесь и здесь».
Ю. Д.: А это, кстати, свой интересный вопрос, который многих на самом деле интересует. В какие области машинного обучения входить, чтобы вот в ближайшие лет пять точно заниматься чем-то интересным? В смысле глобального интереса, то есть, быть востребованным, чтобы людей вокруг волновал результат вашего труда.
А. Д.: Ой, тут бы я не стал давать прогнозы. Допустим, мне сейчас нравятся графовые нейронные сети и всё, что с ними связано, но, во-первых, это не свежее направление. Во-вторых, не знаю, на сколько лет его хватит. Конкретно сейчас удачное время, поскольку всё, что разработано в парадигме классических нейронок переносится на графы: свёртки, рекуррентности и т.п. Но когда-то перенесут почти всё и всё апробируют, придумают что-то принципиально новое. При современных скоростях исследований это года-два.
Потом появится какая-то очередная модная тема. В машинном обучении многое зависит от популярных объектов исследования. Например, раньше теми же самыми графами не занималось столько народу, а какой толчок исследованиям дали социальные сети?! Так и будущим исследованиям что-то даст толчок, может, криптовалюты, а может, квантовые компьютеры, хотя и то и другое новинками не являются.
Если ещё пофантазировать, то в ближайшем будущем мы, наверное, увидим в нашей стране развитие открытых данных, биоинформатики, так у нас любят это называть, применение ИИ в политике. Но сложно спланировать карьеру, чтобы оказаться в нужное время в нужном месте. Проще всегда заниматься любимым делом, это избавляет от необходимости прогнозировать.
Ю. Д.: Есть какие-то недооценённые и переоценённые направления в машинном обучении?
А. Д.: Мне кажется, что слишком много говорят об этике и законах вокруг ИИ. Это, конечно, важные вопросы, но не до такой степени. Например, несколько лет назад на крупной конференции в США участники весь первый день спорили, стоит ли давать ИИ право голоса на выборах. Как показали последние выборы, в тех же США и других странах, много вопросов к современной системе их проведения. Мы, люди, не научились выбирать, а уже пытаемся довериться ИИ, которого пока нет в природе. То есть решаются выдуманные проблемы вместо реальных. Или вот помните популярный вопрос «если алгоритм убьет человека, кто за это отвечает?»
Ю. Д.: Да, это этическая сторона.
А. Д.: Меня это тоже часто спрашивали, а я говорил: «Слушайте. А вас это реально волнует? Вы создали алгоритм, который уже убил пару людей? Или у которого есть шанс это сделать? Вот Вы чем занимаетесь?» Мне в ответ – «рекомендательными системами при онлайн продажах». Тогда вопрос практически закрыт. Это мне напоминает старые популярные вопросы. Помните, в прошлом веке остриём науки и технологий была космонавтика: спутники, первые полёты человека, космическая станция, исследование планет и Луны. Было много обсуждений, много книг философов и писателей-фантастов, фильмов. Почти вся фантастика индуцировалась темой заселения других планет, космическими экспедициями... Какой был центральный обсуждаемый вопрос? Контакт человека с инопланетянами! (смеется) Помните, сколько обсуждений, книг и фильмов было? Кого это сейчас волнует?! Вот действительно, покажите мне этого человека.
Ю. Д.: Кажется, что просто в какой-то момент эта область начала стагнировать и все просто естественным образом поутихло.
А. Д.: Такие примеры повсюду. В советское время самый центральный предмет был «Основы марксизма-ленинизма», и в аспирантуре его сдавали. Тоже там была своя этика. Мне коллега по кафедре, профессор Местецкий, рассказывал, что его на вступительном экзамене спрашивали «будут ли тюрьмы при коммунизме?» Кого это сейчас волнует?
Ю. Д.: Никого
А. Д.: С этими алгоритмами-убийцами будет тоже самое. Мы видим, как сеть генерирует правдоподобный текст, стилизует изображение или предсказывает продажи, а потом вдруг начинаем думать про убийства... ну хорошо, управление беспилотниками – там больше шансов кого-то задавить, чем при стилизации изображений. Но даже тут больше экономических проблем (типа их рентабельности), про электромобили вон насколько раньше говорить начали, однако мы их до сих пор не видим их массово на дорогах. До того, как беспилотники начнут колесить по улицам, они начнут колесить на заводах: подвозить продукцию, развозить сырьё и т.п., т.е. будут апробированы в относительно безопасных для общества местах, на невысоких скоростях, к этому моменту уже автоматически сформируются решения всех этических и юридических вопросов. Мы же сейчас определяем виновника ДТП? При этом почти не вспоминаем про изготовителя авто, если не было дефекта производства. А изобретателя автомобиля мы вообще не вспоминаем! Также будет и с алгоритмами, мы просто дойдем до того уровня осознания ситуации, при котором ясно, кто и какие обязательства берёт на себя.
Ю. Д.: Философам тоже надо писать диссертации. Но если машинное обучение в целом просто очень модное направление, а глубокое обучение очень модно внутри машинного, то какие области в Computer Science или близкие к ним оказались забыты? Что помимо машинного обучения может быть Вам стоило бы подучить для решения реальных бизнес-задач?
А. Д.: При применении машинного обучения в идеале надо знать предметную область. Тогда больше шансов получить практически полезное решение. А Computer Science целиком очень полезна, от основ алгоритмов до NP-полноты. Хотя бизнес-задачи решаются, в основном, с помощью здравого смысла. Вообще, какая-то отдельная область науки – это просто одна из концентраций этого самого здравого смысла. Так что учиться правильнее не «направлениям», а просто думать.
Ю. Д.: Александр Геннадьевич, а про RL, что Вы скажете. Сейчас многие туда стремятся.
А. Д.: У меня нет ни каких-то восторгов, ни каких-то пренебрежений этой областью. Есть здесь перспективные приложения, например, AutoML. Есть, конечно, уже успешная история программирования логических игр. Как человек, который немножко этим занимался, скажу, что RL тут, действительно, всё перевернул. И самое забавное, даже породил некоторое направление исследований. Недавно была интересная статья. Взяли шахматы и попробовали в них правила немножко поменять. Раз у нас есть супералгоритм, который позволяет быстро выучиться сильно играть практически в любую логическую игру, можно проверить баланс в игре при модификации правил. Там есть многие интересные находки, например, если пешке разрешить ходить и через одну клетку постоянно, а не только при первом ходе, то это дает громадное преимущество белым. Они, как правило, успевают вывести пешку в ферзи и за счет этого выиграть. То есть, мы теперь можем создание справедливых правил поручить искусному интеллекту.
Ю. Д.: А как быть с тем, что у нас нет базы, в которой люди играли бы по новым правилам? Как обучаться?
А. Д.: А игры гроссмейстеров уже не нужны. Последняя версия от DeepMind играет без данных о партиях людей, она просто играет сама с собой. И выучивается играть лучше, чем человек. Это как раз меня лично больше всего в RL поразило! Только зная правила, играя с самим собой, можно научиться играть практически оптимально! Люди же так не учатся, у нас всё-таки большая социальная составляющая в обучении.
Ю. Д.: Тогда вопрос отпал... Это был вопрос про то, чтобы не было артефактов в смысле артефактов стратегии игры. Если ты играешь только против самой себя, чтоб все это не вырождалось. Прощк объяснить на примере. Вот мой тесть и его брат. У них был вырожденный случай. Они играли в Цивилизацию 2 годами, и в какой-то момент вся их планета превратилась в опустошённую ядерными взрывами пустыню, где остались только рельсы, по которым доставляется продукция, чтобы запускать ядерные бомбы. Вот это артефактная стратегия. И я думаю, не может ли быть такого и для случаев, когда программа играет против программы. Такой локальный минимум где-то совсем не в оптимальной области.
А. Д.: Кстати, в RL как раз есть механизмы избежания подобного. Например, есть любопытство – у меня аспирант пытается этим заниматься: надо не просто максимизировать награду, но и исследовать пространство стратегий. Это по-разному реализуется. Например, ты там пытаешься предсказать состояние среды после своих ходов. Если уверенно предсказываешь, то это плохо – ты хорошо узнал этот мир и тебя нечем удивить, ходить лучше туда, где ждёт тебя что-то новое. Кстати, забавно на Kaggle сейчас есть соревнование камень-ножницы-бумага, надо написать бота, который выигрывает.
Ю. Д.: Это очень здорово! Знаете, я думаю может быть хорошая история, которую как раз в теории игр в книжке Диксита описана. Там была такая вещь: у двух фирм была какая-то игра за лицензию. То есть они должны были на аукционе купить лицензию. И чтобы не устраивать эти гонки денежные, они договорились, что проведут одну партию камень-ножницы-бумага, и кто выиграет, тот и получает лицензию. И они подошли к этому совершенно по-разному. Одни взяли экономистов или исследователей и начали узнавать игра камень-ножницы-бумага, как здесь лучше всего выигрывать, какие тут паттерны. И они соответственно рассказывали про равновесие Нэша и тому подобное. А другие сделали по-другому. Они пошли и собрали кучу детей, и спрашивали у них: «а как лучше играть?». Например, узнали, что лучше начинать с камня. И понятно, что если две эти стратегии столкнутся, одни сказали оптимально, что камень, но вторые об этом не знают у них камень-ножницы-бумага равновероятно просто кидать монетку, то там интересный может быть результат. Ни та, ни другая может стратегия может не сработать. Конечно, в среднем будет... за счет одной рандомизации всего всё слетит, ну ладно. Опять куда-то в сторону. Это классный пример дать игру, в которой не должно быть интересной стратегии, если твои противники об этом знают. И тоже ничего интересного не предлагают. То есть там кажется, что есть оптимальный путь только если кто-то другой не тривиальное решил что-то сделать. Простите, опять отклонились от темы. Что ж, в какую же лучше пойти смежную область в DS? Этим темам либо не учат, либо учат плохо. Но они востребованы в бизнесе и помогут может быть сюда же тому же дата-саентисту.
А. Д.: Есть некоторые направления в самом машинном обучении, в которых есть пустоты. Например, из модных направлений – интерпретируемость моделей, их прозрачность и «честность». По нему много статей, а хороших практических кейсов, объясняющих «что, для чего и как» явно не хватает. Ну, и пока чёрные ящики не превращаются в прозрачные, понятные неспециалистам.
Потом ещё проектирование архитектур нейронных сетей. Классическое машинное обучение – это на 90% придумывание признаков, глубокое обучение практически убрало это занятие из списка дел исследователя, но заменило на придумывание архитектуры нейросети. Про AutoML, когда это делает другая сеть, пока не будем говорить. Так вот тут не хватает пока концепций и даже просто хороших учебных курсов по теме. Генерации признаков учат, а созданию новых сетей – нет.
А из глобальных тем... я бы не сказал, что какие-то темы пустуют на самом деле.
Ю. Д.: Я могу привести хороший пример. У нас очень много задач, связанных с оптимизацией логистики. Если их моделировать, то это на самом деле оптимизационная задача, но вот оптимизаторов по этим задачам нет. Есть либо алгоритмисты, то есть разработчики, которые прошли хорошие курсы по алгоритмам и умеют их решать. Либо дата-саентисты, которым тоже это часто поручают. Кажется, что вот эта часть, связанная с operation research, она в некотором смысле заброшена.
А. Д.: По этой области есть же коммерческие решения каких-то IT-гигантов, насколько я знаю.
Ю. Д.: Там другое дело.
А. Д.: То есть формально эта задача где-то решена за большие деньги с какой-то гарантией качества. И гипотетически, если у тебя есть эти деньги, то ты можешь купить это ПО и нанять специалистов, которые в этом разбираются. Другое дело, что не любят тратиться на подобные решения. Легче поймать дата-саентиста и сказать: «Слушай, ты еще и в оптимизации разбираешься?» Такие случаи были в моей практике, но нельзя сказать, что тут совсем что-то пустует. Часто бывает, что какую-то область раскручивают, сначала один упомянул кейс на каком-то митапе, потом другой и потом все говорят. Часто это лишняя реклама.
Ю. Д.: А можете привести примеры?
А. Д.: Многие задачи, связанные с тяжелой промышленностью. Про них с некоторых пор много говорят, и говорят, вроде, правильно – ИИ должен везде работать. Но после чтения рекламных статей, о том, как ИИ здесь экономит миллиарды, если посмотришь на действительность, то очень удивишься. Так получилось, что я общался с представителями индустрии по кейсам, которые получили широкую огласку в прессе. Оказалось, что до промышленного внедрения мало чего доходит. Например, внешние заказчики взяли данные, построили модель, как-то оценили экономическую эффективность, всем рассказали об этом, а никто готовым решением не пользуется, по многим причинам. Не знаю, какая ситуация конкретно сейчас, многие начали заниматься ML в индустрии и кейсы стали более успешные, но всё равно они не дотягивают до нужного уровня. Вот смотрите, в промышленности часто работают простые модели, в большинстве случаев вообще линейные, но там больше проблем в предобработке данных – много показаний, но мало релевантных, большая погрешность датчиков и тому подобное. И многие почему-то боятся об этом открыто говорить. А бояться не надо: пишите, что линейная регрессия экономит миллиарды, а не ИИ!
А вообще, если долго заниматься узкой областью, то обычно формируется элегантное масштабируемое и робастное решение, например, в виде архитектуры нейросети. Вот в изображениях – свёрточные сети, в них фильтры, которые традиционно использовались в компьютерном зрении, настраиваются автоматически, в текстах – рекуррентные и трансформеры, здесь попытка использовать умные представления слов и их зависимости в предложениях. А в промышленности о таких новых архитектурах никто пока не рассказывает, значит, решают не достаточно хорошо! Всё-таки, «соберём данные в табличку и запихнём в бустинг» в задачах, где есть физика процесса, временные зависимости и вековая экспертиза, выглядит подозрительным. Это точно не НАУКА о данных, это «тяп-ляп и готово». Кстати, про бустинг... были случаи, что на митапах рассказывали, как задачу бустингом решили, а когда заказчик код посмотрел, увидел обычную линейную регрессию и закоменченный бустинг.