Эндрю Чжай | Технический руководитель Pinterest, визуальный поиск

На протяжении многих лет Pinterest запустил множество продуктов для визуального поиска, основанных на компьютерном зрении, чтобы помочь людям найти новые идеи, которые стоит попробовать, и продукты, которые нужно купить. В 2015 году мы начали с нашего инструмента визуальной обрезки, позволяющего пользователям выполнять поиск по изображению булавки (например, лампа в большой гостиной) и просматривать визуально похожий контент на Pinterest. В 2017 году мы запустили Поиск по объективу камеры, открыв визуальный поиск Pinterest для реального мира, превратив камеру каждого телефона Пиннера в мощную систему поиска. А в 2019 году мы запустили Automated Shop the Look, чтобы пиннеры могли находить и покупать точные товары в сфере домашнего декора Pinterest. Визуальный поиск - один из самых быстрорастущих продуктов Pinterest с сотнями миллионов поисковых запросов в месяц.

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

Эволюция визуальных вложений

Визуальные встраивания Pinterest с годами развивались как с точки зрения моделирования, так и с точки зрения данных.

Мы начали нашу работу с визуальных встраиваний в 2014 году, так как намеревались разработать наш первый производственный продукт для визуального поиска: инструмент визуального кадрирования. Мы активно использовали наборы данных о взаимодействии с Pinterest, поскольку стремились создать продукт, запрос и корпус которого являются изображениями пинов. Когда мы начали работать над Lens в 2016 году, самой большой проблемой, с которой мы столкнулись, было изучение сдвига домена изображений запроса камеры на изображения Pin. Поскольку изображения с камеры часто не относятся к тому типу привлекательного визуального контента, который мы обычно видим на Pinterest, мы собрали набор данных, подобранный людьми, сопоставляя изображения с камеры с изображениями Pin. Точно так же, когда мы стремились автоматизировать Shop the Look в 2018 году, мы хотели специально оптимизировать для точного соответствия продуктов. Используя существующие наборы данных Shop the Look в качестве зашумленного набора кандидатов, мы снова задействовали человеческое руководство для создания высококачественных обучающих наборов данных с точным соответствием продукту. Параллельно с наборами данных мы естественным образом продвигались через архитектуры классификации изображений SOTA, начиная с AlexNet и VGG16 в 2014 году, ResNet и ResNeXt в 2016 году и SE-ResNeXt в 2018 году.

При улучшении существующего приложения новыми вложениями мы заменяем старые вложения на более новые, более эффективные. Однако при разработке вложений для нового приложения в духе модульного дизайна и простоты мы применили набор данных для конкретного приложения с архитектурой модели SOTA и сгенерировали новые независимые вложения для нового приложения. Однако со временем мы заметили, что отдельные встраивания для каждого приложения (Visual Cropper, Lens camera search, Shop the Look) стали техническим долгом, поскольку наше внимание сместилось на разработку / улучшение встраивания для каждого нового приложения по сравнению с существующими. приложений, в то время как базовая инфраструктура обучения развивалась. Примером этого является внедрение Visual Cropper до 2019 года, последний раз внедрение Visual Cropper было развернуто в 2015 году с использованием Caffe в качестве среды обучения / обслуживания с VGG16 в качестве базовой модели. Для сравнения, внедрение Shop the Look в 2018 году основывалось на нашем обучении PyTorch и обслуживающей инфраструктуре Caffe2 с SE-ResNeXt в качестве основы. Встраивание Visual Cropper также было очень важно как общий сигнал контента для более чем 10 клиентов в Pinterest, поскольку оно было обучено с привлечением Pinterest, в то время как наши новые вложения были сосредоточены на сигналах, созданных людьми, с меньшим влиянием на экосистему Pinterest.

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

Предыстория обучения метрической системе

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

Традиционно метрическое обучение тренируется на явных наборах реляционных данных, одним из примеров которых является набор данных триплета (q, p, n), где у нас есть q привязанное изображение, p положительное изображение, которое, как известно, связано с q, и n отрицательное изображение. это не связано. Во время обучения вложения изображений явно сравниваются друг с другом. Одна из основных задач изучения метрики - решить, как выбрать наиболее информативное n негативное изображение.

В качестве альтернативы, обучение метрики на основе прокси тренируется на наборах данных классификации (q, гвоздь), (p, гвоздь), (n , Чаша), где отношения между изображениями определены неявно; похожие изображения имеют одну и ту же метку, в то время как разные изображения имеют разные метки. Во время обучения встраиваемые изображения сравниваются с встраиваемыми метками (прокси) при потере классификации. Проблемы с отрицательной выборкой устраняются с помощью подходов на основе прокси, поскольку обычно у нас гораздо меньше меток, чем изображений, что позволяет нам сравнивать встраивание изображений с большим количеством вложений негативных меток во время каждой минипакетной итерации обучения (иногда подгоняя все вложения меток в памяти графического процессора. ). В Pinterest мы тренируем наши визуальные встраивания с помощью парадигмы на основе прокси, поскольку мы видели по крайней мере сопоставимую производительность подходов на основе прокси с традиционными подходами к метрическому обучению.

Единое визуальное встраивание как решение

Расширяя подход на основе прокси из нашей предыдущей работы, мы обучили наше многозадачное визуальное встраивание, комбинируя наборы данных для конкретных приложений с множественными потерями классификации softmax. Наборы данных для конкретных приложений равномерно смешиваются в каждой минипакете, и все задачи используют общую базовую сеть до тех пор, пока не будет сгенерировано встраивание, после чего каждая задача разделяется на свои собственные соответствующие ветви. Каждая ветвь задачи - это просто полностью связанный слой (где веса - прокси), за которым следует кросс-энтропийная потеря softmax. Мы обучаем нашу модель с помощью PyTorch методом Distributed DataParallel с обучением FP16, используя библиотеку Apex с расширениями для поддержки нашей архитектуры. Пожалуйста, обратитесь к нашему документу KDD’19 для получения подробной информации, такой как визуализация наборов данных для конкретных приложений, прокси-серверы субдискретизации во время обучения для повышения эффективности обучения и бинаризация нашего встраивания для повышения эффективности обслуживания.

Используя показатели автономного поиска для каждого приложения (Visual Cropper (визуальный поиск в контактах), поиск камеры с линзой, Shop the Look), мы увидели, что:

  1. Многозадачность над наборами данных привела к повышению производительности всех приложений по сравнению с обучением на каждом отдельном наборе данных для конкретного приложения с той же архитектурой в соответствующем приложении.
  2. Наши унифицированные встраивания превзошли старые развернутые встраивания, специализированные на приложениях, где улучшения происходят как за счет новых наборов данных, так и за счет более совершенных архитектур моделей. Благодаря нашим унифицированным вложениям у нас теперь есть структура, которую легко поддерживать (одна модель для обучения и поддержки), и которая превосходит существующие тесты.

Влияние

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

В целом унифицированные встраивания показали очень хорошие результаты как с точки зрения вовлеченности, так и с точки зрения релевантности, как показано в таблице выше. Repinners и clickthroughers измеряют процент пользователей, участвующих в этом действии, в то время как репины и переходы по клику измеряют объем действия. Automated Shop the Look находился в разработке, так как мы оценивали наши унифицированные встраивания, поэтому для него не было результатов живых экспериментов A / B. Унифицированные встраивания также привели к значительной экономии средств, поскольку мы смогли объединить нашу инфраструктуру визуального поиска в рамках одного встраивания.

Заключение

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

Спасибо за прочтение! Подробнее об этой работе читайте в нашей статье KDD’19.

Благодарности: Visual Embeddings - это совместная работа Pinterest. Особая благодарность Хао-Ю Ву, Эрику Ценг, Дон Хук Пак, Чаку Розенбергу, Раймонду Шиау, Куньлонгу Гу, Чжиюан Чжану, Джошу Билу, Эрику Киму, Джеффри Харрису, Анжеле Гуо, Дмитрию Кислюку и Майклу Фэну за сотрудничество над этим проект.