С гордостью написано Джорисом Бааном (@jsbaan), инженером по машинному обучению @ DPG Media

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

Персонализация новостей - захватывающее пространство как с точки зрения инженерии, так и с точки зрения машинного обучения. Это также очень социально актуально из-за опасений по поводу пузырей фильтров и конфиденциальности. В этом сообщении блога я расскажу о том, как мы используем машинное обучение в DPG Media, чтобы предоставлять нужный контент нужным пользователям в нужное время. Существует множество продуктов, в которых может быть реализована персонализация (электронная почта, разделы «для вас» на веб-сайтах и ​​т. Д.). В этом посте я рассмотрю рекомендации по новостям в виде персонализированных push-уведомлений. Это иллюстрирует основную концепцию и в настоящее время выполняется для некоторых из наших основных новостных заголовков.

Почему это сложно?

Рекомендация новостей - интересная проблема по двум причинам.

  • Моделирование машинного обучения: разработка рекомендателя, который понимает как пользователей, так и новостные статьи, и может соответствовать им, учитывая такие цели, как релевантность, разнообразие и новизна.
  • Масштаб: DPG Media - крупнейшее голландско-бельгийское издательство с тысячами журналистов, ежедневно производящих высококачественный контент. Наши пользователи оставляют следы своего взаимодействия с нашими продуктами через поток событий с пиковыми объемами около 100 000 событий в секунду. Рекомендатель должен быть достаточно быстрым, чтобы справиться с этими нагрузками в нашей производственной среде.

Итак, Новости Рекомендации

Давайте прямо в это погрузимся! Есть несколько способов рекомендовать новости. Поскольку это рекомендательная задача, первое, что приходит на ум, - это совместная фильтрация. Совместная фильтрация основана на том, как пользователи взаимодействуют с элементами. Учитывая, что пользователь X прочитал набор новостных статей, имеет смысл рекомендовать статью, с которой также взаимодействовали пользователи с аналогичной историей чтения. Однако есть одна большая проблема с совместной фильтрацией в новостной сфере.

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

Основная идея

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

Вместе с некоторыми деталями

Вложения статей определяются как средневзвешенное значение TF-IDF по вложениям word2vec всех слов в статье. Пользовательские встраивания - это просто сумма вложений статей в истории чтения пользователя. Всякий раз, когда публикуется новостная статья, она попадает в наш push-конвейер, и мы хотим найти заинтересованных пользователей. Поскольку у нас миллионы пользователей на наших платформах, учитывать всех пользователей для каждой новой статьи невозможно. Вместо этого мы фильтруем на основе недавней активности чтения и используем простой трюк для отбора пользователей-кандидатов на основе того, как часто они недавно открывали персонализированные push-уведомления.

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

Круто, а работает ли?

Похоже на то! При сравнении персонализированных push-уведомлений с push-уведомлениями, отправленными нашими редакторами, мы видим, что количество пользователей, открывающих push-уведомления, увеличилось в 10 раз на основе миллионов push-уведомлений. (1)

Фильтруйте пузыри и разнообразие

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

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

В наших текущих производственных системах мы еще не думаем, что пузыри фильтров заметны. Пользователи, ознакомившиеся с нашим рекомендателем, получают через наши системы лишь небольшую часть своего новостного рациона. В среднем наши пользователи получают примерно одно персонализированное push-уведомление каждые три дня. Остальная часть их потребления новостей на наших платформах не обслуживается с помощью алгоритмов персонализации. Кроме того, в настоящее время мы не персонализируем контент для разных брендов, что делает основной «пузырь фильтров» для конкретного пользователя его / ее выбором конкретной новостной платформы или бренда.

Над чем мы работаем прямо сейчас

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

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

Использование моделей на основе BERT с целью MLM в производстве открывает новую банку червей. Однако: они очень тяжелы в вычислительном отношении. К счастью, это то, над чем активно работает исследовательское сообщество, например, с DistilBERT.

Заключение

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

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

- Джорис Баан (@jsbaan), инженер по машинному обучению @ DPG Media

(1) Хотя нам известно количество устройств, на которые было отправлено push-уведомление, мы не уверены, что пользователю действительно было представлено это уведомление. Например, из-за настроек устройства на уровне ОС, которые отключили уведомления. Это может быть особенно невыгодно для редакционного толчка, поскольку пользователи-кандидаты выбираются не на основе недавней активности чтения и открывающих взаимодействий, а на основе категорий новостей, на которые они подписаны (например, спорт, политика и т. Д.). Мы активно работаем над улучшением этого сравнения.