Диссертация (1137108), страница 6
Текст из файла (страница 6)
Полученный набор выходов позволяет оценить неуверенность сети в предсказаниях.Дропаут можно рассматривать как способ превратить детерминированную сеть в нейронную сеть со стохастическими переменными. Однако параметры этих переменных не настраиваются. Данное ограничение снимается в методе вариационного дропаута [78], позволяющего оптимизировать вероятности дропаута (в немного другой формулировке, а именно, с использованиемнормального распределения вместо Бернулли) при помощи максимизации вариационной нижнейоценки на правдоподобие.
Заметим, что если вероятность ζ стремится к нулю, то нейрон можетбыть полностью исключён из сети. На основе этого соображения удалось построить вероятностные методы разреживания [79] и ускорения [80] нейронных сетей.23СофтмаксСлой софтмакса преобразует входной C-мерный вектор в дискретное вероятностное распределение над C классами. Чаще всего слой софтмакса используется как последний слой нейросети, если требуется решить задачу классификации на C классов.
Данный слой также можнорассматривать как функцию активации специального вида, применяемую ко всем нейронам сразу.Входы слоя U ∈ RC часто называют логитами вероятностей, по названию функции, обратной к софтмаксу. Выход слоя V ∈ RC задаётся следующим образом:exp(Ui )Vi = ∑C,j=1 exp(Uj )i = 1, . . .
, C.(1.49)1.1.7 Слои свёрточных нейросетевых моделейПерейдём теперь к рассмотрению слоёв, которые используются в свёрточных нейронныхсетях [8]. В отличие от полносвязных нейронных сетей, где входами и выходами слоёв являютсявектора, свёрточные сети обычно оперируют трёхмерными тензорами (массивами) вещественныхчисел. Первые две размерности тензора соответствуют пространственным координатам, а третьяразмерность соответствует каналам. Например, квадратное изображение размера 32 на 32 с тремяRGB-каналами будет записано в тензор из пространства R32×32×3 . Заметим, что свёрточные нейронные сети могут применяться к тензорам более высокой размерности, например, к видео, гдедополнительная пространственная координата это номер кадра [81; 82], или к данным трёхмерного сканирования, где третья пространственная координата соответствует глубине [83].Ключевой идеей свёрточных нейронных сетей является использование слоёв, обладающимидвумя свойствами.
Во-первых, они инвариантны к переносу по пространственным координатам(по каналам инвариантность не требуется). Во-вторых, вычисления в слоях локальны, то есть значение выхода в конкретной позиции зависит лишь от небольшого подмножества позиций входа.Это даёт несколько важнейших преимуществ при обработке изображений:1. Автоматически обеспечивается присутствующая в реальных фотографиях инвариантности к сдвигу. Например, в задаче классификации смещение объекта не меняет его класса.2. Существенно снижается объём вычислений за счёт локальности.3. На порядки снижается число параметров модели за счёт их переиспользования в различных пространственных координатах.Важной концепцией свёрточных сетей является полносвёрточность [31] –– возможность ихприменения к входам различного пространственного размера, что нереализуемо в полносвязныхсетях.
Действительно, поскольку слои инвариантны к переносу и локальны, любое (достаточнобольшое) изображение может быть обработано сетью с одними и теми же параметрами. Полносвёрточность крайне полезна для задач плотной разметки (dense prediction), например, семантиче-24ской сегментации [31], где размерность входа и выхода совпадают. Как будет описано далее, длязадач с фиксированной размерностью выхода используется операция глобального пулинга, позволяющая получить вектор фиксированного размера для изображения с любым пространственнымразрешением.Свёрточный слойДля начала рассмотрим свёрточный слой [8].
Входом этого слоя является трёхмерный тензорU ∈ RX×Y ×S , где X –– ширина, Y –– высота, а S –– число каналов входа. Каналы также называютнейронами. Параметрами свёрточного слоя являются четырёхмерный тензор свёрточных фильтров (ядер) K ∈ Rd×d×S×T и вектор смещений b ∈ RT . Здесь d × d –– размер фильтров, а T ––число каналов выхода. Размерность выхода зависит от параметров, которые будут рассмотрены′′далее, но в простейшем случае выход это тензор V ∈ RX ×Y ×T , X ′ = X − d + 1, Y ′ = Y − d + 1.Операция применения свёрточного слоя обозначается символом ∗:V = U ∗ K.(1.50)Для применения свёрточного слоя нужно подсчитать скалярное произведение каждого из Tсвёрточных ядер со всевозможными подтензорами U размера d × d × S:Vxyt =d ∑d ∑S∑Ux+i−1,y+j−1,s Kijst(1.51)i=1 j=1 s=1Число операций умножения для подсчёта свёрточного слоя составляетP = X ′ Y ′ T Sd2 ,(1.52)а число операций сложения –– X ′ Y ′ T (Sd2 − 1).
Как правило, число операций сложения округляется вверх до P . Таким образом, сложность свёрточного слоя составляет P , если в качестве базовой операции используется операция сложения-умножения (multiply-add), либо 2P , если операциисложения и умножения рассматриваются раздельно.Для достижения высокой вычислительной эффективности многие библиотеки глубинногообучения, такие как Caffe [40] и MatConvNet [41], сводят вычисление свёрточного слоя к операции матричного умножения, для которой имеются тщательно оптимизированные реализации вбиблиотеках линейной алгебры. Данное сведение иллюстрируется на рис.
1.1. В начале при помощи функции im2row строится матрица данных M размера X ′ Y ′ × d2 S. Строки матрицы M ––элементы подтензоров размера d × d × S входного тензора U . Затем матрица M умножается наядро свёртки K, развёрнутое в матрицу размера d2 S ×T . Получившаяся матрица размера X ′ Y ′ ×Tсодержит результат применения свёрточного слоя, тензор V , с точностью до преобразования размера (операции reshape).
Более подробно этот механизм описан в [41].Рассмотрим теперь основные параметры свёрточного слоя. Хорошим руководством по параметрам свёрточных слоёв является [84].25матрица данных Mтензор Uтензор Vядра Kim2row=×" 1′% ′1X′" Рисунок 1.1 — Сведение вычисления свёрточного слоя к матричному умножению.Важнейшим параметром является размер ядра свёртки d × d. В современных архитектурахсвёрточных нейронных сетей этот параметр обычно выбирают равным либо 1 × 1, либо 3 × 3. Первый вариант, применяемый в модели NIN [85], приводит к очень низкой стоимости вычисленийи малому числу параметров, но не позволяет учитывать пространственные зависимости.
Второйвариант на сегодня крайне распространён и был популяризирован моделью VGG-16 [28]. Ядрабольшего размера иногда используются в первом свёрточном слое. Например, в ResNet [12; 70]размер фильтров первого свёрточного слоя равен 7 × 7.Свёрточный слой уменьшает пространственную размерность входа. Это затрудняет конструирование глубинных моделей, которые могут состоять из сотен свёрточных слоёв. Кроме того,пространственная размерность выхода зависит от размера фильтров. В качестве решения используется пэддинг (padding), то есть добавление по пространственным координатам входа рамки изнулевых значений.
Наиболее распространённым режимом пэддинга является SAME, при которомс каждой из четырёх сторон добавляется по d2 нулевых значений (предполагается, что d нечётное).В таком случае размеры выхода совпадают с размерами входа: X ′ = X, Y ′ = Y . Случай, когдарамка не добавляется, называется режимом VALID. В этом случае X ′ = X − d + 1, Y ′ = Y − d + 1.Другим важным параметром свёрточного слоя является шаг (stride).
Если шаг равен m, товыходы свёрточного слоя вычисляются в каждой m-й позиции как по горизонтали, так и по вертикали:X′Y′V ∈ R⌊ m ⌋×⌊ m ⌋×T ,Vxyt =d ∑d ∑S∑Uxm+i−1,ym+j−1,s Kijst .(1.53)(1.54)i=1 j=1 s=1Это снижает число элементов выхода и объём вычислений в m2 раз. Свёрточный слой с шагоминогда применяется вместо операции пулинга для снижения пространственного разрешения [86;87].Наконец, относительно распространённым параметром свёрточного слоя является число групп фильтров (filter groups).
Данный параметр используется, к примеру, в архитектурахAlexNet [11] и ResNeXt [88]. Пусть число групп фильтров равно k, где k делит число входных каналов S и число выходных каналов T нацело. Поделим каналы входа и выхода на k групп равногоразмера и взаимно однозначно сопоставим группы входа и выхода. Для каждой группы зададим26свой тензор свёрточных фильтров и будем применять для каждой пары групп свёрточный слойнезависимо, после чего объединим результаты. Таким образом, тензор всех свёрточных фильтровимеет видSTK ∈ Rd×d× k × k ,(1.55)а объём вычислений уменьшится в k раз, поскольку внутреннняя сумма в (1.51) будет проходить поSэлементам вместо S. Влияние числа групп фильтров на точность и скорость работы свёрточныхkсетей рассмотрено в работе [89].После свёрточных слоёв используются такие же функции активации, как и после полносвязных слоёв.
Функции активации применяются поэлементно ко всем элементам тензора.ПулингСлой пространственного пулинга (spatial pooling), или просто пулинга, понижает пространственную размерность входного тензора, не меняя число каналов [90]. Для этого к каждому каналу независимо применяется аггрегирующая операция скользящим окном с некоторым шагом.Практически всегда используется одна из двух операций: максимум или среднее. Это позволяетаггрегировать информацию по пространственным координатам, что повышает инвариантность ксдвигу в координатах исходного изображения.Обозначим операцию скользящего окна через op, размер скользящего окна через d × d, а шаг′′через m. Также обозначим входной тензор U ∈ RX×Y ×S , а выходной тензор V ∈ RX ×Y ×S , где⌋, Y ′ = ⌊ Y −d+1⌋.
Тогда выход слоя пулинга определяется следующим образом:X ′ = ⌊ X−d+1mm()Vxys = op {Uxm+i−1,ym+j−1,s }X,Y(1.56)i=1,j=1 .Как и свёрточный слой, пулинг часто применяется с пэддингом в режиме VALID. В таком случаеY⌋, Y ′ = ⌊ m⌋.выход имеет размерность X ′ = ⌊ XmРаспространена операция глобального пулинга (global pooling) [85; 91] –– пулинг без пэддинга и с размером окна, равным размеру входа. Другими словами, операция максимума или среднего применяется ко всем пространственным позициям. Выходом такого слоя является тензорV ∈ R1×1×S , который рассматривается как вектор длины S, дескриптор (описание) всего входного изображения. После операции глобального пулинга можно применить полносвязные слои,например, для получения вероятностей за классы в задаче классификации.