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

Как вы тестируете robustness LLM к adversarial input (не только injection)?

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

Тестирование robustness (устойчивости) LLM к adversarial input (состязательным входам) выходит далеко за рамки prompt injection и включает атаки на уровне символов, слов, предложений и семантики. Основной подход — применение набора известных методов атаки (TextFooler, BERT-Attack, DeepWordBug, HotFlip) и измерение падения accuracy, успешности атаки и изменения perplexity. Для систематизации используют фреймворки вроде TextAttack, а защиту строят на adversarial training и предобработке входов.


1. Термины: Adversarial input и Robustness

Adversarial input — это специально сконструированный запрос, который заставляет модель ошибаться (классифицировать неверно, генерировать токсичный ответ, раскрывать конфиденциальные данные) при минимальном изменении исходного текста, незаметном для человека.

Robustness (устойчивость) — способность модели сохранять корректное поведение при наличии таких искажений. В отличие от prompt injection (частный случай, когда злоумышленник внедряет инструкции в контекст), adversarial input может быть нацелен на нарушение логики, семантики или даже грамматики без явного перехвата управления.

Adversarial attack (состязательная атака) — процесс генерации adversarial input. Атаки делятся на white-box (доступ к весам и градиентам модели) и black-box (только API, без доступа к внутренностям).


2. Классификация атак на LLM

Атаки можно классифицировать по уровню вмешательства и типу доступа.

Уровень атакиПримеры методовОписание
Символьный (character-level)DeepWordBug, HotFlipЗамена, вставка, удаление отдельных символов (опечатки).
Словесный (word-level)TextFooler, BERT-Attack, PWWSЗамена целых слов на синонимы или близкие по контексту токены.
Фразовый (phrase-level)CLARE, GAЗамена или вставка целых фраз с сохранением смысла.
Семантический (sentence-level)Universal Adversarial Triggers, AdvGLUEДобавление коротких последовательностей токенов, которые ломают поведение модели на многих примерах.

По доступу:


3. Конкретные методы атак

3.1 TextFooler

Black-box, word-level. Алгоритм:

  1. Для каждого слова в исходном тексте оценить важность (удалить слово и посмотреть изменение вероятности правильного класса).
  2. Для важных слов подобрать синонимы из word embedding (GloVe, Counter-fitting) так, чтобы семантическая близость была высокой, а вероятность целевого класса упала.
  3. Дополнительно проверяется грамматическая корректность (POS-tagging, language model perplexity).

Пример: Исходное предложение «The movie was great» → «The film was great» (если модель классифицирует тональность, замена «movie» на «film» может не сломать, но TextFooler найдёт более агрессивную замену, например «terrible»).

3.2 BERT-Attack

Black-box, word-level. Использует BERT masked language model для генерации замен:

  1. Маскирует слово.
  2. BERT предсказывает топ-k кандидатов.
  3. Выбирает кандидата, который максимально снижает вероятность правильного ответа.

Преимущество: замены естественны, так как BERT учитывает контекст.

3.3 DeepWordBug

Black-box, character-level. Вносит минимальные изменения (замена символа, удаление, вставка, перестановка) в слова, которые наиболее критичны для классификации. Оценка важности слова — как в TextFooler.

Пример: «important» → «importent» (опечатка). Модели, чувствительные к орфографии, могут ошибиться.

3.4 HotFlip

White-box, token-level. Использует градиенты для поиска замены одного токена на другой, которая максимизирует loss. Эффективна, но требует доступа к градиентам.


4. Метрики оценки robustness

Для количественной оценки используют несколько метрик.

МетрикаФормула / ОписаниеИнтерпретация
Accuracy drop(acc_clean - acc_adversarial) / acc_cleanНа сколько процентов упала точность. Чем больше, тем менее robust.
Attack Success Rate (ASR)доля атак, которые изменили предсказание моделиПоказывает эффективность атаки. Высокий ASR → низкая robustness.
Perplexity changeΔPPL = PPL(adversarial) - PPL(clean)Если ΔPPL мала, атака незаметна для человека.
Semantic similaritycosine similarity между эмбеддингами исходного и атакованного текста (например, Sentence-BERT)Низкая схожесть может означать, что атака слишком агрессивна и неестественна.
Human evaluationОценка людьми, насколько атакованный текст естественен и сохраняет смыслЗолотой стандарт, но дорогой.

Пример кода (с использованием TextAttack):

from textattack import Attacker, AttackArgs
from textattack.datasets import HuggingFaceDataset
from textattack.models.wrappers import HuggingFaceModelWrapper
import transformers

model = transformers.AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english")
tokenizer = transformers.AutoTokenizer.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english")
model_wrapper = HuggingFaceModelWrapper(model, tokenizer)

dataset = HuggingFaceDataset("sst2", split="test")
attack = textattack.attack_recipes.TextFoolerJin2019.build(model_wrapper)
attacker = Attacker(attack, dataset, AttackArgs(num_examples=100))
results = attacker.attack_dataset()

# Вывод ASR
print(f"Attack success rate: {results.attack_success_rate}")

5. Датасеты и бенчмарки

Для стандартизации тестирования существуют специализированные наборы:

  • AdvGLUE — adversarial версия GLUE, содержит искажённые примеры для 9 задач.
  • ANLI (Adversarial Natural Language Inference) — атаки на NLI, созданные в цикле с участием человека.
  • TextAttack — встроенные датасеты (SST-2, IMDB, AG News) с готовыми атаками.
  • Robustness Gym — платформа для оценки robustness с разными метриками и атаками.

6. Методы защиты (defenses)

Тестирование robustness неотделимо от понимания защит. Основные подходы:

  • Adversarial training — добавление adversarial примеров в обучающую выборку. Модель учится быть устойчивой к ним.
  • Input preprocessing — очистка текста: исправление опечаток (spell-check), удаление подозрительных символов, нормализация.
  • Defensive distillation — обучение модели на «мягких» лейблах от другой модели.
  • Certified robustness — математические гарантии (например, Randomized Smoothing для текста).
  • Detection-based — отдельный классификатор, определяющий, является ли вход adversarial.

7. Практический процесс тестирования robustness

В production-среде тестирование должно быть автоматизировано:

  1. Выбор модели и задач — классификация, генерация, QA.
  2. Выбор набора атак — минимум 3-4 метода (TextFooler, BERT-Attack, DeepWordBug, HotFlip).
  3. Генерация adversarial примеров — на чистом тестовом датасете (100-1000 примеров).
  4. Оценка метрик — accuracy drop, ASR, semantic similarity.
  5. Анализ уязвимых мест — какие типы атак наиболее эффективны.
  6. Применение защит — adversarial training, preprocessing.
  7. Повторное тестирование — убедиться, что robustness улучшилась.

Инструменты: TextAttack, Foolbox (для текста), ART (Adversarial Robustness Toolbox), собственные скрипты.


8. Связь с safety, alignment и red-teaming

Robustness к adversarial input — часть более широкой области safety (безопасности) LLM. Red-teaming (команда «красных» хакеров) использует adversarial атаки для поиска уязвимостей. Alignment (согласование с человеческими ценностями) также включает устойчивость к попыткам обойти ограничения.


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

Задача: Разработать скрипт для автоматического тестирования robustness небольшой LLM (например, DistilBERT на задаче тональности) с использованием TextAttack.

Инструменты: Python, TextAttack, Hugging Face Transformers, Matplotlib.

Шаги:

  1. Загрузить модель и датасет SST-2.
  2. Выбрать 3 атаки: TextFooler, BERT-Attack, DeepWordBug.
  3. Для каждой атаки запустить атаку на 200 примеров.
  4. Собрать метрики: accuracy до/после, ASR, среднюю семантическую схожесть.
  5. Построить столбчатую диаграмму: accuracy drop для каждой атаки.
  6. Вывести таблицу с результатами.

Ожидаемый результат: Вы получите количественную оценку уязвимости модели и сможете сравнить эффективность разных атак. Например, TextFooler может дать accuracy drop 30%, а DeepWordBug — 15%.


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

ВопросТема
299Как вы защищаете LLM от prompt injection?
300Как вы оцениваете safety LLM?
301Что такое red-teaming и как его проводить?
302Как работает adversarial training для LLM?
303Как вы тестируете LLM на bias и fairness?
304Что такое alignment и как его измерять?

Навигация