convolution

En matematisk operation, der anvender et filter (kernel) på inputdata for at detektere mønstre, og som udgør den grundlæggende byggesten i konvolutionelle neurale netværk.

Kort fortalt

Konvolution er en måde at glide et lille filter hen over et billede (eller andet data) for at fremhæve træk som kanter eller teksturer.

Kategori
teknik
Niveau
øvet
Udtale
/kɔnvɔˈluʃən/

Betydninger

2
  1. 1

    En matematisk operation, der kombinerer to funktioner (signal og kernel) til en tredje funktion, der udtrykker, hvordan den ene funktion modificerer den anden.

    • Inden for signalbehandling anvendes konvolution til filtrering af støj fra et lydsignal.Lærebog i signalbehandling
    • Diskret konvolution implementeres ofte vha. FFT for effektivitet.
  2. 2

    I neurale netværk: en operation, der anvendes i konvolutionelle lag, hvor et lært filter (kernel) glider over inputtet for at producere et feature map.

    • Det første konvolutionelle lag i et CNN detekterer ofte simple træk som kanter.Forskningsartikel, 2012
    • Konvolution med 3x3-kernels er populær i moderne CNN-arkitekturer.

Hvornår bruges det

Konvolution bruges især i billedbehandling og dybdelæring til at udtrække hierarkiske træk. I konvolutionelle neurale netværk (CNN'er) anvendes konvolution lag for lag til at lære mønstre som kanter, former og objekter.

Formel

(I * K)(x,y) = Σ_m Σ_n I(x+m, y+n) · K(m,n)  for diskret 2D-konvolution

Kodeeksempel

import numpy as np

def convolve2d(input_matrix, kernel):
    h, w = input_matrix.shape
    kh, kw = kernel.shape
    out_h = h - kh + 1
    out_w = w - kw + 1
    output = np.zeros((out_h, out_w))
    for i in range(out_h):
        for j in range(out_w):
            output[i,j] = np.sum(input_matrix[i:i+kh, j:j+kw] * kernel)
    return output

# Eksempel
img = np.array([[1,2,3],[4,5,6],[7,8,9]])
kernel = np.array([[1,0],[-1,1]])
result = convolve2d(img, kernel)
print(result)

En simpel implementering af 2D-konvolution i Python vha. numpy.

Oprindelse

Fra latin 'convolvere' (sammenrullet). Matematisk begreb kendt siden det 18. århundrede, men anvendt i neurale netværk fra 1980'erne.

Afledte ord

3

Kilder

3
  • LeCun, Y. et al. (1998). Gradient-based learning applied to document recognition
  • Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning
  • Krizhevsky, A. et al. (2012). ImageNet Classification with Deep Convolutional Neural Networks