Прунинг
Прунинг (от англ. 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 →