Как работают трансформеры в речевых технологиях Яндекса

Рассказываем, что такое и как устроены трансформеры — архитектура глубоких нейронных сетей. Как они развивались и как применяются для задач распознавания и генерации речи в Yandex SpeechKit.

В 2022 году команда Yandex Cloud перевела все модели машинного обучения сервиса Yandex SpeechKit на трансформерную архитектуру. На базе трансформеров была разработана нейросеть‑полиглот. Она позволяет распознавать одновременно в одном потоке более 10 иностранных языков и в любой момент переключаться между ними. При этом есть возможность давать нейросети «подсказки», чтобы улучшить качество распознавания.

Нейросети на трансформерной архитектуре активно работают как внутри Яндекса, так и в сервисах, которые используют клиенты Yandex Cloud. Трансформеры есть в поиске, а в движке Алисы трансформеры делают её голос более живым: расставляют интонации, отличают «замо́к» от «за́мка», управляют уровнем эмоциональности и стилем речи, распознают шёпот и многое другое. С Yandex SpeechKit можно быстро создавать многоязычных голосовых помощников и мультиязычных голосовых роботов для колл‑центров с большим потоком клиентов.

Что такое трансформеры и как они работают

Для решения задач машинного перевода долгое время использовались рекуррентные нейронные сети (Recurrent Neural Networks, RNN), которые умеют обрабатывать потоковые данные. Однако они плохо работали с длинными зависимостями: для получения полноценного и связного итогового текста не достаточно перевода отдельных предложений, нужно учитывать общий контекст. Чтобы исправить проблему был разработан «механизм внимания» (англ. attention), позволяющий концентрироваться на важных частях текста. С его помощью нейросеть оценивает, какая позиция входящей последовательности важна для конкретной позиции последовательности на выходе. Также рекуррентные сети требовали последовательных вычислений, что ограничивало возможность эффективно применять современные графические процессоры для обучения моделей.

В ходе развития идеи рекуррентных сетей учёные из Google Research и Google Brain придумали более технологически совершенное семейство архитектур машинного обучения — трансформеры (англ. transformers). Оно сочетает в себе параллельную обработку данных, возможность дообучения моделей и широкое применение механизма внимания. Нейросеть‑трансформер состоит из двух наборов слоёв — энкодеров и декодеров, которые содержат несколько слоёв.

Энкодер — извлекает информацию из входящей последовательности (например, текста). Декодер — использует извлечённую информацию для генерации элементов последовательности на выходе (например, текста на другом языке).

Энкодер получает на вход набор токенов. Ими может быть отдельное слово, знак пунктуации или частотная последовательность символов, например BPE‑токен. Затем токены конвертируются в последовательность эмбеддингов (цифровой формат), которые дополнительно содержат информацию о положении токена. Эмбеддинги обрабатываются по отдельности. «Механизм внимания» даёт возможность получать скрытые представления для всех контекстов сразу, что позволяет нейросети обрабатывать данные параллельно. На выходе из энкодера модель имеет набор векторов — скрытых представлений входа модели. Затем набор передаётся декодеру, который, используя всё тот же механизм внимания, распаковывает его в целевую последовательность. Например, в то же предложение, что было на входе, но на другом языке.

Как развивались трансформеры

В 2018 году команда OpenAI показала, что если обучить трансформер на большом датасете в режиме языковой модели, а затем дообучать модель на малых данных для конкретных задач, то результат оказывается существенно лучше, чем раньше. Так появились проекты BERT (Bidirectional Encoder Representations from Transformers) и GPT (Generative Pre‑trained Transformer).

BERT

Компания Google разработала языковую модель BERT в 2018 году. Она состоит из простого набора блоков-трансформеров, который был предварительно обучен на большом корпусе текстов общего характера, состоящем из 800 миллионов слов из англоязычных книг (данные взяты из BooksCorpus) и 2,5 миллиарда слов из текстов статей английской Википедии (без разметки). Базовая BERT содержала 110 миллионов параметров, а расширенная — 340 миллионов.

BERT представляет собой нейронную сеть, основу которой составляет композиция кодировщиков трансформера. Трансформер‑кодировщик переводит исходные векторы в скрытые, которые правильно сохраняют в себе информацию о контексте каждого элемента. В каждом слое кодировщика применяется двустороннее внимание, что позволяет модели учитывать контекст с обеих сторон от рассматриваемого токена, а значит — точнее определять значения токенов. В отличие от прежних классических языковых моделей, BERT позволяет учитывать контекст окружающего слово предложения и генерировать различные эмбеддинги.

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

GPT‑2 и GPT‑3

Другой пример популярной языковой модели на базе трансформеров — это GPT (Generative Pre‑trained Transformer) компании OpenAI. Первая версия GPT появилась в 2018 году и уже неплохо справлялась с генерацией, но по‑настоящему улучшить качество текста на выходе смогла только её обновленная версия GPT‑2.

GPT‑2 — это улучшенная версия языковой модели GPT с 1,5 миллиарда параметров, что в 10 раз больше, чем у GPT. В отличие от BERT и GPT‑1, которые для получения качественного результата в той или иной предметной области требовали дообучения на узкоспециальных текстах после обучения на общем корпусе, GPT‑2 выдавала результат высокого качества без дополнительного обучения. Кроме непосредственной генерации текста, GPT‑2 научилась делать краткое изложение и отвечать на вопросы исходя из содержания входного текста. Также нейросеть начала переводить тексты, хотя процесс был более схож с получением ответов на вопросы, чем с полноценной генерацией готовых текстов на другом языке.

Развитие GPT‑2 — GPT‑3 (Generative Pre‑trained Transformer 3) — крупнейшая в мире модель искусственного интеллекта. Она была обучена на 500 миллиардах слов и включает 175 миллиардов параметров. Модель способна качественно генерировать целые статьи и развёрнуто отвечать на вопросы, в том числе и достаточно узкоспециализированные, например из области генетики, а также анализировать строки, делая выводы из неструктурированных данных.

Трансформеры в поиске Яндекса

Как мы уже сказали ранее, Яндекс активно применяет трансформеры для ранжирования поиска, а также для синтеза речи в Алисе. Однако для целей Яндекса было не достаточно просто взять в открытом доступе уже готовую предобученную модель BERT и применить её к своей задаче. Простое дообучение готовой модели приносит лишь небольшое улучшение качества выполнения задач поиска, совершенно непропорциональное затратам ресурсов, которые необходимы для применения такой модели в рантайме. Чтобы раскрыть реальные возможности трансформера для поиска, нужно было обучать свою модель с нуля.

Для этого Яндекс разработал свой стек обучения. Получившуюся технологию назвали YATI — Yet Another Transformer (with Improvements), что хорошо отражает её суть. Это действительно «ещё один трансформер», архитектурно похожий на другие модели. Но эта модель уникальна тем, что благодаря совокупности улучшений способна работать и приносить пользу в Поиске — самом сложном сервисе Яндекса. Подробнее вы можете прочитать в статье на Хабре.

Речевые трансформерные ML‑модели

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

Кроме непосредственного создания модели, для качественного результата очень важны наборы данных, на которых она обучается. Для того чтобы обучить модель распознавания Yandex SpeechKit, использовались предварительно размеченные аудиоданные из трёх основных источников:

  • клиентские данные, которые помогают закрывать специализированные клиентские сценарии;

  • специально надиктованные пользователями Яндекс Толоки тексты;

  • открытые аудиоданные.

В общей сложности для обучения русскоязычной модели в Yandex SpeechKit было использовано более 65 000 часов записей. Благодаря такому разнообразию источников собрали данные разной тематики и акустики, например диктофонные и телефонные записи. Это позволило модели качественно работать с различными сценариями.

Технически трансформерная архитектура в модели для распознавания речи Yandex Speechkit объединяет подходы BERT и GPT. Здесь используются и энкодеры, и декодеры.

  • Энкодер обрабатывает аудиосигнал, который поступает на вход. Для всех популярных языковых моделей характерно не только использование трансформера как архитектуры, но и передача позиции слова внутри эмбеддинга. Positional Encoding — это любой способ кодирования позиции слова внутри эмбеддинга, он нужен для передачи информации о позиции слова, иначе бы эта информация терялась в «механизме внимания».

  • Декодер генерирует текст из скрытых переменных в авторегрессионной форме — такой, когда значения переменных в данный момент зависят от предыдущих переменных. Всё начинается с генерации токена начала предложения. Команда Yandex SpeechKit обучала его под каждый язык, чтобы модель училась воспринимать токен как language specific токен. Модель использует этот токен, чтобы понимать, из какого языка генерировать последующие токены.

Будущее

Сейчас специалисты Yandex SpeechKit экспериментируют с распознаванием очень длинных аудиозаписей и оптимизацией инференса моделей, а также работают над добавлением новых языков в арсенал нейросети. Трансформеры хорошо дообучаются и достаточно быстро переобучаются, что в случае распознавания речи позволяет научить нейросеть «понимать» новый язык приблизительно за неделю. При этом для хорошего качества распознавания нужно не менее 500 часов аудиозаписей на обучение модели.

Yandex SpeechKit

Речевые технологии на базе машинного обучения

Напишите нам

Начать пользоваться Yandex Cloud

Тарифы

Узнать цены и рассчитать стоимость

Мероприятия

Календарь событий Yandex Cloud
Как работают трансформеры в речевых технологиях Яндекса
Войдите, чтобы сохранить пост