9. Convolutional Networks

컨볼루션 망 (컨볼루션 신경망)은 격자 구조를 가진 데이터를 처리하는 데 특화된 신경망이다. 이는 컨볼루션이라는 수학적 연산을 쓰기 때문에 이런 이름이 붙었다. 이 장에서는 컨볼루션, 풀링을 알아본다.

9.1. The Convolution Operation

가장 일반적인 형태로는 컨볼루션은 두 실변수함수간 연산이다. s(t) = \int x(a) w(t-a) da = (x * w)(t) 컨볼루션이라 한다. 컨볼루션 망에서 첫 번째 항은 입력, 두 번쨰 항은 커널, 출력은 특성 맵으로 이야기되어진다. 기계 학습에서 입력은 대개 데이터의 다차원 행렬, 커널은 학습 알고리즘에 적용되는 다차원 행렬이다. 컨볼루션은 한 번에 2개 이상의 축에 대해 적용될 수도 있다. 컨볼루션의 교환법칙은 커널을 입력에 대해 뒤집었기 때문에 얻어진다. 하지만 커널을 뒤집지 않고 교차상관관계라 불리는 함수를 구현할 수도 있다. 이산 컨볼루션은 토에플리츠 행렬 (2차원에서는 이중 블록 원형군 행렬)이라 불리는 행렬을 곱하는 것으로 볼 수 있다.

9.2. Motivation

컨볼루션은 기계 학습을 돕는 세 가지의 중요한 아이디어를 이용한다: 희박 상호 작용, 매개변수 공유, 등변 표현. 컨볼루션 망은 대개 희박 상호 작용(희박 연결성, 희박 가중치)를 가지고 있으므로 상호작용하는 유닛들이 적어 그 관계를 분명히 파악할 수 있다. 매개 변수 공유는 모델의 여러 함수에서 매개 변수 하나를 공유함을 나타낸다. 이를 가중치 공용이라고도 한다. 컨볼루션의 경우엔 매개 변수 공유의 특정한 형태는 층들이 변환에 등변인 특성을 갖도록 한다. 컨볼루션은 등장변환이나 회전 등인 다른 변환들에 대해서는 기본적으로는 등변이 아니다. 그리고, 어떤 형태의 데이터들은 고정 크기 행렬에 대한 행렬곱으로 정의된 신경망으로는 처리될 수 없다.

9.3. Pooling

컨볼루션 망의 일반적인 층은 3개의 단계로 나뉘어 있다. 첫 번째 단계에서 층은 여러 컨볼루션을 수행한다. 두 번째 단계에서 선형 활성 홤수가 적용된다. 이를 감지기 단계라 한다. 세 번째 단계에서는 층의 출력을 수정하기 위해 풀링 함수를 쓴다. 풀링 함수는 망의 특정 지역에서의 출력을 근처 출력들의 요약 통계량으로 대체한다. 예를 들어, 최대 풀링은 직사각형 근방 내의 최대 출력을 구한다. 모든 경우, 풀링은 표현을 입력의 작은 변환에 대해 근사적으로 불변이 되도록 돕는다. 풀링의 사용은 무한대로 강한 사전분포를 더해 층의 함수들이 작은 변환에 불변이 되도록 하는 것으로 볼 수 있다. 공간적 지역에 대해 풀링을 적용하는 것은 변환에 대한 불변성을 제공하지만, 독립적으로 매개화된 컨볼루션의 출력에 대해 풀링을 적용한다면 특성들은 그것이 불변의 대상이 되는 변환들도 학습할 수 있다. 풀링은 근방 전체에 대한 반응을 요약하기 때문에, 감지기 유닛보다 적은 수의 풀링 유닛을 사용하는 것도 가능하다. 많은 작업들에 대해, 풀링은 가변 크기의 입력을 다루는 데 있어 필수적이다. 어떤 이론적 작업은 어떤 종류의 풀링이 여러 상황에서 쓰여야 할지에 대해 지도해준다. 풀링은 볼츠만 기계나 자가암호화기 같은 하방식 정보를 사용하는 신경망 구조를 복잡하게 할 수 있다.

9.4. Convolution and Pooling as an Infinitely String Prior

사전확률분포의 개념을 상기하자. 사전분포는 그 확률분포가 얼마나 집중되었냐에 따라 약한 사전분포와 강한 사전분포로 나눌 수 있다. 무한대로 강한 사전분포는 어떤 매개변수들에 대해서 확률을 0으로 두므로 그 매개변수 값은 데이터가 얼마나 그 값들을 입증하든 간에 완전히 금지되었음을 알린다. 컨볼루션 망은 완전히 연결돤 망에 가중치들에 대해 무한대로 강한 사전분포가 배정된 것으로 볼 수 있다. 물론, 무한대로 강한 사전분포가 부여된 완전 연결 망으로 컨볼루션 망을 구현하는 것은 계산적으로 낭비이다. 핵심 발상은 컨볼루션과 풀링이 과소적합을 야기할 수 있다는 것이다. 또 다른 핵심 발상은 통계적 학습 성능을 측정할 때에는 컨볼루션 모델은 다른 컨볼루션 모델들과만 비교할 수 있다는 것이다. 많은 이미지 데이터셋에 대해, 순열 불변인 모델에 대한 성능 측정은 독립적으로 존재한다.

9.5. Variants of the Basic Convolution Function

신경망의 컨볼루션을 다룰 때에서는 수학에서 이야기하는 표준적인 이산 컨볼루션 연산을 이기하지는 않는다. 신경망에 대해서 컨볼루션을 가리킬 때는 사실은 여러 컨볼루션을 병렬로 적용하는 것으로 이루어진 연산을 뜻한다. 추가로, 입력은 단순히 실변수의 격자 형태가 아니다. 컨볼루션 망은 대개 다채널 컨볼루션을 사용하기 때문에, 그들이 기반한 선형 연산은 커널 뒤집기가 사용된 경우라도 교환적이라는 보장이 없다. 계산량을 줄이기 위해 커널의 일부 위치들을 건너뛸 수 있는데, 걸음 변수를 통해 이를 구현한다. 컨볼루션 망 구현의 핵심 특성은 입력에 암묵적인 0을 패딩해 더 넓게 만드는 것이다. 이러한 0-패딩에는 유효 패딩, 동일 패딩, 완전 패딩의 세 가지가 있다. 어떤 경우에는 컨볼루션을 쓰지 않고 국소적으로 연결된 층을 쓰고 싶을 수 있다. 이 경우에는 비공유 컨볼루션을 쓴다. 국소적으로 연결된 층은 각 특성이 공간의 작은 부분에 대한 함수여야 한다는 사실은 알지만 같은 특성이 모든 공간에 대해 발생해야 할 이유가 없을 때 유용하다. 컨볼루션이나 국소적으로 연결된 층에 대해 그 연결성이 더 제한된 버전을 사용하는 것도 유용한데, 예를 들면 각 출력을 입력의 일부분에 대한 함수로 제한시키고자 할 때 그렇다. 타일된 컨볼루션은 컨볼루션 층과 국소적으로 연결된 층의 절충이다. 이를 대수적으로 정의하기 위해서는 커널을 차원 중 2개가 출력의 다른 지점에 대응하는 6차원 텐서로 잡는다. 국소적으로 연결된 층이나 타일된 컨볼루션 층은 최대 풀링과 관련해 흥미로운 상호작용을 갖는다: 이 층들의 감지 유닛은 서로 다른 필터에 의해 유도된다. 컨볼루션을 제외한 다른 연산들 또한 컨볼루션 망을 구현하는 데 있어 필요하다. 컨볼루션은 선형 연산이고 행렬곱으로 나타낼 수 있는데, 컨볼루션으로 정의된 행렬의 전치행렬을 곱하는 연산도 이로부터 파생되는 연산으로 볼 수 있다. 이 3가지의 연산-컨볼루션, 출력으로부터 가중치로의 역전파, 출력으로부터 입력으로의 역전파는 피드포워드 컨볼루션 망의 경사를 계산하는 데 있어 충분하다. 자가암호화기도 이것과 비슷한 동작을 쓴다. 일반적으로 컨볼루션 층에서 입력으로부터 출력으로 변환할 때 선형 연산만 쓰는 것은 아니고, 편향치를 더한다.

9.6. Structured Outputs

컨볼루션 망은 분류 작업의 클래스 라벨이나 회귀 작업의 실변수 대신에 고차원의 구조화된 오브젝트를 출력한다. 이 때 발생하는 문제는 출력 평면이 입력 평면보다 작을 수 있다는 것이다. 이러면 이미지의 픽셀별 라벨링을 할 수가 없어지는데, 이에 대한 대처 전략은 이미지 라벨에 대한 최초 추측을 제공한 뒤에 이 추측을 인접한 픽셀간의 상호작용으로 정제하는 것이다. 각 픽셀에 대한 예측이 되었다면, 여러 방법을 적용해 이미지를 영역별로 의미화한 결과를 얻을 수 있다.

9.7. Data Types

컨볼루션 망에 쓰이는 데이터는 대개 여러 채널로 구성되어 있으며, 각 채널은 시간이나 공간의 특정한 지점에서 서로 다른 값을 관측한 것이다. 지금까지는 학습과 테스트 시의 모든 표본이 같은 공간적 차원을 가진 경우를 다루었지만, 컨볼루션 망은 공간적인 척도가 가변적인 입력도 다룰 수 있다. 가변 크기 입력을 처리하는 컨볼루션을 쓰는 것은 크기의 가변성이 동일한 종류의 관측을 가변적인 양을 담고 있기 때문에 발생할 경우에만 의미가 있다.

9.8. Efficient Convolution Algorithms

현대적인 컨볼루션 망은 아주 많은 유닛을 담고 있다. 컨볼루션은 입력과 커널 모두를 푸리에 변환을 통해 두 신호의 점별 곱을 해서 주파수 영역으로 변환한 뒤 역 푸리에 변환을 해서 시간 영역으로 역변환하는 것과 같다. d차원 커널이 d개의 일차원 벡터의 바깥곱으로 표현될 수 있을 경우 이 커널은 분리가능하다 한다. 이 경우에는 일반적인 컨볼루션은 비효율적이고 분해해서 컨볼루션을 수행하는 것이 낫다. 컨볼루션이나 근사 컨볼루션을 수행할 때 모델의 정확성을 해치지 않는 빠른 방법을 찾는 것은 여전히 활성화된 연구 분야이다.

9.9. Random or Unsupervised Features

컨볼루션 망 학습의 가장 연산량이 많은 부분은 특성을 학습하는 부분이다. 지도 학습 없이 컨볼루션 커널을 얻는 3개의 기본적인 전략이 있다. 첫째는 무작위로 초기화하는 것이고, 둘째는 직접 설계하는 것이고, 셋째는 비지도 기준으로 커널을 학습하는 것이다. 무작위 필터링은 종종 컨볼루션 망에 대해 놀랍게 잘 동작한다. 중간적 접근법은 특성들을 배우되, 각 경사 단계에서 전체 전방/역전파를 요구하지 않는 방식을 택하는 것이다. 다른 비지도 사전학습 방식과 같이, 이 접근법으로부터 얻어지는 이득들을 서로 분리해서 고려하기는 어렵다.

9.10. The Neuroscientific Basis for Convolutional Networks

컨볼루션 망은 생물학에서 영감을 얻은 인공지능의 가장 성공적인 이야기일 것이다. 커놉ㄹ루션 망의 역사는 관련된 계산적 모델이 발달되기 훨씬 전 신경과학의 실험으로부터 시작되었다. 이 작업들은 뇌 기능의 여러 관점들을 특징짓는 데 도움이 되었다. 단순화한 관점에서, 컨볼루션 망은 뇌의 V1(일차 시각 피질)이 공간 맵으로 배열되어 있고 단순 세포복잡 세포를 다수 포함한다는 특성을 모방했다고 할 수 있다. 이런 기본 원리들은 시각적 시스템의 다른 영역에도 적용된다. 그러나 표유류의 시각계에 존재하는 일시적 엽 뉴런은 이름을 읽을 때 사람이나 오브젝트를 인식하는 것으로 자동적으로 일반화한다는 관점에서, 현대 컨볼루션 망보다 일반적이다. 그러므로, 컨볼루션 망과 표유류의 시각계는 큰 차이가 존재한다고 볼 수 있다. 사람의 눈은 부분을 제외하고는 매우 저해상도이다. 사람의 뇌는 단속 운동으로 불리는 눈 운동을 통해 풍경에서 시각적으로 가장 중요하거나 작업과 관련된 부분을 본다. 또한, 사람의 시각계는 청각이나 생각 등 다른 여러 경관들과도 통합되어 있다. 사람의 시각계는 물체 인식 외에도 많은 것을 하고, 단순 뇌 영역조차도 높은 레벨로부터의 피드백에서 큰 영향을 받는다. 또한, 컨볼루션 망 내의 중간 계산 부분이 인간 뇌와 얼마나 비슷한지에 대한 것도 불확실하다. 그러므로, 신경과학은 컨볼루션 망을 어떻게 학습할지에 대해서는 거의 발상을 주지 않았다는 것에 대해서는 언급할 가치가 있다. 이후 역전파의 사용을 통해 시간 지연 신경망을 학습하는 아이디어가 도입되었다. 지금까지는 이 각각 세포가 정확히 무엇을 감지하는지를 알아보지는 않았다. 이를 알아보기 위해서는 뉴런의 가중치를 근사하기 위해 반응들에 대한 선형 모델을 피팅할 수 있는데, 이를 역상관관계라 한다. 역상관관계는 V1 세포의 대부분이 가보르 함수로 일컬어지는 가중치들을 가짐을 입증한다. 이는 단순 세포가 특정한 장소의 특정한 방향에서의 특정한 밝기의 공간적 주파수에 대응함을 나타낸다. 이는 두 좌표계의 원적 을 계산한다고 볼 수 있다. 신경과학과 기계학습간의 가장 두드러지는 대응 관계는 기계 학습으로부터 학습된 특성들을 V1로부터 얻어진 특성들과 시각적으로 비교하는 것으로부터 얻어진다.

9.11. Convolutional Networks and the History of Deep Learning

컨볼루션 망은 심층 학습의 역할에서 중요한 역할을 맡아 왔으며, 여러 대회에서도 우승하였다. 컨볼루션 망들은 역전파로 최초로 학습된 심층 망 중 하나라 할 수 있다. 또한, 컨볼루션 망들은 신경망을 명백한 격자 구조를 가진 데이터에 대해 특수화해 이 모델들을 아주 큰 크기로 확장하는 방식을 제공한다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중