개념에서 수식으로
먼저 이해할 내용
합성곱 신경망은 입력 전체를 한 번에 섞기보다 작은 범위의 패턴을 여러 위치에서 계산한다. 이 글은 입력 크기·커널·이동 간격이 출력 크기에 어떻게 연결되는지부터 읽고, 크기를 줄이거나 복원하는 구조와 잔차 연결로 확장한다.
기호를 먼저 읽기
- N₁, N₂, N₃
- 입력의 두 공간 크기와 채널 수
- f
- 커널의 한 변 크기
- p, s
- 패딩 크기와 이동 간격
- H(x), F(x)
- 목표 변환과 입력에 더할 잔차 변환
- W_s
- 차원을 맞추는 투영 행렬
이 글의 흐름
합성곱의 크기 관계를 확인한 뒤 풀링과 업샘플링을 비교한다. 이후 잔차 연결의 덧셈과 미분을 읽고, 검출·분할·시계열 적용의 차이를 살펴본다.
주제와 표기
CNN (Convolutional Neural Network)
Convolutional Neural Network (CNN)
특징을 계산하는 단계와 범주를 정하는 단계를 나눈다
입력에서 특징을 추출한 뒤 분류기로 라벨을 정하는 것이 처음 제시된 흐름이다. 원문에 함께 적힌 교차상관과 합성곱은 커널을 어떻게 적용하는지 확인해야 하는 연산이다. 특징 추출·데이터 확대·크기 복원은 서로 다른 목적의 처리이므로 같은 의미로 묶지 않는다.
수식을 불러오지 못했습니다.
Pre-trained CNNs: before Freeze, Change Output (Transfer learning)
사전학습 구조와 모델 선택을 읽는다
모델의 가중치에 대해 가능성을 모으는 적분식은 모델 선택의 확률적 관점을 보여준다. 이후 구조 사례에서는 일반 합성곱, 풀링, 건너뛰는 연결을 구별한다. 제시된 모델 사례와 평가 관계는 원문 범위로 읽고 현재 모든 모델의 성능 규칙으로 일반화하지 않는다.
LeNet-5
Operations
ResNet
Inception Net
Convolutions
Padding
커널이 움직일 수 있는 위치 수를 센다
패딩은 입력 가장자리에 공간을 추가하고, stride는 다음 계산 위치까지 이동하는 간격이다. 출력 크기 식은 커널이 입력 안에서 놓일 수 있는 위치 수를 센 것이다. 원문의 나눗셈 형태는 그 길이가 정수로 맞는 조건을 확인하며 사용한다.
Strided Convolution
Convolution over Volume
공간 크기와 채널 수를 따로 본다
입력의 N₃개 채널에 걸친 커널 하나는 채널 방향의 값을 모아 한 출력 지도를 만든다. 1×1 합성곱도 같은 위치의 채널들을 결합할 수 있으므로, 공간 범위가 작다고 아무 계산을 하지 않는 것은 아니다. 출력 채널 수는 몇 개의 커널을 두는지와 별도로 연결된다.
1×1 Convolution
Max Pooling
풀링과 분할의 출력 의미를 구별한다
Max Pooling은 작은 영역에서 대표적인 큰 값을 고르며 채널별로 적용된다. 의미 분할은 이미지 하나의 라벨이 아니라 각 픽셀의 라벨을 구하는 문제이다. 따라서 크기를 줄인 특징을 다시 위치별 출력으로 옮기는 단계가 이어진다.
Semantic Segmentation
Fully Convolutional Networks
Conv+Deconv
Upsampling
업샘플링 방법마다 값을 채우는 규칙이 다르다
최근접 방식은 기존 값을 반복해 채우고, Bed of Nails는 원래 값 사이에 0을 넣는다. Max unpooling은 이전에 큰 값이 있던 위치 정보를 사용한다. 모두 크기를 늘리지만 사라진 원래 값을 항상 정확히 복원한다는 뜻은 아니다.
Nearest Neighbor
Bed of Nails
Max unpooling
Deconvolution or Transposed Convolution
전치합성곱의 겹치는 기여를 더한다
작은 입력의 각 값이 커널을 통해 여러 출력 위치에 기여한다. 원문 예에서 가운데 출력에 여러 항이 더해지는 이유는 서로 다른 입력의 기여가 같은 위치에서 겹치기 때문이다. 커널 성분과 입력 성분을 하나씩 대응시키며 읽는다.
e.x.1
행렬로 쓰면 합성곱의 연결 구조가 보인다
커널 성분과 0을 배치한 행렬은 어느 입력을 어떤 가중치로 모으는지 보여준다. 그 전치 형태는 작은 입력을 더 큰 출력 위치에 배분하는 관계로 읽을 수 있다. 원문 출력의 w_e 같은 표기는 앞에서 정의한 커널 성분과의 대응을 확인해야 하며 임의로 치환하지 않는다.
| 0 | a | b | c | d | 0 |
e.x.2
Residual Block
잔차만 학습하고 입력을 더한다
H(x)=F(x)+x에서 F는 최종 출력 전체가 아니라 입력에 추가할 차이이다. F가 0이면 입력이 그대로 전달된다. 미분식에는 잔차 경로의 미분과 직접 전달되는 항이 나란히 남으므로, 두 경로의 역할을 구별할 수 있다.
Mitigate vanishing gradients:
Skip Connections
Identity shortcuts:
더하기 전에 차원을 맞춘다
F(x)와 x의 크기가 같으면 바로 더할 수 있다. 크기가 다르면 W_sx와 같이 입력의 표현을 맞추는 경로가 필요하다. 투영의 목적은 단순히 계수를 더 만드는 것이 아니라 덧셈 가능한 차원을 만드는 것이다.
when dimensions change
Inception Nets
Naive Version
서로 다른 범위의 특징을 병렬로 계산한다
Inception 구간은 1×1, 3×3, 5×5 등의 경로를 나누어 계산하고 채널 방향으로 연결한다. 이어지는 차원 축소 구성은 큰 커널 전에 1×1 계산을 넣는 흐름이다. 각 경로의 공간 크기와 채널 크기를 따로 확인한다.
With Dimension Reduction
Object Detection: Localization + Classification
검출·분할·시계열의 목표를 나눈다
검출에서는 물체 종류뿐 아니라 위치를 함께 구한다. R-CNN과 YOLO는 원문에서 서로 다른 처리 흐름의 사례로 제시되어 있다. 마지막 시계열 항목은 시간 순서의 입력에서도 특징을 계산할 수 있다는 연결이며, 여기에는 완성된 센서 분류 실험 결과가 제시된 것은 아니다.
R-CNN:Regions with CNN features
YOLO
CNN for Time Series Classification
정리하면
CNN의 수식은 어떤 범위의 입력을 연결하고 출력의 위치 정보를 어떻게 유지하는지 보여준다. 공간 크기, 채널 수, 연산 종류를 나누어 읽는 것이 중요하다.