8. Convolutional Neural Networks

8.1. Introduction

컨볼루션 신경망은 격자 내 국소적 영역 내 강한 공간적 의존성이 있는 격자 형태 입력을 위해 설계되었다. 이미지 데이터의 중요한 특성은 특정 수준에서 변환에 불변이라는 것이다. 다른 많은 격자 형태들은 그렇지 않다. 컨볼루션 신경망을 정의하는 중요한 특성은 컨볼루션일나ㅡㄴ 연산이다.

8.1.1. Historical Perspective and Biological Inspiration

컨볼루션 신경망은 심층 학습의 가장 최초 성공 사례 중 하나다. 컨볼루션 신경망의 처음 동기는 고양이의 시신경으로부터의 실험이었다. 이런 생물학적 착안에 기반해, 최초의 신경망 모델은 네오코그니트론이었다. 컨볼루션 신경망의 중요성의 확대에 큰 역할을 한 것은 ImageNet 대회였다.

8.1.2. Broader Observations About Convolutional Neural Networks

신경망의 성공의 비밀은 적용할 영역에 대한 의미적 이해에 기반한 망의 구조 설정에 기인한다. 영역 지식 기반 정규화는 순환 신경망에서도 유의미하게 가능하며, 이는 다른 시간을 통해 매개변수를 공유함으로써 가능해진다.

8.2. The Basic Structure of a Convolutional Network

컨볼루션 망에서는 각 망의 상태는 공간적 격자 구조에 따라 배열된다. 컨볼루션 신경망은 전통적 피드포워드 망처럼 동작하지만, 층간 연산이 희박한 연결로 구성된다. 컨볼루션 신경망의 각 층에는 채널이 필요하다. 첫 층에서 층의 크기는 입력 데이터와 그 전처리에 달려 있다. 컨볼루션 망에서 매개변수는 3차원 구조적 단위의 집합인 필터나 커널로 구성되어 있다. 컨볼루션 연산은 필터를 이미지의 각 영역에 놓아서 필터가 이미지와 완전히 겹치도록 한 뒤에 필터와 입력의 매칭되는 격자에 대해 내적을 수행한다. 각 층에서 사용되는 필터의 수는 모델의 용량을 제어한다. 직접적으로 매개변수의 수를 제어하기 때문이다. 컨볼루션 연산의 정의는 다음과 같다:

h_{ijp, q+1} = \sum_{r=1}^{F_{q}} \sum_{s=1}^{F_{q}} \sum_{k=1}^{d_{q}} w_{rsk, p, q} h_{i+r-1,j+s-1, k, q}

컨볼루션 연산은 특정한 뉴런을 활성화시키기 위해서 시야의 작은 영역을 활성화하는 것이 필요하다는 것을 상기시킨다. 컨볼루션의 특징은 변환 동치라는 것이다. 간단한 예로 직접 검증해볼 수도 있다. q번째 층의 컨볼루션은 q번째 층의 특성으로부터 q + 1번째 층의 수용 영역을 증가시킨다. q번째 층에서 q + 1번째 층으로 연산을 수행할 때, 계산된 층의 채널 수는 q번째 층의 필터 수와 같고 q번째 층의 채널 수 등에는 상관이 없다.

8.2.1. Padding

컨볼루션 연산은 q+1번째 층의 크기를 감소시키는데, 이것은 0으로 패딩을 넣어서 해결해야 한다. 기본은 절반 패딩이다. 패딩이 쓰이지 않는 경우는 유효 패딩이라 하며 이는 실제로 잘 동작하지 않는다. 다른 패딩은 완전 패딩으로, 필터의 전체가 이미지의 한 픽셀과만 맞닿는 경우까지 허용한다. 수용 영역을 감소시키는 목적의 역 컨볼루션도 존재한다. 완전 패딩은 공간적 자취를 증가시킨다.

8.2.2. Strides

컨볼루션이 이미지나 층의 공간적 자취를 감소시킬 수 있는 방법은 컨볼루션의 이동 보폭인 스트라이드이다.

8.2.3. Typical Settings

대부분은 스트라이드를 1로 쓰며 가로와 세로는 같게 맞춘다. 필터 크기는 3으로 한다.

Use of Bias

다른 신경망처럼 전방 연산에 편향을 더할 수 있다.

8.2.4. The ReLU Layer

컨볼루션 연산은 풀링 연산과 ReLU 연산이 끼워넣어진다. ReLU 활성 함수의 사용은 신경망 설계의 최근의 진화이다.

8.2.5. Pooling

풀링 연산은 각 층에 작용해 같은 수의 채널을 가진 다른 층을 만든다. 이 때 격자의 최대값을 반환해 층의 크기를 줄인다. 다른 컨볼루션 연산과는 달리 풀링은 각 활성화 단계마다 이루어진다. 다른 풀링 (평균 풀링)도 가능하지만 드물게 쓰인다. 풀링은 변환 불변이다. 풀링의 다른 중요한 목적은 이미지의 공간적 자취는 줄이면서 수용 영역의 크기를 늘리는 것이다.

8.2.6. Fully Connected Layers

마지막 공간적 층의 각 특성은 첫 번째 완전 연결 층의 각 은닉 상태와 연결된다. 컨볼루션 신경망의 출력 층은 용례별로 설계된다. 완전 연결 층 대신 다른 대안은 마지막 활성 맵 전체에 평균 풀링을 적용하는 것이다.

8.2.7. The Interleaving Between Layers

컨볼루션, 풀링, ReLU 층은 망의 표현력을 증가시키기 위해 신경망에 끼워넣어진다.

LeNet-5

초기 망은 매우 얕았다. LeNet-5의 경우 2개의 컨볼루션 층, 2개의 풀링 층, 3개의 완전 연결 층을 끝에 갖고 있었다. 구조에서 층의 수를 셀 때 맥스풀링과 활성 함수 층은 따로 세지 않는 경우가 많다. 이 망은 현대 기준으로는 매우 얕지만, 기본적인 원리는 바뀌지 않았다.

8.2.8. Local Response Normalization

또 다른 트릭은 국소적 반응 표준화로 항상 ReLU 층 직후에 사용되며, 일반화를 늘린다.

8.2.9. Hierarchical Feature Engineering

실제 이미지에서 다른 층에서 생성되는 필터의 활성값들을 살펴보는 것은 도움이 된다. 즉, 컨볼루션 망의 힘은 이런 원시적 모양을 층별로 결합해 더 복잡한 모양을 만드는 것에 있다. 최근 ImageNet 대회들은 이미지 인식의 강력한 힘은 망의 층을 늘림에 기반한다는 것을 보였다.

8.3. Training a Convolutional Network

컨볼루션 신경망을 학습시키는 과정은 역시 역전파를 이용한다.

8.3.1. Backpropagationg Through Convolutions

컨볼루션을 통한 역전파는 피드포워드 망 내 선형 변환을 통한 역전파와 그리 다르지 않다. 먼저 성분별로 기여도를 구해 보자. 이후에 손실 함수의 경사와 결합해 보자. 그러면 각 성분별 경사를 구할 수 있다.

8.3.2. Backpropagation as Convolution with Inverted/Transposed Filter

신경망에서는 가중치 행렬의 전치행렬을 곱해서 역전파를 한다. 컨볼루션 신경망에서도 컨볼루션을 행렬 곱과 비슷하게 보면 된다. 필터를 행렬화하면 행렬곱이 되기 때문에, 이를 전치한 것을 역전파에 사용할 수 있다.

8.3.3. Convolution/Backpropagation as Matrix Multiplications

컨볼루션을 행렬곱으로 보는 것은 전치 컨볼루션, 디컨볼루션, 파편 컨볼루션 등을 이해하는 데 도움이 된다. 간단한 예로 컨볼루션이 행렬곱이 됨을 검증할 수 있다. 이 경우 소모 메모리는 늘어남을 유의하라. 또한 채널의 개수를 고려해 줘야 한다. 역전파 시에 이는 매우 유용하다.

8.3.4. Data Augmentation

컨볼루션 신경망의 과적합을 줄이는 방법은 데이터 증강이다. 이는 연산량을 매우 적게 사용하므로 증강된 이미지가 미리 생성되어 있어야 할 필요가 없다. 대부분의 데이터 증강은 매우 효율적이지만 주성분 분석 같은 변환은 다른 변환보다 비싸다. 데이터 증강을 데이터 셋의 특성에 대한 고려 없이 아무렇게나 사용해서는 안 된다.

8.4. Case Studies of Convolutional Architectures

여러 컨볼루션 신경망 구조들을 알아보자. 이는 ILSVRC 대회에서 좋은 성적을 냈다.

8.4.1. AlexNet

AlexNet은 2012년 ILSVRC 우승자이다. 특이할 만한 점은 2개로 분할된 구조라는 것인데, 이것은 당시의 GPU 메모리 부족에 기인하였다. 컨볼루션 5개에 완전 연결 층 3개가 붙는다. 이 구조에서 사용된 많은 설계법이 이후 구조에서 표준이 되었다. 드롭아웃과 L_{2} 정규화가 사용되었다. 최종 오차율은 이전의 우승자들에 비해 압도적인 차이를 냈다.

8.4.2. ZFNet

ZFNet은 2013년 ILSVRC 우승자이다. 이는 3~5번째 컨볼루션에서 AlexNet보다 더 많은 채널을 쓴다.

8.4.3. VGG

VGG는 망의 깊이를 늘리는 것을 트렌드화했다. VGG는 필터의 크기를 줄이고 깊이는 늘렸다. 필터 크기를 줄이려면 깊이를 늘려야 한다. 일반적으로 늘어난 깊이는 더 큰 정규화와 비선형성을 유도한다. 하지만 깊이를 더했을 경우 초기화에 매우 민감해지고 불안정해짐을 주의하라. 메모리 자취의 대부분은 신경망의 초반 부분에서 온다. 어떤 구조는 1 x 1 컨볼루션을 사용했는데, 이는 공간적 특성은 결합하지 않지만 채널 수가 1보다 클 시 다른 채널간 특성값을 결합하는 효과가 있으며 비선형성도 늘린다.

8.4.4. GoogLeNet

GoogLeNet은 인셉션 구조, 즉 망 안에 망이 있는 구조를 제안하였다. 이는 망 안에 여러 컨볼루션을 병렬로 두어 병합한다. 연산량을 줄이기 위해 특성 수를 줄이기 위해 1 x 1 컨볼루션을 먼저 수행한 뒤 공간적 컨볼루션을 수행하기도 한다. 또한 완전연결층 대신 평균 풀링을 사용하였다. 매개변수 수는 매우 조밀하지만 연산량은 더 많다.

8.4.5. ResNet

ResNet은 152개의 층을 썼는데 이는 매우 많은 것이었다. 이렇게 많은 층의 망을 학습하는 데 있어 문제는 수렴하는 데 시간이 너무 오래 걸린다는 것이었다. 계층적 특성 엔지니어링의 문제는 이미지의 모든 개념이 같은 추상화 층에서 학습되도록 강요한다는 것이다. ResNet은 떨어진 망간 스킵 연결을 사용해 이를 줄였다. 원본 ResNet에는 층 2개 간격마다 스킵 연결을 사용했다. 이는 경사가 흐르는 경로를 극적으로 바꾸며 잔여 학습이라고도 한다. 넓은 잔여 망에 대한 문헌을 읽어서 더 많은 직관을 얻을 수 있다.

Variation of Skip Architectures

ResNet 구조가 제안된 뒤 성능을 개선하기 위한 여러 변형들이 제안되었다. 게이트에서 항등 매핑을 하는 하이웨이 망을 쓸 수 있다. 스킵 연결 대신 컨볼루션 변환을 쓸 수도 있다. 스킵 연결이 학습 중 무작위로 끊어질 수도 있다.

8.4.6. The Effects of Depth

최근 ILSVRC 대회의 성능 개선 원인은 연산량의 증가, 더 많은 데이터 그리고 더 깊은 신경망을 더 효율적으로 학습할 수 있게 한 구조적 설계의 변화였다. 2012-2015년의 우승자의 놀랄 만한 정확도 개선은 신경망 깊이의 증가에서 나왔다.

8.4.7. Pretrained Models

이미지 영역에서 난관 중 하나는 라벨링된 학습 데이터가 존재하지 않을 수 있다는 것이다. 하지만 이미지 데이터의 핵심은 특정 데이터 셋에서 추출된 특성이 다른 데이터 소스에서도 재사용 가능하다는 것이다. 이렇게 이미 만들어진 특성을 추출하는 방법은 일종의 전이 학습이라 볼 수 있다.

8.5. Visualization and Unsupervised Learning

컨볼루션 신경망의 흥미로은 특성은 학습할 수 있는 유형의 특성이 매우 표현력 있다는 것이다. 이미지를 암호화/복호화할 수 있는 데에는 2가지 주요 세팅이 있다. 첫 번째로는 압축된 특성 맵이 이전에 언급된 지도학습 모델에서 학습된다. 두 번째 세팅은 완전 비지도로서, 컨볼루션 망 (암호화기)가 전치 컨볼루션 망 (복호화기)로 연결된다. 첫 번째가 더 간단하며, 두 번째 방식에서는 전체 망의 학습이 처음부터 이루어져야 한다.

8.5.1. Visualizing the Features of a Trained Network

학습된 망의 특성을 알아보려면 경사 기반 방법을 사용한다.

Gradient-Based Visualization of Activated Features

신경망을 학습하는 데 쓴 역전파 알고리즘은 경사 기반 시각화에도 유용하다. 입력 픽셀에 대한 출력의 민감성이 계산되었을 때 이를 대응하는 픽셀에 대해 시각화한 것은 돌출 맵이라 불린다. 이는 경사의 크기를 시각화해서 알 수 있다. 이는 특정한 은닉 특성의 활성값을 시각화하는 데도 쓸 수 있다. 역전파 대신 디컨볼루션 망이라는 표현을 쓰기도 한다. 일반적 역전파와 디컨볼루션의 차이를 표현하는 한 가지 방법은 경사의 역전파를 암호화기의 컨볼루션 연산 및 복호화기의 전치 컨볼루션 연산으로 보는 것이다. 이를 통해 전이 학습도 할 수 있다.

Synthesized Images that Activate a Feature

특정 뉴런을 활성화시키는 이미지 종류가 어떤지를 알려면 어떻게 할까? 이는 경사 상승법과 역전파를 결하밯면 된다.

8.5.2. Convolutional Autoencoders

컨볼루션 자가부호화기는 컨볼루션 연산을 쓰는 자가부호화기로 점들간 공간적 특성을 활용해 시각적 표현을 가진 특성을 추출한다. 복호화기 부분은 디컨볼루션 연산을 쓴다. 풀링은 언풀링 연산과 매칭된다. 컨볼루션 연산과 디컨볼루션 연산은 그리 다르지 않다. 컨볼루션, 최대 풀링, ReLU의 복호화기 부분은 어떻게 될까? 언풀링 – ReLU – 디컨볼루션의 역순으로 배치된다. 이는 잘 시각화하는 것이 좋다. 패딩은 절반 패딩이 자주 쓰인다. 필터가 여러 개라면 4차원 텐서로 간주하고 알고리즘을 수행할 수도 있다. 디컨볼루션은 전치된 필터를 쓰는 컨볼루션이다. 풀링은 정보 손실이 발생하기 때문에 정확히 뒤집기는 어렵지만 최대 좌표들을 저장해 넘겨주는 방식으로 역연산을 수행한다. 자가부호화기처럼, 손실 함수는 모든 픽셀에 대해 정의된다. 자가부호화기에도 역전파를 수행할 수 있다. 이는 컨볼루션 – ReLU – 풀링을 여러 개 사용하는 경우로도 쉽게 확장될 수 있다. 비지도학습의 가장 쉬운 용례 중 하나는 사전학습이다.

8.6. Applications of Convolutional Networks

컨볼루션 신경망의 사용례를 알아보자.

8.6.1. Content-Based Image Retrieval

내용 기반 이미지 검색의 경우 각 이미지는 사전학습된 분류기를 통해 다차원 특성으로 가공된다.

8.6.2. Object Localization

물체 국소화에서 이미지 내 고정된 오브젝트들에 대해 오브젝트가 존재하는 이미지 정사각형 지역을 식별한다. 이 둘레 상자는 4개의 숫자로 유일하게 식별될 수 있다. 분류기를 학습한 뒤 마지막 2개의 분류 층을 떼어내고 2개의 회귀 층을 붙여 이들만 학습시킨다. 컨볼루션 층을 미세 조정할 수도 있다. 이후 전체 망을 테스트에 쓰면 된다. 슬라이딩 윈도우로는 더 좋은 성능을 낼 수 있다.

8.6.3. Object Detection

물체 감지는 물체 국소화와 매우 비슷하지만 이미지 내 서로 다른 클래스의 물체가 가변 개수가 있을 수 있다. 단순한 방법은 슬라이딩 윈도우 방법이지만 시간이 오래 걸린다. 그래서 둘레 상자에 대한 후보 영역들을 제안한 뒤 이들을 병합하는 방식도 쓰인다.

8.6.4. Natural Language and Sequence Learning

컨볼루션 신경망도 최근에는 텍스트에 대한 기계학습에 많이 쓰인다. 이 때에는 1차원 컨볼루션이 많이 쓰인다.

8.6.5. Video Classification

비디오는 이미지의 나열로 이미지를 일반화한 걸로 볼 수 있다. 3차원 컨볼루션은 각 프레임을 이미지 분류한 것을 평균낸 것에 비해 많은 이득을 가져다 주지는 못한다. 이는 짧은 비디오에만 좋다. 그래서 긴 비디오에 대해서는 순환 신경망을 컨볼루션 신경망과 결합한다.

8.7. Summary

이 장에서는 컨볼루션 신경망의 사용을 이미지 처리에 중점을 두고 다루었다. 이 망들은 생물학적으로 영감을 받았고 신경망의 힘을 보여준 가장 최초의 사례 중 하나이다. 이 장의 중요한 초점은 분류 문제에 맞춰져 있으나 이 방법들은 비지도 특성 학습, 물체 인식, 물체 국소화 등 다른 작업에도 쓰일 수 있다. 컨볼루션 신경망은 다른 층간 계층적 특성을 주로 배우며, 이른 층들은 원시적 모양을, 이후의 층들은 더 복잡한 모양을 배운다. 컨볼루션 신경망에 대한 역전파 방법은 디컨볼루션 문제와 시각화 문제와 밀접한 연관이 있다. 최근에 컨볼루션 신경망은 텍스트 처리에도 쓰였는데, 순환 신경망과 비교해도 경쟁력 있는 성능을 보여주었기 때문이다.

8.8. Bibliographic Notes

관련 여러 문헌이 존재한다.

8.8.1. Software Resources and Data Sets

관련 여러 소프트웨어가 존재한다.

답글 남기기

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

WordPress.com 로고

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

Google photo

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

Twitter 사진

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

Facebook 사진

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

%s에 연결하는 중