Sobes.tech
Back to questions
Senior
9

Что такое adversarial training и его trade-off?

Companies where asked
СБЕРСБЕР
GravityField

Answer from AI

sobes.tech AI

Что хотят услышать интервьюеры:

Adversarial training — это способ повысить устойчивость модели к специально подобранным возмущениям входа. Суть в том, что во время обучения добавляются adversarial-примеры, и модель учится правильно работать не только на обычных данных, но и на «атакованных». Основной trade-off: обычно растёт робастность, но часто ухудшается точность на чистых данных и увеличивается стоимость обучения.

Определение:

Adversarial training — это техника обучения, при которой к исходным примерам добавляют искусственно сгенерированные, слегка искажённые входы, рассчитанные на то, чтобы сбить модель с толку. Цель — сделать модель менее чувствительной к малым, но вредоносным изменениям входа.

Trade-off здесь означает компромисс между двумя целями:

  • robustness — устойчивостью к атакам и шуму,
  • accuracy on clean data — качеством на обычных, не модифицированных данных.

Чем сильнее модель «закаляют» против атак, тем чаще она теряет часть качества на стандартных примерах и требует больше вычислений для обучения.

Пример использования:

Допустим, модель классифицирует спам-письма. Злоумышленник меняет несколько символов или добавляет безобидные слова, чтобы обойти фильтр. При adversarial training в обучение включают такие специально испорченные письма, чтобы модель научилась распознавать спам даже при небольших манипуляциях.

# Упрощённый псевдокод adversarial training
for x, y in train_loader:
    x_adv = generate_adversarial_example(model, x, y)  # например, FGSM/PGD-подобная атака
    loss_clean = criterion(model(x), y)
    loss_adv = criterion(model(x_adv), y)

    loss = loss_clean + alpha * loss_adv
    loss.backward()
    optimizer.step()
    optimizer.zero_grad()

Пояснение кода:

  1. Берётся обычный батч x, y.
  2. Для входов x генерируются adversarial-примеры x_adv, которые специально подталкивают модель к ошибке.
  3. Считается ошибка на чистых данных loss_clean.
  4. Считается ошибка на атакованных данных loss_adv.
  5. Итоговый лосс комбинирует оба компонента: модель одновременно учится быть точной и устойчивой.
  6. Параметр alpha задаёт баланс между качеством на чистых данных и робастностью.

Ключевые моменты:

  • Adversarial training повышает устойчивость к атакам и мелким вредоносным изменениям входа.
  • Обычно используется генерация adversarial-примеров прямо во время обучения.
  • Главный trade-off — рост робастности часто сопровождается падением accuracy на clean data.
  • Обучение становится заметно дороже по времени и вычислениям.
  • Это не панацея: защита зависит от типа атаки, данных и того, насколько хорошо подобраны adversarial-примеры.