«Потолок карьеры с PhD намного выше, чем без». Денис Ярец изучает AI в научной лаборатории Facebook. Говорим про ML, RL, мотивацию и перспективы

5 марта 2019, 09:20

Инженер Денис Ярец живёт в Нью-Йорке, работает в научной лаборатории FAIR в Facebook и занимается исследованиями машинного обучения с подкреплением в Нью-Йоркском университете. За восемь лет он успел поработать во многих топовых ИТ-компаниях: Яндекс, Microsoft, Quora, Facebook. Белорус участвовал в создании алгоритма машинного перевода, который по производительности некоторое время был лучшим методом в мире.

В эти выходные он приезжал в Минск и рассказал об алгоритме, который улучшает тренировку глубоких моделей, на Bulbacon. dev.by поговорил с Research Engineer Facebook о его карьере.

​Денис Ярец


Родился в 1987 году в Гомеле.

  • 2005-2011 — учился на ФПМИ БГУ, участвовал в олимпиадах по программированию.
  • 2011 — Яндекс, куратор  «Школы анализа данных» (ШАД) в Минске. «Всё устраивало, но случайно попал на выездной хайринг-ивент Microsoft в Москве, ушёл с оффером и решил посмотреть Америку».
  • 2011-2013 — Microsoft, офис в Сиэтле. Работал с картами и поисковиком Bing. Разочаровался: стала бросаться в глаза «не очень высокая компетентность специалистов», бюрократия и медленное продвижение по карьерной лестнице, отсутствие обедов для сотрудников.
  • 2013-2016 — Quora, офис в Маунтин-Вью. Возглавлял подразделение машинного обучения, делал систему ранжирования новостной ленты и дайджест имэйлов. Увлёкся более научным подходом к машинному обучению.
  • С 2016 — лаборатория FAIR.
  • С 2018 — учёба в Нью-Йоркском университете.
Расскажи про научную лабораторию FAIR. Можно ли туда попасть «с улицы»?

В основном FAIR нанимает на позиции Research Scientist, что подразумевает под собой наличие PhD и ряда научных статей на топовый конференциях по машинному обучению (например, NeurIPS, ICML, ICLR). На эту позицию достаточно сложно попасть, в принципе это соизмеримо с получением должности профессора в топовом американском университете. Иногда FAIR нанимает инженеров, у которых есть опыт работы c ML, интервью тоже сложнее, чем на обычного инженера, вот так я туда и попал. В 2016 FAIR открыла 3-4 инженерных позиции, и у меня получилось пройти собеседование.

Что из себя представляет команда лаборатории?

Она распределённая. Почти в каждом офисе Facebook есть наши ребята: в Париже, Сиэтле, Нью-Йорке.

Кстати, в Нью-Йорке (где работаю и я) открыли лабораторию после того, как наняли Яна Лекуна, одного из отцов-основателей Deep Learning из Нью-Йоркского университета. Когда его захайрили, он отказался переезжать, и компания открыла офис прямо возле его университета. После этого открывать исследовательские отделы рядом с вузами стало традицией.

Сейчас в нашей лаборатории примерно 150 человек в шести офисах. Кто-то компьютерным зрением занимается, кто-то — речью, NLP, кто-то — медициной, распознаванием МРТ-снимков. В принципе свободы достаточно, каждый учёный выбирает то, что ему по душе. Чем-то напоминает университет.

Приведи примеры возможностей лаборатории, которые недоступны учёным из «обычных» университетов.

Главное различие — это объём ресурсов: размер кластера, наличие инженеров, которые могут помочь работать над более объёмными проектами, и другие материальные плюсы.

Зарплаты инженеров в лаборатории эквиваленты зарплатам инженеров соцсети?

Это NDA.

Чем ты занимаешься в лаборатории?

Сначала мы работали над алгоритмом перевода из одного языка в другой. Он установил рекорд по точности перевода. Позже его внедрили в Facebook. Больше 2 млрд людей могут пользоваться им при помощи кнопки «Показать перевод», под ней — огромная нейронная сеть. Мы открыли код алгоритма — всё, что делает наша лаборатория, мы стараемся опенсорсить. Через пару месяцев Google выпустила такой же алгоритм, но уже немного лучше, для неё это вопрос престижа на рынке переводчиков.

После этого проекта я работал над диалогами.

В 2016 году чат-боты активно продвигались. Писали, что «это большая революция, чем переход от веба к мобильным приложениям». Через пару лет наступило разочарование. Почему?

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

А что нового у чат-ботов? Бот-психолог, которого создают в лондонском офисе FAIR, уже консультирует?  

К сожалению, я не обладаю свежей информацией на эту тему.

Тренд — в узкой специализации ботов. И Google, и Facebook в основном фокусируются на том, чтобы бот выполнял одну конкретную задачу: что-то заказывал, отвечал на письма.

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

Есть несколько способов, как это исправить. Простой — собрать всеобъемлющий датасет, который покроет все сценарии. Но это дорого и долго. Более продвинутый способ — использовать обучение с подкреплением. Но оно — на стадии исследования.

Машинное обучение с подкреплением — это как раз то, чем я занимаюсь сейчас.

Объясни, что это и для чего.

RL — это более общая парадигма обучения, в чём-то похожая на то, как обучаются люди. В отличии от supervised learning, где каждый пример/действие подразумевает правильный ответ, в RL такой роскоши нету. Вместо этого агент получает награду за последовательность действий, которая привела к благополучному исходу. Например, когда человек обучает собаку делать какое-нибудь трюк, собака пытается делать разные вещи до тех пор, пока не получит какую-то награду (еду). Постепенно собака начинает понимать, что  определённые последовательности действий ведут к награде (принести брошенный мячик), поэтому она начинает предпочитать эту последовательность больше, чем другие.

У группы учёных, которые занимаются RL в FAIR, есть  фундаментальная цель?

Сделать RL практически применимым, например, для обучения роботов. У нас есть команда учёных, которая как раз конкретно занимается этим. Есть люди, которые фокусируются на более теоретических улучшениях RL алгоритмов. Некоторые люди работают над созданием агентов для StarCraft. В общем, много всего.

Во что «ввязывается» специалист, который решает заняться глубинным обучением с подкреплением? Вот тут, например, описано, что оно работает не так, как многие думают. Перечисли главные челенджи.

Главная проблема на данный момент — это sample efficiency (количество примеров, которые необходимо показать модели для обучения). Это главная проблема и причина того, почему сейчас RL работает только для синтетических энвайронментов, таких как игры  (Atari, GO, StarCraft). Потому что там можно симулировать миллионы разных примеров. В то время как с роботами, например, это будет очень дорого и долго.

Где RL уже применяется?

Самый явный пример — нейросеть AlphaStar, которая обыграла профессиональных игроков в StarCraft, до этого AlphaGo обыграла нескольких чемпионов мира по го.

Мы сделали свою игру-стратегию, похожую на StarCraft, но попроще. Натренировали бота, который выполняет команды, когда ты вводишь их с клавиатуры. С помощью ввода текста можно контролировать всю игру.

Диаграмма параметризации иерархической политики: инструктор (instructor) генерирует языковые команды, которые описывают сложные стратегические действия; в то время как исполнитель (executor) пытается реализовать данные команды, используя низкоуровневый контроль (например, клик мыши). Данная параметризация помогает абстрагировать высокоуровневое мышление и техническое управление в стратегических играх, что способствует более эффективному обучению моделей.

Диаграмма параметризации иерархической политики: инструктор (instructor) генерирует языковые команды, которые описывают сложные стратегические действия; в то время как исполнитель (executor) пытается реализовать данные команды, используя низкоуровневый контроль (например, клик мыши). Данная параметризация помогает абстрагировать высокоуровневое мышление и техническое управление в стратегических играх, что способствует более эффективному обучению моделей.

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

Как вашу модель можно применить в «реальном мире»?

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

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

Можно ли считать самым амбициозным проектом в AI создание искусственного интеллекта, который «думает, как человек», или это всё же фантазия из области масскульта? 

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

В 2017 году ты говорил, что одна из основных проблем — в том, что алгоритмы не умеют переносить навыки из одной предметной области на другую. Например, если обучить модель распознавать картинки, она не сможет генерировать текст. Что-то изменилось за два года?

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

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

Для того чтобы это действительно работало, нужно обучаться сразу на огромном количестве задач (десятки миллионов), что на данный момент не достижимо с точки зрения вычислительных ресурсов. Банально не хватает мощностей (количества машин, данных). Их нужно увеличить в несколько тысяч раз.

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

Сколько эволюции понадобилось вычислений за миллиарды лет, чтобы создать интеллект? По некоторым подсчётам, это около 10^30 FLOOPS — результаты взяты из книги Superintelligence и личного общения с учёными, которые занимались этими проблемами.

Cамые большие суперкомпьютеры в мире обладают вычислительной мощностью порядка 15*10^15 FLOOPS. Некоторые учёные верят, что при увеличении мощностей и датасетов хотя бы в 100 тысяч раз даже с имеющимися алгоритмами можно создать модель, похожую на человеческий разум. Это дорого, даже для Google и Facebook в какой-то момент становится не выгодно. Чтобы натренировать модель, которая занимается машинным переводом, нужны миллионы долларов.

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

Существуют ли способы ускорить развитие AI таким образом, чтобы на это ушло значительно меньше времени и ресурсов, чем понадобилось эволюции?

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

Какие хайповые технологии, на твой взгляд, никуда не ведут?

Сложно сказать, предсказывать будущее я не умеею.

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

Отсутствие PhD сильно ограничивает карьерный рост в таких лабораториях. Это одно из необходимых условий для получения должности Research Scientist.

Что даёт тебе университет из того, чего не смогла дать лаборатория?

Университет позволяет более детально углубиться в теоретические основы ML, даёт больше свободы для попробовать что-то новое в другой области.

Как совмещаешь учёбу с лабораторией?

Пришлось перейти на частичную занятость в Facebook. Но я по прежнему иногда появляюсь в офисе, так как сотрудничаю с некоторыми учёными из FAIR.

Это потеря в деньгах?

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

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

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

Арсений Кравченко в своей колонке упоминал мнение своего знакомого о том, что «минские топовые ребята в ML не хуже калифорнийских, но „середнячки“ пока сильно отстают от своих коллег за океаном». А что ты думаешь об уровне подготовки минских Data Scientists?

К сожалению, исследованиями в области машинного обучения занимается не очень много ребят из Беларуси, но есть сильные учёные, например — Дима Богданов, сейчас в Монреале Phd получает. Дима тоже участвовал с нами в олимпиадах по программированию, когда учился в ФПМИ БГУ. А потом уехал «мастера» получать в Германию и там придумал один из очень важных и широко используемых алгоритмов в глубинном обучении. Изначально этот алгоритм был разработан для машинного перевода, но потом нашёл применение во многих областях ML. Идея простая, но гениальная. Его статью можно найти тут.  Интересный факт: один из соавторов статьи Кюнхюн Чо, сейчас профессор в Нью-Йоркском университете, также выступил на Bulbacon по моему приглашению.

Тебе было достаточно знаний, полученных в БГУ, для работы с Data Scientist’ами Facebook?

В Беларуси довольно странно используют термин Data Scientist. В Америке Data Scientist’ами называют тех, кто делает Decision Intelligence. Это мало связано с машинным обучением и искусственным интеллектом. А тех, кого ты имеешь в виду, называют Research Scientist.

Если сравнить уровень программ по математике в Беларуси и Америке, могу сказать, что в ФПМИ БГУ он достаточно неплохой. Единственный неприятный момент — у нас математика больше абстрактная. В Америке же первым делом всегда показывают, для чего это нужно, т. е. вначале выделяют проблему, а потом к ней приводят математику, а не наоборот, как у нас.

В целом, я бы сказал, в ФПМИ дает хороший курс по фундаментальной математике, хотелось бы также увидеть больше курсов непосредственно связанных с ML. ШАД делает неплохую работу в этом плане, но есть куда стремиться.  

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

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

По теме
Все материалы по теме
В какой минской ИТ-компании тебе было бы более-менее интересно поработать?

Обучение с подкреплением — это передовое направление в ресёрче, на практике почти никто пока его не применяет ни в России, ни в Беларуси. В Америке — всего несколько компаний. Но исследуют это направление многие. С большой долей вероятности это направление ML должно вскоре заработать.

Я слышал, что в Минске сейчас модно работать в стартапах, которые занимаются компьютерным зрением.

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

Какие идеи? Поделись.

Не-а.

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

В моей области это DeepMind (бывший стартап) и OpenAI. Они производят много чего интересного.  

О чём ты рассказал на Bulbacon?

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

​Три ссылки от Дениса Ярца для тех, кто хочет разобраться в rl

подписка на главные новости 
недели != спам
# ит-новости
# анонсы событий
# вакансии
Обсуждение