Подбор продуктов в розничной торговле с помощью искусственного интеллекта

TL; DR: Сопоставление товаров, возможность сопоставить один и тот же товар, продаваемый несколькими розничными торговцами, является неотъемлемой частью развития розничной торговли. Мы исследуем подход машинного обучения, чтобы обеспечить высокую точность и масштабируемость с помощью крупнейшего в мире источника данных о розничной торговле в реальном времени.

Подбор продуктов - важная область исследований в области розничных технологий. С точки зрения розничных продавцов, таких как ASOS и Zalando, обеспечение единообразия цен и скидок среди конкурентов является приоритетом, от уровня единого продукта до совпадения всего ассортимента. Розничный торговец должен оставаться конкурентоспособным на своем рынке. Однако осведомленность о товарах, которые розничные продавцы не продают или продвигают исключительно, также оказывает значительное влияние на прибыль. Эксклюзивность продавца (т. Е. Когда нет совпадений) может быть прибыльной в розничной торговле. Для любых известных брендов, таких как Nike и Burberry, которые выходят на разные рынки или продают через несколько розничных продавцов, может быть сложно отследить цены на продукт и желаемое описание. Бренды хотят, чтобы их продукты были представлены единообразно, а розничные торговцы могут продавать их меньше в обоих смыслах.

В EDITED есть данные о более чем 500 миллионах розничных товаров. Эти продукты продаются многочисленными розничными торговцами на разных языках и на разных рынках. Они могут продаваться в разное время, под разными брендами (Tommy Hilfiger vs. Tommy Hilfiger Underwear) и с изображениями и текстом, выбранными продавцом. Их информация о продукте может варьироваться от обширного повествования до описания в единственном числе платье или числового идентификатора. Глядя на приведенный выше пример, основанный на реальных данных, у каждого продукта есть вариации по названию, описанию и изображению. В наборе данных из 500 миллионов эти продукты недостаточно уникальны или похожи, чтобы сделать сопоставление продуктов простой задачей. Как мы можем точно подобрать эти продукты? Что еще более важно, как мы можем быть уверены в этих матчах? Давайте посмотрим, как этого можно добиться масштабируемо и с высокой точностью.

Каждый байт данных помогает

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

Нам нужно преобразовать эти данные во что-то, что может обработать компьютер. Во-первых, давайте взглянем на наши текстовые функции. Обработка естественного языка (NLP) - это подраздел машинного обучения, цель которого - понять, как компьютеры анализируют человеческий язык. Одной из распространенных задач НЛП является встраивание слов, отображение слов на векторы, которые их представляют, и существует множество моделей для выполнения этой задачи. В простейшем случае это может означать подсчет слов в тексте, где длина вектора эквивалентна размеру словаря с каждым элементом, представляющим слово. В наиболее сложных случаях это может быть модель, обученная на миллионах слов или фраз для создания векторов фиксированной длины на основе функций, изученных во время обучения, где представление слова распределяется по нескольким элементам в векторе (например, BERT и XLNet ). Эту сложность встраивания слов необходимо учитывать вместе с возможностью масштабирования при проектировании инфраструктуры модели.

Затем нам нужно переосмыслить этот процесс, чтобы наши изображения были представлены векторами. Это большая область исследований в области машинного обучения, известная как компьютерное зрение. По сути, мы можем просто проверить, идентичны ли два изображения, передав их через хеш-функцию. Однако, если есть какие-либо расхождения, даже на уровне одного пикселя, мы не сможем сопоставить изображения. Вместо этого мы используем сверточную нейронную сеть (CNN), которая представляет собой алгоритм глубокого обучения для нашего распознавания изображений. CNN используют движущиеся фильтры на изображениях, чтобы найти их характеристики, уменьшая при этом объем данных, которые необходимо обработать. На самых нижних уровнях эти фильтры извлекают такие объекты, как края. Затем сеть изучает, как эти функции могут быть объединены в сложные структуры, что позволяет лучше понять компоненты, определяющие продукт. Затем он использует это, чтобы классифицировать продукт, например, как верх или платье. Они называются «векторами признаков», где элементы вектора соответствуют изученным функциям из CNN.

Составление крупнейшего в мире набора данных о розничной торговле в реальном времени

С этими двумя векторами для каждого продукта, полученными из текста и изображений, мы можем визуализировать отношения в базе данных EDITED. Мы делаем это, используя наши векторы как многомерную систему координат, где каждый элемент соответствует координате на отдельной оси. Например, представьте себе вектор длиной 2 элемента. Это будет означать, что один элемент находится на оси x, а другой - на оси y-, как на простом графике, как показано на диаграмме рассеяния на приведенном выше рисунке. Расширяясь до трех элементов, график теперь имеет ось z- и может быть визуализирован в виде трехмерного графика. Продолжайте этот процесс до тех пор, пока у нас не будет несколько сотен или тысяч элементов в векторе, и при таком большом количестве измерений его будет сложно концептуализировать.

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

В EDITED у нас есть многомерное отображение 500 миллионов товаров! Мы называем это «индексом». Проверка каждого продукта в нашем индексе для одного продукта запроса нереалистична с точки зрения хранилища и времени, необходимого для построения и запроса индекса. Как мы можем понять, какие продукты находятся рядом друг с другом и, что особенно важно, сделать это быстро?

Войдите в еще одну процветающую область науки о данных - Approximate Nearest Neighbours (ANN), в которой участвуют крупнейшие мировые технологические компании, включая Spotify Annoy и Facebook FAISS. Эти алгоритмы обеспечивают баланс между точностью и скоростью, позволяя угадать ближайших соседей продукта. По своей сути, ИНС разбивают данные случайным образом и повторяют процесс до тех пор, пока не будет создана двоичная древовидная структура, где каждый лист является подмножеством данных после каждого разбиения, а ветви используются для вызова соседей. Путем рандомизации разбиений и создания повторяющихся двоичных деревьев мы получаем хорошую оценку ближайших соседей.

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

Оценка, оценка, оценка

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

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

Однако мы также хотим оценить точность запросов, в которых невозможно добиться полного отзыва. Для этого мы изменяем наши показатели на «точность при ранге k», долю правильных k соседей и «отзыв при ранге k. ”, Доля совпадений в наших k соседях, где k - количество возвращенных соседей (например, 100). Поскольку мы фильтруем наших соседей по расстоянию, k будет варьироваться в зависимости от запроса. Нам необходимо обеспечить точность при изменении k.

Для этого мы можем вычислить «среднюю точность», которая не требует фиксированного k. Методика осуществима - мы перебираем возвращенные k соседей, отфильтрованных по расстоянию, и на каждой итерации, если продукт совпадает, мы вычисляем точность для этого ранга. Затем мы используем среднее значение этих значений точности, как показано на диаграмме выше. Это позволяет нам более строго наказывать несоответствия с более высоким рангом, а также учитывать несоответствия с более низким рангом. Наконец, мы вычисляем «среднюю среднюю точность» для нескольких запросов, которая представляет собой среднее значение средней точности, рассчитанной для каждого запроса. Это оказалось бесценным показателем в EDITED, поскольку он демонстрирует понимание точности и отзывчивости, отдавая приоритет функциям, ориентированным на пользователя, таким как ранжирование.

Ключевые выводы

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

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