Направления Симулятора ML: Матчинг

Матчинг — это метод автоматического сопоставления объектов на основе их характеристик, атрибутов или контента, включая текст, изображения, числовые данные. Применять такой подход полезно при обработке больших объёмов данных, которые почти невозможно сопоставить вручную.
Яркий пример — онлайн-маркетплейсы с сотнями тысяч или даже миллионами товаров, где одна и та же вещь может быть предложена разными продавцами по разным ценам.
Чтобы определить рыночную цену, нужно найти идентичный товар на маркетплейсе конкурента, что трудно осуществить в условиях многомиллионного ассортимента без автоматизированного матчинга (зачем это нужно? цены конкурентов — одна из важнейших фичей в моделях динамического ценообразования; кроме того, они полезны для BI-аналитики и сравнения себя «с рынком»).

Другой пример: системы real-time распознавания лиц для верификации личности (например, на входе в офис или бизнес-центр), которые используют под капотом ровно ту же технологию.
Справиться с такой сложной задачей помогают алгоритмы metric learning. Они «учат» систему превращать исходные объекты — в новое векторное пространство, где схожие объекты (карточки товаров, лица, или пользователи) оказываются друг к другу ближе, а различные — дальше.
Разберём, как может выглядеть пайплайн матчинга для дедупликации товаров на нашем маркетплейсе:
Шаг №0. Разметка. Пусть с помощью разметчиков предварительно собрали 10 тысяч пар товаров (скажем, на это ушло 2 месяца). Это наши «истинные матчи» (идентичные пары товаров), которые мы используем для валидации и калибровки моделей.
Шаг №1. Готовим пул кандидатов. Чтобы прогнать пайплайн матчинга, необходим набор пар, среди которых мы будем искать матчи. Например, мы берём отдельную категорию «Смартфоны»: у нас 2000 товаров, что даст нам 2000 x 2000 = 4,000,000 возможных пар-кандидатов.
Шаг №2. TinyBERT на заголовках товаров (BERT — encoder-архитектура на основе Трансформеров: на то, как их заводить, в Симуляторе ML есть отдельная задача). С помощью первой модели «прореживаем» список кандидатов с миллионов до тысяч.
Часто в матчинге, поиске и рекомендательных системах пайплайн состоит из нескольких моделей («воронка моделей»): от быстрых, легковесных и неточных (но с большим Recall) до тяжеловесных и принимающих во внимание много факторов (имеющих большой Precision).

Модель училась гененировать эмбеддинги товаров (на схеме ниже это u и v), на основе которых можно посчитать меру близости.

Шаг №3. Чтобы не пересчитывать эмбеддинг каждого товара снова и снова, трансформацию в пространство эмбеддингов мы сделаем разово после очередного дообучения модели. Мы складываем эти эмбеддинги в «индекс», а затем для каждого товара достаём топ 100 соседей с помощью ANN (Approximate Nearest Neighbors, приближенного поиска ближайших соседей).

Благодаря этому шагу, вместо подсчёта дистанции для 4,000,000 пар у нас выйдет всего 100 х 2000 = 200,000 сравнений. Экономия вычислений в 20 раз! В результате такой фильтрации от наших 4 миллионов пар останется всего 10 тысяч.
Шаг №4. BERT на заголовках и описании + ResNet-50 на картинках. С помощью этих двух моделей мы проходим по списку из 10 тысяч пар (обе модели вычисляют дистанцию отдельно и их ранжирование объединяется в одно число). Подбираем отсечку так, чтобы Recall был максимальным при Precision > 0.95 (в демоверсии Симулятора есть отдельная задача на работу с Recall-Precision кривыми и подбор отсечек). Товары, чья близость выше отсечки, мы помечаем как «истинные матчи» и 5% отправляем на валидацию, чтобы подтвердить или отбраковать «партию» с помощью разметчиков.
Если всё ок, помечаем эти автоматически найденные матчи в «истинные». Если какие-то пары разметчики отбраковали, мы заносим их в hard negatives – ложные срабатывания модели, в которых она была очень уверена.
Шаг №5. Постобработка. Наконец, после получения новых «матчей» нам нужно учесть все новые найденные отношения идентичности.
- Так, если пара (A, B) — матч, то и пара (B, A) — матч.
- Если (A, B) и (С, B) — матчи, то и пара (A, C) — матч.
Интуитивно задача простая, но не каждый стажёр с ней справляется за час — поэтому мы включили её в Симулятор ML.
__________________________________________________________________
Матчинг — ключевой элемент многих современных технологий, который помогает автоматизировать обработку больших объёмов данных и повышает эффективность бизнес-процессов.
В Cимуляторе ML есть семь задач по теме — как на матчинг товаров на маркетплейсе, так и на распознавание лиц. Ждём вас на курсе!