KDD’19: изучение унифицированного встраивания для визуального поиска в Pinterest

Задача системы рекомендаций (22/50)

бумажная ссылка

Блог инженера, связанный с этой статьей (Унификация визуальных вложений для визуального поиска в Pinterest)

Какую проблему они решают?

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

Какие другие люди решают эту проблему?

В академической среде лучшей моделью для системы рекомендаций на основе графа является сверточная сеть графа.

Проблемы

Различные приложения имеют разные цели

поиск: булавка и изображение

ранжирование (текст, пин, пользовательский, графический запросы),

классификация или регрессия (например, повторная классификация, прогноз рейтинга кликов, тип изображения)

восходящие мультимодальные модели встраивания (PinSAGE [19]).

Перенос домена камеры на изображения Pinterest:

Flashlight оптимизирует просмотр релевантных изображений в каталоге изображений Pinterest, в то время как Lens оптимизирует просмотр изображений каталога Pinterest из фотографий с камеры.

Наконец, Shop-the-Look оптимизируется для поиска точного продукта среди объектов в сцене для покупок.

Внедрение обслуживания/стоимости/прекращения поддержки

Каждое улучшение встраивания требует полной обратной заливки для развертывания, что дорого. В частности, существует так много зависимостей от этих вложений.

Эффективное использование наборов данных

Раньше для каждой задачи встраивания требовалось, чтобы человек тщательно выбирал набор данных.

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

Масштабируемое и эффективное представление

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

Архитектура модели

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

Модуль подвыборки

Даны N изображений в пакете и M прокси для таргетинга каждого с размером встраивания D.

Однако они могут оказаться не в состоянии разместить прокси-банк (матрицу MxD) в памяти графического процессора, поскольку мы масштабируем M до миллионов классов. Поэтому они решили поместить его в ОЗУ ЦП, а также внедрить подвыборку классов.

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

Модуль бинаризации

Им нужны эффективные представления для следующего:

(1) снизить затраты на холодное хранение (например, стоимость AWS S3)

(2) пропускная способность для нижестоящих потребителей (например, затраты на ввод-вывод для полного внедрения вложений в задания по уменьшению карты)

(3) улучшить задержку оценки в реальном времени

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

обучение модели

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

Каждый узел (из восьми) имеет собственную полную копию банка встраивания ЦП, так как разреженные параметры в настоящий момент не могут быть распределены инфраструктурой PyTorch.

Мини-пакет и потери для многозадачности

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

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

Потери от всех задач назначаются равными весами и суммируются для обратного распространения. Например, если у нас есть 3 задачи, эти потери равны весам.

Разреженная тензорная оптимизация

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

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

Результат

Предложенное унифицированное встраивание по офлайн-метрикам, исследованиям пользователей и онлайн-экспериментам A/B повышает как релевантность, так и участие наших продуктов визуального поиска как для просмотра и цели поиска по сравнению с существующими специализированными вложениями.

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

Другие связанные блоги:

Классификация BMVC19 — это надежная основа для глубокого обучения метрикам

KDD’18: сверточные нейронные сети графов для рекомендательных систем веб-масштаба

WWW’17: Visual Discovery на Pinterest

NAACL'19: использование BERT для анализа тональности на основе аспектов посредством построения вспомогательного предложения

RecSys ’18: каузальные вложения для рекомендаций

Другая ссылка:

ICCV 17' Дистанционное метрическое обучение без суеты с использованием прокси

ICCV 17 'Вопросы выборки в глубоком обучении встраиванию

ECCV 18' Глубокое метрическое обучение с иерархической потерей триплетов

КДД:

https://www.kdd.org/kdd2020/

Лучшая статья в RecSys:

https://recsys.acm.org/best-papers/

Мой сайт:

https://light0617.github.io/#/