Диссертация (1137108), страница 12
Текст из файла (страница 12)
После каждого ускоряемого свёрточного слоя следуют два свёрточных слоя размера 1 × 1, которые мы рассматриваем как часть функции нелинейности, и операция пулинга. Таким образом, структурная маска применима ко всем слоям. Результаты приведенына рис. 2.7. Видно, что решётчатая и важностная маски работают лучше всего, как и в эксперименте с сетью AlexNet.6(%)(%)505654433221101,01,52,02,53,0CPU (3,5)4,001,04,51,5653322112,02,53,0CPU (3,5)4,04,501,01,5653322112,53,0CPU (4,52,02,53,0GPU (3,5)4,04,54,04,5542,04,0641,5)г) conv2, GPU(%)(%)в) conv2, CPU01,03,5541,53,0GPU (6401,02,5б) conv1, GPU(%)(%)а) conv1, CPU2,03,5)4,04,501,01,52,02,53,0GPU (3,5)д) conv3, CPUе) conv3, GPUРисунок 2.7 — Ускорение одного слоя сети NIN для выборки CIFAR-10 с разными маскамиперфорации без дообучения.
Результаты усреднены по 5 запускам.51Таблица 2 — Результаты ускорения свёрточного слоя conv2 сети AlexNet. Вверху приведенырезультаты предлагаемого метода (перфорации) после дообучения. Внизу показаны ранееопубликованные результаты. Результат метода [125] взят из статьи [126]. Эксперимент суменьшением пространственного размера ядра (3 × 3 вместо 5 × 5) демонстрирует, чтоперфорация дополняет метод [129], который также уменьшает пространственный размер ядра.МетодУскорение на CPUОшибка ↑Важностная маска, r = 43 , фильтры 3 × 3Важностная маска, r = 65Важностная маска, r = 549,1×5,3×4,2×+1%+1,4%+0,9%Лебедев, Лемпицкий [129]Лебедев, Лемпицкий [129]Джадерберг, Ведальди, Зиссерман [125]Лебедев и др.
[126]Дентон и др. [124]20×9×6,6×4,5×2,7×top-1 +1,1%top-1 +0,3%+1%+1%+1%В таблице 2 приведено сравнение результатов перфорации с важностной маской после дообучения с опубликованными ранее результатами. Используется сеть AlexNet и слой conv2. Согласно результатам статьи [129], пространственный размер ядра свёрточного слоя conv2 можетбыть уменьшен с небольшой потерей точности. Уменьшим пространственный размер свёртки с5 × 5 до 3 × 3 и применим важностную маску перфорации. В результате слой ускоряется в 9,1раза при увеличении top-5 ошибки на 1%. Использование более продвинутого метода [129] дляуменьшения пространственного размера ядра свёртки может привести к дальнейшему улучшениюрезультатов.2.4.2 Базовые методыВ этом подразделе перфорация сравнивается с базовыми методами уменьшения сложностивычислений СНС, которые используют пространственную избыточность промежуточных представлений. В отличие от перфорации, эти методы уменьшают размер активаций (промежуточныхвыходов) СНС.
Для сети с полносвязными слоями это привело бы к изменению числа параметров в первом полносвязном слое, что по сути поменяло бы архитектуру СНС. Чтобы избежатьэтого, воспользуемся сетью NIN для выборки CIFAR-10, которая использует глобальный пулингс операцией среднего.Будем рассматривать следующие базовые методы:– Размер. Размер входного изображения уменьшается с сохранением соотношения сторон.– Шаг.
Шаг свёрточных слоёв увеличивается, что делает пространственный размер активаций меньше.– Дробный шаг. Более гибкая альтернатива методу шаг. По аналогии с дробным пулингомс операцией максимум [133], мы предлагаем применять свёрточный слой на нерегуляр-52ной решётке, то есть с варьирующимся шагом. Это позволяет более точно варьироватьразмер активаций, а значит, и ускорение. Для генерации позиций, в которых вычисляетсясвёрточный слой, используем тот же метод, что и для решётчатой маски перфораций.Эти стратегии сравниваются с перфорацией всех слоёв с двумя типами масками, которыелучше всего показали себя в прошлом подразделе –– решётчатой и важностной.
Заметим, чтоперфорация с важностной маской эквивалентна использованию дробного шага в свёрточном слое,но с интерполяцией пропущенных значений.Методы шаг и дробный шаг требуют установки одного параметра ускорения для каждогосвёрточного слоя, что приводит к большому числу возможных конфигураций.
Опишем способвыбора этих значений.– Для перфорации с важностной маской используется жадный алгоритм, описанный в подразделе 2.3.3.– Для метода шаг рассматриваются все комбинации значений шага для каждого свёрточногослоя, такие, что выход последнего свёрточного слоя имеет ненулевой размер.– Для перфорации с решётчатой маской и базового метода дробный шаг в каждом слое9рассматривается набор степеней перфорации 13 , 12 , . . . , 89 , 10(для метода дробный шаг эточисло интерпретируется как доля подсчитываемых выходов свёрточного слоя).Далее, для каждого метода строится фронт оптимальных по Парето конфигураций, которые приводят к наименьшему росту ошибки при ускорении на CPU не меньше заданного.
Наконец, весасетей обучаются «с нуля» (со случайной инициализации) для Парето-оптимальных конфигурацийпараметров с коэффициентами ускорения всей сети близких к 2×, 3×, 4×. Для базового методадробный шаг мы применяем дообучение, поскольку для этого метода оно работает существеннолучше обучения со случайной инициализацией.Результаты эксперимента приведены на рис. 2.8. Перфорация с важностной маской оказывается лучшей стратегией как для исходной сети, так и после повторного обучения сети. Перфорацияс решётчатой маской работает немного хуже. Изменение шага свёрточных слоёв используется вомногих СНС, к примеру, AlexNet, для уменьшения стоимости вычислений как на этапе обучения,так и на этапе тестирования. Наши результаты показывают, что в случаях, когда изменение размера промежуточных представлений и обучение сети с нуля является допустимым, это действительно хорошая стратегия.
Несмотря на бо́льшую общность, метод дробный шаг работает хужеметода шаг. Скорее всего причина заключается в том, что дробный шаг неравномерно уменьшает разрешение выходов свёрточного слоя, что затрудняет их обработку следующим свёрточнымслоем.2.4.3Ускорение всех свёрточных слоёвВ этом разделе мы применяем перфорацию для ускорения всех свёрточных слоёв в трёх СНС.Степени перфорации подбираются при помощи жадного метода, описанного в подразделе 2.3.3.18 19Используются двадцать степеней перфорации: 13 , 21 , 23 , . . .
, 19, 20 . Для NIN и AlexNet используется60155014(%)(%)53403012201,013111,52,02,53,0CPU ()3,54,01,01,52,02,53,0CPU ()3,54,0а) Исходная сетьб) После повторного обученияРисунок 2.8 — Сравнение перфорации всей сети с решётчатой и важностной масками и базовыхметодов (изменение размера входного изображения и увеличение шага свёрточных слоёв) длязадачи ускорения сети Network in Network на выборке данных CIFAR-10.важностная маска перфорации. Для VGG-16 используется решётчатая маска, поскольку на практике это существенно упрощает дообучение сети. Использование более чем одного типа масокперфорации не улучшает результаты.
Подбор степеней перфорации для самой большой из рассматриваемых СНС, VGG-16, занимает около одного дня. После ускорения проводится дообучение весов сети с целью уменьшить ошибку. Мы не наблюдали проблем при дообучении, такихкак взрыв или затухание градиентов. Результаты эксперимента приведены в таблице 3. Перфорация сильно ухудшает работу сети, однако дообучение весов восстанавливает существенную частьточности. Все рассматриваемые сети можно ускорить в два раза на CPU и на GPU с увеличением ошибки не более чем на 2,6%.
Теоретические ускорения, как правило, близки к эмпирическим.Кроме того, объём памяти, требуемой для хранения активаций сети, сильно снижается за счётхранения лишь неперфорированных значений.2.4.4 Способы интерполяцииВ данном подразделе сравниваются три способа интерполяции пропущенных при перфорации значений:– Интерполяция методом ближайшего соседа. Значение в перфорированной позиции заменяется на значение ближайшей (по евклидовому расстоянию) неперфорированной позиции. Этот метод используется во всех остальных экспериментах главы.– Замена значений в перфорированных позициях нулём.– Барицентрическая интерполяция. Проводится триангуляция Делоне множества неперфорированных позиций I. Значение в перфорированных позициях, находящихся внутри одного из треугольников, принимается равным взвешенной сумме значений в вершинах треугольника с весами, равными барицентрическим координатами.
Для внешних перфорированных точек используется интерполяция методом ближайшего соседа.54Таблица 3 — Результаты ускорения СНС. Стрелки показывают увеличение или уменьшениеметрики. Ускорение измеряется по реальному времени. Операции –– число операций всвёрточных слоях, их уменьшение –– теоретическое ускорение). Память –– объём памяти,требуемый для хранения активаций сети. Ошибка дообуч. –– ошибка после обучения с нуля (дляNIN) или дообучения (AlexNet, VGG16) параметров ускоренной сети.СетьУстройство Ускорение Операции ↓NIN2,2×3,1×4,2×2,1×3,0×3,5×2,5×4,4×6,6×3,6×10,1×19,1×2,0×3,5×4,4×3,3×5,7×9,2×+1,5+5,5+8,3+4,5+18,2+37,4+0,4+1,9+2,9+1,6+5,6+12,42,0×3,0×3,6×2,0×3,0×4,1×2,1×3,5×4,4×2,0×2,6×3,4×1,8×2,6×2,9×1,7×2,0×2,4×+10,7+28,0+60,7+8,5+16,4+28,1+2,3+6,1+9,9+2,0+3,2+6,22,0×3,0×4,0×2,0×3,0×4,0×1,8×2,9×4,0×1,9×2,8×4,7×1,5×1,8×2,5×1,7×2,4×3,4×+15,6+54,3+71,6+23,1+65,0+76,5+1,1+3,7+5,5+2,5+6,8+7,3CPUGPUCPUAlexNetGPUCPUVGG-16GPU88664442221234(5)601а) conv2, ближайший сосед234(5)6б) conv2, замена нулём8664442221234(5)60234(5)6860110(%)80в) conv2, барицентрическая10(%)10(%)860Ошибка дообуч.