Свёртка для последовательностей
Операция свёртки
Пусть - обрабатываемая последовательность значений. Например, это может быть последовательность температур прибора, снимаемая каждые 10 секунд.
Свёртка (convolution) обладает параметрами:
-
(ядро свёртки, convolution kernel, обычно нечётное по размеру, но может быть и чётным)
-
смещение .
Выходом операции свёртки будет тоже последовательность с элементами, считаемыми по формуле
Таким образом, свёртка генерирует последовательность, каждый элемент которой получается одним и тем же линейным преобразованием с параметрами.
Рассмотрим пример вычисления свёртки для следующих данных:
Тогда выходной ряд будет строится следующим образом:
Примеры свёрток
Рассмотрим частные виды свёрток. У всех смещение будет браться равным нулю.
-
: отвечает равномерному усреднению, сглаживает временной ряд.
-
: неравномерное усреднение, сглаживает временной ряд, но у центральных элементов вклад больше.
-
: вычисляет разностную производную , т.е. скорость изменения наблюдаемой величины.
-
: вычисляет разностную вторую производную , т.е. скорость изменения скорости наблюдаемой величины.
Раньше параметры свёрток подбирались вручную. Но если есть обучающая выборка, то лучше будет работать свёртка с автоматически настраиваемыми параметрами яд ра и смещения, что в общем случае и делают.
Свойства свёртки
Свёртка извлекает один и тот же линейный признак в каждой позиции локально относительно этой позиции. Таким образом, свёртка обеспечивает свойство эквивариантности к сдвигу (translation equivariance). Это проиллюстрировано ниже, где слева показан линейный слой обычного многослойного персептрона, а справа - операция свёртки:
Как видим, свёртка предполагает существенно меньшее количество связей (sparse connections), что обеспечивает более быстрое вычисление и требует меньшее число параметров. Дополнительное уменьшение параметров обеспечивается общностью весов (parameter sharing). На рисунке справа одинаковые веса обозначены одним цветом.
Свёртку можно применять к входным данным разной длины, причем число оцениваемых параметров будет одним и тем же - .
На многопроцессорных вычислительных устройствах, таких как видеокарта, вычисления производятся не последовательно один за другим, а параллельно, поэтому свёртка считается очень быстро.
Также можно обратить внимание, что выходная последовательность получается короче на , чем входная, поскольку ядро свёртки упирается в начало и конец входной временной последовательности.
Обработка динамического временного ряда специфична тем, что наблюдения поступают последовательно, а будущие наблюдения еще неизвестны, когда нужно формировать выход . Для такого рода данных свёртке разрешается смотреть только на последние располагаемые наблюдений:
а у самой свёртки остаются только параметров и . Пример действия такой свёртки показан ниже: