Skip to content

GreatDruk/nn-compression-robustness

Repository files navigation

Квантование против отбрасывания связей: устойчивость сжатых нейронных сетей

Исследовательский проект по курсу «Теория устойчивости искусственных нейронных сетей», посвященный сравнению различных методов сжатия нейронных сетей и анализу их влияния на качество классификации и устойчивость к состязательным атакам.

Описание проекта

Современные нейронные сети зачастую слишком велики для использования на устройствах с ограниченными вычислительными ресурсами. Наиболее распространенными методами уменьшения размера моделей являются квантование (Quantization) и отбрасывание связей (Pruning).

Цель проекта - экспериментально исследовать влияние различных методов сжатия на:

  • точность классификации;
  • устойчивость к состязательным атакам;
  • уверенность модели;
  • эффективность использования памяти.

В качестве исследуемой модели используется полносвязная нейронная сеть (MLP), обученная на датасете MNIST.


Исследуемые методы

Квантование

Исследуются следующие параметры квантования:

  • разрядность:
    • 8 бит;
    • 4 бита;
    • 2 бита;
    • 1 бит (scaled sign quantization);
  • область применения:
    • только веса;
    • веса и активации;
  • режим выполнения:
    • Post-Training Quantization (PTQ);
    • Quantization-Aware Training (QAT).

Отбрасывание связей

Исследуются:

  • уровень разреженности:
    • 30%;
    • 50%;
    • 70%;
    • 90%;
  • критерий удаления весов:
    • Magnitude Pruning;
    • Gradient Pruning;
    • Hessian Pruning.

Также рассматриваются комбинированные сценарии, объединяющие квантование и прунинг.

Оценка устойчивости

Для проверки устойчивости моделей используются состязательные атаки белого ящика:

  • FGSM (Fast Gradient Sign Method)
  • PGD (Projected Gradient Descent)

Используемые метрики

Для каждой конфигурации автоматически вычисляются:

  • Accuracy;
  • Adversarial Accuracy;
  • Logit Margin;
  • Margin Sparsity Index (MSI);
  • Worst-Class Drop;
  • Bit Saving Efficiency (BSE);
  • коэффициент сжатия;
  • размер модели.

Структура проекта

.
├── nn_compression_experiment.ipynb   # основной Jupyter Notebook
├── requirements.txt                  # зависимости проекта
└── report/
    └── experiment_report.html        # автоматически сформированный отчет

Запуск проекта

1. Клонирование репозитория

git clone <repository-url>
cd <repository>

2. Создание виртуального окружения

python -m venv .venv

Linux / macOS

source .venv/bin/activate

Windows

.venv\Scripts\activate

3. Установка зависимостей

pip install -r requirements.txt

4. Запуск Jupyter Notebook

jupyter notebook

или

jupyter lab

После запуска откройте

nn_compression_experiment.ipynb

и выполните все ячейки последовательно.

Выполняемые эксперименты

Notebook автоматически:

  1. загружает и подготавливает датасет MNIST;
  2. обучает базовую FP32-модель;
  3. строит набор конфигураций квантования;
  4. строит набор конфигураций прунинга;
  5. исследует комбинированные методы сжатия;
  6. выполняет состязательные атаки;
  7. вычисляет все метрики;
  8. строит таблицы и графики;
  9. формирует итоговый HTML-отчет.

Результаты

В результате выполнения экспериментов автоматически формируется отчет

report/experiment_report.html

содержащий:

  • сравнительные таблицы;
  • графики;
  • анализ влияния квантования;
  • анализ влияния прунинга;
  • сравнение методов сжатия;
  • итоговые выводы исследования.

About

Study of the stability of neural network models to compression methods: quantization and pruning.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors