Senior Research Scientist из Google Research - о PhD в американском университете, проектах в ML и перспективах Украины

Максим Владимиров окончил университет в Харькове, начал работать программистом в Киеве, но быстро понял, что применение готовых решений — это не то, чем он хочет заниматься. Заинтересовавшись машинным обучением и созданием новых алгоритмов, он поступил в аспирантуру в Америку. Маленькая стипендия, жаркий климат и тяжелая работа над научными статьями — таковы были реалии американской жизни. Максим поделился с DOU тем, как ему удалось построить карьеру в машинном обучении, попасть в Google Research и пригодился ли ему PhD.

Учеба и работа в Украине

В 2008 году я закончил Харьковский университет имени В.Н. Каразина. Я пошел по стандартному на то время пути: получил базу по математике на специальности «Прикладная математика», а затем степень магистра по информатике. Искусственный интеллект преподавался на последнем курсе магистратуры, тогда этому направлению еще не придавали такого значения, как сейчас, литературы было недостаточно. Я даже особо не смог вникнуть в суть предмета. Параллельно получил второе высшее образование на факультете международных отношений.

Во время учебы были какие-то проекты soft development-направления, пробовал силы в лаборатории, организованной одной компанией при университете, но не было понимания, куда я иду и что делаю.

На втором курсе съездил в США по Work & Travel и решил, что буду пробовать туда вернуться. Ближе к окончанию университета я узнал про возможность подать документы в аспирантуру в Америку. В то время не было привычного нам интернета, где можно найти любую информацию. Мне повезло, потому что в харьковском университете была программа поддержки молодых талантов OSVITA.

В рамках этой программы предоставлялись подготовительные материалы, сотрудники OSVITA консультировали, как выбирать университет, объясняли, что нужно для поступления. Кроме того, мне выделили грант, которого хватило на оплату экзаменов, взносов в университеты, куда я подавался, и даже на перелет в Америку. Чтобы получить его, было важно хорошо учиться (у меня были почти все пятерки в зачетке).

Грант давали на определенные вещи: на TOEFL, GRE, подачу документов. Не важно, когда ты хочешь поступать. Если бы я сдавал экзамены и отправлял документы в тот же год, у меня был бы только месяц-два на все. Я решил сделать год перерыва, чтобы не торопиться, а также поработать. Я подался в две софтверные компании и в обе прошел. В одной из них работал на фрилансе, а во второй — в штате. У второй был офис в Киеве — так я переехал в столицу. Полгода работал на два фронта, параллельно готовясь к поступлению.

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

На работе занимался разработкой тогда модного направления Rich Internet Application на базе Adobe Flash. У меня была хорошая зарплата — на каждой работе по $2000, что для вчерашнего выпускника очень прилично. Но быстро я понял, что разработка софта — это не такой интересный вызов, который я бы хотел перед собой ставить.

Учеба в Америке

В конце 2008 года я подал документы в 5 американских университетов и в 2009 году поступил в два, причем довольно низких по рейтингу. Я очень хотел в Стэнфорд, UC Berkeley или, на худой конец, UC San Diego, но выбирал в итоге между UC Merced и Arizona State University. Поступил в первый на позицию PhD in Computer Science. UC Merced — это маленький университет, который находится посреди Калифорнии в степи среди фермеров, а температура летом в том регионе достигает +45°C.

Первое время в Америке находился в состоянии шока: всю жизнь я жил в больших городах, начал зарабатывать $4000 в месяц, а теперь переехал в пустынный фермерский городок и получал $1500 стипендии после налогов. Аренда отнимала немного денег, поскольку я жил в большом доме с соседями и платил $300 в месяц, но стипендии не хватало на достойную жизнь в Америке.

Дом, где я прожил 4 года, пока учился в аспирантуре, Merced, California, 2011 год

По умолчанию студент оплачивает обучение самостоятельно (зависит от университета, в моем было около $27 тысяч в год) и стипендии нет. Но в реальности есть два типа грантов: один выплачивается студенту на помощь в преподавании (так называемый Teaching Assistantship: его оплачивает университет; дадут его или нет — зависит от доступных мест в университете). Последние два года в аспирантуре я преподавал по семестру алгоритмы и структуры данных. Эта работа покрывала мое обучение и стипендию. А второй, если у твоего профессора есть свой собственный грант, он может использовать его, чтобы оплачивать обучение своих студентов (так называемый Research Assistantship).

Профессора часто подают заявки на разные гранты как государственные, так и частные (это одна из их основных задач), чтобы оплачивать работу студентов. У моего профессора был грант на $500 000, и каждый семестр я чередовал грант на преподавание и его грант.

Мне повезло с профессором, в свое время он был постдоком (постдокторантура в странах Западной Европы, Америки, в Австралии — это научное исследование, выполняемое учёным, недавно получившим степень PhD, — ред.) у Джеффри Хинтона. Он живая легенда машинного обучения, и многое из того, что мы сейчас знаем в глубинном обучении, придумал в том числе он. Когда я приехал, то ничего не знал про искусственный интеллект, более того, в 2009 году никто в целом вне университетов и книжек ничего не знал о нем.

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

Со своим научным руководителем Miguel Carreira-Perpiñán и коллегами на церемонии вручения PhD, 2014 годСо своим научным руководителем Miguel Carreira-Perpiñán и коллегами на церемонии вручения PhD, 2014 год

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

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

Лекций на PhD практически нет: первые два года идут курсы по выбору (по 2-3 в семестр), а где-то с третьего курса аспирантуры основной упор делается на исследования и самообразование. Сами лекции давали мало, и я пользовался хорошей базой знаний по теории вероятности и линейной алгебры, которая была у меня еще со времен бакалавриата в Харькове.

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

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

Расскажу более детально о моем проекте. В любом алгоритме машинного обучения есть процесс оптимизации — процесс нахождения минимальных значений заданной функции. Эта функция задана на тренировочных данных, из которых нужно выудить какую-то информацию. Этот способ получения информации называется «тренировка», а любой процесс тренировки означает фактически минимизацию какой-то функции. Существует целый набор методов по оптимизации, и каждый алгоритм машинного обучения опирается на них. Эти методы могут быть стандартизированы, тогда мы используем готовые решения, но часто приходится применять кастомные решения под конкретную задачу.

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

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

Научные публикации

В процессе получения PhD большую роль играют публикации на научных конференциях.

Все конференции международные, и у каждой есть комиссия, которая отбирает работы. В год проходит около трех крупных мероприятий (NeurIPS, ICML, ICLR) и много маленьких (IJCAI, AIStats) или тематических (KDD, CVRP, ACL). У конференций самого высокого уровня, соответственно, высокие требования, отбирают только 20-25% от очень хороших статей. Часто бывает так, что подаешь работу, ее отбраковывают, ты дорабатываешь и подаешь еще раз. И этот процесс может длиться год-полтора, пока статью опубликуют.

Мне повезло опубликовать 6 статей и посетить самые большие конференции (ICML, NeurIPS, AISTATS). При этом почти все работы вышли в последние годы аспирантуры, а до этого каждая статья прошла несколько итераций доработок.

Сейчас в Google я провожу много собеседований на research-позиции, и главный критерий для меня — это предыдущие научные исследования. Почти все люди, которых я собеседую, имеют PhD, а значит, и публикации. Не так важно, где ты учился и как назывался университет, важно, где публиковался и сколько раз цитировали твои работы. Это связано с требованием компании — иметь опыт исследований. Бывает, что человек смог получить этот опыт без PhD, но это тяжелее.

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

Я продолжаю работать над научными статьями и ездить на конференции. Недавно должны были пройти мероприятия в Австрии (ICML) и Эфиопии (ICLR), но их перевели в онлайн из-за коронавируса. Еще сообщили, что и NeurIPS, которая должна была состояться в Ванкувере в декабре, тоже будет полностью онлайн. 40% посетителей обычно из Америки, 30% — из Европы, 20% — из Азии. В России есть 3-4 организации, которые посылают своих сотрудников на конференции, например, это делает «Яндекс».

Я стараюсь следить за участниками из Украины — их мало, в основном это экспаты, которые живут в Европе, Израиле или США. Хотя иногда попадаются работы от исследователей из Украины, но, к сожалению, это большая редкость.

Со своим постером к статье, которую презентовал на конференции NeurIPS в 2019 году в Ванкувере

Я продолжаю писать статьи по двум причинам:

  1. Когда меняешь работу, бывает, что проект под NDA и тебе нельзя ничего рассказывать, в таком случае остаются только научные публикации. Если я решу менять работу, важно иметь более или менее недавно опубликованные статьи. Они показывают твой опыт в машинном обучении, который ценится на позиции Research Scientist в больших компаниях. Если говорить о стартапах, то там все по-другому: нужно, чтобы ты быстро и хорошо программировал, поэтому речи о PhD нет.
  2. Демократизация AI. Многие исследовательские центры при больших компаниях были созданы бывшими профессорами университетов. В них культивируется принцип открытости и обмена новыми знаниями. Мне тоже хочется, чтобы то, что я придумал, было открыто для всего мира, на пользу всем. И это мотивация практически каждого человека, который пишет статьи. В Google сильная культура open source и публикаций большинства разработок.

Если хотите быть в курсе новостей машинного обучения, следите за научными публикациями. Их тяжело читать, так как авторы стараются втиснуть большой объем знаний в ограниченный объем статьи и дают ссылки на другие работы. Нужно переключаться на другие ресурсы, чтобы углубиться в тему и все понять. Я могу потратить на изучение одной статьи 2-3 дня. Сейчас это стало немного легче, поскольку на новые популярные статьи сразу же выходят видеообзоры и блоги, где все описывается более простыми словами.

Конкретного общего ресурса, на котором можно следить за статьями, нет, обычно отдельные люди пишут о том, что им интересно на Medium или персональных страничках на Github. Чтобы найти подобный контент, нужно вбить в поиске тему или концепт, там будет много материалов.

Первая работа в Америке

Я закончил аспирантуру в 2014 году, и меня готовы были брать на постдок в Стэнфорд, что было моей мечтой еще со времен Украины. В Америке есть стандартная практика: когда ты получаешь PhD, прежде чем стать профессором, нужно пройти программу постдок, которая длится от одного до трех лет. В это время ты работаешь над разными проектами, плюс немного повышается зарплата — около $50-70 тысяч в год (без учета налогов). Стэнфорд — дорогой город, и даже этих денег было мало. Также была проблема с визой: постдок не гарантирует грин-карты, а во многом даже осложняет ее получение.

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

До 2012 года люди с PhD по машинному обучению не имели широких перспектив. Можно было оставаться в университете и становиться профессором либо пойти работать обычным программистом. В 2012 году в машинном обучении произошла революция, и люди начали понимать, что эта технология изменит мир. К 2014 году, когда я начал искать работу, уже было много компаний, что серьезно занимались машинным обучением. Людей с PhD по ML ценили на вес золота, в Google даже были целые программы, по которым искали сотрудников с навыками машинного обучения.

С первого раза я не прошел в Google, думаю, из-за того, что не имел опыта работы. Зато попал в Yahoo Labs — research-подразделение Yahoo. PhD был одним из требований. В Yahoo Labs все занимались наукой, публиковались, работая на престиж компании. Если сотрудник опубликует статью на значимой конференции и там будет написано, что работает он в Yahoo Labs, это повысит репутацию подразделения и сюда придет работать больше людей. Приносить прибыль компании было тоже важно, но и ценные публикации, даже напрямую не влияющие на улучшение сервисов, имели существенный вес для бренда работодателя.

Знания, полученные в аспирантуре, напрямую использовались в работе. Я занимался одним из первых проектов по применению глубинного обучения для Yahoo-поиска. Это был интересный опыт с хорошей командой, но финансовые дела компании были не самыми лучшими, и она начала потихоньку разваливаться. Проекты начинались и сразу же отменялись. Плюс у меня до сих пор не было грин-карты, а Yahoo Labs, хоть и обещала подать меня на нее, особо не торопилась. А когда в конце концов решили сделать это, оказалось, что мне нужно будет работать в стремительно меняющейся компании еще год, пока грин-карта обрабатывается. Я не хотел этого и решил искать себе новый вызов.




Google Research

Уволившись, я очень волновался, так как со студенческой визой не мог находиться в Америке без работы или учебы. Если бы я не нашел работу за короткий срок, меня бы депортировали. Я подавался везде, где только можно, прошел 9 разных собеседований практически за две недели. В результате выбрал Google, позицию Research Scientist. Меня сразу же подали на грин-карту. Как я упоминал, до Yahoo я тоже пробовался в Google, но безуспешно, хотя мне кажется, что интервью в первый раз я прошел лучше. Собеседование — это во многом лотерея, если вы получаете отказ, это ничего не значит, просто не повезло.

Меня поразило, что на всех собеседованиях меня спрашивали одно и то же — алгоритмы. В Украине, насколько я помню, очень важно, какие фреймворки ты использовал, какие языки знаешь, а в Америке до этого никому нет дела. Все спрашивают о кодировании алгоритмов, важно знать, какая сложность сортировки, что такое хешмап, дерево и подобное. Это все то, что мы изучаем на 2-3 курсе в университете и думаем, что эти знания не пригодятся. Есть много хороших книг по этой теме, но моя любимая — «Алгоритмы: построение и анализ» Томаса Кормена и его соавторов.

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

Странные вопросы на логику, которые гуляют по интернету в стиле «почему люки круглые» уже давно считаются дурным тоном. Бывают behavior-вопросы, например, «когда ты в последний раз не смог достичь своих целей» или «как ты подвел клиента», но я думаю, что правильного ответа на них нет, просто нужно отвечать честно.

Закат над главным кампусом Google, Googleplex, Mountain View, California, 2019

В Google я прошел на middle-позицию в research-категории. С PhD ты сразу перепрыгиваешь начальный уровень. В моей research-группе в основном работают Software Engineers и Research Scientists. Инженеры применяют готовые алгоритмы, а Research Scientists создают новые и публикуют статьи, их продукт — не столько код, сколько новые решения. Без магистерской или докторской работы чаще всего туда не попасть. Если у вас только бакалавр, то можно начать с Software Engineer в машинном обучении и позже попасть в research-отдел.

PhD — это толчок, я знаю пару людей с украинским дипломом, которые не заканчивали аспирантуру, но попали на research-позиции благодаря целеустремленности. Они добыли необходимые знания самостоятельно, но это скорее исключения.

В целом технологический процесс в машинном обучении выглядит так: Research Scientist создает новое решение, затем Soft-инженеры кодируют его в хорошей форме, а дальше с готовым алгоритмом идут к Product-команде. И уже члены этой команды кодируют алгоритм так, чтобы он работал на их продукте. Сложность кода растет с жизненным циклом программы, сам Research Scientist должен понимать структуру кода, но часто он не обязан разбираться во всех тонкостях применения алгоритма в конкретном приложении.

Современные проекты в машинном обучении

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

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

Алгоритмы делают хорошие вещи, но не 100% времени. Они часто работают 99,9% времени, но очень важно сделать систему, которая будет работать всегда. Если взять врача-хирурга, у которого хорошая репутация и который сделает все хорошо, и робота, который все сделает отлично, но есть маленький шанс, что вы умрете — выбор падет на врача.

Создать алгоритмы, которые можно использовать везде и всегда, — это одна из основных научных проблем сейчас.

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

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

Другое направление — можно ли с помощью машинного обучения построить лучшие алгоритмы определения погоды. Не просто говорить «завтра с 14:00 до 17:00 будет дождь», а определять, что дождь пойдет ровно в 10:03, или выяснить, будет ли торнадо или землетрясение.

Есть интересные проекты на основе Federated Learning, где алгоритмы тренируются напрямую на вашем смартфоне ночью, пока он заряжается. Таким образом можно будет обучить версию алгоритма только для вашего телефона, не передавая никуда личные данные. Ко всем этим проектам я частично подключен, консультирую специалистов.

Напрямую занимался результатами ранжирования в Google-поиске, работал над тем, чтобы улучшить его качество. Сейчас работаю с Google Assistant, это то, что называется «окей, гугл».

Недавно начал работу над новым проектом — Neural architecture search. Все нейронные сети заданы параметрами, и нужно их закодировать, зная, сколько будет слоев и сколько в каждом слое будет нейронов. Это чаще всего задает программист вручную в качестве так называемого гиперпараметра. Часто эти параметры задавали почти что вслепую, и не было математического алгоритма, который бы автоматически определял конфигурацию сетки.

За последние 5 лет появились алгоритмы на основе Reinforcement Learning, которые это определяют, но они несовершенны и затратны. В своих наработках я постараюсь построить алгоритм, который работает быстрее и экономичнее, чем аналоги. Если у меня это получится, алгоритм можно будет применять для решения многих прикладных задач.

Советы начинающим и перспективы Украины

За последние 8 лет машинное обучение изменилось, и оно быстро развивается, новые статьи и алгоритмы появляются каждый день. Если вы еще учитесь машинному обучению в университете, то, скорее всего, учебные ресурсы уже устарели. Поэтому английский язык очень важен, читайте англоязычные ресурсы, туториалы, блоги и пытайтесь разобраться. Есть всякие курсы на Coursera, на YouTube доступны лекции Стэнфорда. Если начинать с нуля, то такие курсы полезны. Главное, чтобы был интерес. Будет тяжело, но это благодарная работа, которая в конце концов вам поможет. Сейчас много интересных проектов и компаниям нужны умные люди.

Не игнорируйте образование и PhD. Аспирантура сильно недооценена в Украине. Да, тяжело попасть в большие известные университеты, тяжело учиться и маленькая зарплата, но потом можно выйти вверх. Если у вас есть возможность, время, желание развиваться в машинном обучении — поезжайте в Америку, Канаду, Австралию, Европу. Образование — один из возможных способов построить карьеру, особенно если вам нравится заниматься математикой.

День вышиванки в Google. Я единственный, кто забыл вышиванку в тот день :) 2016 год

В Америке нет специализаций: я Java-разработчик, а я PHP-разработчик. Есть general-инженеры, которые работаю, например, в машинном обучении. Языки не имеют значения, компании требуют общие знания и навыки.

В Украине есть маленькие изумруды — Grammarly, Petcube, которые разработали свои вещи и смогли выйти на мировой рынок. Но чаще наша страна является просто аутсорсом американских компаний. У нас есть таланты и большой потенциал в математике, да и сама математика, необходимая для машинного обучения, не такая тяжелая. Если на нашем рынке появится какой-то игрок, который захочет создать компанию на основе машинного обучения, он найдет людей.

Сейчас в Индии, которая похожа на Украину, многие компании начинают открывать офисы. А Google делает упор на Африку, потому что там молодое население, которое хочет работать, есть много стипендий и программ для Африки. Я надеюсь, что и у Украины получится скоро реализовать свой потенциал.

Похожие статьи:
Представляем новую статью серии «Карьера в IT». В этой части цикла рассмотрим позицию Program Manager, руководителя группы...
[В серии «Обзор IT-рынка труда» мы рассказываем об IT-индустрии в разных городах Украины] В Черкассах есть офисы...
15 серпня у Microsoft надали розробникам загальний доступ до прев’ю-версії своїх хмарних робочих станцій Microsoft Dev Box,...
А также: Jack and Jill, обновление Support Library, бесплатный Xamarin, Google Fit, план развития Kotlin для Android, работа с камерой, Google Play...
У Вашей профессии нет перспектив, и Вы хотите изменить свою жизнь, перейдя в IT-сферу? Тогда курс...
Яндекс.Метрика