中文翻译暂不可用,显示俄语原文。
Как работает извлечение знаний (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
- Локализация — найти слой и нейрон, ответственный за целевой факт. Используется causal tracing: зашумляются активации разных слоёв и смотрят, где падает уверенность модели в правильном факте.
- Вычисление обновления — для заданного факта (subject, relation, object) вычисляется ключ (key) — state|скрытое состояние на последнем токене subject. Затем находится значение (value) — желаемое state|скрытое состояние, которое приведёт к правильному object.
- Модификация весов — веса 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
| Характеристика | ROME | MEMIT |
|---|---|---|
| Количество редактируемых фактов | 1 за раз | Много (до 10 000) |
| Число изменяемых слоёв | 1 | Несколько (5–10) |
| Риск перезаписи соседних знаний | Высокий | Низкий (за счёт распределения) |
| Вычислительная сложность | Низкая | Средняя |
Алгоритм MEMIT
- Для каждого факта вычисляется ключ и желаемое значение (как в ROME).
- Все обновления агрегируются в одно глобальное изменение весов, которое минимизирует суммарную ошибку по всем фактам.
- Изменение применяется к нескольким слоям, чтобы «размазать» эффект и избежать конфликтов.
5. Метрики оценки редактирования
После редактирования важно проверить, что:
- Efficacy — модель выдаёт новый факт (например, «Берлин»).
- Generalization — модель правильно отвечает на парафразы (например, «Какая столица Франции?»).
- Specificity — модель не изменила ответы на несвязанные запросы (например, «Столица Германии?» должен остаться «Берлин»).
- Locality — модель сохраняет знания о других фактах (например, «Население Франции» не должно измениться).
| Метрика | Описание | Формула (упрощённо) |
|---|---|---|
| Efficacy | Доля успешных изменений | #успешных / #попыток |
| Generalization | Доля правильных ответов на парафразы | #правильных парафразов / #парафразов |
| Specificity | Доля неизменённых ответов на несвязанные запросы | #неизменённых / #несвязанных |
| Locality | Среднее изменение вероятности для случайных фактов | 1 - среднее изменение |
6. Преимущества и ограничения
Преимущества
- Скорость — редактирование занимает секунды, а не часы.
- Точность — изменение затрагивает только целевой факт.
- Не требует данных — достаточно одного примера (subject, object).
Ограничения
- Масштабируемость — при большом числе правок (более 10 000) качество падает.
- Не все знания можно отредактировать — некоторые факты «размазаны» по многим слоям.
- Риск побочных эффектов — изменение может повлиять на смежные факты.
- Зависимость от архитектуры — методы разработаны для трансформеров (GPT, LLaMA), для других архитектур могут не работать.
7. Knowledge Editing vs RAG
| Аспект | Knowledge Editing | RAG |
|---|---|---|
| Изменение знаний | Меняет веса модели | Добавляет документы в контекст |
| Скорость обновления | Секунды | Мгновенно (индексация может быть долгой) |
| Надёжность | Может нарушить другие знания | Всегда актуально, если документы корректны |
| Затраты | Один раз (изменение весов) | Каждый запрос требует поиска и генерации |
| Применимость | Для стабильных, но ошибочных фактов | Для динамических данных (новости, базы знаний) |
Когда использовать 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("Столица Германии —")) # Ожидаем "Берлин" (не должно измениться)
Реальные библиотеки
- [Вики/EasyEdit|EasyEdit(Вики/TLS|https://github.com/zjunlp/EasyEdit) — поддерживает Вики/ROME|ROME, Вики/MEMIT|MEMIT, FT и др.
- [Вики/ROME|KE-by-ROME(Вики/TLS|https://github.com/kmeng01/rome) — оригинальная реализация Вики/ROME|ROME.
9. Пет-проект для закрепления
Задача Создать сервис для исправления устаревших фактов в небольшой LLM (например, GPT-2) с помощью ROME.
Инструменты
- Python, PyTorch, transformers
- EasyEdit или оригинальный код ROME
- Набор тестовых фактов (например, столицы стран)
Шаги:
- Загрузите предобученную модель (GPT-2 small).
- Выберите 5–10 фактов для редактирования (например, «Столица России — Москва» → «Санкт-Петербург»).
- Реализуйте ROME-редактирование для каждого факта.
- Оцените efficacy, generalization, specificity, locality.
- Сравните результаты с fine-tuning на одном примере (сравните время и качество).
Ожидаемый результат
- Модель успешно меняет ответы на целевые запросы.
- Побочные эффекты минимальны (например, «Столица Германии» остаётся «Берлин»).
- Время редактирования < 1 секунды на факт.
10. Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 295 | Как работает Agentic RAG? |
| 297 | Как оценивать качество knowledge editing? |
| 298 | Какие альтернативы ROME существуют? |
| 299 | Как knowledge editing сочетается с RAG? |
| 300 | Как избежать катастрофического забывания при editing? |
| 301 | Как редактировать знания в мультимодальных моделях? |
11. Навигация
- Предыдущий: 295
- Следующий: 297
- Индекс: 00. Индекс разборов
Навигация
- Предыдущий: 295
- Следующий: 297
- Индекс: 00. Индекс разборов