Как модели машинного обучения рекомендуют людей людям

Связи лежат в основе социальных сетей. Фундаментальная гипотеза ценности заключается в том, что подключенные пользователи более вовлечены, а вовлеченные пользователи с большей вероятностью вернутся. Как мы можем сделать пользователей более связанными? — поэтому один из самых важных вопросов в приложении для социальных сетей. Ответом является класс алгоритмов, известных как люди, которых вы можете знать или PYMK, которые показывают, что вы регулярно обновляете список пользователей-кандидатов, с которыми вы, скорее всего, свяжетесь.

Facebook объясняет PYMK следующим образом:

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

ЛинкедИн пишет:

Функция «Люди, которых вы можете знать» на странице «Моя сеть» предлагает участников LinkedIn, с которыми вы можете связаться. Эти рекомендации основаны на общих чертах между вами и другими участниками LinkedIn, а также на контактах, которые вы импортировали из своей электронной почты и мобильных адресных книг.

А вот и Твиттер:

Предложения по учетным записям в Твиттере основаны на алгоритмах, которые делают для вас персонализированные предложения.

И ТикТок:

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

Но как именно работают эти алгоритмы? Что происходит под капотом? В этом посте мы углубимся в

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

Начнем (после краткого оговорки).

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

Базовая архитектура модели для PYMK

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

Давайте подробнее рассмотрим эти два этапа.

Отбор кандидатов. Возможно, самая простая, а также самая интуитивная эвристика для выбора кандидатов – это "друзья друзей" (FOF): рассматривать все связи второй степени как возможные. Кандидаты в ПДМК. Оказывается, эта эвристика на самом деле чрезвычайно эффективна: общедоступная презентация 2010 года от Facebook объясняет, что 92% всех новых подключений происходят из одного из (в среднем) 17 тысяч FOF пользователя. Другими словами, выбор кандидатов FOF сокращает пул кандидатов PYMK на 6 порядков (при условии, что вся популяция пользователей исчисляется миллиардами), сохраняя при этом 92% отзыва. LinkedIn также использует выбор кандидатов FOF, и они сочетают его с дополнительными эвристиками, такими как выбор всех связей сотрудников.

Рейтинг. Мы можем ранжировать кандидатов PYMK (извлеченных на первом этапе) с помощью модели бинарной классификации, где ранг — это просто оценка самой модели: чем выше оценка, тем выше вероятность соединения. Во время обучения автономной модели мы можем научить модель прогнозировать существующие связи между пользователями. Затем во время вывода мы можем оценить всех кандидатов PYMK для пользователя и отобразить N лучших кандидатов из этого списка.

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

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

Наконец, какие показатели мы должны отслеживать, чтобы оценить производительность нашего конвейера PYMK? Для выбора кандидата нам нужно знать отзыв, такой как отзыв 92% для выбора FOF, упомянутого выше. Для классификатора мы хотим количественно оценить производительность модели, используя такую ​​метрику, как ROC-AUC или PR-AUC. После развертывания модели важной метрикой может быть коэффициент кликов (прокси для точности), а также покрытие PYMK, т. е. соотношение всех подключений, которые были результат PYMK (прокси для отзыва). «Идеальный» алгоритм PYMK будет предвидеть все новые соединения и, следовательно, обеспечивать 100% покрытие PYMK.

Соображения по обслуживанию моделей

Во время вывода мы хотим показать пользователю N лучших кандидатов PYMK, например, 10 лучших. Если пользователь выбирает или удаляет кандидатов из этого списка, мы хотим немедленно заполнить список из оставшегося пула кандидатов. .

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

Преимущество автономных вычислений заключается в низкой задержке, потому что во время обслуживания нам нужно только прочитать список кандидатов из базы данных, а не запускать модель ранжирования. Однако недостатком является то, что мы тратим вычислительные ресурсы впустую: например, если только 1% пользователей открывает свое приложение в определенный день, то 99% вычислительных ресурсов для расчета PYMK за этот день будут потрачены впустую. Инженеры LinkedIn сообщают, что широкие офлайн-вычисления стали для них очень дорогими, и поэтому они отказались от них.

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

Еще одним соображением является частота переобучения модели ранжирования PYMK. Как правило, более свежие модели работают лучше, чем устаревшие модели, потому что социальный граф динамичен, а не статичен: каждый день к нему добавляются новые пользователи, а также новые связи. Инженеры LinkedIn сообщают, что исторически их расчеты PYMK занимали пару дней и сохранялись на диск, а это означало, что рекомендации устарели на пару дней во время вывода. В небольшом POC они смогли показать, что рекомендации со свежими данными работают значительно лучше (один из самых больших приростов показателей как минимум за последние три или четыре года). Это открытие побудило их отказаться от Hadoop и создать Gaia, сервис, который позволяет им гораздо более эффективно запускать тяжелые алгоритмы на основе графов, такие как PYMK.

Подходы к переоценке

Проблема с описанным здесь подходом выбор кандидатов + ранжирование заключается в том, что этот подход оптимизирует глобальную производительность, но алгоритм может по-прежнему приводить к нежелательным результатам для определенных пользователей. Эти нежелательные результаты можно исправить с помощью переоценки, когда мы переоцениваем список PYMK в соответствии с определенными эвристическими правилами. Другими словами, повторное ранжирование — это временное исправление недоопределенной цели моделирования. Давайте рассмотрим два алгоритма реранжирования, которые используются в производстве в LinkedIn, — дисконтирование показов и реранжирование вовлеченности.

Скидка на показы. Одна из проблем алгоритма LinkedIn PYMK заключается в том, что пользователи с высокой степенью известности (например, влиятельные лица в отрасли) получают большое количество запросов на подключение. Я могу лично подтвердить это: я получаю сотни запросов на подключение к LinkedIn от людей, к которым я не имею абсолютно никакого отношения. Этот флуд запросов особенно проблематичен, если он скрывает запросы от людей, которых я действительно знаю и с которыми хотел бы связаться.

LinkedIn решает эту проблему с помощью так называемого «дисконтирования показов». Основная идея состоит в том, чтобы повторно ранжировать результаты PYMK на основе общего количества запросов, которые уже находятся на рассмотрении для показанного кандидата. Таким образом, вместо того, чтобы ранжировать PYMK по p, LinkedIn ранжирует их по чему-то вроде p/N, где p — это вероятность подключения (рассчитанная на основе оценки модели машинного обучения), а N — это количество незавершенных приглашений, которые уже есть у пользователя.

Работает ли скидка на показы? Выглядит это так: в A/B-тесте (о котором я рассказывал здесь) LinkedIn показал, что скидка на показы снижает количество перегруженных пользователей, т. е. пользователей, сообщающих, что они получают слишком много приглашений, на 50%.

Переоценка взаимодействия. Еще одна проблема с алгоритмом LinkedIn PYMK заключалась в том, что обучающие данные по определению смещены в пользу пользователей с высокой степенью вовлеченности (называемых постоянными участниками, FM) и против пользователей с низкой активностью (называемых нечастыми участниками, IM). . В результате список PYMK будет содержать намного больше FM, чем IM, создавая порочный круг для IM: низкая вовлеченность приводит к меньшему количеству запросов на подключение, что ведет к снижению вовлеченности и т. д.

Эта проблема может быть решена с помощью «переоценки взаимодействия»: после того, как у нас есть начальный список PYML, мы повышаем и понижаем ранг IM так, чтобы окончательный список, показанный пользователю, содержал 50% FM и 50% IM.

Используя A/B-тесты, LinkedIn показал, что переоценка вовлеченности увеличила количество приглашений, отправляемых мгновенным сообщениям, примерно на 5%. Интересно, что приглашения, отправленные в FM, не пропали: эти пользователи, возможно, были настолько популярны, что даже искусственное ранжирование их ниже в PYMK не изменило количество полученных ими запросов. Таким образом, в целом переоценка вовлеченности решила проблему, которую она должна была решить, а именно уменьшила предвзятость PYMK против IM.

Взгляд в будущее

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

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

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

Возможно, тогда будущее социальных сетей будет без явных связей и, следовательно, без алгоритмов PYMK.

Перед тем, как ты уйдешь…

Понравился этот контент? Найдите больше моих статей на моей странице профиля. Подпишитесь/подпишитесь на Medium, чтобы не пропустить новые посты, которые я напишу в будущем. Стань участником Medium, чтобы просматривать неограниченное количество статей. И не забудьте подписаться на меня в LinkedIn и/или Twitter!