Введение

Обнаружение сходства - один из основных аспектов поиска, рекомендаций, извлечения, соблюдения авторских прав и многих других систем. В Viu одним из наиболее важных случаев использования подобия является поиск популярных фильмов / телешоу / песен на основе пользовательской истории для эффективных рекомендаций. Существует множество аспектов (инструментарий событий, регистрация, пользовательские данные, данные контента, явные сигналы, A / B-тестирование, макет и т. Д.) Проектирования эффективной рекомендательной системы, в этой статье мы сосредоточимся на том, как мы используем некоторые из недавних состояний. -современные модели машинного обучения семантического сходства, которые используют метаданные контента для разработки рекомендательной системы в Viu. Большинство элементов (фильмы, телешоу, песни, новости, статьи и т. Д.) На нашей платформе действительно имеют метаданные (синопсис, теги, субтитры и т. Д.) В виде текста, который мы использовали для построения одной из моделей эффективных ( рентабельные / лучшие KPI) система рекомендаций.

Семантическое сходство

Среди множества подходов информационного поиска для поиска текстового сходства один общий подход состоит в том, чтобы извлекать ключевые слова и сопоставлять документы на основе ключевых слов, но этот подход страдает высоким процентом пропусков, если элементы не используют идентичные термины, и для нас, высокая частота пропусков происходит из-за зашумленных метаданных (например, неправильное написание, многоязычие, отсутствие данных и т. д.). Чтобы преодолеть проблемы высокого процента промахов, существует еще один популярный подход, Семантическое сходство, который основан на сходстве значений для поиска похожих элементов и широко применяется после многих революционных нововведений в репрезентации. обучение »в последнее время. Семантическое сходство помогает обнаружить отношения между элементами, которые невозможны из-за лексикографического сходства.

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

Пункт 1 (синопсис, теги): (Адитья, магнат с разбитым горем, находящийся на грани самоубийства, бесцельно садится в поезд. Он встречает Гит, веселую девушку, которая планирует сбежать со своим любовником, и оказывается втянутой в ее безумную жизнь, фильм, Романс).

Item2 (синопсис, теги): (Что побуждает Варуна и Джаггу сбежать друг с другом за несколько часов до свадьбы, телешоу, комедия).

Есть 2 ключевых аспекта семантического сходства

  1. Семантическое представление
  2. Запрос

Семантическое представление, которое достигается путем представления элементов как встраивания, представляет собой перевод вектора большой размерности в пространство низкой размерности. Эти вложения изучаются с помощью машинного обучения либо с использованием моделей word2Vec, Glove, ELMo, Transformers для текста путем создания синтетических задач для обучения. Обычно используемые синтетические задачи для изучения этих вложений - это классификация, языковое моделирование (предсказание слов), маскированное языковое моделирование и т. Д.

На приведенном выше рисунке (только для упрощения представления эти размеры различаются и зависят от данных, обычно в диапазоне от 100 до 500) показывает, как алгоритмы машинного обучения изучают эти векторные значения для каждого элемента, не зная, что они являются факторами, относящимися к романтике или комедии, Корейский против оригинала и т. Д.

Во-вторых, эти вложения необходимо сохранить для последующих запросов на основе поиска ближайшего соседа. Однако, чтобы найти похожие элементы в режиме реального времени, на практике широко используется подобие Approximate Nearest Neighbor (ANN), где элементы хранятся надлежащим образом для схожести между запросами, а элементы вычисляются с использованием (мягкого) косинуса / евклидова расстояния. Есть 2 основных подхода к приблизительному сходству:

  1. Древовидные подходы
  2. Подходы, основанные на хешировании.

Подходы, основанные на дереве (KD-Tree, VP-Tree,…), рекурсивно разбивают данные по принципу разделяй и властвуй, в результате чего похожие векторы располагаются рядом друг с другом в дереве с ожидаемой сложностью O (log (n)).

Подходы, основанные на хешировании, преобразуют элементы в код, в котором аналогичные элементы будут создавать одинаковый или похожий код (конфликт хеширования) с O (1), но могут быть сублинейными по n, где n - количество элементов (векторов).

Существует несколько библиотек с открытым исходным кодом (NMSLIB, FAISS), которые реализуют приблизительное сходство с различными компромиссами между точностью, задержкой запроса, эффективностью памяти, временем построения индекса и простотой использования.

Чтобы еще больше улучшить поиск по подобию с большей точностью, недавно на ICML 2020 Google опубликовал интересную статью о приблизительном сходстве путем сжатия векторов с использованием новой техники квантования. ScaNN достигает самых современных результатов в glove-100-angularbenchmark от ann-benchmarks.com, достигая ~ 2x QPS для заданной точности как следующая самая быстрая библиотека, мы исследуем это еще больше с точки зрения компромисса между скоростью и точностью для наших данных.

В Viu наша внутренняя система рекомендаций обеспечивает значительную долю вовлеченности / удержания на нашей платформе. Одна из многих моделей, которые мы используем в системе рекомендаций, основана на модели doc2vec, которая изучает семантическое представление элементов с помощью синопсиса, субтитров, тегов и т. Д. Недавно мы также экспериментировали с моделью преобразователей для одного из наших контент-ориентированных рекомендации, но результаты A / B-теста не такие, как ожидалось. На приведенной ниже диаграмме архитектуры показано единственное поколение рекомендаций, основанных на семантическом сходстве (модель на основе контента), есть много других аспектов архитектуры (QPS, задержка, гибкость, отказоустойчивость, время безотказной работы,…) обслуживания рекомендаций в режиме реального времени для разных клиентов, о которых мы поговорим в следующих статьях.

Для генерации рекомендаций, основанных на семантическом сходстве, начальный процесс запускается планировщиком Jenkins, который извлекает метаданные контента из Google Big-query и загружает их в механизм подобия для предварительной обработки (токенизация, лемматизация, удаление стоп-слов, фильтрация и т. Д.). путем встраивания генерации с использованием самоконтролируемого обучения (модель гипертонастройки на основе оценки самоподобия элементов) и нахождения топ-N похожих элементов с помощью Faiss. Сгенерированные рекомендации загружаются в облачное хранилище, облачная функция запускает поток данных для сохранения сгенерированных рекомендаций контента в хранилище данных. В конце концов, сервис Recommender использует эти рекомендации по содержанию, чередуя их с результатами других моделей с последующей фильтрацией постобработки, то есть миниатюрами, географическими координатами, лицензией и многими другими проверками.

Большинство строк домашней страницы, уведомлений для пользователей, основанных на внутренней системе рекомендаций, достигают в 2–5 раз более высоких KPI (CTR, видео-минут, лучшего удержания пользователей) в A / B-тестах. Кроме того, во время первоначального технико-экономического обоснования продукта мы интегрировали несколько внешних решений от ведущих поставщиков решений искусственного интеллекта, чтобы получить лучшее в мире решение для наших требований, а также провели с ними A / B и обнаружили, что наше внутреннее решение работает лучше благодаря сильная адаптация к предметной области и контекстуализация моделей машинного обучения.

В настоящее время наша группа рекомендательных систем в Viu сосредоточена на улучшении автономных показателей модели (точность @ K, средний обратный ранг k, нормализованный распределенный совокупный выигрыш) путем добавления более явных сигналов, изучения различных архитектур моделей ( Модели последовательности , xDeepFM ,…), улучшая рекомендации по холодному запуску и добавляя дополнительные варианты рекомендаций для наших пользователей.

Система рекомендаций в Viu является результатом межфункционального сотрудничества между различными командами (машинное обучение, архитектура, приложение, продукт, контроль качества и управление проектами). В будущем мы расскажем больше о различных моделях рекомендательных систем, таких как совместные модели, основанные на данных о потреблении пользователей, модели машины факторизации с использованием явных сигналов, модели обогащения данных для явных сигналов, многоцелевые рекомендательные системы и A / B-тестирование.

Ссылки

  1. Https://cloud.google.com/solutions/machine-learning/building-real-time-embeddings-similarity-matching-system
  2. Https://cloud.google.com/solutions/machine-learning/overview-extracting-and-serving-feature-embeddings-for-machine-learning
  3. Https://engineering.fb.com/data-infrastructure/faiss-a-library-for-efficient-similarity-search/
  4. Https://ai.googleblog.com/2020/07/announcing-scann-efficient-vector.html