3,583 papers
arXiv:2511.10215 78 13 нояб. 2025 г. FREE

PAL Framework: двухэтапное обучение персонализации через явное выравнивание с персоной

КЛЮЧЕВАЯ СУТЬ
Даёшь LLM 5 фактов о себе в промпте — она генерирует ответ как будто не знает ни одного. Размазывает общие слова вместо персонализированного ответа. Проблема: модель не умеет неявно фильтровать что важно, а что нет — PAL Framework превращает фильтрацию в явный двухшаговый процесс. Сначала модель выбирает релевантные факты из списка, потом генерирует ответ с учётом только выбранных. Consistency Score (насколько ответ соответствует персоне) с 0.6-0.7 до 0.9-0.98 — модель перестаёт теряться в информационном шуме.
Адаптировать под запрос

TL;DR

PAL (Persona-Aware Alignment) — фреймворк обучения диалоговых моделей, который превращает персонализацию в прямую цель обучения на уровне целого ответа, а не отдельных токенов. Ключевая идея: сначала модель учат явно выбирать релевантную персону из нескольких, потом генерировать с учётом выбранного. Обучение идёт в два этапа через специальные промпты, которые объединяют задачи выбора и генерации в единый формат.

Обычные модели обучают через предсказание следующего токена — это даёт грамматически правильный текст, но игнорирует персонализацию. Модель видит несколько описаний персоны (например: "я юрист", "работаю много", "люблю спорт", "живу в городе") и контекст диалога, но не понимает какое из описаний сейчас важно. Результат — общие ответы типа "Я смотрю разные передачи" вместо персонализированных "Не смотрю ТВ, я юрист и много работаю". Шум от нерелевантных персон мешает генерации.

PAL решает это через два этапа обучения: Persona-aware Learning объединяет две задачи в промпте (выбор релевантной персоны + генерация ответа), а Persona Alignment учит модель через сравнение пар ответов — с персоной (из датасета) vs без персоны (сгенерированные). На инференсе используется стратегия Select then Generate: сначала промпт для выбора релевантной персоны, потом промпт для генерации с выбранной персоной.

🔬

Схема метода

ОБУЧЕНИЕ (два этапа, требуют fine-tuning):

Этап 1 — Persona-aware Learning:

Задача 1 (выбор): [персоны + диалог] → выбранная персона
Задача 2 (генерация): [персоны + диалог] → ответ
→ объединены в единый промпт, обучение через Next Token Prediction

Этап 2 — Persona Alignment:

Конструктор пар: золотой ответ (с персоной) vs сгенерированный (без персоны)
→ DPO обучение: золотой ответ должен иметь выше score

ИНФЕРЕНС (применимо в чате):

Select then Generate стратегия:

Запрос 1: Выбери релевантную персону из списка под диалог → персона
Запрос 2: Сгенерируй ответ с учётом выбранной персоны → финальный ответ
🚀

Пример применения

Задача: Ты ведёшь карьерную консультацию для подписчика своего Telegram-канала. У тебя богатый бэкграунд: был техническим директором в стартапе, прошёл через банкротство, построил продуктовую компанию с нуля, работал с enterprise-клиентами, растил удалённую команду. Пришёл вопрос: "Думаю уйти из большой компании и попробовать себя в стартапе. Стоит ли рисковать стабильностью?"

Промпт (Select then Generate):

Шаг 1 — Выбор релевантного опыта:

У меня несколько граней опыта:
1. Был техническим директором в раннем стартапе
2. Прошёл через банкротство компании
3. Построил продуктовую компанию с нуля
4. Работал с крупными enterprise-клиентами
5. Растил удалённую распределённую команду

Вопрос подписчика: "Думаю уйти из большой компании и попробовать себя в стартапе. Стоит ли рисковать стабильностью?"

Какие грани моего опыта наиболее релевантны для этого вопроса? Выбери 1-2 самые важные.

Шаг 2 — Генерация ответа:

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

Вопрос: "Думаю уйти из большой компании и попробовать себя в стартапе. Стоит ли рисковать стабильностью?"

Напиши персонализированный ответ (2-3 абзаца).

Результат:

Модель сначала выберет релевантные грани (скорее всего, опыт в раннем стартапе + банкротство — прямо по теме риска). Затем сгенерирует ответ, который конкретно опирается на выбранный опыт, а не размазывает общие слова про все аспекты карьеры. Вместо "У меня разный опыт, всё зависит от ситуации" получится фокусированный ответ с конкретными инсайтами из пережитого.

🧠

Почему это работает

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

Сильная сторона: LLM отлично выполняет явные структурированные инструкции. Если разбить задачу на шаги (сначала выбери, потом используй выбранное), модель справляется намного лучше, чем с неявной фильтрацией "в голове" во время генерации.

Механика метода: PAL превращает неявную фильтрацию в явную двухшаговую задачу. На этапе обучения модель видит примеры правильного выбора релевантной персоны и правильной генерации с её учётом — это прямой сигнал что именно делать. DPO усиливает это через сравнение: ответы с использованием персоны получают выше score, чем общие ответы без персоны.

Рычаги управления в Select then Generate:

  • Количество выбираемых персон — "выбери 1" даёт фокус, "выбери 2-3" даёт контекст. Для сложных вопросов можно брать больше.
  • Критерий выбора — можно добавить "выбери ту персону, которая даст наиболее полезный инсайт" вместо просто "релевантную".
  • Формат выбора — можно просить не только выбрать, но и объяснить почему, это даст модели явный Chain-of-Thought.
  • Связь между шагами — можно объединить в один промпт с явными тегами ... и ....
📋

Шаблон промпта

Для применения в чате (Select then Generate):

### ШАГ 1: Выбор релевантной информации

У меня есть следующие характеристики/опыт/ценности:
{список_характеристик}

Контекст ситуации: {описание_контекста}

Какие характеристики наиболее релевантны для этой ситуации? Выбери самые важные и объясни почему.

---

### ШАГ 2: Генерация с учётом выбранного

Используя выбранные характеристики: {вставить_вывод_шага_1}

{твоя_задача_генерации}

Убедись, что ответ явно отражает выбранные характеристики, а не общие рассуждения.

Что подставлять: - {список_характеристик} — несколько описаний, из которых нужно выбрать (персоны, роли, ценности, опыт) - {описание_контекста} — диалог, вопрос или ситуация, под которую нужна персонализация - {твоя_задача_генерации} — что конкретно нужно сгенерировать (ответ, пост, рекомендация)

📌

Почему двухшаговый подход лучше

Исследование показало, что явное разделение на выбор и генерацию даёт значительно лучшие результаты персонализации, чем:

  1. Простой промпт "учитывай все персоны" — модель теряется в информационном шуме, генерирует общие ответы
  2. Few-shot примеры — помогают, но не решают проблему фильтрации нерелевантного
  3. Fine-tuning на персонализированных диалогах — улучшает качество, но модель всё равно не учится явно выбирать

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

Практический эффект: В экспериментах PAL показал улучшение Consistency Score (насколько ответ соответствует персоне) с ~0.6-0.7 до ~0.9-0.98 по сравнению с baseline методами. Особенно сильный эффект на больших моделях (Llama 3.1 8B).

⚠️

Ограничения

⚠️ Требует двух запросов: Стратегия Select then Generate удваивает количество запросов к модели — сначала выбор, потом генерация. Для API с оплатой за запрос это увеличивает стоимость.

⚠️ Зависимость от качества выбора: Если модель на первом шаге выбрала неправильную характеристику, весь результат будет не оптимален. Нет механизма самокоррекции между шагами.

⚠️ Работает когда есть из чего выбирать: Метод показывает преимущество при наличии нескольких (3-5+) характеристик с разной релевантностью. Если характеристика одна или все одинаково релевантны — двухшаговость избыточна.

⚠️ Полное обучение требует fine-tuning: Два этапа обучения (Persona-aware Learning + Persona Alignment через DPO) требуют технической инфраструктуры. В чате можно применить только принцип Select then Generate, но без специального обучения эффект будет слабее.

🔍

Как исследовали

Команда проверила фреймворк на двух датасетах персонализированных диалогов: английский PERSONA-CHAT (~65K диалогов) и китайский Baidu-Persona-Chat (~353K диалогов). Каждый диалог включает 4-5 описаний персоны пользователя, из которых обычно только одно релевантно текущему контексту.

Эксперименты проводили на трёх базовых моделях разного масштаба: GPT-2 (малая), DialoGPT (средняя, оптимизирована для диалогов) и Llama 3.1 8B (большая). PAL сравнивали с несколькими baseline подходами: обычный fine-tuning, few-shot промптинг, prompt tuning, а также с SOTA методами (SimOAP, SPT) и коммерческими моделями (GPT-3.5, GPT-4o mini, Gemini Flash).

Почему результаты такие яркие: На малых моделях (GPT-2, DialoGPT) PAL улучшил Consistency Score (насколько ответ соответствует персоне) примерно в 1.5-2 раза по сравнению с обычным fine-tuning. Но самый драматичный эффект — на Llama 3.1 8B: прыжок с 0.61-0.77 (few-shot/промптинг) до 0.91-0.98 с PAL. Это показывает, что большие модели особенно выигрывают от явной структуры выбора.

Неожиданная находка: Коммерческие модели (GPT-3.5, GPT-4o mini, Gemini) в режиме few-shot показали высокий Consistency Score (0.80-0.88), но провалились по overlap метрикам (BLEU, ROUGE) — то есть генерировали персонализированные ответы, но совсем не те слова, что в референсах. PAL на Llama 3.1 обогнал их по обеим группам метрик одновременно.

Ключевой инсайт для практики: Явное разделение задачи на выбор релевантной информации + генерацию с её учётом даёт кратно лучший результат, чем попытка "учитывай всё сразу". Это универсальный принцип, применимый не только к персонам в диалогах, но к любой задаче с множественным контекстом (несколько документов, много правил, разные роли).

📌

Адаптация принципа

🔧 Техника: Объединение шагов в один промпт → экономия запросов

Вместо двух отдельных запросов можно объединить Select then Generate в один структурированный промпт с явными секциями:

Задача: {описание}

## Шаг 1: Анализ и выбор
Доступная информация:
{список_характеристик}

Контекст: {ситуация}

Определи, какая информация релевантна. Выведи в формате:
ВЫБРАНО: [1-2 самые релевантные характеристики]
ОБОСНОВАНИЕ: [почему именно они]

## Шаг 2: Генерация
Используя ТОЛЬКО выбранную информацию выше, {задача_генерации}.

Важно: не добавляй информацию из невыбранных характеристик.

Это сохраняет логику метода (явное разделение), но работает в одном запросе. Модель видит структуру и следует ей последовательно.


🔧 Техника: Инверсия — сначала генерация, потом проверка → самокоррекция

Обратный порядок: сначала генерируем, потом проверяем соответствие персоне и корректируем:

1. Сгенерируй ответ на: {вопрос}
   Учитывай этот контекст: {характеристики}

2. Проверь свой ответ: какие характеристики из контекста ты реально использовал?

3. Если использовал нерелевантные или не использовал важные — перепиши ответ, 
   опираясь только на релевантные характеристики.

Это добавляет рефлексию к процессу, но требует 3 шага вместо 2.


🔧 Техника: Мультиперсона для противоречивых характеристик → критическое мышление

Если характеристики могут противоречить друг другу (например, "быстрые результаты" vs "качество превыше всего"), используй конфликт явно:

У меня два принципа, которые иногда конфликтуют:
A: {принцип_1}
B: {принцип_2}

Ситуация: {описание}

1. Какой принцип более применим здесь? Или нужен баланс?
2. Если есть конфликт между принципами в этой ситуации — опиши его явно
3. Дай рекомендацию, учитывая выбранный приоритет или найденный баланс

Это превращает выбор персоны в разрешение противоречия, что даёт более нюансированный результат.

🔗

Ресурсы

Persona-Aware Alignment Framework for Personalized Dialogue Generation

Авторы: Guanrong Li, Xinyu Liu, Zhen Wu, Xinyu Dai

Организация: National Key Laboratory for Novel Software Technology, Nanjing University

Связанные техники, упомянутые в исследовании: - Direct Preference Optimization (DPO) — метод обучения через сравнение пар ответов - Prompt Tuning — адаптация модели через trainable промпты - Few-shot Prompting — использование примеров в промпте для направления генерации


📋 Дайджест исследования

Ключевая суть

Даёшь LLM 5 фактов о себе в промпте — она генерирует ответ как будто не знает ни одного. Размазывает общие слова вместо персонализированного ответа. Проблема: модель не умеет неявно фильтровать что важно, а что нет — PAL Framework превращает фильтрацию в явный двухшаговый процесс. Сначала модель выбирает релевантные факты из списка, потом генерирует ответ с учётом только выбранных. Consistency Score (насколько ответ соответствует персоне) с 0.6-0.7 до 0.9-0.98 — модель перестаёт теряться в информационном шуме.

Принцип работы

Вместо "учитывай все 5 фактов обо мне" делай два запроса. Шаг 1 (выбор): "У меня 5 фактов: [список]. Контекст: [вопрос]. Какие факты релевантны? Выбери 1-2 самых важных". Шаг 2 (генерация): "Используя выбранные факты: [вывод шага 1], ответь на вопрос: [вопрос]". Явное разделение на выбор и применение вместо неявной фильтрации "в голове" во время генерации. Модель перестаёт смешивать всё подряд — фокусируется только на выбранном.

Почему работает

LLM обучена через предсказание следующего токена — это даёт грамматически связный текст, но не учит фильтровать входную информацию. Когда в промпте 5 описаний персоны, а релевантно одно — модель не понимает какое именно важно. Результат: либо игнорирует все (общий ответ "Я смотрю разные передачи"), либо смешивает всё (непоследовательный ответ). Сильная сторона LLM: отлично выполняет явные структурированные инструкции. Разбиваешь на шаги (сначала выбери, потом используй) — модель справляется в разы лучше чем с неявной фильтрацией. Двухшаговость = прямой сигнал что делать на каждом этапе.

Когда применять

Карьерное консультирование → когда у тебя богатый разноплановый опыт (техдир, банкротство, продуктовая компания, enterprise), а вопрос касается одной грани. Персональные блоги и Telegram-каналы → у тебя несколько ролей (предприниматель, отец, спортсмен, инвестор), нужно отвечать подписчикам с учётом релевантной роли. Customer support → есть профиль клиента с 5-10 характеристиками, нужно персонализировать ответ под конкретную ситуацию. НЕ подходит: если характеристика одна или все одинаково релевантны — двухшаговость избыточна.

Мини-рецепт

1. Шаг выбора: Перечисли все характеристики (опыт, ценности, роли). Дай контекст (вопрос подписчика, ситуация клиента). Попроси: "Какие характеристики наиболее релевантны? Выбери 1-2 самые важные и объясни почему". Объяснение = Chain-of-Thought для модели.

2. Шаг генерации: Вставь вывод шага 1. Дай задачу: "Используя выбранные характеристики: [вывод шага 1], сгенерируй [твоя задача]". Добавь: "Убедись что ответ явно отражает выбранные характеристики, а не общие рассуждения".

3. Рычаги управления: Меняй количество выбираемых характеристик ("выбери 1" = фокус, "выбери 2-3" = контекст). Уточняй критерий: "выбери ту которая даст наиболее полезный инсайт" вместо просто "релевантную".

Примеры

[ПЛОХО] : У меня 5 граней опыта: [список всех]. Вопрос подписчика: "Стоит ли уходить из большой компании в стартап?". Напиши персонализированный ответ — модель теряется в информационном шуме, генерирует размазанный ответ про все грани сразу или вообще игнорирует опыт.
[ХОРОШО] : Шаг 1: У меня 5 граней опыта: 1) техдир в раннем стартапе, 2) банкротство, 3) продуктовая компания с нуля, 4) enterprise-клиенты, 5) удалённая команда. Вопрос: "Стоит ли уходить из большой компании в стартап?". Какие грани наиболее релевантны? Выбери 1-2 → модель выбирает "опыт в раннем стартапе" + "банкротство" (прямо про риск). Шаг 2: Используя выбранный опыт: [вывод шага 1], ответь на вопрос подписчика. Убедись что ответ отражает именно этот опыт → получаешь фокусированный ответ с конкретными инсайтами из пережитого, а не общие слова.
Источник: Persona-Aware Alignment Framework for Personalized Dialogue Generation
ArXiv ID: 2511.10215 | Сгенерировано: 2026-01-12 18:25

Концепты не выделены.

📖 Простыми словами

Проблема современных чат-ботов в том, что они — безликие болванчики. Ты прописываешь им в промпте: "ты адвокат из Оклахомы, который боится высоты", а они в ответ выдают стандартную вежливую кашу. Фундаментальная причина в том, как учатся LLM: они просто предсказывают следующее слово (Next Token Prediction). Модель старается быть грамматически правильной, но ей плевать на твою «личность», потому что для неё это просто белый шум в контексте. Она учится складывать буквы, а не проверять, соответствует ли ответ характеру персонажа.

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

Чтобы это починить, придумали метод PAL. Суть проста: хватит надеяться, что модель «сама поймет» персону из промпта — её нужно дрессировать напрямую. Сначала модель учат фильтровать мусор: из списка фактов о себе выбирать только тот, который нужен сейчас (Persona-aware Learning). Если тебя спрашивают про домашних животных, не надо орать, что ты боишься высоты. А затем в ход идет Persona Alignment (DPO): модели показывают два ответа — один нормальный, а другой «роботизированный» без признаков личности — и заставляют её выбирать первый. В итоге Llama 3.1 начинает попадать в образ в 90% случаев вместо жалких 60%.

Хотя гоняли это на чат-ботах, принцип универсален. Это работает везде, где нужно выдержать специфический Tone of Voice или узкую роль. Если ты хочешь, чтобы AI писал тексты как дерзкий маркетолог или дотошный юрист, обычного промпта мало. Нужно семантическое выравнивание. Исследование доказывает: SEO-подход к промптам не катит, нужно менять саму логику того, как модель выбирает «правильный» ответ из миллионов вариантов.

Короче: если тебе нужен бот с характером, забудь про «заклинания» в промптах — это пустая трата времени. Нужно брать модель и дообучать её через контрастные пары, чтобы она видела разницу между живым персонажем и унылым скриптом. Да, это требует GPU и файнтюнинга, но это единственный способ перестать генерировать картонные диалоги. Либо ты делаешь alignment, либо твой бот навсегда останется вежливым никем.

Сгенерировано: 21.12.2025 17:00 | ArXiv Data Collector

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с