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 чаще применяется кросс-корреляция, называемая свёрткой.