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

Практические аспекты ранжирования ответов виртуального ассистента Салют

Практические аспекты ранжирования ответов виртуального ассистента Салют

Конференция GIGA R&D DAY
Презентации на Google Drive: https://drive.google.com/drive/folders/1t1Y5sH4mGFAIzdcrrfXz8m65QEmghA7U
Выступления: https://www.youtube.com/playlist?list=PLJU_M19giWaHVbfs2ltF1kBxUrjAblCD1

Alexander Gavrilov

April 16, 2024
Tweet

More Decks by Alexander Gavrilov

Other Decks in Technology

Transcript

  1. Общее коммуникативное диалоговое общение. Ответы на фактологические запросы. Обработка запросов

    по чувствительным тематикам. Развлекательный контент. Сбер Афина Джой Салют
  2. Извлекаем эмбеддинг реплики (NLU модель) Собираем диалоговые фичи (аннотаторы) Ранжируем

    кандидатов для ответа (LGBM ранкер) Формируем эмбеддинг контекста (SCU модель) Считаем релевантность кандидатов (CrossEncoder) Получаем кандидатов для ответа (KNN индекс) Получаем реплику пользователя Про наш поиск 1 2 3 3 4 5 6 6 6
  3. Бинарная классификация накладывает ограничения на качество разметки и баланс классов.

    Датасеты с прода небольшие, а открытых датасетов в русском сегменте немного. В данных только один или вообще нет негативных примеров. Это работает очень долго. Токены контекста считаются для каждого кандидата. с1 с2 сn r1 rm 𝜎(𝑥) … … … … … … … … Классический CrossEncoder
  4. заменили бинарную классификацию на InfoNCE и добавили майнинг негативных примеров

    убрали требование к балансу классов, увеличили разнообразие ответов, recall@1/8 вырос на 20% − 1 𝑛 $ ! log 𝑒"!($",&")/) 𝑒"!($" ,&")/) + ∑* 𝑒"!($",&"# $)/) InfoNCE-loss, s модель, c контекст, r ответ, t температура All unique responses Retrieval (NLU+SCU) Dialog context response 1 response 2 response .. response n Майнинг негативных примеров. Семплируем k элементов по рангу [r1 ,r2 ] или по близости [s1 ,s2 ].
  5. будем учиться на открытых датасетах сразу на английском вместо перевода

    на русский обновили токенайзер ruRoberta- large, дообучили, выравняли языковую пару Модель Привет [0.1, 0.4, …] MSE Loss Модель Hello [0.2, 0.5, …] эмбеддинг эмбеддинг shared Учим модель делать эмбеддинги в одном пространстве.
  6. BST (+ его русский перевод), soda 100k примеров, замеряли на

    recall@1/8 используем открытые датасеты на английском для обучения так, будто учимся на русском аналоге train test recall@1 bst_ru bst_ru 0.414 bst_en bst_en 0.422 soda+bst_ru bst_ru 0.478 soda+bst_en bst_en 0.486 soda+bst_en bst_ru 0.451 Результаты обучения на датасетах blended skill talk и soda
  7. Безопасность Не общаемся на некоторые темы и следуем принципу “не

    навреди” по отношению к себе, пользователю и другим. Релевантность Главное понимать намерение пользователя, смысл диалога, отвечать «в тему», без учета других критериев. Достоверность Мы проверяем постоянные факты для которых возможно найти достоверный источник. Логика Смотрим есть ли противоречия со всем контекстом диалога и общими знаниями о мире. —У меня есть собака породы колли. —Здорово! А какой породы ваша собака? —Мне родители подарили компьютер. —Это отличная новость. Ты уже познакомился с родителями? —А лисы рожают лисят или медвежат? —Возможны оба варианта! —Получается по закону им жить нельзя? —В какой-то степени — да.
  8. сначала считаем эмбеддинги токенов контекста, сохраняем KV матрицы и затем

    считаем ответы с посчитанным кэшем. лучше масштабирование на более длинных контекстах. Encoder (Bert, Roberta, …) —Ты умеешь делать сальто? с1 с2 … сn Encoder (Bert, Roberta, …) —Только виртуально! … … … … r2 … rm Pooling & Ranking Head key, value cache r1 𝐴! × #$! % = 𝑄! × & % 𝐾& × # ' 𝐾& × ! % 𝑂! × & % = 𝐴! × #$! % 𝑉# × & ' 𝑉! × & %
  9. 16 32 64 128 64 1.3 1.6 1.7 1.7 128

    2.3 2.9 3.1 3.1 256 3.6 4.7 5.2 5.7 512 5.4 7.0 8.6 9.9 Количество кандидатов Длина в токенах Уменьшение latency (в n раз) в зависимости от длины последовательности и количества кандидатов. 16 32 64 128 64 1.0 1.0 1.0 1.0 128 1.0 1.0 1.1 1.2 256 1.1 1.2 1.3 1.6 512 1.3 1.6 2.1 2.6 Количество кандидатов Длина в токенах Уменьшение памяти (в n раз) в зависимости от длины последовательности и количества кандидатов. В замерах использовали bert-large в fp32, длина ответа всегда 32 токена (включена), вычисления произведены на картах A100.
  10. Encoder (Bert, Roberta, …) —Ты умеешь делать сальто? с1 с2

    … сn Encoder (Bert, Roberta, …) —Только виртуально! … … … … r2 … rm Pooling & Ranking Head key, value cache r1 Encoder (Bert, Roberta, …) —Только виртуально! … … … … r2 … rm r1 Pooling Pooling sim … … … …
  11. Уменьшили требование к качеству разметки данных, recall@1/8 вырос на 20%

    Можем добавить знаний за счет двуязычной модели и данных на английском Нашли способ ранжировать быстрее в ~7 раз и меньше по памяти в ~1.6 раз Можем использовать сеты без ручной разметки на негативные примеры