中文翻译暂不可用,显示俄语原文。

Как работает извлечение знаний (knowledge editing) из LLM без переобучения?

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

Knowledge editing (редактирование знаний) — это методы точечного изменения фактов, хранящихся в весах LLM, без полного переобучения. Основные подходы, такие как ROME (Rank-One Model Editing) и MEMIT (Mass-Editing Memory in Transformer), модифицируют веса MLP-слоёв, отвечающих за хранение определённых знаний. Это позволяет исправить устаревшую или неверную информацию (например, «столица Франции — Париж» на «Берлин») за несколько секунд, сохраняя общую производительность модели.


1. Термин: Knowledge Editing (редактирование знаний)

Knowledge editing — это семейство методов, которые позволяют изменить конкретный факт, хранящийся в параметрах LLM, без переобучения на полном датасете. В отличие от fine-tuning, где модель дообучается на большом объёме данных, editing воздействует только на небольшое подмножество весов, отвечающих за целевое знание.

Зачем это нужно

  • Исправление устаревших или ошибочных фактов (например, «столица России — Санкт-Петербург» → «Москва»).
  • Удаление вредоносной или нежелательной информации.
  • Быстрое обновление знаний в динамических доменах (новости, законодательство).

Ключевая идея: В LLM знания хранятся в MLP-слоях (feed-forward слоях) в виде ассоциативных воспоминаний. Editing находит «ячейку памяти» (определённый нейрон или слой) и изменяет её веса так, чтобы выход модели для заданного контекста изменился предсказуемым образом.


2. Основные подходы к редактированию знаний

МетодТипОписание
Fine-tuningПолное переобучениеДорого, требует много данных, может привести к катастрофическому забыванию
Locate-Then-Edit (ROME, MEMIT)Точечное изменениеНаходит точное местоположение знания в весах и модифицирует его
Hypernetwork (KnowledgeEditor, CaliNET)Дополнительная сетьОбучается предсказывать обновления весов для заданного факта
In-context editingПромпт-инжинирингДобавляет исправление в контекст (например, «Забудь, что столица Франции — Париж, теперь это Берлин»)

Наиболее популярны Locate-Then-Edit методы, так как они не требуют дополнительных моделей и работают напрямую с весами.


3. ROME (Rank-One Model Editing)

ROME — метод, который изменяет веса MLP-слоя на ранг-1 матрицу, чтобы обновить конкретный факт. Основан на гипотезе, что знания хранятся в верхних MLP-слоях (обычно 17–20 в GPT-2) в виде линейных ассоциаций между ключом (контекст) и значением (факт).

3.1. Шаги ROME

  1. Локализация — найти слой и нейрон, ответственный за целевой факт. Используется causal tracing: зашумляются активации разных слоёв и смотрят, где падает уверенность модели в правильном факте.
  2. Вычисление обновления — для заданного факта (subject, relation, object) вычисляется ключ (key) — state|скрытое состояние на последнем токене subject. Затем находится значение (value) — желаемое state|скрытое состояние, которое приведёт к правильному object.
  3. Модификация весов — веса MLP-слоя обновляются по формуле:
    W_new = W_old + ΔW
    ΔW = (v - W_old * k) * k^T / (k^T * k)
    
    где k — ключ, v — желаемое значение. Это rank-one update, так как ΔW имеет ранг 1.

Пример:
Хотим изменить факт: «Столица Франции — Париж» на «Столица Франции — Берлин».

  • Subject: «Франция»
  • Relation: «столица»
  • Новый object: «Берлин»
    ROME находит слой, где активация для «Франция» кодирует знание о столице, и корректирует веса так, чтобы при вопросе «Столица Франции — ...» модель выдавала «Берлин».

4. MEMIT (Mass-Editing Memory in Transformer)

MEMIT — расширение ROME, позволяющее редактировать множество фактов одновременно (до тысяч) без взаимных помех. В отличие от ROME, MEMIT модифицирует несколько слоёв (обычно 5–10), распределяя изменение по ним, чтобы сохранить старые знания.

4.1. Как MEMIT отличается от ROME

ХарактеристикаROMEMEMIT
Количество редактируемых фактов1 за разМного (до 10 000)
Число изменяемых слоёв1Несколько (5–10)
Риск перезаписи соседних знанийВысокийНизкий (за счёт распределения)
Вычислительная сложностьНизкаяСредняя

Алгоритм MEMIT

  1. Для каждого факта вычисляется ключ и желаемое значение (как в ROME).
  2. Все обновления агрегируются в одно глобальное изменение весов, которое минимизирует суммарную ошибку по всем фактам.
  3. Изменение применяется к нескольким слоям, чтобы «размазать» эффект и избежать конфликтов.

5. Метрики оценки редактирования

После редактирования важно проверить, что:

  • Efficacy — модель выдаёт новый факт (например, «Берлин»).
  • Generalization — модель правильно отвечает на парафразы (например, «Какая столица Франции?»).
  • Specificity — модель не изменила ответы на несвязанные запросы (например, «Столица Германии?» должен остаться «Берлин»).
  • Locality — модель сохраняет знания о других фактах (например, «Население Франции» не должно измениться).
МетрикаОписаниеФормула (упрощённо)
EfficacyДоля успешных изменений#успешных / #попыток
GeneralizationДоля правильных ответов на парафразы#правильных парафразов / #парафразов
SpecificityДоля неизменённых ответов на несвязанные запросы#неизменённых / #несвязанных
LocalityСреднее изменение вероятности для случайных фактов1 - среднее изменение

6. Преимущества и ограничения

Преимущества

  • Скорость — редактирование занимает секунды, а не часы.
  • Точность — изменение затрагивает только целевой факт.
  • Не требует данных — достаточно одного примера (subject, object).

Ограничения

  • Масштабируемость — при большом числе правок (более 10 000) качество падает.
  • Не все знания можно отредактировать — некоторые факты «размазаны» по многим слоям.
  • Риск побочных эффектов — изменение может повлиять на смежные факты.
  • Зависимость от архитектуры — методы разработаны для трансформеров (GPT, LLaMA), для других архитектур могут не работать.

7. Knowledge Editing vs RAG

АспектKnowledge EditingRAG
Изменение знанийМеняет веса моделиДобавляет документы в контекст
Скорость обновленияСекундыМгновенно (индексация может быть долгой)
НадёжностьМожет нарушить другие знанияВсегда актуально, если документы корректны
ЗатратыОдин раз (изменение весов)Каждый запрос требует поиска и генерации
ПрименимостьДля стабильных, но ошибочных фактовДля динамических данных (новости, базы знаний)

Когда использовать editing

  • Нужно исправить единичный, но важный факт (например, ошибка в дате рождения известной личности).
  • Модель используется в офлайн-режиме, и нет возможности подключать внешние источники.

Когда использовать RAG

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

8. Пример реализации (псевдокод Python)

# Псевдокод для ROME с использованием библиотеки easy_edit
from easy_edit import ROME

model = load_model("gpt2-xl")
tokenizer = load_tokenizer("gpt2-xl")

editor = ROME(model, tokenizer)

# Редактируем факт: "Столица Франции — Берлин"
editor.edit(
    prompt="Столица Франции —",
    target_new="Берлин",
    subject="Франция"
)

# Проверка
print(model.generate("Столица Франции —"))  # Ожидаем "Берлин"
print(model.generate("Столица Германии —"))  # Ожидаем "Берлин" (не должно измениться)

Реальные библиотеки


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

Задача Создать сервис для исправления устаревших фактов в небольшой LLM (например, GPT-2) с помощью ROME.

Инструменты

  • Python, PyTorch, transformers
  • EasyEdit или оригинальный код ROME
  • Набор тестовых фактов (например, столицы стран)

Шаги:

  1. Загрузите предобученную модель (GPT-2 small).
  2. Выберите 5–10 фактов для редактирования (например, «Столица России — Москва» → «Санкт-Петербург»).
  3. Реализуйте ROME-редактирование для каждого факта.
  4. Оцените efficacy, generalization, specificity, locality.
  5. Сравните результаты с fine-tuning на одном примере (сравните время и качество).

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

  • Модель успешно меняет ответы на целевые запросы.
  • Побочные эффекты минимальны (например, «Столица Германии» остаётся «Берлин»).
  • Время редактирования < 1 секунды на факт.

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

ВопросТема
295Как работает Agentic RAG?
297Как оценивать качество knowledge editing?
298Какие альтернативы ROME существуют?
299Как knowledge editing сочетается с RAG?
300Как избежать катастрофического забывания при editing?
301Как редактировать знания в мультимодальных моделях?

11. Навигация


Навигация