Магия персональных рекомендаций, или как нейросеть Яндекс Карт подбирает места под интересы пользователей. ml.. ml. recsys.. ml. recsys. Геоинформационные сервисы.. ml. recsys. Геоинформационные сервисы. карты.. ml. recsys. Геоинформационные сервисы. карты. нейросети.. ml. recsys. Геоинформационные сервисы. карты. нейросети. рекомендации.
Магия персональных рекомендаций, или как нейросеть Яндекс Карт подбирает места под интересы пользователей - 1

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

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

Как выглядят рекомендации в Картах

Теперь пользователи Карт могут изучать персональные рекомендации мест прямо на главном экране приложения: в ленте под поисковой строкой и прямо на карте в виде «фотопои», как мы их называем (англ. Point of Interest — POI).

«Фотопои» — это круглые иконки с фотографиями организаций, расположенные на карте. Рядом с фото может быть текст с названием организации, её сферой деятельности, рейтингом и причиной попадания в рекомендации, например «недалеко от дома», «часто смотрели», «вы поставили 5 звёзд», «лучшие бургеры».

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

«Фотопои» могут быть и неперсональными: сейчас это только главные достопримечательности городов, которые видны всем пользователям. Вместо настоящей фотографии в них используются созданные дизайнерами картинки — их легко отличить при сравнении.

Магия персональных рекомендаций, или как нейросеть Яндекс Карт подбирает места под интересы пользователей - 2

В нижней части экрана под поисковой строкой — лента с рекомендациями. Если для «фотопои» набор организаций тесно связан с областью карты на экране, то в ленте могут быть организации из всего города. При этом заведения, которые находятся в видимой области карты, получают приоритет в ранжировании.

Магия персональных рекомендаций, или как нейросеть Яндекс Карт подбирает места под интересы пользователей - 3

Чтобы было проще ознакомиться с организацией перед её посещением, мы создаём рассказы про локации в формате сторис. Их можно найти в карточке организации в блоке «Коротко о месте». Эти рассказы создают YandexGPT и модели компьютерного зрения на основе отзывов, фото и видео организаций.

Рекомендации теперь работают не только в крупных городах, но и в небольших населённых пунктах. Так что найти, где поесть, отдохнуть и культурно обогатиться можно и в Москве, и в Переславле‑Залесском, и в станице Павловская.

Особенности рекомендаций в Картах

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

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

Расстояние до организации. Одно из отличий наших рекомендаций — пространственная составляющая. Нам нужно учитывать, где расположены организации, которые мы предлагаем пользователям. Например, если жителю Москвы мы покажем боулинг‑клуб в Благовещенске, вероятность того, что он его посетит — крайне мала. То же касается и удалённых организаций в пределах одного города: чем больше расстояние от пользователя и сложнее транспортная доступность, тем меньше вероятность посещения. Также есть разница между выбором мест в родном городе и поиском интересных локаций в путешествиях.

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

Мир на экране телефона. Ещё одна особенность — то, как пользователи взаимодействуют с продуктом. Карту можно двигать, крутить, увеличивать и уменьшать. На каждое такое действие у нас есть ограниченная область на карте с определённым масштабом. Мы можем показывать «фотопои» только для организаций из этой области и только в тех точках, где они находятся. В этом случае множество кандидатов для рекомендаций ограничено экраном. А когда «фотопои» организаций пересекаются, мы вынуждены выбирать только одну из них, отдавая предпочтение той, у которой выше релевантность по данным модели.

Магия персональных рекомендаций, или как нейросеть Яндекс Карт подбирает места под интересы пользователей - 4

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

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

Магия персональных рекомендаций, или как нейросеть Яндекс Карт подбирает места под интересы пользователей - 5

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

Как мы измеряем качество

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

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

Сейчас наша основная KPI‑метрика рекомендаций — онлайн‑метрика. Мы фиксируем множество целевых действий, которые пользователи совершают в карточках организаций: построение маршрута, добавление в закладки и т. д. Для каждого дня мы считаем долю пользователей, которые совершали целевые действия из рекомендаций, от всех пользователей, которые совершали целевые действия в discovery‑сценариях (т. е. в сценариях, где пользователь выбирает, куда пойти, а не ищет конкретную локацию). По сути, мы берём всех пользователей, которые совершали выбор, и считаем, в каком проценте случаев выбор происходил с использованием наших рекомендаций.

Есть и более верхнеуровневая KPI‑метрика, которую мы называем Discovery DAU (Daily Active Users), — количество уникальных пользователей за сутки, совершающих выбор организаций в Картах. Эту метрику тяжелее растить, так как для этого нужно приводить новых пользователей, которые также будут выбирать организации в приложении.

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

Но у онлайн‑метрик есть и минусы. Чтобы сравнить при помощи A/B‑тестирования новую версию рекомендаций с текущей, нужно ждать, пока накопится достаточное количество данных в логах сервиса. Обычно это занимает одну‑две недели. А чтобы быстро оценивать новые модели ранжирования перед запуском в онлайн‑эксперимент, мы используем офлайн‑метрику, которая вычисляется по историческим данным. Мы собираем данные, которые состоят из показов рекомендаций и кликов с целевыми действиями. Далее мы вычисляем метрику ранжирования nDCG10 (Normalized Discounted Cumulative Gain), считая кликнутые организации положительными примерами. Чем выше модель ранжирует организации, в которые были клики, тем больше значение метрики.

Магия персональных рекомендаций, или как нейросеть Яндекс Карт подбирает места под интересы пользователей - 6

Наша нейросетевая модель рекомендаций

С момента запуска первых рекомендаций в Картах в апреле прошлого года наша система претерпела много изменений. В новом поколении рекомендаций одной из основных моделей стала нейросеть на базе архитектуры Transformer. Она представляет пользователя как последовательность событий и может выявлять в них нетривиальные закономерности, которые не способны обнаружить классические модели. Подробнее про этот подход можно прочитать в этих статьях:

В нашем случае событие — это действие пользователя в Яндекс Картах, некоторым образом связанное с рекомендациями организаций. Действия могут быть разных типов: оценка, отзыв, открытие карточки организации, одно из целевых действий, о которых шла речь выше. Кроме типа действия, событие содержит ещё информацию об организации, над которой оно было совершено:

  • рубрика организации (кафе, бильярдный клуб, музей);

  • сеть (для организаций с несколькими филиалами);

  • особенности (например, есть ли Wi‑Fi или детская комната);

  • географическое расположение.

При обучении и применении трансформера ему на вход подаются эмбеддинги событий, то есть их специальные числовые представления. Они состоят из трёх компонент: эмбеддинга организации, эмбеддинга типа события и позиционного эмбеддинга. Эмбеддинг организации вычисляет энкодер — часть нейросети, которая преобразует входные данные (рубрику, особенности, расположение и другие) в числовое представление.

После всех событий на вход трансформера подаются специальные task‑токены. Они похожи на CLS‑токены, которые используются в задачах обработки естественного языка. Эти токены соответствуют конкретным задачам, на которые обучается нейросетевая модель. Например, предсказание вероятности целевого действия.

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

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

Магия персональных рекомендаций, или как нейросеть Яндекс Карт подбирает места под интересы пользователей - 7

Отдельно стоит сказать про генерацию кандидатов для ранжирования. В городах‑миллионниках, таких как Москва, Санкт‑Петербург, Новосибирск, находится большое число организаций (десятки или даже сотни тысяч), которые мы хотим рекомендовать. Если бы мы для каждого запроса пользователя вычисляли признаки и применяли модели, оценивающие релевантность всех организаций, это бы потребовало огромного количества вычислительных ресурсов. Кроме того, обработка каждого запроса занимала бы значительное время — что сказалось бы на скорости работы сервиса и удобстве для пользователей. Поэтому мы используем методы предварительной фильтрации кандидатов, чтобы сократить количество организаций и ускорить процесс ранжирования.

Для получения списка кандидатов мы используем как простые методы (например, берём самые популярные в текущем окне и городе), так и алгоритм HNSW (англ. Hierarchical Navigable Small World), который находит ближайшие организации по эмбеддингу пользователя. Подробнее про этот алгоритм можно прочитать в статье Approximate Nearest Neighbor Search Small World Approach.

Магия персональных рекомендаций, или как нейросеть Яндекс Карт подбирает места под интересы пользователей - 8

Персональные рекомендации в Яндекс Картах помогают пользователям выбирать организации и открывать для себя новые места, соответствующие их интересам. Для Яндекса же рекомендации в Картах способствуют увеличению вовлечённости в сервис и росту ключевых метрик, таких как Discovery DAU.

Мы не хотим останавливаться и в ближайшее время планируем:

  • внедрить более современные архитектуры моделей, которые смогут ещё точнее учитывать сложные закономерности в поведении пользователей;

  • ускорить обновление и обеспечить свежесть рекомендаций, чтобы пользователи всегда получали актуальную информацию;

  • увеличить разнообразие рекомендаций, чтобы пользователи чаще могли открывать для себя новые и интересные места;

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

Но главное, конечно, — добавить ещё больше магии рекомендаций в процесс поиска и выбора мест для миллионов пользователей Карт.

Автор: zhvv117

Источник

Рейтинг@Mail.ru
Rambler's Top100