Как машинное обучение влияет на содержание социальных сетей?

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

Использование таких алгоритмов в проектах социального контента и о принципах формирования команды стало еще более важным в их развитии.

Немного предыстории

Краткое вступление: FunCorp, разрабатывает и управляет сервисами пользовательского контента для различных географических и аудиторных ниш, в наш пул проектов входят мобильные приложения iFunny, iDaPrikol, America's Best Pics, and Videos и WHLSM на общую сумму ежемесячная аудитория составляет более 12 миллионов пользователей, а общая база установщиков приближается к 100 миллионам. Мы перешли от временных каналов, где контент отображался просто в том порядке, в котором он был загружен, к полной персонализации с короткой остановкой для совместной фильтрации при отсутствии социального графа пользователя для формирования исходного канала и интересов.

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

За девять лет существования нашей компании было несколько подходов к этой задаче.

Вначале мы попробовали очевидный способ отсортировать ленту по количеству смайлов (аналог лайков) - Рейтинг улыбок.

Пример: 1 млн просмотров и 109 тыс. улыбок, доля улыбок = 11%

Это было лучше, чем сортировка в хронологическом порядке. Всем нравится редкий юмор, и всегда найдутся те, кого не интересуют (а иногда и раздражают) популярные сегодня темы. Самое главное, юмор - вещь очень субъективная, а мемы всегда славились своей сатиричностью и остротой, поэтому необходимо четко понимать, какой пользователь на какой конкретный контент реагирует с негодованием, скукой и смехом, а также в конец смешнее - фид - тем выше показатель удержания и время жизни пользователя. Фактически к 2016–2017 годам это правило распространилось абсолютно на все контент-проекты. Это было ключом к успеху многих из них. Простота использования и актуальность - два основных фактора успеха контент-проекта.

Следующий шаг логически вытекает из первого.

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

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

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

Особенности задачи

Около 85% контента, распространяемого сегодня в социальных сетях, имеет форму мемов. Мемы - это довольно специфический контент. Давайте посмотрим на некоторые особенности необходимых задач:

  • Он полностью зависит от быстро меняющихся тенденций. Материал и форма, которые были на вершине и вызывали у 80% аудитории улыбку неделю назад, могут быть рассержены только тем, что устарели и показаны во второй раз.
  • Это очень нелинейная и ситуативная интерпретация значения мема. В сборе новостей ведущими могут быть известные фамилии, темы, которые довольно стабильно поражают конкретного пользователя. При выборе фильмов дело может быть в актерском составе, жанре и многом другом. Да, все это может быть лидером для сбора личных мемов. Но как обидно будет пропустить настоящий шедевр юмора, в котором саркастически используются образы или лексика, не лежащие в семантическом содержании!
  • Наконец, существует значительный объем динамически генерируемого контента. На iFunny пользователи создают сотни тысяч сообщений каждый день. Весь этот контент нужно анализировать и оценивать как можно быстрее. В случае персонализированной системы рекомендаций необходимо не только находить «бриллианты», но и прогнозировать рейтинг контента различными представителями общества.

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

Еще одна трудность - необходимость следовать протоколу A / B-теста. Мы никогда ничего не реализуем без предварительной проверки с частью пользователей, сравнения результатов с контрольной группой, и мы рекомендуем всем разрабатывать продукт таким образом.

После долгих размышлений было решено запустить MVP со следующими характеристиками: мы используем только информацию о взаимодействии пользователя с контентом, модель обучается в реальном времени прямо на сервере, оборудованном достаточным объемом памяти, что позволяет хранить вся история взаимодействия пользователей из тестовой группы за достаточно долгое время. Мы решили ограничить время обучения 15–20 минутами, чтобы сохранить эффект новизны и иметь время использовать последние данные от пользователей, посещающих приложение, сразу во время выпуска контента.

Модель

Во-первых, мы начали работать с наиболее совершенной совместной фильтрацией с разложением матриц и обучением на ALS (альтернативный метод наименьших квадратов) или SGD (стохастический градиентный спуск). Но вскоре мы подумали: почему бы не начать сразу с самой простой нейронной сети? С простой однослойной сеткой и только одним линейным встраиваемым слоем. Без добавления скрытых слоев, чтобы не похоронить себя неделями выбора его гиперпараметров. Немного выше MVP? Может быть. Но обучить такую ​​сеть вряд ли сложнее, чем более классическую архитектуру, если есть оборудование с хорошим GPU (за это приходилось платить).

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

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

В обучающую выборку попали все факты просмотров контента пользователями.

  • Для получения положительных отзывов о контенте, отличном от смайлов / лайков, также было решено рассмотреть возможность нажатия на кнопки «поделиться» или «сохранить» и написания комментария.
  • Если есть взаимодействие, оно помечается как «1».
  • Если после просмотра пользователь не оставил положительный отзыв, общению присваивается оценка «0».

Таким образом, даже при отсутствии точной шкалы оценок, явная модель (модель с явной оценкой от пользователя) используется вместо неявной, которая будет предпринимать только решительные действия.

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

Разница между нейронной матричной факторизацией и стандартной нейронной совместной фильтрацией заключается в так называемом уровне пула двойного взаимодействия, а не в обычном полносвязном слое, который будет связывать встраиваемые векторы пользователя и контента. Слой Bi-Interaction преобразует набор векторов внедрения (в iFunny всего два вектора - пользователя и материала) в один вектор путем их поэлементного умножения.

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

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

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

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

В результате пользователи видят изображения и видео, которые, по мнению модели, им больше нравятся.

Тестирование новых моделей

Работа с серверами и данными ведется вручную. Для каждой новой модели нужен сервер, на который потом можно будет копировать данные, необходимые для работы (например, из ClickHouse) или модели.

Данные о событиях в фиде «Интересное» (основной фид контента наших продуктов) начинают отправляться в сервис вместе с передачей данных на управляющие серверы. Затем с помощью эксперимента A / B их рекомендации по возврату взяты из нового предприятия. В случае возникновения проблем можно отключить работу и вернуться к рекомендациям по контролю.

Результаты

Сервис ML Content Rate - это результат большого количества мелких улучшений и корректировок.

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

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

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

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

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