Convolution
특징 맵(feature map)은 3차원(h, w, c) 구조를 가진다.
얘네끼리 더하려면 당연하게도 h, w, c가 모두 같아야 한다.
하지만 이어붙이려면 h, w만 같으면 된다.
Atrous(Dilated) convolution
커널 자체에 stride를 집어넣는다? 라고 생각하면 될 듯하다.
커널의 파라미터 수는 그대로 유지하면서, 커널의 크기를 넓히면서 다양한 공간 해상도의 특성을 포착할 수 있다.
위 그림처럼 다양한 크기의 dilation을 병렬로 구성하여 입력에 대한 멀티스케일 context 정보를 추출할 수 있어 효과적이다.
아니면 이렇게 filter composition을 통해 이미지 분할 또는 장면 이해에 사용할 수 있다.
Transposed Convolution(Deconvolution, Upsampling convolution)
이건 convolution과 반대로, 특징 맵의 공간 해상도를 증가시키는 데 사용된다.
아래 파란 부분이 input, 초록 부분이 output이라고 생각하면 편하다.
따라서 이미지 upscaling, segmentation, gen model 등에 활용된다.
만약 stride = 2가 된다면, 아래처럼 된다.
Depthwise convolution
이건 파라미터 수&연산량을 줄이기 위해 고안된 구조이다.
원래 standard conv에서는 kernel이 3차원이었다면, depth-wise에서는 kernel을 2차원으로 만들고, 이를 각 channel에 적용한다.
파라미터 수와 연산량은 아래 표와 같이 차이가 난다.
Group/Depthwise convolution
Depthwise Separable은 Depthwise 이후 Pointwise convolution으로 채널 간 정보를 결합하는 것이다.
이는 연산량은 크게 줄이면서도 정확도는 거의 유지할 수 있는 방법이다.
CNN의 기본 Flow : Feature learning
1. Convolution으로 이미지에서 특징 추출
2. Activation Function으로 비선형성 도입
3. Pooling으로 공간적 차원 축소 및 위치 변화에 대한 불변성 획득
CNN : Class probabilites
합성곱(Conv)와 풀링(Pool) 층을 거쳐 고수준의 추상적 특징 추출
이후 FC layer를 통해 입력 이미지를 분류하고,
출력으로 '각 클래스에 속할 확률'이 제공된다. (예시로 softmax를 사용하여)
만약 이를 코드로 나타낸다면 아래와 같다.
ILSVRC(ImageNet Large Scale Visual Recognition Challenge)
이 대회는 컴비 분야의 올림픽과도 같다.
이미지 분류, 물체 인식 등 다양한 과제를 두고 경쟁하며, 이를 통해 CNN의 성능이 입증되었다.
CNN이 처음 도입됐을 때, AlexNet에서 test error가 15.3% 였다. 2등의 오류율이 26.2%인 데 비해 압도적인 것을 알 수 있다.
AlexNet
위에 나왔던 첫 CNN이다. GPU 사용과 고속 합성곱 연산 구현 덕분에 훈련이 가능했다.
대규모 이미지 데이터셋인 ImageNet으로 학습된 것이다.
AlexNet의 구조는 아래 사진과 같다. 5개의 Conv layer와 3개의 FC layer로 총 8개의 학습 가능한 층으로 이루어져 있다.
그리고 ReLU, Normalization, Overlapping Pooling, Dropout을 사용한다.
이를 시각화해보면, 아래와 같다.
초반 레이어에서는 가장자리/방향 등 단순 패턴 위주로 추출하고, 후반에는 더 추상적인 객체 형태를 포착한다.
CNN은 이처럼 단순->복잡 순서로 특징을 포착한다.
그럼 출력 크기 공식과 함께 AlexNet의 출력 크기를 계산해보겠다.
아래 공식을 사용하면 된다.
그리고 AlexNet의 각 층마다 출력 크기와 파라미터 개수를 계산해보면 아래와 같다.
이후 ILSVRC에서는 CNN 기반 모델들이 다양하게 등장하게 된다.
ZFNet
2013년 우승 모델이다. 개발자들의 이름을 따 구조명을 만든 것이다.
여기서는 Deconvolutional Network를 사용해 중간층의 feature map을 시각화하였다.
AlexNet의 커널 사이즈, stride 등을 조정하여 성능을 향상시켰다.
VGGNet
이 구조의 특징은 '단순하고 일관된 구조'이다. 전부 3x3 conv를 사용한다.
깊이를 늘림으로써 성능을 향상시킨 것이다. 항상 conv-conv-pool을 반복하고, 마지막에 FC layer를 넣는다.
그렇다면 왜 3x3의 작은 filter를 쓰는 것일까?
이유는 3x3 kernel을 3개 쌓은 것의 effective receptive field와 7x7 conv layer의 effective receptive field가 같기 때문이다.
심지어 파라미터 개수도 7*7*C*C 보다 3*(3*3*C*C)가 더 작고, 게다가 비선형성도 더 많아진다.
GoogleNet
이 구조의 특징은 Inception module을 도입한 것이다. 다양한 크기의 필터를 병렬로 사용하는 모듈이다.
이렇게 하면 여러 특징을 추출할 수 있다는 장점이 있다.
또한 FC layer가 없으며, AlexNet에 비해 12배 적은 파라미터를 가진다. VGG-16에 비해서는 27배나 적다.
처음에 고려했던 Naive Inception module은, 병렬의 1x1, 3x3, 5x5, 3x3(max)를 중간에 결합한 형태이다.
하지만 이 구조의 문제점이 있다. 연산량이 엄청나게 증가한다는 것이다.
따라서 채널 수를 줄이기 위해 1x1 Conv를 사용하게 된다. 이는 아래 그림을 보면 더 쉽게 이해할 수 있다.
1x1x64 크기의 필터를 32개를 사용해서, 56x56 크기의 output 32개를 만들어내는 것이다. 그럼 채널이 64->32로 줄게 된다.
이걸 적용한 구글넷의 인셉션 모듈은 아래와 같다.
저 1x1 conv를 bottleneck layers라고 한다.
이 inception module들이 쭉 stack된 구조가 GoogLeNet이다.
맨 처음에 Conv-Pool이 반복되는 Stem Network,
이후 inception module이 반복되는 Stacked Inception Modules,
마지막에 avg pool->FC->분류 output
그리고 사이사이 있는 보조 분류 출력에서는 avgpool-bottleneck layer-FC-FC-softmax가 있다.
ResNet
이는 Resicual Connection을 이용한 매우 깊은 네트워크이다. 152-layer 모델이다.
보통 깊은 네트워크는 성능이 떨어지거나 훈련이 어렵다는 문제점이 있다. 하지만 ResNet은 residual connection으로 이를 해결했다.
이게 Resicual Block이다.
뭐 아무리 성능이 떨어지거나 훈련이 어렵다고 해도, 깊은 모델은 파라미터가 많기에 표현 능력이 더 강하다.
그래서 가설을 세워본 것이다. 깊은 모델이 최적화하기 어려워서 그랬던 것은 아닐까?
이 최적화를 위해서 residual connection을 추가하게 된 것이다.
Full ResNet 구조는 두 개의 3x3 conv layer를 가진 residual block들이 stack되어있는 것이다.
이 구조도 마지막에 output을 위한 FC를 제외하고는 FC layer가 존재하지 않는다.
ResNet의 종류는.. 18, 34, 50, 101, 152까지 있으며,
만약 50 이상 되면 좀 깊은 편이기에 bottleneck layer, 즉 1x1 conv layer를 중간에 넣어준다.
요런 식으로 말이다.
Resnet은 학습시,
모든 conv 후 BN을 적용하며,
Xavier 초기화를 사용하고,
SGD+Momentum을 옵티마이저로 사용하며,
Lr = 0.1로 시작하여 val error plateaus시 1/10로 줄인다.
mini-batch size는 256,
weight decay는 10^(-5),
그리고 dropout은 사용하지 않는다.
이 ResNet은 깊은 네트워크를 안정적으로 학습 가능하게 만든 대표 모델로, 이후 대부분 CNN 구조에서 기본 단위로 사용된다.
요약
AlexNet | GPU사용, ReLU, Dropout 도입 |
ZFNet | Deconv 시각화, 하이퍼파라미터 개선 |
VGGNet | 단순 구조 반복, 깊이 증가 |
GoogLeNet | Inception module, 1x1 conv |
ResNet | Residual connection 도입, 매우 깊은 네트워크 가능 |
'AI > 딥러닝' 카테고리의 다른 글
Pruning and Quantization (3) | 2025.06.19 |
---|---|
CNN applications and RNN (1) | 2025.06.18 |
Numerical Stability, Optimization (1) | 2025.04.24 |
Regularization (1) | 2025.04.24 |
족보 (1) | 2025.04.24 |