Дистилляция знаний и adversarial attacks

Adversarial Attacks

Почему нейронная сеть меняет предсказание при добавлении шума?

Если усилить один пиксель — модель изменит предсказание, но это неэффективно: один пиксель можно менять конечное число раз. Более мощный подход — менять все пиксели, но чуть-чуть. Направление изменений вычисляется через градиент функции потерь по входу.

Типы атак:

  • Направленные — максимизируем вероятность предсказания конкретного целевого класса.
  • Ненаправленные — минимизируем вероятность правильного класса, то есть максимизируем вероятности всех остальных классов.
Adversarial attacks — серьёзная проблема в production: атакованное изображение визуально неотличимо от оригинала, но модель уверенно выдаёт неправильный ответ.

Дистилляция знаний (Knowledge Distillation)

При правильном обучении модель учится обобщать задачу, а не запоминать примеры. Именно это используется в дистилляции.

Ключевая идея: обучить большую модель-учителя, которая из слабоинформативных данных создаёт более богатое представление. Затем обучить модель-студента на этих представлениях — студент получается меньше, но тоже умеет обобщать.

Температура softmax

\[\text{softmax}_T(\vec{x}) = \left(\dots,\ \frac{\exp\left(\frac{x_i}{T}\right)}{\sum_j \exp\left(\frac{x_j}{T}\right)},\ \dots\right)\]

  • При \(T = 1\) — стандартный softmax.
  • При большом \(T\) — распределение приближается к равномерному, «мягкие» метки раскрывают структуру неуверенности модели.
  • При \(T \to \infty\) — градиент второго слагаемого \(L_{KD}\) стремится к градиенту квадрата нормы разности логитов учителя и студента.

Функция потерь

\[L_{KD} = -\frac{1}{N}\sum_{i=1}^N \left( \sum_{j=1}^K y_{ij} \log p_{ij} + \lambda T^2 \sum_{j=1}^K q_{ij}^T \log p_{ij}^T \right)\]

Первое слагаемое — стандартный cross-entropy по истинным меткам. Второе — KL-дивергенция между «мягкими» предсказаниями учителя и студента при температуре \(T\). Коэффициент \(T^2\) компенсирует масштаб градиентов при высокой температуре.

Инициализация весов при дистилляции

Случайная инициализация весов студента приводит к падению качества примерно на 5%. Задача оптимизации становится очень сложной — много локальных минимумов. На практике используют инициализацию через разбиение на группы.

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

  • Можно сжать большую модель в маленькую без существенных потерь в качестве.
  • Можно обучить несколько учителей на разных доменах и дистиллировать их в одну модель — итоговое качество будет выше, чем у каждого учителя по отдельности.
  • Дистилляция применяется при квантизации весов для сохранения качества.
← Назад к списку тем