21
Convolutions of Discrete Functions Convolutions of Continuous Functions Computational Foundations of Cognitive Science Lecture 15: Convolutions and Kernels Frank Keller School of Informatics University of Edinburgh [email protected] February 23, 2010 Frank Keller Computational Foundations of Cognitive Science 1

Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

Computational Foundations of Cognitive ScienceLecture 15: Convolutions and Kernels

Frank Keller

School of InformaticsUniversity of [email protected]

February 23, 2010

Frank Keller Computational Foundations of Cognitive Science 1

Page 2: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

1 Convolutions of Discrete FunctionsDefinitionConvolution of VectorsMid-lecture ProblemConvolution of Matrices

2 Convolutions of Continuous FunctionsDefinitionExample: Signal Processing

Frank Keller Computational Foundations of Cognitive Science 2

Page 3: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionConvolution of VectorsMid-lecture ProblemConvolution of Matrices

Definition

Definition: Convolution

If f and g are discrete functions, then f ∗ g is the convolution of fand g and is defined as:

(f ∗ g)(x) =+∞∑

u=−∞f (u)g(x − u)

Intuitively, the convolution of two functions represents the amountof overlap between the two functions. The function g is the input,f the kernel of the convolution.

Convolutions are often used for filtering, both in the temporal orfrequency domain (one dimensional) and in the spatial domain(two dimensional).

Frank Keller Computational Foundations of Cognitive Science 3

Page 4: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionConvolution of VectorsMid-lecture ProblemConvolution of Matrices

Definition

Theorem: Properties of Convolution

If f , g , and h are functions and a is a constant, then:

f ∗ g = g ∗ f (commutativity)

f ∗ (g ∗ h) = (f ∗ g) ∗ h (associativity)

f ∗ (g + h) = (f ∗ g) + (f ∗ h) (distributivity)

a(f ∗ g) = (af ) ∗ g = f ∗ (ag) (associativity with scalarmultiplication)

Note that it doesn’t matter if g or f is the kernel, due tocommutativity.

Frank Keller Computational Foundations of Cognitive Science 4

Page 5: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionConvolution of VectorsMid-lecture ProblemConvolution of Matrices

Convolution of Vectors

If a function f ranges over a finite set of values a = a1, a2, . . . , an,then it can be represented as vector

[a1 a2 . . . an

].

Definition: Convolution of Vectors

If the functions f and g are represented as vectorsa =

[a1 a2 . . . am

]and b =

[b1 b2 . . . bn

], then f ∗ g is a

vector c =[c1 c2 . . . cm+n−1

]as follows:

cx =∑u

aubx−u+1

where u ranges over all legal subscripts for au and bx−u+1,specifically u = max(1, x − n + 1) . . .min(x ,m).

Frank Keller Computational Foundations of Cognitive Science 5

Page 6: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionConvolution of VectorsMid-lecture ProblemConvolution of Matrices

Convolution of Vectors

If we assume that the two vectors a and b have the samedimensionality, then the convolution c is:

c1 = a1b1

c2 = a1b2 + a2b1

c3 = a1b3 + a2b2 + a3b1

. . .cn = a1bn + a2bn−1 + · · ·+ anb1

. . .c2n−1 = anbn

Note that the sum for each component only includes thoseproducts for which the subscripts are valid.

Frank Keller Computational Foundations of Cognitive Science 6

Page 7: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionConvolution of VectorsMid-lecture ProblemConvolution of Matrices

Convolution of Vectors

Example

Assume a =

10−1

,b =

012

.

Then

a ∗ b =

a1b1

a1b2 + a2b1

a1b3 + a2b2 + a3b1

a2b3 + a3b2

a3b3

=

1 · 0

1 · 1 + 0 · 01 · 2 + 0 · 1 + (−1)0

0 · 2 + (−1)1(−1)2

=

012−1−2

.

Frank Keller Computational Foundations of Cognitive Science 7

Page 8: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionConvolution of VectorsMid-lecture ProblemConvolution of Matrices

Mid-lecture Problem

What happens if the kernel is smaller than the input vector (this isactually the typical case)?

Assume a =

[−1

212

],b =

111−1−1−1

. Compute a ∗ b.

What is the purpose of the kernel a?

Frank Keller Computational Foundations of Cognitive Science 8

Page 9: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionConvolution of VectorsMid-lecture ProblemConvolution of Matrices

Convolution of Matrices

We can extend convolution to functions of two variables f (x , y)and g(x , y).

Definition: Convolution for Functions of two Variables

If f and g are discrete functions of two variables, then f ∗ g is theconvolution of f and g and is defined as:

(f ∗ g)(x , y) =+∞∑

u=−∞

+∞∑v=−∞

f (u, v)g(x − u, y − v)

Frank Keller Computational Foundations of Cognitive Science 9

Page 10: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionConvolution of VectorsMid-lecture ProblemConvolution of Matrices

Convolution of Matrices

We can regard functions of two variables as matrices withAxy = f (x , y), and obtain a matrix definition of convolution.

Definition: Convolution of Matrices

If the functions f and g are represented as the n×m matrix A andthe k × l matrix B, then f ∗ g is an (n + k − 1)× (m + l − 1)matrix C :

cxy =∑u

∑v

auvbx−u+1,y−v+1

where u and v range over all legal subscripts for auv andbx−u+1,y−v+1.

Note: the treatment of subscripts can vary from implementation toimplementation, and affects the size of C (this is parameterizable inMatlab, see documentation of conv2 function).

Frank Keller Computational Foundations of Cognitive Science 10

Page 11: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionConvolution of VectorsMid-lecture ProblemConvolution of Matrices

Convolution of Matrices

Example

Let A =

a11 a12 a13

a21 a22 a23

a31 a32 a33

and B =

b11 b12 b13 b14 b15

b21 b22 b23 b24 b25

b31 b32 b33 b34 b35

b41 b42 b43 b44 b45

.

Then for C = A ∗ B, the entry c33 = a11b33 + a12b32 + a13b31 +a21b23 + a22b22 + a23b21 + a31b13 + a32b12 + a33b11.

Here, B could represent an image, and A could represent a kernelperforming an image operation, for instance.

Frank Keller Computational Foundations of Cognitive Science 11

Page 12: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionConvolution of VectorsMid-lecture ProblemConvolution of Matrices

Example: Image Processing

Convolving and image with a kernel (typically a 3× 3 matrix) is apowerful tool for image processing.

B = K ∗ B =

K =

1/9 1/9 1/91/9 1/9 1/91/9 1/9 1/9

implements a mean filter which smooths an

image by replacing each pixel value with the mean of its neighbors.

Frank Keller Computational Foundations of Cognitive Science 12

Page 13: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionConvolution of VectorsMid-lecture ProblemConvolution of Matrices

Example: Image Processing

B = K ∗ B =

The kernel K =

1 0 −12 0 −21 0 −1

implements the Sobel edge detector.

It detects gradients in the pixel values (sudden changes in brightness),which correspond to edges. The example is for vertical edges.

Frank Keller Computational Foundations of Cognitive Science 13

Page 14: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionExample: Signal Processing

Definition

We can also define convolution for continuous functions. In thiscase, we replace the sums by integrals in the definition.

Definition: Convolution

If f and g are continuous functions, then f ∗ g is the convolutionof f and g and is defined as:

(f ∗ g)(x) =

∫ +∞

−∞f (u)g(x − u)du

Convolutions of continuous functions are widely used in signalprocessing for filtering continuous signals, e.g., speech.

Frank Keller Computational Foundations of Cognitive Science 14

Page 15: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionExample: Signal Processing

Definition

Example

Assume the following step functions:

g(x) =

{3 if 0 ≤ x ≤ 40 otherwise

f (x) =

{12 if − 1 ≤ x ≤ 10 otherwise

If we integrate g(x), we get: G (x) =

0 if x ≤ 03x if 0 ≤ x ≤ 412 if x > 4

.

Then the convolution f ∗ g is:

(f ∗ g)(x) =∫ +∞−∞ f (u)g(x − u)du = 1

2

∫ 1

−1g(x − u)du =

− 12

∫ x−1

x+1g(u)du = − 1

2 (G (x − 1)− G (x + 1)) =32 (x + 1) if − 1 ≤ x < 13 if 1 ≤ x ≤ 3− 3

2 (x − 1) + 6 if 3 < x ≤ 50 otherwise

Frank Keller Computational Foundations of Cognitive Science 15

Page 16: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionExample: Signal Processing

Definition

Function g(x) (blue) and convolution f ∗ g(x) (green):

−2 −1 0 1 2 3 4 5 6−1

−0.5

0

0.5

1

1.5

2

2.5

3

3.5

4

Frank Keller Computational Foundations of Cognitive Science 16

Page 17: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionExample: Signal Processing

Example: Signal Processing

Assume we have a function I (x) that represents the intensity of asignal over time. This can be a very spiky function.

We can make this function less spiky by convolving it with aGaussian kernel. This is a kernel given by the Gaussian function:

G (x) =1√2π

e−12x2

The convolution G ∗ I is a smoothed version of the originalintensity function.

We will learn more about the Gaussian function (aka normaldistribution) in the second half of this course.

Frank Keller Computational Foundations of Cognitive Science 17

Page 18: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionExample: Signal Processing

Example: Signal Processing

Gaussian function G (x):

−3 −2 −1 0 1 2 30

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

Frank Keller Computational Foundations of Cognitive Science 18

Page 19: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionExample: Signal Processing

Example: Signal Processing

Original intensity function I (x):

0 20 40 60 80 100 120 140 160 180 2000

20

40

60

80

100

120

140

160

180

200

220

Frank Keller Computational Foundations of Cognitive Science 19

Page 20: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionExample: Signal Processing

Example: Signal Processing

Smoothed function obtained by convolution with a Gaussian kernel:

0 20 40 60 80 100 120 140 160 180 2000

20

40

60

80

100

120

140

160

180

200

220

Frank Keller Computational Foundations of Cognitive Science 20

Page 21: Computational Foundations of Cognitive Science · 2010-02-23 · If f and g are continuous functions, then f ∗g is the convolution of f and g and is defined as: (f ∗g)(x) = Z

Convolutions of Discrete FunctionsConvolutions of Continuous Functions

DefinitionExample: Signal Processing

Summary

The convolution (f ∗ g)(x) =∑

f (u)g(x − u) represents theoverlap between a discrete function g and a kernel f ;

convolutions in one dimension can be represented as vectors,convolutions in two dimensions as matrices;

in image processing, two dimensional convolution can be usedto filter an image or for edge detection;

for continuous functions, convolution is defined as(f ∗ g)(x) =

∫f (u)g(x − u)du;

this can be used in signal processing, e.g., to smooth a signal.

Frank Keller Computational Foundations of Cognitive Science 21