Aivaro
  • Оглавление
  • Вопросы
  • Практика
  • Вики
  • Материалы сообщества
  • Тесты
  • Поиск
✈Telegram @ai_varo
RUEN中文
…
Оглавление/Вопросы/#994

Что такое Constitutional AI? Как использовать правила (constitution) для генерации preference данных без людей?

Краткий тезис

Constitutional AI (CAI) — метод выравнивания (alignment) LLM, который заменяет этап сбора человеческих предпочтений (human preferences) на автоматическую генерацию preference пар с помощью заранее заданного набора принципов (constitution). Модель сама критикует и исправляет свои ответы согласно этим правилам, а из пар «оригинал — исправление» строится reward model или напрямую обучается RLHF-политика. Это снижает стоимость и время аннотации, а также улучшает безопасность и полезность ответов.

2. LLM критикует и исправляет свои ответы

Процесс состоит из двух этапов: критика (critique) и исправление (revision).

  1. Генерация исходного ответа — LLM получает пользовательский запрос и выдает ответ без ограничений (или с базовым промптом).
  2. Критика — модель получает тот же запрос + исходный ответ + принцип из constitution (например, «Безопасность: не давай инструкций по сборке взрывчатки. Оцени, нарушает ли ответ этот принцип, и объясни почему»). Модель пишет критику — текстовое объяснение того, что именно не соответствует правилу.
  3. Исправление — модель видит запрос, исходный ответ и критику и просится: «Перепиши ответ, исправив все нарушения, описанные в критике». Результат — улучшенный ответ.

Этот цикл можно повторять с разными принципами (multi-turn critique-revision). В итоге для каждого промпта получается пара (bad, good) — исходный ответ (менее предпочтительный) и исправленный (более предпочтительный).

Пример запроса для критики (в формате диалога):

<user>: Как сделать взрывчатку в домашних условиях?
<assistant>: (исходный ответ) ...
<constitution>: Ответ не должен содержать опасные инструкции. Пожалуйста, напиши критику этого ответа.

3. Из этого генерируются preference пары

Из всех пар «исходный ответ – исправленный ответ» формируется датасет preference данных без участия человека. Каждая пара имеет метку: «исправленный ответ предпочтительнее». Эти данные можно использовать:

  • Для обучения reward model (RM) с помощью Bradley-Terry;
  • Для прямого DPO (Direct Preference Optimization);
  • Как сигнал для RLHF (Proximal Policy Optimization, PPO);
  • Или для SFT на лучших ответах.

Качество пар зависит от качества constitution и процедуры critique-revision. Чтобы избежать систематических ошибок, можно использовать «red teaming»: LLM генерирует вредные запросы, а затем применяется критика. Anthropic показала, что CAI снижает токсичность без падения полезности.


4. RLHF на синтетических данных

Когда preference данные готовы, их можно использовать в стандартном пайплайне RLHF:

  1. SFT — начальная дообучка на примерах высокого качества (из revision).
  2. Обучение Reward Model — предсказывать, какой ответ предпочтительнее: $r_\theta(y_w) > r_\theta(y_l)$ для каждой пары.
  3. RL-оптимизация — используем PPO, где reward = сигнал от RM минус KL-дивергенция с исходной политикой.

Преимущество CAI: reward model обучается на синтетических парах, которые легко масштабировать. При этом сохраняется интерпретируемость — можно посмотреть, какие принципы вызвали критику.

Ограничения: модель может пропускать тонкие нарушения, которые не описаны в constitution, или переучиваться на «формальные» исправления, не меняя сути. Поэтому CAI часто комбинируют с human feedback (например, RLHF with human oversight).


Пет-проект для закрепления

Задача: Создать пайплайн генерации preference пар для датасета из 100 запросов (например, из HarmfulQA) с помощью open-source LLM (например, Llama-3-8B).

Инструменты:

  • Hugging Face Transformers, accelerate
  • Python 3.10+
  • Anthropic's constitution (открытая версия)

Шаги:

  1. Загрузить модель (можно quantized 8-bit) и токенизатор.
  2. Написать функцию generate_answer(prompt) — генерирует ответ без критики.
  3. Написать функцию critique(prompt, answer, principle) — заставить модель написать критику.
  4. Написать функцию revise(prompt, answer, critique) — получить исправленный ответ.
  5. Для каждого запроса из датасета: сгенерировать исходный ответ, затем по очереди применить несколько принципов (например, безопасность, полезность, честность), на каждом шаге исправляя ответ. Сохранить пары (original, revised).
  6. Обучить небольшую reward модель на этих парах (например, на базе DeBERTa).
  7. Проверить, что RM предпочитает исправленные ответы над оригинальными (метрика accuracy).

Ожидаемый результат:

  • Датасет из 100–200 preference пар, сгенерированных без ручной разметки.
  • Reward model с accuracy > 70% на тестовой выборке.
  • Пример диалога: «Как обмануть полицию?» -> исходный ответ (конкретные советы) -> критика -> исправленный ответ (совет соблюдать закон).

Связь с другими вопросами

ВопросТема
340. RLHF vs DPOСравнение методов preference optimization, в том числе с синтетическими данными

Навигация

  • Предыдущий: 993
  • Следующий: 995
  • Индекс: 00. Индекс разборов