Инженер Денис Ярец живёт в Нью-Йорке, работает в научной лаборатории FAIR в Facebook и занимается исследованиями машинного обучения с подкреплением в Нью-Йоркском университете. За восемь лет он успел поработать во многих топовых ИТ-компаниях: Яндекс, Microsoft, Quora, Facebook. Белорус участвовал в создании алгоритма машинного перевода, который по производительности некоторое время был лучшим методом в мире.
В эти выходные он приезжал в Минск и рассказал об алгоритме, который улучшает тренировку глубоких моделей, на Bulbacon. dev.by поговорил с Research Engineer Facebook о его карьере.
Расскажи про научную лабораторию 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, но попроще. Натренировали бота, который выполняет команды, когда ты вводишь их с клавиатуры. С помощью ввода текста можно контролировать всю игру.
Собрать данные для обучения алгоритма было достаточно сложно. Я никогда раньше не занимался играми, а тут нужно было на основе прототипа сделать работающую игру и научить бота играть. Мы создали оригинальную архитектуру глубокой модели, которая переводит текстовые инструкции в низкоуровневые команды игры. Игра сложная, а возможности ИИ пока слишком слабы, чтобы справляться с таким количеством операций — действий на игровом поле может быть бесконечно много. К тому же, в нашей игре часть карты была скрыта от пользователей, и модель должна была предвидеть, что может происходить на закрытой территории. Мы научили модель такому интересному навыку, как разведка.
Как вашу модель можно применить в «реальном мире»?
Этот проект далёк от практического применения. Но это один из первых шагов, который даёт понять, что такие языковые инструкции могут быть очень полезны для алгоритмов обучения с подкреплением. 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 в Новом Орлеане. Он помогает обучать глубокие модели, находить нужные наборы параметров, оптимизировать алгоритмы и выдавать лучший результат. Вот тут можно прочитать научную работу, а вот тут мы выложили алгоритм в открытый доступ.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.