Каковы текущие методы сжатия и ускорения моделей глубоких нейронных сетей?

искусственный интеллект глубокое обучение алгоритм Нейронные сети

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

В этой колонке вы быстро получите основные моменты и болевые точки каждой выбранной статьи, а также будете в курсе передовых достижений искусственного интеллекта.

Нажмите внизу этой статьичитать оригинал«Присоединяйтесь к сообществу сейчас, чтобы увидеть более свежие бумажные рекомендации.

Это первое издание PaperDaily.63 Статья

Рекомендуемые бумажные заметки в этом выпуске предоставлены пользователями сообщества PaperWeekly. @yanjoy.В этой статье представлен всесторонний обзор методов сжатия для глубоких нейронных сетей., которые в основном можно разделить на сокращение и совместное использование параметров, низкоранговую декомпозицию, сверточный фильтр миграции/сжатия и уточнение знаний,В статье проводится уникальный анализ производительности, соответствующих применений, преимуществ и недостатков каждого типа метода.

Если вас заинтересовала эта работа, нажмите внизучитать оригиналВы можете просмотреть оригинал статьи.

Об авторе: Сяо Ии, магистрант Пекинского университета, чье направление исследований — глубокое сжатие и ускорение моделей. Персональная домашняя страница: http://yanjoy.win

■ Бумага | Обзор сжатия моделей и ускорения для глубоких нейронных сетей

■ Ссылка | https://www.paperweekly.site/papers/1675

■ Автор | Ю Чэн / Дуо Ван / Пань Чжоу / Тао Чжан

Предыстория исследования

Что касается нейронных сетей, то еще в конце прошлого века Янн ЛеКун и его коллеги успешно использовали нейронные сети для распознавания рукописных почтовых индексов в электронных письмах. Что касается концепции глубокого обучения, то она была впервые предложена Джеффри Хинтоном и др. В 2012 году Крижевский и др. использовали алгоритм глубокого обучения и добились классификации изображений ImageNet с огромным опережением в 10% по сравнению с традиционным методом ручного проектирования. Чемпион турнира.

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

Модель конкуренции, как указано выше, использовала сеть с 60 миллионами параметров с 5 сверточными слоями и 3 полносвязными слоями. Как правило, обучение всей модели занимало два-три дня, даже с NVIDIA K40, самым производительным графическим процессором того времени. Для крупномасштабных сетей, использующих полные соединения, шкала параметров может достигать даже миллиардов.

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

Для более крупных нейронных сетей с большим количеством слоев и узловСокращение затрат на хранение и вычисления становится критическим, особенно для некоторых приложений реального времени, таких как онлайн-обучение, поэтапное обучение и автономное вождение.

На другом конце глубокого обучения, то есть мобильный терминал, который ближе к жизни людей,Как заставить глубокие модели работать на мобильных устройствах, также является важной целью ускорения сжатия моделей..

В своей статье 2014 года Крижевский сделал два наблюдения: сверточные слои занимают около 90-95% времени вычислений и шкалы параметров с большими значениями; на полносвязные слои приходится около 5-10% времени вычислений, 95% шкалы параметров и малые значения. Это обеспечивает статистическую основу для последующих исследований по сжатию и ускорению глубоких моделей.

Типичным примером является ResNet-50 с 50 свёрточными слоями, для которого требуется более 95 МБ памяти и 3,8 гигафлопс. После отбрасывания некоторых избыточных весов сеть по-прежнему работает как обычно, но экономит более 75% параметров и 50% времени вычислений.

Конечно, окончательная реализация сжатия и ускорения сетевой модели требует мультидисциплинарного совместного решения.Помимо алгоритма сжатия большую роль играют также структуры данных, архитектура компьютера и аппаратная часть.В этой статье мы сосредоточимся на различных методах глубокого сжатия моделей и сравним их.

Статус исследования

Синтезируя существующие методы глубокого сжатия моделей, их в основном делят на четыре категории:

  • сокращение параметров и совместное использование

  • факторизация низкого ранга

  • переносные/компактные сверточные фильтры

  • дистилляция знаний

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

В общем, методы сокращения и совместного использования параметров, низкоранговой декомпозиции и дистилляции знаний могут использоваться для CNN с полносвязными и сверточными слоями, но, с другой стороны, методы, использующие ядра передачи/компактной свертки, поддерживают только сверточные слои.

Методы факторизации низкого ранга и преобразования/уплотнения на основе ядра обеспечивают сквозной конвейер, который можно легко реализовать в среде ЦП/ГП.

Вместо этого для сокращения и совместного использования параметров используются различные методы, такие как векторное квантование, двоичное кодирование и разреженные ограничения для выполнения задачи, что часто приводит к нескольким шагам для достижения цели.

Таблица 1: Краткое сравнение различных моделей

Что касается протокола обучения, модель, основанная на сокращении/совместном использовании параметров и факторизации низкого ранга, может быть обучена на основе предварительно обученной модели или с нуля, что делает ее гибкой и эффективной. Однако ядра свертки переноса/уплотнения и модели дистилляции знаний могут поддерживать обучение только с нуля.

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

Краткое сравнение различных моделей показано в таблице 1. Эти методы кратко представлены и обсуждены ниже.

Сокращение параметров и совместное использование

Эти сокращения и совместное использование параметров можно разделить на три категории в зависимости от способа уменьшения избыточности (информационная избыточность или избыточность пространства параметров):Квантование и бинаризация моделей, совместное использование параметров и структурная матрица.

Квантование и бинаризация

фигура 2

Квантование сети сжимает исходную сеть за счет уменьшения количества битов, необходимых для представления каждого веса. Гонг и др. использовали квантование K-средних для значений параметров. Ванхоук и др. использовали 8-битное параметрическое квантование для достижения значительного ускорения с минимальной потерей точности.

предложено Ханом С.Полный набор процессов сжатия для глубоких сетей: Сначала удалите неважные соединения и переобучите сеть с редкими соединениями. Веса квантованных соединений затем разделяются с использованием весов, а квантованные веса и кодовые книги затем кодируются методом Хаффмана для дальнейшего снижения степени сжатия. как показано на рисунке 2,Содержит трехэтапный метод сжатия: обрезку, квантование и кодирование Хаффмана..

Сокращение уменьшает количество кодируемых весов, а квантование и кодирование Хаффмана уменьшают количество битов, используемых для кодирования каждого веса. Для матриц с большинством элементов, равных 0, можно использовать разреженное представление для дальнейшего уменьшения пространственной избыточности, и этот механизм сжатия не приведет к потере точности.Эта статья стала лучшей статьей на ICLR 2016.

Точность может лучше поддерживаться в случае большего количества уровней квантования, но точность сетей двоичного квантования будет значительно снижена при работе с большими сетями CNN, такими как GoogleNet. Другой недостаток заключается в том, что все существующие методы бинаризации основаны на простой матричной аппроксимации, игнорируя влияние бинаризации на потерю точности.

Обрезка и обмен

Отсечение и совместное использование сети изначально использовались для решения проблемы переобучения, а теперь больше используются для уменьшения сложности сети.

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

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

Также становится все более популярным обучение компактных CNN при наличии ограничений разреженности, которые часто вводятся в задачах оптимизации как регуляторы нормы l_0 или l_1. 

Существуют некоторые потенциальные проблемы с методами обрезки и совместного использования. Во-первых, если используется регуляризация l_0 или l_1, метод сокращения требует большего количества итераций для сходимости, и, кроме того, все методы сокращения требуют ручной установки гиперпараметров слоев, что может быть сложно в некоторых приложениях.

Рисунок 3: Сокращение и совместное использование

Структурированная матрица дизайна

Принцип этого метода очень прост: если матрица порядка m×n требует для описания меньше, чем m×n параметров, то это структурированная матрица. Обычно эта структураНе только снижает потребление памяти, но и значительно ускоряет логические выводы и обучение благодаря быстрому умножению матрицы на вектор и вычислению градиента.

Потенциальная проблема с этим подходом заключается в том, чтоСтруктурные ограничения приводят к потере точности, так как ограничения могут внести смещения в модель. с другой стороны,Как найти подходящую структурную матрицу сложно. Нет никакого теоретического способа вывести его. Поэтому этот метод не получил широкого распространения.

Разложение низкого ранга и разреженность

Типичное ядро ​​свертки CNN представляет собой четырехмерный тензор, а полносвязный слой также можно рассматривать как двумерную матрицу, и также возможна декомпозиция низкого ранга. В этих тензорах может быть много избыточности. Все аппроксимации выполняются послойно, после аппроксимации слоя низкоранговым фильтром параметры этого слоя фиксируются, а предыдущие слои уточняются по критерию ошибки реконструкции. Это типичный метод низкого ранга для сжатия 2D сверточных слоев, как показано на рисунке 4.

Рисунок 4: Типичный метод низкого ранга для сжатия 2D сверточных слоев

Использование фильтров низкого порядка для ускорения свертки существует уже давно, например, многомерные DCT (дискретное косинусное преобразование) и системы вейвлетов, использующие тензорные произведения, строятся из одномерных DCT-преобразований и одномерных вейвлетов соответственно.

Обучение разделимым 1D-фильтрам было предложено Ригамонти и др. в соответствии с идеей обучения по словарю. В работе Джадерберга предлагается ускорение в 4,5 раза при снижении точности распознавания текста на 1% с использованием другой схемы тензорной декомпозиции.

Плоская структура преобразует исходную 3D-свертку в 3 1D-свертки со сложностью параметров, определяемой выражениемO(XYC)Сократить доO(X+Y+C), вычислительная сложность определяется выражениемO(mnCXY) Сократить доO(mn(X+ Y+ C). 

Аппроксимация низкого порядка выполняется слой за слоем. После того, как параметры одного слоя определены, указанные выше слои настраиваются по критерию ошибки реконструкции. Это типичные методы низкого ранга для сжатия 2D сверточных слоев, как показано на рисунке 2.

Следуя этому направлению, Лебедев предложил каноническое полиномиальное (КП) разложение тензора ядра, вычисляемое с помощью нелинейного метода наименьших квадратов. Тай предложил новый алгоритм тензорной декомпозиции низкого ранга для обучения CNN с ограничениями низкого ранга с нуля. Он использует пакетную нормализацию (BN) для преобразования активаций внутренних скрытых единиц. В общем, схемы декомпозиции CP и BN можно использовать для обучения CNN с нуля. 

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

Перенос/сжатие сверточных фильтров

Хотя в настоящее время отсутствует сильная теория, существенные эмпирические данные подтверждают важность трансляционной инвариантности и разделения сверточных весов для хорошей производительности прогнозирования.

Сжатие моделей CNN с использованием передаточных сверточных слоев основано на теории эквивариантных групп Коэна. Пусть x будет входом, Φ(·) будет сетью или слоем, а T(·) будет матрицей преобразования. Тогда эквивариантное понятие можно определить как:

Преобразование входных данных x с использованием матрицы преобразования T(·) и последующая передача их в сеть или слой Φ(·) дает тот же результат, что и представление, полученное при первом отображении x в сеть и последующем преобразовании отображения. Обратите внимание, что T и T' могут иметь разные операции при применении к разным объектам. Согласно этой теории целесообразно применять преобразования к слоям или фильтрам Φ( ), чтобы сжать всю сетевую модель.

Стоимость вычислений может быть напрямую снижена за счет использования компактных сверточных фильтров. Свертка 3×3 разлагается на две свертки 1×1 в структуре Inception, SqueezeNet предлагает заменить свертку 3×3 на свертку 1×1.По сравнению с AlexNet, SqueezeNet создает компактную нейронную сеть с в 50 раз меньшим количеством параметров и сопоставимая точность. 

Есть еще некоторые незначительные проблемы, которые необходимо решить с помощью этого подхода. Во-первых, эти методы хороши для работы с сетями с широкой/плоской архитектурой (например, VGGNet), а не с узкими/специальными сетями (например, GoogleNet, ResidualNet). Во-вторых, предположение о переносе иногда слишком сильное, чтобы управлять алгоритмом, что приводит к нестабильным результатам для некоторых наборов данных.

дистилляция знаний

Использование передачи знаний для сжатия моделей было впервые предложено Caruana et al. Они обучили сжатую/ансамблевую модель сильных классификаторов, помеченных фиктивными данными, и воспроизвели выходные данные исходной большой сети, однако эта работа была ограничена поверхностными моделями.

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

В работе Хинтона представлена ​​структура сжатия дистилляции знаний, которая уменьшает объем обучения глубоких сетей, следуя парадигме «ученик-учитель», которая наказывает «ученика», смягчая вывод «учителя». Для этого учащиеся учатся предсказывать результат учителя, истинный ярлык класса. Этот метод очень прост, но также показывает хорошие результаты в различных задачах классификации изображений. 

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

Обсуждение и вызов

Методы сжатия и ускорения для глубоких моделей все еще находятся на ранних стадиях.По-прежнему существуют следующие проблемы:

  • Опора на исходную модель уменьшает пространство для изменения конфигурации сети и ненадежна для сложных задач;

  • Обрезка за счет уменьшения количества соединений или каналов между нейронами более эффективна для ускорения сжатия. Но это серьезно повлияет на ввод следующего слоя;

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

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

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

Вопросы и обсуждения в количественных экспериментах

Выбор экспериментальной основы

TensorFlow поддерживает статический график, после того как параметры модели определены, их нельзя изменить. Это создает определенные трудности для поэтапного, послойного обучения. Напротив, Pytorch использует динамические графики, и после того, как модель определена, ее параметры можно изменить во время обучения, что очень гибко. Это также будущее направление глубокого обучения.

В текущей версии для разработчиков nightly TensorFlow также начал поддерживать определение динамических графов, но пока не стал популярным. Поэтому в выбореPytorch предпочтительнее для научных исследований и экспериментов, а TensorFlow может быть предпочтительнее для разработки и приложений.

Неэффективность алгоритмов кластеризации

Алгоритмы кластеризации являются необходимым условием для количественной оценки, и в sklearn доступны такие методы, как K-Means, Mean-shift, Gaussian blends и т. д.

Среди них K-Means — простой, эффективный и быстрый метод. На персональном компьютере время расчета обучающей сети не отражается из-за малого размера параметров обучающей сети. При тестировании крупномасштабной сети, такой как VGG, было обнаружено, что для 256 кластерных центров выполнение кластеризации в полносвязном слое размерности 4096*4096 fc занимало более 20 минут (оно останавливалось перед запуском), что серьезно влияет на практичность алгоритма.

Текущее решение состоит в выборке, например, кластеризации 1% параметров в качестве центров кластеров общих параметров. После этой операции время кластеризации может быть сокращено до менее чем 5 минут. 

Есть ли более простой способ?Для обученной модели, особенно после l2-регуляризации, ее распределение параметров в основном можно рассматривать как модель распределения Гаусса, и параметры распределения могут быть получены путем ее подгонки.

Итак, проблема превращается в:Можно ли для конкретной модели распределения Гаусса напрямую получить центры кластеров по ее параметрам?

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

Временные затраты на тяжелые тренировки

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

Этот метод используется непосредственно на модели, и эффект часто не очень хороший. Одна из наиболее важных причин заключается в том, что, хотя параметры имеют прекрасное распределение, редко встречаются два одинаковых параметра. После сжатия Alexnet его размер уменьшился только с 233 МБ до 216 МБ, что намного меньше, чем коэффициент сжатия алгоритмов сжатия текста и изображений. Поэтому традиционными методами трудно решить проблему глубокого обучения. 

Хотя обрезка и квантование — это хорошо, проблема в том, что традиционное сжатие этого не имеет, то есть затраты времени, приносимые тяжелым обучением. Этот процесс заключается в том, чтобы искусственно увеличить условия для параметров, и позволить сети заново изучить процесс уменьшения потерь, чтобы она больше не могла быть восстановлена ​​​​в исходную сеть, потому что параметры не важны, но важны результаты. .

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

Для простой задачи типа Mnist переобучаются веса 512∗512, а начальные 8 увеличиваются до 36, что увеличивает время примерно в 4 раза (не исключает возможности плохой персональной оптимизации кода). Если это на сервере GPU, то временные затраты Алекса могут быть еще неохотно приемлемыми, если есть GoogleNet, ResNet и т. д., то действительно нужно тренироваться до скончания века.

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

Эта статья написана ИИ академическое сообщество PaperWeekly Избранные рекомендации, сообщество охватило такие направления исследований, как обработка естественного языка, компьютерное зрение, искусственный интеллект, машинное обучение, интеллектуальный анализ данных и поиск информации, нажмите " Прочитайте исходный текст», чтобы присоединиться к сообществу прямо сейчас!