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
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
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-konvolutionKodeeksempel
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
3Kilder
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