데이터와 AI / NOTE 27

합성곱 신경망

Convolutional Neural Networks

합성곱, 풀링, 업샘플링, 잔차 연결과 응용을 정리합니다.

♫ 이 문서 듣기

개념에서 수식으로

먼저 이해할 내용

합성곱 신경망은 입력 전체를 한 번에 섞기보다 작은 범위의 패턴을 여러 위치에서 계산한다. 이 글은 입력 크기·커널·이동 간격이 출력 크기에 어떻게 연결되는지부터 읽고, 크기를 줄이거나 복원하는 구조와 잔차 연결로 확장한다.

기호를 먼저 읽기

N₁, N₂, N₃
입력의 두 공간 크기와 채널 수
f
커널의 한 변 크기
p, s
패딩 크기와 이동 간격
H(x), F(x)
목표 변환과 입력에 더할 잔차 변환
W_s
차원을 맞추는 투영 행렬

이 글의 흐름

합성곱의 크기 관계를 확인한 뒤 풀링과 업샘플링을 비교한다. 이후 잔차 연결의 덧셈과 미분을 읽고, 검출·분할·시계열 적용의 차이를 살펴본다.

주제와 표기

CNN (Convolutional Neural Network)

Convolutional Neural Network (CNN)

특징을 계산하는 단계와 범주를 정하는 단계를 나눈다

입력에서 특징을 추출한 뒤 분류기로 라벨을 정하는 것이 처음 제시된 흐름이다. 원문에 함께 적힌 교차상관과 합성곱은 커널을 어떻게 적용하는지 확인해야 하는 연산이다. 특징 추출·데이터 확대·크기 복원은 서로 다른 목적의 처리이므로 같은 의미로 묶지 않는다.

Cross - correlation → Convolution
Supervised representation learning : feature extraction + classification
수식
Input Image→Feature extraction→Classifier→Label
Data Augmentation : up sampling
Capsule Net

Pre-trained CNNs: before Freeze, Change Output (Transfer learning)

사전학습 구조와 모델 선택을 읽는다

모델의 가중치에 대해 가능성을 모으는 적분식은 모델 선택의 확률적 관점을 보여준다. 이후 구조 사례에서는 일반 합성곱, 풀링, 건너뛰는 연결을 구별한다. 제시된 모델 사례와 평가 관계는 원문 범위로 읽고 현재 모든 모델의 성능 규칙으로 일반화하지 않는다.

Model Selection
p[DMi]=p[Dw,Mi]p[wMi]dw

LeNet-5

수식

Operations

standard convolution
Pooling (subsampling)
More on convolutions

ResNet

Test error≤Training error + Complexity
Over - fitting
Skip connection
hl+2=ϕ[Wl+2hl+1+bl+2+hl]

Inception Net

Inception modules
Auxiliary Classifiers

Convolutions

Padding

커널이 움직일 수 있는 위치 수를 센다

패딩은 입력 가장자리에 공간을 추가하고, stride는 다음 계산 위치까지 이동하는 간격이다. 출력 크기 식은 커널이 입력 안에서 놓일 수 있는 위치 수를 센 것이다. 원문의 나눗셈 형태는 그 길이가 정수로 맞는 조건을 확인하며 사용한다.

p=1
(N1+2p)×(N2+2p)3×3(f×f)=5×5(N1+2pf+1)×(N2+2pf+1)

Strided Convolution

stride=2
N1×N2f×f=(N1fs+1)×(N2fs+1)

Convolution over Volume

공간 크기와 채널 수를 따로 본다

입력의 N₃개 채널에 걸친 커널 하나는 채널 방향의 값을 모아 한 출력 지도를 만든다. 1×1 합성곱도 같은 위치의 채널들을 결합할 수 있으므로, 공간 범위가 작다고 아무 계산을 하지 않는 것은 아니다. 출력 채널 수는 몇 개의 커널을 두는지와 별도로 연결된다.

N1×N2×N3f×f×N3=(N1f+1)×(N2f+1)

1×1 Convolution

Reduce # Channels
N1×N2×N31×1×N3=N1×N2

Max Pooling

풀링과 분할의 출력 의미를 구별한다

Max Pooling은 작은 영역에서 대표적인 큰 값을 고르며 채널별로 적용된다. 의미 분할은 이미지 하나의 라벨이 아니라 각 픽셀의 라벨을 구하는 문제이다. 따라서 크기를 줄인 특징을 다시 위치별 출력으로 옮기는 단계가 이어진다.

Applied independently over channels
max pooling (2×2)

Semantic Segmentation

Predict pixel - wise labels, given a pre - defined set of categories
Does not differentiate instances, only care about pixels

Fully Convolutional Networks

forwardinference
backwardlearning
image→96→256→384→384→256→4096→4096→21→21 (Pixelwise prediction) →segmentation g . t .
Convolutional layers (no fully - connected layers) + upsampling

Conv+Deconv

Convolution network→Deconvolution network
수식

Upsampling

업샘플링 방법마다 값을 채우는 규칙이 다르다

최근접 방식은 기존 값을 반복해 채우고, Bed of Nails는 원래 값 사이에 0을 넣는다. Max unpooling은 이전에 큰 값이 있던 위치 정보를 사용한다. 모두 크기를 늘리지만 사라진 원래 값을 항상 정확히 복원한다는 뜻은 아니다.

Down sampling ⇔ Up sampling
pooling ⇔ unpooling (Transposed Convolution)

Nearest Neighbor

Input 2×2upsampling Output 4×4
(qbcd)(aabbaabbccddccdd)

Bed of Nails

(abcd)(a0b00000c0d00000)

Max unpooling

locations of max activations are recorded in switch wariables
(abcd)(a00000b00c0d0000)

Deconvolution or Transposed Convolution

전치합성곱의 겹치는 기여를 더한다

작은 입력의 각 값이 커널을 통해 여러 출력 위치에 기여한다. 원문 예에서 가운데 출력에 여러 항이 더해지는 이유는 서로 다른 입력의 기여가 같은 위치에서 겹치기 때문이다. 커널 성분과 입력 성분을 하나씩 대응시키며 읽는다.

2×2conv
stride 1
padding 0
Input(1234)
Kernel(abcd)
Ouput(ab+2a2bc+3ad+2c+3b+4a2d+4b3c3d+4c4d)

e.x.1

행렬로 쓰면 합성곱의 연결 구조가 보인다

커널 성분과 0을 배치한 행렬은 어느 입력을 어떤 가중치로 모으는지 보여준다. 그 전치 형태는 작은 입력을 더 큰 출력 위치에 배분하는 관계로 읽을 수 있다. 원문 출력의 w_e 같은 표기는 앞에서 정의한 커널 성분과의 대응을 확인해야 하며 임의로 치환하지 않는다.

kernelsize=3
kernel=(w1w2w3)
stride=2
padding=1
0 a b c d 0
(w1w2w300000w1w2w30)(0abcd0)=(w2a+w3bw1b+w2c+wed)

e.x.2

Transposed convolution
Input(ab)
Kernel(w1w2w3)
Output(w1aw2aw3a+w1bw2bw3b)
(w10w20w3w10w20w3)(ab)=(w1aw2aw3a+w1bw2bw3b)

Residual Block

잔차만 학습하고 입력을 더한다

H(x)=F(x)+x에서 F는 최종 출력 전체가 아니라 입력에 추가할 차이이다. F가 0이면 입력이 그대로 전달된다. 미분식에는 잔차 경로의 미분과 직접 전달되는 항이 나란히 남으므로, 두 경로의 역할을 구별할 수 있다.

Intuition : If the identity mapping is optimal, it is easy to come up with a solution F[x] = 0 rether than F[x] = x using a stack of nonlinear layers
skip connection
H[x]=F[x]+x
F[x]=H[x]x
residual function F[x]
Gradients are calculated as
Jx=JHHx=JH(Fx+1)=JHFx+JH
gradienthighway:JH

Mitigate vanishing gradients:

Gradients can flow directly through the skip connections backwards from later layers to initial filters

Skip Connections

Identity shortcuts:

더하기 전에 차원을 맞춘다

F(x)와 x의 크기가 같으면 바로 더할 수 있다. 크기가 다르면 W_sx와 같이 입력의 표현을 맞추는 경로가 필요하다. 투영의 목적은 단순히 계수를 더 만드는 것이 아니라 덧셈 가능한 차원을 만드는 것이다.

When input and output dimensions are the same, then use the identity shortcut
H[x]=F[x;θ]+x

when dimensions change

Identity shortcuts with extra zero entries padded with the increased dimension
Projection shortcuts to match the dimension
H[x]=F[x;θ]+Wsx

Inception Nets

Naive Version

서로 다른 범위의 특징을 병렬로 계산한다

Inception 구간은 1×1, 3×3, 5×5 등의 경로를 나누어 계산하고 채널 방향으로 연결한다. 이어지는 차원 축소 구성은 큰 커널 전에 1×1 계산을 넣는 흐름이다. 각 경로의 공간 크기와 채널 크기를 따로 확인한다.

Filter concatenation
1×1convolutions
3×3convolutions
5×5convolutions
3×3 max pooling
Previous layer

With Dimension Reduction

Filter concatenation
1×1convolutions
3×3convolutions
1×1convolutions
5×5convolutions
1×1convolutions
1×1convolutions
3×3 max pooling
Previous layer

Object Detection: Localization + Classification

검출·분할·시계열의 목표를 나눈다

검출에서는 물체 종류뿐 아니라 위치를 함께 구한다. R-CNN과 YOLO는 원문에서 서로 다른 처리 흐름의 사례로 제시되어 있다. 마지막 시계열 항목은 시간 순서의 입력에서도 특징을 계산할 수 있다는 연결이며, 여기에는 완성된 센서 분류 실험 결과가 제시된 것은 아니다.

Multi - label
Localization
Patch→feature→SVM

R-CNN:Regions with CNN features

Input image → Extract region propocals →Compute CNN features → Classify regions

YOLO

5×5 grid on input
Bounding boxes + confidence
Class probability map
Final detections

CNN for Time Series Classification

Timeseries=sequence
Fourier Transform
Human Activity Recognition using Accelerometers and Gyroscope Sensors
partial weight sharing
full weight sharing

정리하면

CNN의 수식은 어떤 범위의 입력을 연결하고 출력의 위치 정보를 어떻게 유지하는지 보여준다. 공간 크기, 채널 수, 연산 종류를 나누어 읽는 것이 중요하다.