Summary
CNN(Convolutional Neural Networks)이 이미지 처리에 많이 활용되는 이유는, 이미지 데이터에 적합하도록 설계 됐기 때문이다. 실제로 CNN은 이미지 데이터의 stationarity of statistics
, locality of pixel dependencies
가정을 고려하여 설계 됐다. Locality 가정은 커널 단위 연산을 통해, Stationarity 가정은 연산 과정에 Convolution(Cross-correlation)을 사용하여 만족한다.
결국 CNN의 이름에도 적혀 있는 Convolution 연산이 이미지와 너무 잘 맞아서, 성능도 잘 나오고 많이 활용되는 것이다. 이 포스팅에선 Convolution 연산이 무엇인지는 다루지 않고, 왜 Convolution이 Stationarity와 Locality를 만족할 수 있는지에 대해서만 다룬다.
Stationarity 측면
데이터가 stationarity를 만족하면, 시간이 지나더라도 데이터의 통계적 성질(특성)이 변하지 않는다. 이러한 특징을 다르게 표현하면 time-invariant(continuous), shift-invariant(discrete) 하다고 할 수 있다. 따라서 이미지 데이터는 픽셀에 shifting이 일어나 위치가 바뀌더라도 특성이 보존된다.
이처럼 특성이 보존된다는 보장이 있다면, 픽셀마다 파라미터를 다르게 설정하지 않더라도 이미지에서 원하는 특성을 찾을 수 있다.
실제로는 완전 탐색 만으로도 이미지 특성을 찾을 수 있다. 이 경우 특성을 추출할 수 있는 만큼의 파라미터를 모아 묶음(커널)을 만들고, 커널을 이미지 픽셀에 차례대로 적용(재사용)만 하면 된다. 이 경우 커널을 재사용하기 때문에 원하는 특성이 이미지에 여러 번 등장하더라도 쉽게 처리할 수 있다. 커널로 이미지 특성을 찾는 과정을 그림으로 표현하면 아래와 같다.
커널을 활용해 이미지 특성을 찾기 위해선, 커널과 이미지 픽셀 사이 연산 또한 shift-invariant 해야 한다. 동일한 픽셀과 커널 사이 연산임에도 위치에 따라 다른 값이 나온다면 문제가 될 것이기 때문이다.
위 그림에서 T는 shift 연산이고, H는 임의의 연산이다. 연산 H가 shift-invariant 하려면 T를 적용한 뒤에 H를 적용했을 때와 H를 적용한 뒤에 T를 적용했을 때의 출력 결과가 동일해야 한다.
이러한 성질을 만족해 shift-invariant 한 연산이 바로 Convolution이다. 따라서 Convolution은 동일한
이미지 픽셀, 커널 사이 연산이라면 위치에 상관없이 동일한 출력을 얻을 수 있게 된다. CNN은 이름에서도 알 수 있듯이, 커널과 이미지 픽셀 사이를 convolution 연산하는 뉴럴넷이다.
$$H(T(x)) = T(H(x))$$
앞서 확인한 $H$와 $T$ 사이 관계를 식으로 표현하면 위와 같다.
어떤 두 연산 사이 관계가 $H$와 $T$와 같다면, 두 연산 사이 관계가 equivalent 하다고 한다. 앞서 H는 convolution, T는 shifting이었기 때문에 따라서 convoltuion은 shift-equivalent 한 연산이라고 할 수 있다. 추가로 shift-invariant는 결과적으로 $H(T(x)) = H(x)$라는 점에서, shift-equivalent의 특수한 경우이다.
$H(T(x)) = T(H(x))$ 식을 다시 한번 확인하면, Convolution 과정에서 결과를 변화시키는 것은 오직 $x$ 임을 확인할 수 있다. 이를 통해 Convolution은 1개의 커널만 있다고 해도, 모든 픽셀에서 다른 연산을 수행할 수가 있다.
결국 Convolution은 shift-invariant 하기 때문에 커널을 활용한 완전 탐색만으로 위치와 상관없이 보존되는 특성을 찾을 수 있고, 동시에 shift-equivalent 하기 때문에 1개의 커널만 가지고도 모든 픽셀에서 다른 연산을 하는 효과를 얻을 수 있다.
위 영상은 커널과 이미지를 각각 고정시킨 상태에서 Convolution 연산을 진행하는 과정을 담고 있다. 둘 다 동일한 연산이 이뤄지지만 관점만 다르다. shift-invariant와 shift-equivalent의 느낌을 이해하는데 도움이 되는 동영상 같아서 가져왔다.
왼쪽에선 이미지를 고정하고 커널만 이동하면서 연산을 한다. 이 경우 1개의 커널로도 픽셀 위치마다 다른 연산이 가능한 convolution의 shift-equivalent 한 특성을 잘 보여 준다. 오른쪽에선 커널을 고정하고 이미지를 이동하며 연산을 한다. 이는 이미지의 좌표를 바꿔가며 연산하는 것과 동일하다. 바뀐 좌표에서도 왼쪽과 동일한 연산을 할 수 있다는 것은 convolution이 shift-invariant 함을 보여준다.
Locality 측면
locality of pixel dependencies란 한 픽셀이, 주변 픽셀에 대해서 높은 종속성을 가진다는 것을 의미한다. 그림을 예시로 들면, 코를 표현하고 있는 파랑 박스 내부 픽셀끼리는 서로 관련이 있겠지만, 외부에 있는 볼이나 뺨에 있는 픽셀과는 별로 관련이 없을 것이다. 주변의 픽셀을 참고해 이미지를 생성하는 모델도 있는 걸 보면, locality는 직관적이지만 충분히 일리가 있는 가정이다.
CNN은 커널을 통해 매 순간 이미지의 일부분만 확인하기 때문에 locality 가정을 만족할 수 있다. 실제로 CNN은 주변에 있는 픽셀을 참고하기 위해서, 입력 이미지를 행 단위로 concat 하지 않고 2차원 형태 그대로 사용한다. 만약 이미지 데이터를 행 단위로 concat 한 뒤 1차원으로 활용하면, 주변 픽셀을 제한적으로만 확인할 수 있다는 문제점이 생긴다.
이미지를 1차원으로 처리할 경우, 주변 픽셀을 확인하는 방법은 커널 크기를 줄여서 단일 행 픽셀만 확인하거나, 커널 크기를 늘려 불 필요한 픽셀까지 확인하는 방법만 존재한다. 하지만 두 가지 경우 모두 locality 가정에 적합하진 않다. 하지만 이미지를 2차원 형태 그대로 활용한다면, 주변 픽셀을 전부 확인할 수가 있어 locality가 만족될 수 있다.
참고