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

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

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

На рисунке ниже показана транспонированная свертка:

Приложения транспонированных сверток

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

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

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

4. Наконец, и, возможно, совсем недавно, они используются в так называемом сверточном автоэнкодере. В них сверточные слои используются для поиска кодировки некоторого ввода, т. е. представления исходного ввода в гораздо более низкой размерности. Ярким примером может служить радиолокационное изображение с наземной миной и изображение без наземной мины. В последнем случае можно обучить автоэнкодер находить конкретную кодировку. Однако автоэнкодеры также содержат декодирующую сторону: при наличии некоторого закодированного ввода он пытается найти исходный вывод (что неудивительно, повышая уровни дискретизации, такие как транспонированные свертки). Сравнивая исходное входное изображение с выходным изображением, можно определить, принадлежит ли входное изображение к определенному классу. В нашем случае это будет наземная мина да/нет, а «да» будет иметь место только в том случае, если декодированное кодирование действительно похоже на исходное изображение, поскольку тогда обученное наземной миной кодирование работало хорошо.