Фон

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

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

В этом блоге в первую очередь рассказывается о том, как мы разрабатывали модели внедрения, как они реализуются и широко используются в различных приложениях, а также о некоторых проблемах, возникающих в ходе этого процесса. Мы суммируем эволюцию работы по трем разделам. В разделе 1 основное внимание уделяется использованию современных предварительно обученных моделей для быстрой оценки ценности моделей встраивания в качестве средств извлечения признаков. В разделе 2 описывается, как точно настроить встраивания с использованием немаркированных данных для определенных продуктов, тогда как в разделе 3 демонстрируется использование помеченных данных для точной настройки встраивания для лучшего прогнозирования задач. Эту работу ведет группа Knowledge Graph в Nextdoor — горизонтальная команда, которая работает в тесном сотрудничестве с командами машинного обучения по продуктам, а также командой платформы машинного обучения, которой принадлежит платформа обучения и обслуживания машинного обучения, а также сервис FeatureStore, поддерживающий модели машинного обучения в Nextdoor.

1. Использование предварительно обученных моделей

Первое поколение вложений создается на основе предварительно обученных языковых моделей с использованием парадигмы Sentence-BERT (https://www.sbert.net/). Известно, что SBERT обеспечивает лучшие представления встраивания по сравнению с исходными моделями BERT [1]. Основная цель здесь — быстро поэкспериментировать с встраиваниями как функциями и как можно быстрее реализовать их ценность в продукте. Текст из объектов контента, а именно. Сообщения и комментарии Nextdoor извлекаются из темы и текста сообщения, а также текста комментариев соответственно, которые затем передаются в многоязычную модель встраивания текста для получения соответствующих встраивания сущностей для всех стран, в которых работает Nextdoor. Для данного пользователя встраивания его исторических сообщений, с которыми они взаимодействовали. взвешиваются в зависимости от типа взаимодействия для информирования о внедрении пользователя (взаимодействия). Пример: активное взаимодействие, такое как создание публикации/комментарий/клик, будет иметь более высокий вес по сравнению с более пассивным взаимодействием, таким как показ. Эти сигналы агрегируются как онлайн (канал), так и оффлайн (электронная почта) продуктов, чтобы целостно представить внедрение пользователя, и ежедневно обновляются для всех пользователей на платформе.

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

2. Точные встраивания из неразмеченных данных.

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

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

Чтобы полностью уловить сигналы о намерениях пользователя, мы полагаемся на стратегию самоконтролируемого обучения для изучения точно настроенных представлений для любого конкретного запроса. В частности, мы сначала создали модель внедрения запросов на основе SBERT, которая учится встраивать поисковые запросы в пространство более низкой размерности. Затем мы агрегируем внедрения из пользовательских запросов в разных временных окнах (еженедельные/месячные/ежеквартальные периоды) для создания нескольких пользовательских (намеренных) внедрений. Та же модель также извлекает намерение сообщения для создания соответствующих вложений сообщения. Полученные в результате внедрения пользователей, сообщений и запросов преобразуются и наделяются функциями, как описано в следующем разделе, чтобы повысить производительность моделей ранжирования.

Модель внедрения запросов изначально создана для стимулирования контекстного расширения запросов в поисковом конвейере Nextdoor [2]. Эта модель преобразователя предложений обучена на исторических поисковых запросах, чтобы лучше изучить представления запросов. Сначала мы собрали журналы поиска, которые состояли из последовательностей поисковых запросов в рамках сеанса среди всех пользователей поиска за определенный период времени. Затем они предварительно обрабатываютсяс использованием традиционных методов НЛП, таких как лемматизация, проверка орфографии, дедупликация и т. д., для формирования чистого корпуса токенов, состоящего из n-грамм (n=1,2,3 ) и целые запросы. Чтобы создать набор обучающих данных, мы создали положительные пары токенов, встречающиеся в сеансе поиска пользователя, и отрицательные пары, случайно встречающиеся между сеансами. Контрастное обучение с потерей косинусного сходства используется для обучения базовой модели.

В случае расширения запроса эта модель позволила улучшить результаты контекстного поиска за счет выявления связанных кандидатов, улучшающих запоминаемость. Это помогло не только улучшить ключевые показатели поиска по контенту и поиску продуктов в разделе «Продажа и бесплатно», но и значительно снизить количество нулевых запросов по сравнению с предыдущими моделями внедрения слов. Мы также использовали HSNWlib[3],приблизительную библиотеку ближайших соседей для реализации этого расширения запросов на основе глубокого обучения, что еще больше снизило задержки расширения более чем в 10 раз. В сценариях использования уведомлений и лент функции намерений, созданные в результате преобразования вложений публикаций и пользователей, помогли добиться значительного положительного влияния на наши основные показатели вовлеченности. Хотя функции могут рассчитываться только для пользователей, осуществляющих поиск, и в целом они имеют низкий охват, этот явный сигнал оказывается очень полезным для улучшения общего опыта поиска.

3. Точные настройки на основе помеченных отзывов.

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

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

Эти модели Pytorch обучаются на миллионах записей с использованием экземпляров графического процессора SageMaker с различными гиперпараметрами, а модель с наилучшей производительностью в автономном режиме выбирается для создания и хранения точно настроенных внедрений в FeatureStore. Ранее описанный сценарий используется для создания и мониторинга автономных и онлайн-конвейеров функций. Использование этих кэшированных функций для последующих моделей показало многообещающий рост всех показателей взаимодействия (CTR/сеансы/вклады/DAU/WAU), сохраняя при этом нейтральные показатели, которые измеряют распространение вредоносного/вредного контента по платформе.

На следующем этапе мы напрямую передали в почтовую башню текст, извлеченный из почтового объекта, что позволило нам точно настроить параметры модели SBERT. Оценка AUC теста используется в качестве ориентира для определения того, сколько слоев и блоков преобразователей необходимо разморозить для опробования различных схем обучения, а также оптимизации гиперпараметров типичных моделей DNN. Лучшая модель также улучшила работу пользователя — посткосинусное сходство точно настроенных вложений до 16% по сравнению с соответствующими предварительно обученными версиями — дополнительный критерий оценки внутреннего качества улучшения представлений. Примечательно также, что такое улучшение качества достигается при уменьшении размерности более чем в 10 раз!

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

Использование вложений в моделях машинного обучения

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

Сначала мы создаем схему и объявляем группы функций, соответствующие каждому внедрению, для размещения в нашем собственном FeatureStore. Затем функции внедрения на основе контента загружаются в наш Featurestore практически в реальном времени с использованием заданий рабочих задач по мере их создания/обновления. Для пользователей ежедневные запланированные задания в Airflow вычисляют встраиваемые агрегаты на основе заранее заданных окон ретроспективного анализа, взвешиваются по различным типам взаимодействия и пакетно загружаются в Featurestore. После того, как системы настроены на прием всех соответствующих вложений с соответствующим TTL, мы затем пишем код регистрации для вычисления и регистрации производных функций, таких как косинусное сходство и скалярное произведение между пользователем и публикацией, пользователем и пользователем. В частности, в ленте эти функции будут отражать сходство между публикацией и зрителем, зрителем и автором и, аналогично, между публикацией и получателем, отправителем и получателем в мире уведомлений. Аналогичным образом мы также вычисляем сходство между объектами комментариев, чтобы определить рейтинг на основе активности в ленте новостей. Данные, полученные в результате регистрации функций, используются для обучения последующих моделей ранжирования ML, чтобы избежать перекосов онлайн-офлайн, а модель с лучшим ростом производительности в автономном режиме за счет новых функций продвигается для оценки онлайн-тестов AB и дальнейшего повышения уровня опыта большинства участников.

Вызовы и будущее

Встраивание нескольких сущностей, таких как пользователь, публикация, комментарий, запрос и т. д., было успешно интегрировано в различные поверхности продуктов Nextdoor в больших масштабах. В прошлом модели, основанные на встраивании комментариев, помогали стимулировать и развивать более доброжелательные разговоры для улучшения показателей жизнеспособности платформы [4]. Совсем недавно с использованием BERTopic [5] также были разработаны встраивания контекстных тем для достижения более грубого уровня персонализации контента для соседей, одновременно информируя нас о распространенности категорий и типов контента на платформе. Мы также экспериментируем с встраиванием изображений с помощью CLIP [6] для использования информации изображения/видео, лежащей в основе контента.

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

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

Благодарности

Эта работа была бы невозможна без тесного сотрудничества и сотрудничества с различными партнерами по продуктам ML (уведомления/каналы/поиск/жизненность), а также значительной поддержки платформы ML и службы FeatureStore со стороны команды ML Platform. Я хотел бы воспользоваться этой возможностью, чтобы выразить огромную благодарность всем преданным людям из Nextdoor из этих команд, стоящим за этим начинанием.

Nextdoor строит самую большую в мире систему местных знаний (LKG). Граф местных знаний, унаследованный от наших районов, представляет собой уникальные собственные данные Nextdoor, которые можно использовать для обеспечения персонализированного опыта соседей и соседей. Команда Knowledge Graph сосредоточена на понимании соседей и контента путем создания стандартизированных данных о соседях/контенте с использованием современных методов машинного обучения.

Сторонние модели больших языков (LLM), такие как GPT, и соответствующие диалоговые приложения, такие как ChatGPT, построенные на этих языковых моделях, не имеют доступа к конкретным местным знаниям Nextdoor. В результате они не могут предлагать нашим пользователям услуги на основе определения местоположения, как мы того хотим. Для нас крайне важно разработать собственные программы LLM, которые используют наши уникальные графики местных знаний. Мы создаем наши собственные большие языковые модели (LLM), основанные на необработанном контенте Nextdoor и структурированном графе знаний для поддержки нескольких продуктов.

Если вам интересно узнать больше, свяжитесь с нами — мы набираем сотрудников!

Рекомендации

  1. Sentence-BERT: встраивание предложений с использованием сиамских BERT-сетей
  2. https://engblog.nextdoor.com/modernizing-our-search-stack-6a56ab87db4e
  3. https://github.com/nmslib/hnswlib
  4. https://engblog.nextdoor.com/using-predictive-technology-to-foster-constructive-conversations-4af437942bd4
  5. https://maartengr.github.io/BERTopic/api/bertopic.html
  6. https://openai.com/research/clip