Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OpenTalks.AI - Мурат Апишев, Ирина Пионтковская, Готовим промышленную модель для голосового ассистента с минимальными затратами

OpenTalks.AI
February 21, 2020

OpenTalks.AI - Мурат Апишев, Ирина Пионтковская, Готовим промышленную модель для голосового ассистента с минимальными затратами

OpenTalks.AI

February 21, 2020
Tweet

More Decks by OpenTalks.AI

Other Decks in Science

Transcript

  1. Готовим промышленную модель для голосового ассистента с минимальными затратами Мурат

    Апишев (Digital Decisions) Ирина Пионтковская (Huawei Noah Ark) Уберизация * Аугментация * Дистилляция
  2. “Уберизация” сбора данных Краудсорсинг не только помогает собирать данные, но

    и сам становится объектом исследования Shah P. et al. Building a conversational agent overnight with dialogue self-play //arXiv preprint arXiv:1801.04871. –2018. (Google) - Создание интеллектуального диалогового алгоритма за вечер и утро - На сбор данных с помощью Mechanical Turk отводится 6 часов - Управление мотивацией аннотаторов - Заработок привязывается к качеству итоговой модели Yang Z. et al. Mastering the dungeon: Grounded language learning by mechanical turker descent //arXiv preprint arXiv:1711.07950. –2017. (Facebook AI)
  3. Глобальной IT-компании нужен голосовой ассистент, поддерживающий разные языки • Для

    многих языков есть модели, качественно распознающие и синтезирующие речь Развитие речевых технологий • Современные смартфоны с голосовым вводом • Популярность других устройств с голосовым управлением (колонки, «умные дома», экраны) Широкое распространение голосовыхустройств • Крупнейшие IT-компании развивают собственных голосовых ассистентов Конкуренция за данные пользователей
  4. Технологии есть, не хватает данных для русского языка 3. Синтез

    ответа Выбор шаблонной фразы ("температура: N градусов") Подстановка данных ("N = 10") Преобразование текста в речь 2. Анализ смысла Классификация интента ("вопрос о температуре") Извлечение сущностей ("дата: завтра, "место": Москва) 1. Перевод речи в текст Распознавание языка Преобразование в текст
  5. Генерируем данные для обучения на Яндекс.Толоке Запрос о погоде Запрос

    на показ видео Запрос на установкубудильника и т.д. Список интентов (8 штук) Метка даты и времени Телефонный контакт Музыкальный альбоми т.д. Список сущностей (9 штук) Много пользователей, разнообразные реплики Интент в репликеобязателен, сущность опциональна По опыту, собираем 5000 реплик для каждого типа сущности Требования "Можешь мне включить видео все работы хороши почта россии?" "Вруби халка" "Ржачное видео включи по- бырому" "Я хочу видео, чтобы заставить меня смеяться" "Бахни что-нибудь Земфиры" "Обзор всех классов игры лост арк" "Встречу с директором на вторник в 5" "Подними меня завтра в 8, пожалуйста" Примеры желательных реплик:
  6. Первый подход неудачный: для генерации данных важно фильтровать мусор, уточнять

    инструкции, детализировать задания Написали инструкцию Указали тему (интент) Попросили использовать сущности В результате, много реплик оказались мусором, часть релевантных оказалась не тем чем надо, сленг и обращения оказались непокрытыми "hgjkfshgkdfhjgkjdfhgkjdfhg" Бессмысленные наборы символов "Напишите вопрос о погоде на завтра (вторник)" Куски инструкции к заданию "Погода на завтра"/"Погода на вторник" Однообразные реплики "Надвор'е ў аўторак" Реплики на другом языке Мусор
  7. Второй подход: уточняем ограничения для толокеров и заданий Добавили автоматическую

    и ручную проверки Уточнили инструкции и настройки пулов Перешли на детальные задания с ограничениями Все заработало ☺ Виды ограничений •Вопрос или просьба/указание •Максимальная/минимальная длина реплики •Наличие/отсутствие сущностей •Ограничения на вид сущностей •Ограничения на комбинации сущностей •Наличие/отсутствие указанных слов
  8. Примеры заданий для толокеров Попросить включить видео. Указать его общее

    содержание Попросить включить смешное видео. Не использовать слово "смешной" В вопросительной форме попросить сказать погоду на завтра в каком-то месте, использовать не менее 6 слов Запросить информацию о погоде в следующий вторник, не используя слово "погода" Попросить позвонить кому-нибудь из коллег, используя не более 3 слов и не используя слово "позвони" Потребоватьвключить песню какой-нибудь группы, употребив хотябы одно нецензурноеслово
  9. Дальше процесс становится итеративным Запускаем генерацию Фильтруем откровенно некачественные реплики

    автоматически Отсматриваем остальные реплики Уточняем инструкции Пишем новые задания
  10. В репликах нужно разметить сущности Толока снова в деле Размечаем

    Пишем подробную инструкцию Ставим тройное перекрытие Отправляем на разметку часть данных Фильтруем Отбираем реплики с согласованностью2/3 и 3/3 по всем сущностям Корректируем На корректных репликах обучаем модель NER Проверяем спорные реплики NER на совпадениес известными сущностями Авторазмечаемостальныеданные
  11. Итоговый результат для русского языка Сформировали выборку Удалили полныедубликаты Для

    балансировкисохранили частьреплик без сущностей(до 25%) Получилось~53К итоговых реплик Обучили тестовую модель Модель RuBERT отDeepPavlov Обучалимоделина различныхэтапах разметки Итоговая F1-мера длякаждого типа сущности на тестепревысила0.8 Получили пайплайн разметки Отработана генерация новых данных с помощьюкраудсорсинга
  12. Можно ли перенести пайплайн на другой язык? При работе с

    польским сразу возникли проблемы Толока • Мало польскоговорящих работников, очень медленная некачественная генерация Amazon Mechanical Turk • Официальная регистрация из РФ недоступна, получили два бана • Платформа не поддерживает фильтры пользователей за "быстрые" ответы Microworkers • Можно размечать с хорошим качеством, но очень медленно (250 реплик за неделю) Figure Eight • Платформа технически не позволила перейти от этапа формулировки задачик этапу загрузки конкретных заданий, поддержка доступна после покупки лицензии за 15000$
  13. Пришлось идти альтернативным путём Воспользовались готовыми данными для русского Должен

    жить на территории целевой страны или часто там бывать Нанимаем переводчика •TODO: учесть локальные языковыеоборотыречи, сленг и т.п. •TODO: словари с сущностями, близкие носителям(имена, исполнители) Переводим с его помощью реплики •Отработали процесс, •получили по 500 реплик на каждый тип сущности •дороже, но схема рабочая Результат
  14. Понимание запросов пользователя Классификатор задач (Domain Classifier) MusicApp Классификатор намерений

    (Intent Classifier) Определитель параметров запроса (Slot Extractor) Find_music, author = Бетховен, Name = седьмая симфония AlarmApp Классификатор намерений (Intent Classifier) Определитель параметров запроса (Slot Extractor) set_alarm, time = 7am, day = tomorrow set_alarm_music, music = ‘Алегретто из седьмой симфонии’ Найди седьмую симфонию Бетховена Поставь будильник на завтра на 7 утра Установи новую мелодию будильника: алегретто из седьмой симфонии
  15. Алгоритм классификации и разметки последовательностей Частая проблема: модель слишком ‘затачивается’

    под определенные слова, которые встретились только в некоторых классах, но на самом деле не являются важными. Пожалуйста, запусти Youtube play_music Я хочу пройти на Красную Площадь, чтобы сделать селфи с Лениным take_selfie Запусти в поисках Немо no intent Проложи маршрут от дома до Красной Площади CLS Нейронная сеть Классификатор intent: navigate - - - src - dst dst Метки параметров (слотов) для каждого слова
  16. Knowledge distillation Jiao X. et al. TinyBERT: Distilling BERT for

    Natural Language Understanding //arXiv preprint arXiv:1909.10351. – 2019. Лучшие нейронные модели классификации точные, но требовательные по скорости и памяти. Они обучаются на большом количестве неразмеченных данных, и дообучаются под конкретную задачу. Чтобы получить маленькую модель, почти такую же точную, применяем процесс “перегонки знаний”. Маленькая модель – “ученик” обучается имитировать большую модель - “учителя” (выдавать те же промежуточные представления) Проблема: для хорошего результата нужно много данных из той же предметной области, но необязательно размеченных
  17. Как получить больше данных Текущие ограничения данных • Текущего объема

    все еще не хватает • Недостаточно разнообразны Точность моделирования нужно повышать • Можем обучить модель, с высокой точностью (~98%) на тестовой выборке, но точность значительно падает на реальных данных (~78%) Используем Data Augmentation • Искусственное расширение выборки (Data Augmentation) – это подход, позволяющий увеличить количество обучающих данных, а также сделать данные более разнообразными, а полученную модель – более устойчивой к небольшим изменениям распределения данных
  18. Как “размножаются” данные Kazan Moscow Samara Замена слов на синонимы

    Из словарей и справочников С помощью векторных представлений слов Пример: Я хочу поехать в Москву / Казань / Санкт- Петербург / Самару Обратный перевод Переводим фразу на английский -> французский -> китайский -> русский (любая последовательность) Пример: Поставь мне новую мелодию будильника -> Установите мне новую мелодию будильника Данных в 10 – 20 раз больше Дистилляция (Wikipedia): 8 часов на 1 GPU Обучение (100 000 примеров): 1 час