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

Автор онлайн-учебника по NLP о том, как и зачем его изучать

«Для обработки естественного языка очень полезно объединение исследовательского подхода и практического опыта.»

Natural language processing (NLP) – это область машинного обучения, которая посвящена тому, как компьютер анализирует естественный, то есть человеческий язык. Благодаря наработкам в этой сфере Переводчик переводит выражения с одного языка на другой, а Алиса, услышав и обработав последовательность звуков человеческой речи, понимает, что хочет узнать пользователь.

Исследовательница Елена Войта занимается NLP последние 4 года: она  аспирантка Эдинбургского и Амстердамского университетов, работала в Yandex Research бок о бок с командой Переводчика, придумала и ведёт курс по обработке естественного языка в ШАДе, публикует научные статьи и входит в комитеты международных конференций. В этом учебном году она запустила онлайн-учебник по обработке естественного языка. Елена рассказала Академии Яндекса о своём пути в NLP, о том, как ему учить и учиться, и почему для этого важен исследовательский подход.

Из фундаментальной математики в NLP

Моё первое образование — бакалавриат и магистратура мехмата в Южном федеральном университете в Ростове-на-Дону. Там я училась на прикладной математике, но больше занималась фундаментальной: функциональным анализом и так далее.

Долгое время я работала в Ростове автором книг по подготовке к ЕГЭ по математике. Я начала заниматься этим с 10 класса, и так получилось, что даже мои одноклассники занимались по учебникам, которые я составляла. Ещё  у нас был кружок, где мы готовили детей к олимпиадам и экзаменам, организовывали летние школы. Это была замечательная масштабная деятельность, которую я очень любила. Но поскольку я занималась этим со старших классов, то к концу университета мне это уже немного надоело.

Про Школу анализа данных Яндекса мне рассказали друзья. Тогда я не знала, что такое машинное обучение и для чего его применяют, и очень смутно представляла себе, чем занимаются в Яндексе. А в ШАДе меня больше всего заинтересовали нетривиальные математические задачи, которые нужно было решать на вступительных. Я успешно прошла экзамен и легко прижилась в Школе.

После первого же семестра в ШАДе я стала работать в Яндексе, в самом сердце Поиска. Я провела там 1,5 года до тех пор, пока не выпустилась из Школы. Мне было очень интересно работать в команде Поиска: учёба — это здорово, но только на практике ты видишь, как применять те или иные алгоритмы, какие есть продуктовые ограничения Но математическое прошлое не давало мне покоя, и мне очень хотелось работать именно в Yandex Research, чтобы больше размышлять над фундаментальными задачами и заниматься исследованиями. 

Есть люди, которых по-настоящему вдохновляет создавать то, что принесёт людям пользу. У меня есть несколько таких друзей. Когда я начала работать в Яндексе, они говорили: «Ой, как здорово! Ты же делаешь что-то для миллионов пользователей». Многих это очень мотивирует, но я не из их числа. 

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

Я поступила в аспирантуру Амстердамского университета, стала official visitor в Эдинбургском (затем у меня получилось стать студенткой и формально) и вскоре прошла отбор в Yandex Research. Мне удалось договориться, чтобы я проходила её дистанционно: обычно аспиранты проводят время в университете, общаются с научным руководителем — но в Амстердаме меня так и не увидели. Однако у того, чтобы так совмещать учёбу с работой были и преимущества. И там, и там я занималась NLP (обработкой естественного языка), но в аспирантуре у меня была возможность фантазировать и не задумываться о метриках качества, а в Яндексе я работала бок-о-бок с командой Переводчика и видела практические приложения своих и чужих исследований.

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

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

Преподавание в ШАДе и новый курс по NLP

После выпуска из ШАДа я продолжила участвовать в жизни Школы, общалась со студентами и кураторами. В 2018 году прошлый преподаватель курса по NLP решил перестать его вести: он делал это с самого основания ШАДа и его программа не менялась уже много лет. Это совпало с революцией в NLP: стали распространяться нейросети, перестало быть нужно вручную считать статистики — и буквально за год курс, который был актуальным и хорошим, перестал соответствовать тому, что реально происходит в области.

Поэтому руководитель ШАДа Стас Федотов собрал большую встречу, на которой он хотел обсудить, что можно сделать с курсом и как это должно происходить. Сначала я даже не хотела туда идти, но согласилась, потому что на этом настоял Стас. Я слушала чужие предложения, у меня в голове начала складываться картина полноценного курса, и я стала очень эмоционально и упорно описывать её всем вокруг.

Я была уверена, что не хочу преподавать, что мне этого уже хватило до ШАДа, но на встрече поняла, как это может быть захватывающе и прекрасно — создавать целый курс с нуля. В итоге мы решили, что я буду руководить новым курсом: но я, конечно, занималась им не одна, мне много помогали другие преподаватели ШАДа и мои коллеги из Yandex Research и Переводчика.

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

Наш курс сильно отличается от других тем, как мы подаём информацию, он хорошо объединяет в себе теоретическую и практическую части благодаря тому, что над ним вместе работали исследователи и разработчики. Так, в лекции по классификации текстов мы сразу рассказываем про то, как она используется в Алисе. Д: для того, чтобы ответить на вопрос «Алиса, какая завтра погода?», голосовому помощнику нужно его сначала классифицировать, понять, к какому из сценариев он относится и из какого сервиса брать ответ.

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

Учебный год или семестр в ШАД обычно начинается со встречи, на которой каждый преподаватель должен немного рассказать о своем курсе, чтобы студенты могли выбрать. Я уже три раза повторяла одно и то же и чувствую, что четвертый раз буду говорить то же самое. Я рассказываю: «Ребята, наш курс рожден в большой и светлой любви Yandex Research и Переводчика. И к тому, что мы делаем, и к NLP, и к людям, и к Яндексу, и ко всему прекрасному, что нас окружает». 

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

Cоздание учебника по NLP

Я начала разрабатывать онлайн-учебник NLP Course For You, потому что ещё в университете сталкивалась с такой проблемой: преподаватели редко применяют индивидуальный подход, чаще всего они рассказывают всем одно и то же и иногда отвечают на вопросы. Но обработку естественного языка можно изучать с совершенно разными целями: кому-то нужно просто закрыть курс в университете, кто-то хочет создать свой стартап, кому-то интересно поступить в магистратуру или аспирантуру. Когда задания и подход ко всем студентам одинаковый, когда нет пространства для творчества, тяжело дать каждому то, что ему нужно.

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

Кроме того, я старалась подавать информацию в интерактивном и доступном формате: если ты смотришь лекцию в записи, то через пару дней тебе уже будет тяжело вспомнить, в какой момент преподаватель рассказывал то, что тебе нужно. В NLP Course For You теоретический материал расположен рядом с соответствующими заданиями, в нём есть анимации для того, чтобы учащимся было нагляднее, чтобы они интуитивно понимали, как работают разные алгоритмы. 

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

Структура учебника похожа на курс в ШАДе: сначала идут вводные материалы по эмбеддингам — векторным представлениям слов, которые может считывать модель. Затем нужно изучить классификацию текстов: с её помощью можно, например, узнать, является ли полученное вами письмо спамом. Следом идёт раздел про моделирование языка, потом — про машинный перевод. Последняя (пока что) глава курса — о трансферном обучении, о моделях ELMo и BERT.

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

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

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

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

​Пример упражнения из раздела “have fun”
​Пример упражнения из раздела “have fun”

Как развивается учебник

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

Учебник — не моё основное занятие, но он для меня важен. Я очень радуюсь, когда ко мне обращаются те, кто им пользовался: кто-то пишет на почту, кто-то подходит на конференциях. Большая часть людей узнаёт об учебнике через сарафанное радио, ещё я рассказывала про него в выпуске подкаста Machine Learning Street Talk.

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

Здорово, что так произошло: NLP – стремительно развивающаяся область, и задач в ней хватит на всех. Постоянно появляются новые state-of-the-art модели. Хочется, чтобы большее количество исследователей и практиков могло двигать эту область вперёд, исследовать границы применения технологий.