302
Сверточные сети
(9.10)
где знак процента обозначает операцию деления по модулю:
t
%
t
= 0, (
t
+ 1)%
t
= 1 и т. д.
Эта формула легко обобщается на различные периоды по каждому направлению.
Локально связные слои и слои с периодической сверткой интересно взаимо-
действуют с max-пулингом: детекторные блоки таких слоев управляются разными
фильтрами. Если эти фильтры обучены обнаруживать различные преобразованные
варианты одних и тех же базовых признаков, то блоки max-пулинга оказываются
инвариантны относительно обученных преобразований (см. рис. 9.9). В сверточные
слои изначально «зашита» инвариантность относительно параллельного переноса.
Для реализации сверточной сети обычно необходимы и другие операции, помимо
свертки. Для обучения нужно уметь вычислять градиент относительно ядра, если из-
вестен градиент относительно выходов. В некоторых простых случаях эту операцию
можно выполнить с помощью свертки, но большинство интересных случаев, в т. ч.
свертка с шагом 1, не обладает этим свойством.
Напомним, что свертка – это линейная операция и потому может быть описана как
умножение на матрицу (если предварительно вытянуть входной тензор в плоский
вектор). Соответствующая матрица является функцией от ядра свертки. Эта матри-
ца разреженная, и каждый элемент ядра копируется в несколько элементов матрицы.
Такое представление поможет нам вывести некоторые дополнительные операции, не-
обходимые для реализации сверточной сети.
Одна из таких операций – умножение на матрицу, транспонированную к матрице,
определяемой сверткой. Эта операция нужна для обратного распространения ошиб-
ки через сверточный слой, а стало быть, необходима для обучения сверточных се-
тей, содержащих более одного скрытого слоя. Она же встречается, когда требуется
реконструировать видимые блоки по скрытым (Simard et al., 1992). Реконструкция
видимых блоков часто используется в моделях, описанных в третьей части книги:
автокодировщики, ограниченные машины Больцмана и разреженное кодирование.
Транспонирование свертки необходимо для построения сверточных вариантов таких
моделей. Как и операцию градиента относительно ядра, эту операцию над градиентом
входа иногда удается выполнить с помощью свертки, но в общем случае требуется
реа лизовать третью операцию. Следует соблюдать осторожность при координирова-
нии операции транспонирования с прямым распространением. Размер выхода, воз-
вращаемого операцией транспонирования, зависит от стратегии дополнения нулями
и шага операции прямого распространения, а также от размера выходной карты пря-
мого распространения. В некоторых случаях разные размеры входа прямого распро-
странения могут давать одинаковый размер выхода, поэтому операции транспониро-
вания нужно явно указать размер первоначального входа.
Этих трех операций – свертка, обратное распространение от выхода к весам и об-
ратное распространение от выхода к входам – достаточно для вычисления всех гради-
ентов, необходимых для обучения сверточной сети прямого распространения любой
глубины, а также для обучения сверточной сети с функциями реконструкции, осно-
ванными на транспонировании свертки. Полный вывод уравнений в общем много-
мерном случае с несколькими примерами см. в работе Goodfellow (2010). Чтобы вы
могли составить представление о том, как эти уравнения работают, рассмотрим дву-
мерный случай с одним примером.
Допустим, мы хотим обучить сверточную сеть, в которой имеется свертка с ша-
гом
s
группы ядер
Do'stlaringiz bilan baham: |