논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

UFLDL Tutorial 10. Supervised Convolutional Neural Network – Feature Extraction Using Convolution

http://deeplearning.stanford.edu/tutorial/

Feature Extraction Using Convolution

Overview

이전의 연습 문제에서 손글씨로 적은 숫자들의 이미지 패치와 같은 상대적으로 적은 해상도의 이미지를 다루는 문제를 풀었습니다. 이번에는 크기를 늘려 큰 이미지의 좀 더 현실적인 데이터셋을 다룰 수 있는 방법을 개발해보고자 합니다.

Fully Connected Networks

Sparse autoencoder에서는 모든 은닉 유닛과 모든 입력 유닛이 “완전히 연결된(fully connect)” 디자인을 사용합니다. 상대적으로 크기가 작은 이미지, 즉 MNIST 데이터셋처럼 28 * 28 이미지나, 8 * 8 패치의 sparse autoencoder 에서는 전체 이미지에서 그 자체를 특징으로 학습할 수 있었습니다. 하지만 96 * 96 이미지와 같이 더 큰 이미지에서는 전체 이미지를 특징으로, 그것도 완전히 연결된 망을 통해서 학습하는 것은 계산 비용이 너무 비싸집니다. 예를 들어 $10^4$개의 입력 유닛이 있고, 100개의 피쳐를 학습시키길 원한다면 $10^6$개의 파라미터를 학습하여야 합니다. 전방, 역방 전파 계산은 28 * 28 크기의 이미지보다 $10^2$배로 느려집니다.

Locally Connected Networks

이 문제를 풀기 위한 한가지 간단한 방법은 은닉 유닛과 입력 유닛의 연결을 제한하는 것입니다. 각 은닉 유닛은 입력 유닛의 작은 서브셋과만 연결짓도록 할 수 있습니다. 정확히 이야기 하자면, 각 은닉 유닛은 입력 이미지에서 크기가 작은 인접한 영역 픽셀들에게만 연결됩니다. 입력을 연결하는 방식은 이미지마다 달라지지만, 입력 유닛 중 인접한 그룹을 하나의 은닉 유닛으로 연결하는 방식이 보통입니다. 비슷하게 음성 분야에서는 은닉 유닛은 음성 클립의 일정 시간 영역의 입력 유닛과 연결되게 됩니다.

지역적으로 일부만 연결된 망이라는 이 아이디어는 실제 생물학에서시각 시스템이 어떻게 연결되어있는지에 대한 것에서 영감을 얻은 것입니다. 실제로 시각 피질의 뉴런들은 지역적으로 수용체 필드를 이루고 있습니다. 다시 말하면 그것들은 특정 지역 단위로 반응이 일어난다는 것입니다.

Convolutions

보통의 이미지는 “stationary”이라는 속성을 가집니다. 즉 이미지의 한 부분에서의 통계적 특징은 다른 부분에서도 같다는 점을 지니고 있습니다. 따라서 이미지의 한 부분에서 학습된 어떤 특징은 이미지의 다른 부분에서도 동일하게 적용할 수 있고, 이미지의 모든 영역에서 같은 특징을 사용할 수도 있습니다.

더 자세하게 이야기 해 봅시다. 큰 이미지에서 무작위로 샘플링된 작은 이미지 패치 (8 * 8)로부터 학습된 특징이 있다고 한다면, 이미지의 어느 부분에서도 이 8 * 8 크기의 특징 검출기(feature detector)를 적용할 수 있습니다. 이렇게 학습한 8 * 8 크기의 특징을 가지고 전체 이미지에 대해서 “convole”하게 되면, 이미지의 각 위치마다 특징에 대한 다른 값의 활성값(activation value)을 얻을 수 있습니다.

예를 들어, 96 * 96 크기의 이미지로부터 샘플링된 8 * 8 패치들을 이용해 학습된 특징을 이미 가지고 있다고 가정합시다. 그리고 이것은 100개의 은닉 유닛을 가진 autoencoder를 통해서 생성된 것이라고 합시다. Convoled 특징을 얻기 위해서는, 일단 96 * 96 이미지의 모든 8 * 8 영역에 대해서 패치를 추출하고, sparse autoencoder을 통해 훈련을 실행하면 특징 활성값을 얻을 수 있습니다. 이것은 100세트의 89 * 89 크기의 convolved 특징을 결과로 갖습니다.

Convolution

다시 말하면, 어떤 큰 $r \times c $크기의 이미지들 $x_{large}$가 주어질 경우, 먼저 주어진 이미지에서 $a \times b $크기의 작은 이미지 패치 $x_{small}$를 추출하고 이에 sparse autoencoder를 학습시킵니다. 그 결과로 $k$개의 특징 $f = \sigma(W^{(1)} x_{small} + b^{(1)})$ 을 얻게 됩니다. 여기서 $\sigma$는 시그모이드 함수, $W^{(1)}, b^{(1)}$는 visible 유닛으로부터 은닉 유닛을 연결하는 가중치와 bias를 의미합니다. 모든 큰 이미지 내의 $a \times b $패치 $x_s$에 대해서, $f_s = \sigma(W^{(1)} x_s + b^{(1)})$를 계산하면 이는 배열 $k \times (r - a + 1) \times ( c - b + 1)$ 크기의 convolved 특징 $f_{convolved}$를 결과로 내놓습니다.

다음 시간에는 분류를 더 잘 하기 위한 특징을 만들기 위해 이 특징들을 어떻게 “pool”하는지에 대한 방법을 설명하겠습니다.


Tags:
Add a Comment Trackback