Открыть сервис

Прунинг

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

История

Идея сокращения избыточности восходит к ранним работам по искусственному интеллекту и статистическому моделированию. В контексте нейронных сетей прунинг впервые был предложен в 1989 году Яном ЛеКуном и его коллегами в работе «Optimal Brain Damage». Они показали, что удаление отдельных синапсов (весов) на основе их «значимости» (второй производной функции потерь) позволяет значительно уменьшить размер сети без потери точности. В 1990-е годы метод развивался в рамках исследований по сжатию моделей, однако широкое распространение получил лишь в 2010-х годах с ростом популярности глубокого обучения и требований к развёртыванию моделей на мобильных устройствах и встраиваемых системах.

Классификация методов прунинга

Методы прунинга можно классифицировать по нескольким критериям: по типу удаляемых элементов, по способу оценки значимости и по моменту применения.

По типу удаляемых элементов

  • Прунинг весов — удаление отдельных синаптических связей (весов) в нейронной сети. Приводит к разреженности матриц, что ускоряет вычисления при использовании специализированного оборудования.
  • Прунинг нейронов — удаление целых нейронов (или скрытых слоёв в полносвязных сетях). Уменьшает количество узлов, что даёт более значительное сжатие модели.
  • Прунинг каналов — удаление целых фильтров или каналов в свёрточных нейронных сетях. Наиболее распространён в компьютерном зрении, так как напрямую сокращает число операций и объём памяти.
  • Прунинг структурных блоков — удаление целых модулей (например, остаточных блоков в ResNet) или слоёв. Применяется для радикального упрощения архитектуры.

По способу оценки значимости

  • Прунинг на основе магнитуды — удаление элементов с наименьшими абсолютными значениями весов. Простейший и наиболее популярный метод, основанный на предположении, что малые веса вносят малый вклад в выходной сигнал.
  • Прунинг на основе градиента — оценка значимости через производные функции потерь по весам. Учитывает, как изменение веса влияет на ошибку.
  • Прунинг на основе регуляризации — использование штрафов (например, L1-регуляризация) для принудительного обнуления малых весов в процессе обучения.
  • Прунинг на основе эвристик — использование эмпирических правил, например, удаление нейронов с низкой активацией или с высокой корреляцией.

По моменту применения

  • Прунинг после обучения (post-training pruning) — удаление элементов из уже обученной модели. Требует дообучения (fine-tuning) для восстановления точности.
  • Прунинг во время обучения (training-time pruning) — встраивание процесса удаления в цикл обучения, часто с использованием регуляризации.
  • Прунинг до обучения (pre-training pruning) — удаление элементов на основе архитектурных соображений до начала обучения. Применяется реже, так как может привести к потере выразительной способности.

Применение в машинном обучении

Сжатие нейронных сетей

Прунинг является одним из ключевых методов сжатия моделей глубокого обучения. Современные нейронные сети, такие как GPT-3 (содержит 175 миллиардов параметров), требуют огромных вычислительных ресурсов. Прунинг позволяет сократить количество параметров в 10–100 раз с минимальной потерей точности. Например, в работе 2020 года было показано, что модель ResNet-50 можно сжать на 90% без существенного падения качества на наборе данных ImageNet.

Ускорение инференса

Удаление избыточных элементов напрямую уменьшает количество операций умножения и сложения, что ускоряет выполнение модели на этапе предсказания (инференса). Это особенно важно для мобильных устройств, IoT-устройств и систем реального времени, где ограничены вычислительные ресурсы и энергопотребление.

Предотвращение переобучения

Прунинг может рассматриваться как форма регуляризации. Удаляя малозначимые параметры, модель становится более простой и менее склонной к запоминанию шума в обучающих данных. Это улучшает обобщающую способность, особенно при малых объёмах данных.

Перенос обучения

В задачах переноса обучения (transfer learning) прунинг часто применяется для адаптации предобученной модели к новой задаче. Удаление специфичных для исходной задачи слоёв или нейронов позволяет уменьшить размер модели и ускорить дообучение.

Применение в других областях

Биоинформатика

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

Теория графов

В теории графов прунингом называют удаление вершин или рёбер, не влияющих на ключевые свойства графа (например, связность, диаметр). Алгоритмы прунинга используются для визуализации больших графов, упрощения социальных сетей и анализа транспортных сетей.

Лингвистика

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

Критика и ограничения

Несмотря на широкое распространение, прунинг имеет ряд недостатков. Во-первых, агрессивное удаление параметров может привести к необратимой потере точности, особенно если модель была обучена на малом объёме данных. Во-вторых, разреженные модели (после прунинга весов) часто не дают выигрыша в скорости на стандартных процессорах (CPU) и графических ускорителях (GPU), так как их архитектура оптимизирована для плотных матриц. Для эффективного использования разреженности требуется специализированное оборудование (например, тензорные ядра с поддержкой разреженности). В-третьих, процесс прунинга и последующего дообучения может быть вычислительно затратным, особенно для больших моделей.

Интересные факты

  • В 2021 году исследователи из Google показали, что нейронные сети можно обучать с нуля в разреженном состоянии, минуя стадию плотного обучения и последующего прунинга. Этот подход получил название «lottery ticket hypothesis» (гипотеза счастливого билета).
  • В некоторых задачах компьютерного зрения прунинг позволяет не только сжимать модели, но и улучшать их устойчивость к состязательным атакам (adversarial attacks).
  • В России исследования в области прунинга нейронных сетей активно ведутся в таких организациях, как Сколковский институт науки и технологий (Сколтех) и Институт системного программирования имени В. П. Иванникова РАН.

Источники

  • LeCun, Y., Denker, J. S., & Solla, S. A. (1989). Optimal Brain Damage. Advances in Neural Information Processing Systems.
  • Han, S., Mao, H., & Dally, W. J. (2015). Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding. arXiv preprint arXiv:1510.00149.
  • Frankle, J., & Carbin, M. (2018). The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks. arXiv preprint arXiv:1803.03635.
  • Blalock, D., Gonzalez Ortiz, J. J., Frankle, J., & Guttag, J. (2020). What is the State of Neural Network Pruning? Proceedings of Machine Learning and Systems.
  • Круглов, В. В., & Борисов, В. В. (2002). Искусственные нейронные сети. Теория и практика. — М.: Горячая линия – Телеком.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →