Как устроены языковые модели и как они развиваются

Разработчики «Балабобы» — о прогрессе в сфере обработки естественного языка

https://avatars.mds.yandex.net/get-media-platform/3578204/da5ba8b9-2264-4c61-ba8d-a0c5485a78b2/1240x1240

В июне Яндекс запустил экспериментальный языковой сервис «Балабоба», который при помощи нейросетей дописывает пользовательский текст в разных стилях: от пацанских цитат до рекламных слоганов. В его основе лежит языковая модель семейства YaLM, которую обучали на страницах «Википедии», новостных статьях, книгах, записях в соцсетях и других текстах. Разработчик группы диалоговых систем Антон Наумов и руководитель проекта руководитель группы диалогового поиска и проекта по разработке YaLM Алексей Петров рассказали Академии Яндекса о том, как устроены языковые модели, для чего их используют и какие у них перспективы.

Зачем нужны языковые модели

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

В 2010 году автоматический перевод фразы “Language is the most important aspect in the life of every human being” звучал бы так: «Язык является наиболее важным аспектом в жизни каждого человека». Сейчас нейросети переведут предложение как «Язык — это самый важный аспект в жизни каждого человека». Почему второй вариант лучше первого? Потому что он звучит естественно: люди действительно так говорят. Поэтому основная задача языковой модели — сгенерировать такой текст, который будет как можно больше похож на естественную речь. 

С каждым годом автоматический перевод текстов становится все лучше: появляется больше данных для обучения моделей, улучшаются методы машинного обучения и  увеличиваются вычислительные мощности, доступные разработчикам. Но пока что языковые модели все равно не могут заменить человека в ситуациях, когда нужно учитывать тонкости, связанные с контекстом. Например, при автоматическом переводе имени основателя AngelList Наваля Равиканта (Naval Ravikant) часто возникают ошибки: потому что в англо-русском словаре “naval” — это военно-морской, флотский. И поэтому можно встретить перевод «военно-морской Равикант».  

Однако обработка естественного языка (NLP) уже может помочь человеку в разных областях. Например, алгоритмы могут рассказать врачам о прогрессирующей депрессии. Такую модель разработали в Университете Пенсильвании: она анализирует посты пользователей в Facebook, а точность её работы сопоставима с результатами медицинских обследований — 70%.  А в проекте профессора Университета ИТМО SoMin.AI языковая модель GPT-3 используется для решения маркетинговых задач. Люди придумывают рекламные посты или слоганы, а дальше нейросеть генерирует варианты, адаптированные для разных категорий пользователей: например, подростков и взрослых. 

Как работают языковые модели

В основе работы с языковыми моделями лежит теория вероятности: алгоритмы высчитывают шанс того, что в тексте появится то или иное слово. Для этого нужно учитывать контекст, стиль речи и значение слов, однако машина может работать только с цифрами. Поэтому текст превращают в его численное представление — этот процесс называется кодировкой, а полученный результат — эмбеддингом или числовым вектором. Условно, фразу «Мама мыла раму» можно представить как вектор [81, 23, 84]: у каждого слова в словаре есть свой порядковый номер, и из них как раз и складываются эмбеддинги.

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

Когда языковая модель получает на входе только одно слово, у неё есть множество вариантов продолжить фразу. Поэтому чем больше контекста, тем точнее будет полученный результат. Модель смотрит на все слова, которые ввёл пользователь, а затем на основании миллиардов просмотренных текстов высчитывает вероятность того, какое слово пойдет следующим. Допустим, после слова «мама» вряд ли пойдет «карбюратор», скорее всего, дальше будет какой-то глагол: «мыла», «делала», «смотрела». Если к «мама» добавить «мыла», то дальше модель уже будет искать слово, которое часто встречается с эти глаголом: например, «раму». И в конце концов получится связное предложение «Мама мыла раму». 

Разрабатывать языковые модели стало проще, когда в в 2017 году исследователи из  Google Brain представили такую архитектуру, как трансформер. C 2019 года она используется в большинстве методов для обработки естественного языка — потому что позволяет использовать меньшие вычислительные мощности для решения сложных задач.

Одна из наиболее совершенных языковых моделей — это GPT-3, разработанная компанией OpenAI. У GPT-3 175 миллиардов параметров, и для её обучения использовали огромное количество текстов: 45 терабайт (в одном терабайте триллион байтов). Более того, каждый желающий может дообучить её на своих примерах — то есть модель постоянно развивается. Правда для этого нужны собственные огромные вычислительные мощности или оплата аренды GPT-3 на серверах других компаний. Сейчас модель используется более чем в 300трёхстах приложениях: от игр до служб поддержки. И языковая модель YaLM, на которой работает «Балабоба», — это как раз адаптированная для русского языка GPT-3.  

Как разработчики обучают языковые модели

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

Нейросеть должна увидеть максимально разнообразный язык, потому что только так она сможет генерировать текст в разной стилистике. Если обучать её только на «Википедии», то у неё не получится написать интересный пост для Instagram. 

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

Слоган ШАДа в стиле гороскопов
Описание ШМЯ в стиле пацанских цитат

Сейчас для большинства существующих нейросетей, которые еще ничему не научились, требуется собирать датасет под каждую новую задачу и обучать их. А «Балабобе» достаточно показать несколько примеров и она выдаст нужный результат. Например, если мы хотим сгенерировать текст а-ля «Википедия», то достаточно загрузить в обучение несколько статей. Этот подход называется few-shot learning. 

Также есть one-shot — обучение на одном примере. Например, модели показывается перевод фразы с русского языка на английский. Затем ей дают только предложение на русском и ждут, что она выдаст фразу на английском. Последний вариант, который подходит только совершенным моделям, — это zero-shot learning. При нём модели дается только текстовое описание того, что хотят увидеть разработчики. Например: «Перевести с английского языка на русский фразу: “The phrases' length and complexity increase as the game progresses”». 

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

Будущее языковых моделей

В будущем такие модели смогут решать больше задач, связанных с текстом. Например, даже GPT-3 пока не умеет отслеживать источники и предоставлять пользователю доказательства своих ответов. Но в перспективе её можно научить сохранять и оценивать сайты, с которых она берет информацию. Возможно, когда-нибудь мы научимся решать и временнЫе задачи. Например, сейчас можно проследить, как меняются числовые данные (например, стоимость акций на бирже) и сделать прогноз на будущее с помощью тех же нейросетей. В новостях такие последовательности и изменения пока отслеживать трудно. 

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

гайд