임펄스를 하나 넣어 얻은 응답으로 다른 입력의 출력까지 계산할 수 있을까? 있다면 그 계산은 어떤 모양일까?
임펄스 응답
임펄스를 넣었을 때 시스템이 내는 출력을 임펄스 응답(impulse response)이라고 한다. 여기에는 시간이 둘 있다. 출력을 보는 시각 t와 임펄스를 넣은 시각 τ이다. 시각 τ에 넣은 임펄스의 응답을 h(t,τ)로 쓴다(hτ(t)로 쓰기도 한다).
h(t,τ)=H{δ(t−τ)}
일반적인 시스템에서는 τ마다 응답의 모양이 다를 수 있다. 시불변 시스템에서는 임펄스를 늦게 넣으면 같은 응답이 늦게 나올 뿐이다.
시불변이면h(t,τ)=h(t−τ,0)≡h(t−τ)
따라서 시불변 시스템은 t=0에 넣은 임펄스의 응답 h(t)=H{δ(t)} 하나만 알면 된다.
출력 v(t)가 v′(t)+a(t)v(t)=x(t)를 따르는 1차 시스템에서, 임펄스를 넣기 전 상태가 0이면 면적 1인 임펄스가 v를 1만큼 올린다. 그 뒤에는 v′=−a(t)v이므로 임펄스 응답은 다음과 같다.
h(t,τ)=e−∫τta(s)dsu(t−τ)
a가 시간에 따라 바뀌면 그 변화는 임펄스를 옮겨도 같은 시각에 일어나므로, 일반적으로 h(t,τ)=h(t−τ,0)이다. 늦게 넣은 임펄스의 응답이 먼저 넣은 응답을 옮긴 모양과 다르다.
같은 임펄스를 t=0과 t=τ에 넣은 두 1차 시스템의 응답을 비교한다. 시불변 시스템은 감쇠율 a가 늘 1s−1이고, 시변 시스템은 t=2 s에 a가 3s−1로 바뀐다. 커패시터에 전류를 넣고 전압 v를 보는 회로에서 병렬 저항을 t=2 s에 스위치로 1/3로 줄이면 이런 시변 시스템이 된다(x는 전류를 C로 나눈 값). 두 그림 모두 붉은 선이 τ에 넣은 임펄스의 응답 h(t,τ)이고, 점선은 0에 넣은 응답을 τ만큼 옮긴 h(t−τ,0)이다. 시불변 그림에서는 두 선이 늘 겹친다. 시변 그림에서는 τ를 옮겨도 붉은 선이 꺾이는 곳이 t=2 s에 머물러, 두 선이 어긋난다.
면적 1인 임펄스가 v를 1로 올리고, 그 뒤 v는 h(t, τ) = exp(−∫τt a(s) ds)로 줄어든다. 흐린 선은 0에 넣은 응답 h(t, 0)이고, 색칠한 곳이 h(t, τ)와 h(t − τ, 0)의 차이이다.
해 보기
τ=0이면 두 그림에서 붉은 선과 점선이 어떻게 되는지 보고, 이것만으로 시변인지 알 수 있는지 생각해 보라.
관찰
두 그림 모두 붉은 선과 점선이 겹친다. 0에 넣은 응답끼리 비교하므로 차이가 없다. 시변인지는 τ를 옮겨야 드러난다.
τ=1 s에서 시변 그림의 붉은 선과 점선이 꺾이는 시각을 비교하라.
관찰
붉은 선은 t=2 s에서 꺾이고 점선은 t=3 s에서 꺾인다. 시스템이 바뀌는 시각이 시계에 묶여 있어서, 늦게 넣은 임펄스의 응답은 먼저 넣은 응답을 옮긴 모양이 아니다. 시불변 그림에서는 두 선이 겹친다.
τ=2.5 s이면 시변 시스템의 응답이 어떻게 되는지, 두 그림의 차이를 비교하라.
관찰
시변 시스템에서는 t=2 s 뒤에 넣은 임펄스라 처음부터 a=3s−1로 빠르게 줄고, 차이의 최댓값이 0.38이다. 시불변 그림의 차이는 여전히 0이다.
연속시간 임펄스 δ(t)는 2장의 디랙 델타 함수로, 높이가 아니라 면적이 1이다. 이산시간 임펄스 δ[n]은 n=0에서 값이 1이고 나머지에서 0인 단위 샘플(unit sample)이다. 두 경우 모두 "크기 1짜리 임펄스를 넣었을 때의 응답"이라는 뜻은 같다.
LTI 시스템의 출력
선형이고 시불변인 시스템을 LTI 시스템이라고 한다. LTI 시스템의 출력은 입력과 임펄스 응답의 컨볼루션이다. 입력을 임펄스로 쪼개면 이 결과가 나온다.
먼저 2장의 sifting 성질에서 나온 대로, 입력을 가중·이동 임펄스의 합으로 쓴다. 시각 τ마다 면적 x(τ)dτ인 임펄스가 하나씩 있다고 보면 된다.
x(t)=∫−∞∞x(τ)δ(t−τ)dτ
이 입력을 시스템에 넣는다.
y(t)=H{∫−∞∞x(τ)δ(t−τ)dτ}
적분은 가중치 x(τ)dτ를 곱한 임펄스들의 합의 극한이다. 선형 시스템에서는 합과 배율이 시스템 밖으로 나오므로 H를 적분 안으로 옮긴다.
y(t)=∫−∞∞x(τ)H{δ(t−τ)}dτ=∫−∞∞x(τ)h(t,τ)dτ
여기까지는 선형성만 썼으므로 시변 시스템에서도 성립한다. 다만 τ마다 다른 응답 h(t,τ)를 모두 알아야 한다. 여기에 시불변성을 더하면 h(t,τ)=h(t−τ)가 되어 식이 단순해진다.
y(t)=∫−∞∞x(τ)h(t−τ)dτ=(x∗h)(t)
이 적분을 컨볼루션 적분(convolution integral)이라고 한다. 선형성과 시불변성이 모두 있어야 이 식이 나온다. 선형성만 있으면 h(t,τ)가 남고, 시불변성만 있으면 H를 적분 안으로 옮길 수 없다.
이산시간에서도 같은 과정을 거친다. x[n]=∑kx[k]δ[n−k]로 쪼개고 각 조각의 응답 x[k]h[n−k]를 더하면 y[n]=∑kx[k]h[n−k]이다.
샘플 세 개짜리 입력 x[n]을 같은 색의 가중 임펄스 세 개로 쪼개고, 각 임펄스를 같은 시스템에 넣은 응답을 같은 n끼리 더하면 전체 출력 y[n]이 된다. n=1에서는 세 응답의 값을 더해 y[1]=0.5+2+0=2.5이다. 입력 샘플 하나의 높이를 바꾸면 그 색의 응답만 따라 커지고 작아진다.
시스템은 y[n] = x[n] + a·x[n−1]이고 처음 상태에서 a = 0.5이다. a = −1이면 앞 절의 차분 시스템이다.
해 보기
앞 절의 차분 시스템에 같은 입력을 넣었을 때 출력을 구하고, n=2의 합을 차분 행렬의 계산과 비교하라.
관찰
응답이 [1,−1]이 되고 출력은 [1,1,−3,1]이다. n=2의 합 0+(−2)+(−1)=−3은 차분 행렬의 행 2 [0,−1,1]을 이 입력 [1,2,−1]에 곱하는 계산과 같다.
입력이 가운데 샘플 하나뿐이면 출력이 응답과 어떤 관계인지 확인하라.
관찰
입력이 n=1에 놓인 임펄스 하나라서, 출력은 응답 [1,0.5]를 샘플 하나만큼 옮긴 [0,1,0.5,0]이다.
세 샘플이 모두 1인 입력을 차분 시스템에 넣으면 출력이 어떻게 되는지, n=1에서 무엇이 지워지는지 확인하라.
관찰
출력이 [1,0,0,−1]이다. n=1에서 x[0]의 응답 −1과 x[1]의 응답 1이 서로 지운다.
컨볼루션 적분 읽기
컨볼루션 적분은 한 시각의 출력을 어떤 순서로 계산할까?
(x∗h)(t)=∫−∞∞x(τ)h(t−τ)dτ
이 식에서 t는 출력을 알고 싶은 시각이고, 적분하는 동안에는 고정되어 있다. 움직이는 변수는 τ이다. τ축 위에서 h(t−τ)를 그리면 원래 h(τ)를 좌우로 뒤집은 h(−τ)를 오른쪽으로 t만큼 옮긴 모양이 된다. τ가 커질수록 t−τ는 작아지기 때문이다. 한 출력 시각 t에서의 계산 순서는 다음과 같다.
h(τ)를 뒤집어 h(−τ)를 만든다.
t만큼 옮겨 h(t−τ)를 만든다. t<0이면 왼쪽으로 옮긴다.
x(τ)와 곱한다. 두 함수가 겹치지 않는 곳에서는 곱이 0이다.
곱을 τ에 대해 적분한다. 그 면적이 y(t)이다.
t를 바꿔 가며 이 과정을 되풀이하면 출력 곡선 전체가 나온다. 모든 t에서 같은 h를 옮겨 쓰기만 하면 되는 것은 시불변성 덕분이다.
예를 들어 밑변이 [−1,1]이고 t=0에서 높이가 1인 삼각 펄스 x(t)=max(1−∣t∣,0)와 h(t)=e−2tu(t)를 컨볼루션하면, t=−1.75에서는 두 함수가 겹치지 않아 출력이 0이다. 0≤t≤1에서는 삼각 펄스가 꺾이는 τ=0에서 적분을 나누어 다음을 얻는다.
구간을 나누는 방법은 아래 '컨볼루션 계산'의 예제에서 자세히 다룬다. y(t)=∫−∞tx(τ)e−2(t−τ)dτ를 미분하면 y′(t)=x(t)−2y(t)이다. t>1에서는 x=0이라 y′=−2y<0로 줄고, −1<t<0에서는 y′=21(1−e−2(t+1))>0로 는다. 최댓값에서는 y′=0, 곧 y=x/2=(1−t)/2이고, 위 식과 같게 두면 t=21ln(2−e−2)≈0.31, y≈0.34이다.
그림의 ① 작은 두 그림이 뒤집기이고, ②에서 뒤집은 h를 t만큼 옮겨 고정된 x(τ)와 겹친다. ③이 둘의 곱과 그 면적이고, ④의 출력 곡선은 그 면적 y(t)를 지나온 t마다 이은 것이라 지금의 t까지만 그려진다. 폭 1인 두 사각 펄스에서는 h(t−τ)가 오른쪽으로 지나가는 동안 곱의 면적이 자랐다가 줄고, 출력 곡선도 그 면적을 따라 올랐다가 내려온다.
처음 상태는 0 ≤ τ < 1에서 높이 1인 두 사각 펄스이다. 출력은 그려진 곱을 수치 적분한 값이다.
해 보기
앞 문단의 삼각 펄스와 e−2tu(t)에서 t=−1.75일 때 곱과 출력이 어떻게 되는지 확인하라.
관찰
뒤집힌 지수가 모두 삼각 펄스의 왼쪽에 있어 곱이 0이고 y(−1.75)=0이다. 출력 곡선도 아직 0에 머물러 있다.
같은 쌍에서 t=0.31일 때 겹치는 구간과 출력을 확인하고, 곱의 면적이 언제 가장 큰지 생각해 보라.
관찰
겹침이 −1≤τ≤0.31이고 출력이 약 0.34이다. 뒤집힌 지수는 τ=t에서 1이고 왼쪽으로 갈수록 줄어서, 삼각 펄스의 피크보다 조금 오른쪽에 t가 있을 때 곱의 면적이 가장 크다. t를 조금 더 옮기면 출력 곡선이 내려가기 시작하고, 최댓값 0.344가 표시된다.
처음 쌍에서 h 대신 x를 뒤집어도 y(0.5)가 같은지 확인하라.
관찰
이번에는 h(τ)가 고정되고 x(t−τ)가 움직이지만 y(0.5)=0.5로 같다. 어느 쪽을 뒤집어도 출력이 같은 이유는 다음 절의 교환법칙이다.
영상과 CNN
영상 처리와 CNN에서 말하는 convolution은 이 절의 컨볼루션과 같은 연산일까?
컨볼루션은 2차원 신호인 영상에도 그대로 쓴다. 작은 커널(kernel)을 영상 위로 옮겨 가며 겹친 셀끼리 곱해 더하면 출력 영상의 한 셀이 나온다. 합성곱 신경망(convolutional neural network, CNN)은 이런 층을 여러 겹 쌓아 영상에서 모서리나 무늬를 찾는다.
입력 영상의 한 3×3 윈도우(창 함수)와 커널이 다음과 같다고 하자.
윈도우=00007575758080커널=−101−202−101
같은 자리 원소끼리 곱해 더하면 (0+150+80)−(0+0+75)=155이다. 이 계산은 커널을 뒤집지 않았으므로 엄밀히는 상호상관(cross-correlation)이다. 컨볼루션의 정의대로 커널을 180° 돌려 곱하면 −155가 된다. 머신러닝에서는 뒤집지 않는 이 연산도 convolution이라고 부른다. 커널 값을 학습으로 정하므로 뒤집힌 커널을 배우면 그만이기 때문이다. 신호처리에서 컨볼루션이라고 하면 뒤집는 연산이고, 커널이 비대칭이면 두 결과가 다르다.
1차원에서도 같은 차이가 나타난다. 커널 h=[−1,0,1](n=−1,0,1)을 뒤집지 않고 입력 x 위에 옮겨 곱해 더한 합 r[n](검은 점)과, 뒤집어 계산한 컨볼루션 y[n](회색 빈 점)은 모든 n에서 부호만 반대이다. '출력 쪽' 그림의 가운데 줄 h[k−n]에서 h는 뒤집히지 않은 채 옮겨진다.
커널을 뒤집지 않고 계산한 상태이다. 반대칭 커널 h = [−1, 0, 1]에서는 뒤집지 않은 합(상호상관)이 컨볼루션과 부호만 반대이다.
해 보기
커널을 뒤집어 더한 합 y[1]을 뒤집지 않은 합 r[1]과 비교하라.
관찰
합이 컨볼루션 y[n]이 되고, '출력 쪽' 그림의 h가 뒤집혀 놓인다. y[1]=−2로, 뒤집지 않은 합 r[1]=2와 부호가 반대이다.
좌우 대칭인 커널 [1,2,1]에서 상호상관과 컨볼루션이 같은지 확인하라.
관찰
검은 점과 회색 빈 점이 겹친다. 뒤집어도 커널이 그대로라 상호상관과 컨볼루션이 같다.
대칭이 아닌 커널 [1,0.5]에서 두 합이 겹치는지 확인하고, 언제 커널을 뒤집어야 하는지 생각해 보라.
관찰
두 합은 부호를 바꾸거나 옮겨도 겹치지 않는다. 커널을 학습으로 정하는 CNN에서는 뒤집지 않아도 되지만, 주어진 h로 LTI 시스템의 출력을 구할 때는 뒤집어야 한다.
선형이지만 시변인 시스템에서 아무 입력의 출력을 구하려면 무엇을 알아야 하는지 고르라.
(가)모든 τ에 대한 h(t,τ)
(나)구할 수 없다. 선형성만으로는 출력을 적분으로 쓸 수 없다.
(다)t=0에 넣은 임펄스의 응답 h(t) 하나
(라)입력 하나와 그 출력 한 쌍
풀이
답 (가) 모든 τ에 대한 h(t,τ)
(나) 선형성만으로 y(t)=∫x(τ)h(t,τ)dτ까지 온다.
(다) 시불변일 때만 충분하다. 시변이면 넣는 시각마다 응답의 모양이 다르다.
(라) 선형이라도 입력 하나의 출력으로는 다른 모양의 입력의 출력을 정할 수 없다.
입력을 가중 임펄스로 쪼개고 합과 배율을 H 밖으로 꺼내는 데는 선형성만 쓴다. 그 결과가 y(t)=∫x(τ)h(t,τ)dτ이다. 시불변성이 더해져야 h(t,τ)=h(t−τ)가 되어 h 하나로 줄어든다.
y(t)=∫−∞∞x(τ)h(t−τ)dτ를 계산하는 동안 고정된 것과 움직이는 것을 바르게 고른 것을 고르라.
(가)τ는 고정되고, t가 움직인다.
(나)h(τ)를 τ만큼 옮긴다.
(다)t는 고정되고, 적분하는 동안 τ가 움직인다.
풀이
답 (다) t는 고정되고, 적분하는 동안 τ가 움직인다.
(가)τ는 적분변수이다. t는 출력을 알고 싶은 시각이라 적분 한 번 동안 바뀌지 않는다.
(나)τ축 위에서 h(−τ)를 t만큼 옮긴 것이 h(t−τ)이다.
출력 한 점 y(t)를 구할 때 t는 정해져 있고, τ가 −∞에서 ∞까지 움직이며 x(τ)h(t−τ)를 더한다. 출력 곡선 전체는 t를 바꿔 가며 이 적분을 되풀이해 얻는다.
x[n]=[2,−1,1](n=0,1,2)을 h[n]=[1,−1](n=0,1)인 LTI 시스템에 넣었다. y[1]을 구하라.