Журнал / герои

Сотрудник лаборатории Яндекса и МФТИ рассказывает о своих исследованиях

«Чтобы чувствовать себя хорошо, я постоянно должен что-то изучать».

Yandex Research — лаборатория, в которой занимаются исследованиями в области машинного обучения, естественного языка, компьютерного зрения, анализа данных и искусственного интеллекта. Её сотрудники пишут научные статьи, участвуют в семинарах и проводят исследования, которые влияют на развитие сервисов Яндекса и на компьютерные науки в целом. Зимой 2020 года в МФТИ была открыта «Лаборатория Яндекс-МФТИ» — совместная инициатива Физтех-школы прикладной математики и информатики и Yandex Research. Один из исследователей этой лаборатории — Иван Провилков рассказал о сути своих исследований и о том, как он помог улучшить алгоритмы сегментации текста в Яндекс.Переводчике.

Как ты пришёл в лабораторию?

Когда я учился на кафедре анализа данных МФТИ мне предложили пойти на стажировку в Яндекс.Переводчике. Я слышал, что это очень хорошая команда и решил согласиться, чтобы набраться опыта в интересующей меня сфере NLP (обработки естественного языка). Я устроился стажёром в Яндекс.Переводчик и полгода работал там над улучшением алгоритмов сегментации текста. На работе я постоянно изучал научные статьи и применял новые знания в экспериментальном коде — хотел знать, как мои находки повлияют на функционирование Переводчика. У меня даже получилось внедрить в сервис одну интересную фичу.

​Иван Провилков
​Иван Провилков

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

Можешь рассказать подробнее про фичу, которую ты внедрил в Переводчик во время стажировки?

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

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

До того, как я пришёл в команду Яндекс.Переводчика, алгоритм сегментации делал разбиения слов на подслова с помощью детерминированного метода byte pair encoding, который всегда одинаково разбивает одни и те же предложения. Вместе с еще одним исследователем Димой Емельяненко мы придумали модель, делающую множество возможных разбиений с разными вероятностями, что улучшило качество работы машинного перевода. В итоге я добавил эту фичу в Переводчик, а затем мы с Димой и моим научным руководителем довели эту идею до научной статьи, которую подали на конференцию в декабре 2019 года.

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

Учёный должен понимать, как работает классическое машинное обучение и глубинное обучение. Это важно не только для проведения исследований, но и для комфортного общения с коллегами.

Также кандидат должен хорошо знать математику и статистику. Просто зазубривать формулы нет смысла, важно уметь применять знания на практике. В науке ценят умение самостоятельно мыслить.

Какими ещё исследованиями ты занимался?

После улучшения сегментации текста я работал над усовершенствованием механизмов памяти для текстовых архитектур. Сейчас я занимаюсь темой uncertainty estimation — предсказанием неопределенности.

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

Как тебе удаётся совмещать работу в науке и учёбу?

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

Помимо работы в лаборатории и учёбы я преподаю в магистратуре МФТИ. На кафедре у меня есть три обязательных учебных курса, но часть из них я могу закрывать работой или преподаванием. Также в этом семестре я буду вести в ШАДе проект, связанный с NLP.

Кем ты видишь себя в будущем?

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