ПримечаниеLLM: реализация большой языковой модели в системе рекомендаций Xiaohongshu.
ПримечаниеLLM: реализация большой языковой модели в системе рекомендаций Xiaohongshu.
автор | ‍Lukan ‍ аккуратный | NewBeeNLP https://zhuanlan.zhihu.com/p/698416915

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

  • NoteLLM: A Retrievable Large Language Model for Note Recommendation
  • https://arxiv.org/abs/2403.01744

фон

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

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

  1. Возможности представления BERT недостаточны. По сравнению с BERT, использование LLM с большим количеством параметров для генерации вложений может позволить изучить некоторую более длинную информацию. В то же время вложения, сгенерированные только с помощью BERT, могут представлять только семантическую информацию текста, которая является. несовместимо с целями последующих рекомендательных задач; несоответствие;
  2. Недостаточное использование информации о категории тегов。Изображение и текстпримечаниятеги и категории часто представляют его центральную идею,Решающее значение для определения того, связаны ли два примечания.,Однако существующий метод BERT рассматривает метки и категории только как неотъемлемую часть контента (фактически, когда BERT выполняет предварительное обучение, помимо задач MLM, также должны быть такие задачи, как метки/категории прогнозирования заголовков.,Этот аргумент кажется несостоятельным). Статья найдена,Процесс создания тегов и категорий с использованием контента примечания очень похож на создание встраивания примечания.,Все они посвящены ключевой информации примечания в ограниченном содержании.,поэтому Введение задачи создания меток и категорий может улучшить конечный результат.embeddingкачество。

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

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

  • Задача называетсяГенеративное контрастивное обучение(Generative-Contrastive Learning),Это задание перенесет содержимое примечания в специальный токен.,Вектор, сгенерированный с помощью этого токена, можно использовать в качестве текстового представления примечания. В этой задаче сигналы совместной фильтрации используются в рекомендациях в качестве меток для сравнительного обучения.,Сначала рассчитываются баллы совместной встречаемости всех пар примечаний.,Затем используйте примечания с высоким показателем совпадения, чтобы соединить примечания с высокой корреляцией.,как положительный образец,Отрицательные образцы внутри партии,Обучение с использованием контрастного обучения,За счет внедрения совместной фильтрации сигналов,Таким образом, окончательно сгенерированное внедрение может быть более подходящим для последующих рекомендательных задач.
  • Другая задача — сгенерировать теги и категории для примечаний, используя заголовок и содержание примечания.,называетсяСовместный контроль и тонкая настройка(Generative-Contrastive Learning),Эта задача может не только генерировать метки и категории.,в то же время,Потому что это похоже на процесс генерации вложений,Все они умеют извлекать ключевую информацию из текста.,поэтому,Введение этой задачи также улучшает встраивание примечания, созданное первой задачей.

Введение метода

Метод разделен на три части: построение входной подсказки и две предтренировочные задачи, используемые при обучении:

  • Примечание. Подсказка о расширениястроения
  • Генеративно-контрастное обучение
  • Совместная контролируемая точная настройка

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

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

Примечание. Подсказка о сжатии

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

Prompt: [BOS]<Instruction> <Input Note> The compression word is:"[EMB]". <Output Guidance> <Output>[EOS]

[BOS] представляет начало предложения, [EOS] представляет конец предложения, а [EMB] представляет токен, соответствующий окончательному текстовому представлению, которое будет выведено. Наконец, будет отображен скрытый вектор, соответствующий этому токену. через полностью связный слой для получения окончательного вектора представления.

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

<Instruction>: Extract the note information in json format, compress it into one word for recommendation, and generate the category of the note. <Input Note>: {’title’: , ’topic’: , ’content’: }. <Output Guidance>: The category is: <Output>:

Если он используется для генерации меток, то приглашение будет таким:

<Instruction>: Extract the note information in json format, compress it into one word for recommendation, and generate <j> topics of the note. <Input Note>: {’title’: , ’content’: }. <Output Guidance>: The <j> topics are: <Output>: <j> topics from

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

После завершения ввода конструкции подсказки скрытый вектор, окончательно выведенный специальным токеном [EMB], можно рассматривать как текстовое представление заметки, а соответствующие теги и категории также могут быть сгенерированы на основе содержимого заметки.

Генеративно-контрастное обучение

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

В частности, мы сначала подсчитываем, сколько раз каждый пользователь нажимает на ноту A, а затем нажимает на ноту B в течение одной недели, а затем рассчитывает показатель совместного появления в качестве сигнала для совместной фильтрации. Формула для расчета co. -оценка появления двух нот следующая:

s_{n_A\to n_B}=\sum_{i=1}^U\frac{1}{N_i}

Здесь U — количество пользователей,

N_i

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

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

Далее для каждой ноты используйте

[EMB]

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

n_i

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

n_i^+

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

n_j

, функция потерь использует Info-NCE контрастного обучения:

L_{cl}=-\frac{1}{2B}\sum_{i=1}^{2B}log\frac{e^{sim(n_{i},n_{i}^{+})\cdot e^{\tau}}}{\sum_{j\in[2B]\setminus{i}}e^{sim(n_{i},n_{j})\cdot e^{\tau}}}

При вычислении сходства используется косинусное сходство, sim(a,b)=a^\top b/(|a||b|)

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

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

Совместная контролируемая точная настройка

На самом деле эта задача представляет собой SFT, выполняющую задачи по созданию меток/категорий. Можно добавить слово «совместная работа», поскольку оно соответствует GCL, в котором ранее была введена совместная фильтрация сигналов. Почему в статье упоминаются две причины:

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

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

Потеря окончательной модели представляет собой сумму двух членов и выражается выражением

\alpha

В качестве суперпараметра контролируйте вес двух потерь:

L=\frac{L_{c l}+\alpha L_{g e n}}{1+\alpha}

Результаты эксперимента

Офлайн-эксперимент

Офлайн-эксперимент в основном сравнивается с онлайн-базой SentenceBERT и некоторыми другими методами генерации вложений текста с использованием больших моделей.,Используйте Recall@k в качестве индикатора оценки.,Эффект будет лучше,Вывод:NoteLLM>=Точная настройка другими методамиLLM>>BERTтонкая настройка>>LLM zero-shot

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

эксперимент по абляции

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

Онлайн-эксперимент

В статье говорилось, что после недели экспериментов с ab по сравнению с предыдущим базовым показателем SentenceBERT рейтинг кликов NoteLLM увеличился на 16,20%, количество комментариев увеличилось на 1,10%, а среднее количество еженедельных издателей (WAP) увеличилось на 0,41. %. Результаты показывают, что внедрение LLM в задачи рекомендаций i2i может улучшить производительность рекомендаций и удобство работы пользователей. Кроме того, наблюдался значительный рост на 3,58% количества комментариев к новым заметкам за один день. Это показывает, что внедрение LLM выгодно при холодном запуске. NoteLLM наконец-то полностью запущен в режиме онлайн.

Подвести итог

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose