Sobes.tech
Junior — Senior
35

Какая разница между свёрткой и кросс-корреляцией?

Компании, где спрашивали
РобоСиб

Ответ от нейросети

sobes.tech AI

Свёртка (convolution) и кросс-корреляция (cross-correlation) — это операции, часто используемые в обработке сигналов и компьютерном зрении, особенно в свёрточных нейронных сетях (CNN).

Основное отличие:

  • В свёртке ядро (фильтр) поворачивается на 180 градусов перед применением к входному сигналу или изображению.
  • В кросс-корреляции ядро применяется без поворота.

То есть, если обозначить входной сигнал как ( f ), ядро как ( g ), то:

  • Свёртка: ( (f * g)(t) = , \sum_{\tau} f(\tau) , g(t - \tau) )
  • Кросс-корреляция: ( (f \star g)(t) = , \sum_{\tau} f(\tau) , g(t + \tau) )

На практике в машинном обучении чаще используется операция, аналогичная кросс-корреляции, но её называют свёрткой.

Пример:

Если у вас есть фильтр:

1 0
0 -1
  • При свёртке он будет повернут на 180°, то есть:
-1 0
0 1
  • При кросс-корреляции фильтр используется без изменений.

В большинстве библиотек глубокого обучения (например, PyTorch, TensorFlow) операция свёртки реализована как кросс-корреляция, то есть без поворота ядра.

Таким образом, разница техническая и важна для теоретического понимания, но на практике в ML чаще применяется кросс-корреляция, называемая свёрткой.