검색
← 모듈 로드맵

아주 깊은 합성곱 신경망 (VGG)

논문 · 준전문가 · Karen Simonyan 외 1명 · 2014 · arXiv

원제 · Very Deep Convolutional Networks for Large-Scale Image Recognition

3×3 필터만 쌓아 깊이를 19층까지 늘리면 이미지 인식이 크게 좋아짐을 보인 논문

먼저 알아야 할 것

합성곱 · 풀링ReLU 활성화소프트맥스 분류와 교차 엔트로피드롭아웃 · 가중치 감쇠AlexNet

다루는 내용

VGG는 모든 합성곱 층에 3×3 필터를 쓰고 다른 설계는 고정한 채 깊이만 11층에서 19층까지 늘려, 깊이가 정확도를 올린다는 것을 공정하게 보였습니다. 3×3 세 층은 7×7 한 층과 보는 넓이가 같으면서 파라미터가 적고 비선형이 많습니다. 스케일 지터링과 밀집 평가를 더해 ILSVRC-2014 분류 2위 · 위치 찾기 1위를 했고, 공개된 VGG-16/19 특징은 다른 데이터셋에서도 최고 수준이어서 사전학습 특징 추출기의 표준이 됐습니다.

초록

저자가 쓴 초록을 옮긴 것입니다.

이 연구에서는 대규모 이미지 인식 환경에서 합성곱 신경망의 깊이가 정확도에 어떤 영향을 미치는지 조사합니다. 주된 기여는 아주 작은(3 × 3) 합성곱 필터를 쓰는 구조로 깊이를 점점 늘린 신경망들을 철저하게 평가한 것으로, 이를 통해 깊이를 가중치 층 16~19개까지 늘리면 기존 최고 수준의 구성보다 크게 개선할 수 있음을 보였습니다. 이 결과는 우리의 ImageNet Challenge 2014 참가작의 바탕이 되었고, 우리 팀은 위치 찾기(localisation) 부문과 분류(classification) 부문에서 각각 1위와 2위를 차지했습니다. 또한 우리가 얻은 표현이 다른 데이터셋에도 잘 일반화되어, 그곳에서도 최고 수준의 결과를 낸다는 것을 보입니다. 컴퓨터 비전에서 깊은 시각 표현을 활용하는 후속 연구를 돕기 위해, 성능이 가장 좋은 합성곱 신경망 모델 두 개를 공개했습니다.

해설

아주 깊은 합성곱 신경망 (VGG)

3×3짜리 아주 작은 필터만 쓰고 층을 16~19개까지 쌓아, "깊이가 정확도를 올린다"를 공정한 비교로 보여 준 논문입니다. 단순하고 규칙적인 구조 덕분에 이후 수년간 이미지 특징 추출의 표준 뼈대로 쓰였습니다.

항목내용
원제Very Deep Convolutional Networks for Large-Scale Image Recognition
저자Karen Simonyan · Andrew Zisserman (옥스퍼드대 Visual Geometry Group)
발표2014 · arXiv 1409.1556 (ICLR 2015 학회 논문)
트랙 · 수준딥러닝 기초 · 중급
먼저 알면 좋은 것합성곱 · 풀링, ReLU, 소프트맥스 분류, 드롭아웃, AlexNet

들어가기 전에

이 해설은 아래 내용을 안다고 보고 씁니다. 처음이라면 먼저 읽고 오면 수식과 손계산을 훨씬 쉽게 따라올 수 있습니다.

한눈에 보기

  • 큰 필터 하나(7×7) 대신 작은 필터(3×3) 여러 개를 쌓으면 같은 넓이를 보면서도 파라미터는 적고 비선형은 많아진다는 것을 압니다.
  • 다른 조건은 고정한 채 깊이만 11층 → 19층으로 늘렸을 때 오류율이 어떻게 줄어드는지 압니다.
  • 학습 · 시험 때 이미지 크기를 바꿔 쓰는 스케일 지터링이 왜 효과가 있는지 압니다.
  • 완전연결층을 합성곱으로 바꿔 이미지 전체에 한 번에 적용하는 밀집 평가(dense evaluation) 를 압니다.
  • VGG 특징이 다른 데이터셋에서도 잘 통해 사전학습 특징 추출기의 대표가 된 이유를 압니다.

초록 (번역)

이 연구에서는 대규모 이미지 인식 환경에서 합성곱 신경망의 깊이가 정확도에 어떤 영향을 미치는지 조사합니다. 주된 기여는 아주 작은(3 × 3) 합성곱 필터를 쓰는 구조로 깊이를 점점 늘린 신경망들을 철저하게 평가한 것으로, 이를 통해 깊이를 가중치 층 16~19개까지 늘리면 기존 최고 수준의 구성보다 크게 개선할 수 있음을 보였습니다. 이 결과는 우리의 ImageNet Challenge 2014 참가작의 바탕이 되었고, 우리 팀은 위치 찾기(localisation) 부문과 분류(classification) 부문에서 각각 1위와 2위를 차지했습니다. 또한 우리가 얻은 표현이 다른 데이터셋에도 잘 일반화되어, 그곳에서도 최고 수준의 결과를 낸다는 것을 보입니다. 컴퓨터 비전에서 깊은 시각 표현을 활용하는 후속 연구를 돕기 위해, 성능이 가장 좋은 합성곱 신경망 모델 두 개를 공개했습니다.

무엇을 풀었나

2012년 AlexNet 이후 합성곱 신경망(ConvNet, 이미지를 작은 창으로 훑으며 특징을 뽑는 신경망)이 이미지 인식의 주류가 됐습니다. 이후 연구들은 첫 층의 창 크기와 보폭(stride)을 줄이거나, 여러 크기의 이미지로 학습 · 시험하는 식으로 AlexNet을 다듬었습니다.

그런데 "층을 더 깊게 쌓으면 정말 좋아지는가"는 공정하게 비교된 적이 드물었습니다. 깊이를 늘리면 필터 크기 · 채널 수 · 계산량이 함께 바뀌어, 무엇 때문에 좋아졌는지 가려내기 어려웠기 때문입니다.

이 논문은 다른 설계는 모두 고정하고 깊이만 늘립니다. 이게 가능했던 열쇠는 모든 층에 3×3이라는 아주 작은 필터를 쓴 것입니다. 필터가 작으니 층을 많이 쌓아도 파라미터가 폭발하지 않습니다.

핵심 아이디어

1. 작은 필터를 여러 겹 쌓기 (3×3 스택)

한 문장 직관: 큰 돋보기 한 개로 넓게 보는 대신, 작은 돋보기 세 개를 차례로 겹쳐 같은 넓이를 보는 것입니다(해설용 비유). 렌즈 사이마다 "판단(비선형)"을 한 번씩 더 넣을 수 있습니다.

단계별 설명

  1. 3×3 필터 하나는 입력의 3×3 구역을 봅니다. 논문은 이를 "왼쪽/오른쪽, 위/아래, 가운데를 구별할 수 있는 가장 작은 크기"라고 설명합니다.
  2. 그 위에 3×3 층을 하나 더 쌓으면, 위층의 한 칸은 아래층의 3×3 칸을 보고, 그 각각은 다시 입력의 3×3을 봅니다. 그래서 입력 기준으로 5×5를 보게 됩니다.
  3. 세 층을 쌓으면 7×7을 봅니다. 즉 3×3 세 층 = 7×7 한 층과 보는 넓이(유효 수용 영역)가 같습니다.
  4. 차이는 두 가지입니다. ① 층 사이마다 ReLU가 들어가 비선형이 3번이 됩니다. ② 파라미터가 줄어듭니다.

수식 — 파라미터 수 비교 (입력 · 출력 채널이 모두 CC일 때, 편향 생략)

3⋅(32C2)⏟3×3 세 층=27C2vs72C2⏟7×7 한 층=49C2\underbrace{3 \cdot (3^2 C^2)}_{\text{3×3 세 층}} = 27C^2 \qquad\text{vs}\qquad \underbrace{7^2 C^2}_{\text{7×7 한 층}} = 49C^2

기호 풀이

기호뜻
CC채널 수(특징 지도의 장수). 입력과 출력이 같다고 가정
32C23^2 C^23×3 필터 하나가 CC개 입력 채널을 보고, 그런 필터가 CC개 있음 → 9C29C^2
앞의 33이런 층이 세 개
49C249C^27×7 필터 CC개, 각 필터가 CC개 채널을 봄

49C249C^2는 27C227C^2보다 약 81% 많습니다(논문 수치). 논문은 이것을 "7×7 필터를 3×3 필터들로 분해하도록 강제하는 일종의 규제"로 볼 수 있다고 설명합니다.

숫자로 해 보기 (해설용 예)

채널 C=2C = 2인 아주 작은 경우를 손으로 세어 봅니다.

  • 3×3 한 층: 필터 한 개 = 3×3×2=183 \times 3 \times 2 = 18개 가중치, 필터 2개 → 3636개
  • 3×3 세 층: 36×3=10836 \times 3 = 108개 (=27×22= 27 \times 2^2)
  • 7×7 한 층: 필터 한 개 = 7×7×2=987 \times 7 \times 2 = 98개, 필터 2개 → 196196개 (=49×22= 49 \times 2^2)

196/108≈1.81196 / 108 \approx 1.81, 약 81% 더 많습니다. 보는 넓이는 7×7로 같은데 가중치는 절반 남짓입니다.

수용 영역도 1차원으로 세어 볼 수 있습니다. 입력 칸 번호가 1~7일 때, 3층의 가운데 칸 하나는 2층의 3칸(3~5)을, 그 3칸은 1층의 5칸(2~6)을, 그 5칸은 입력의 7칸(1~7)을 봅니다. 3 → 5 → 7로 층마다 2칸씩 넓어집니다.

왜 이렇게 했나

AlexNet은 첫 층에 11×11(보폭 4), 이후 연구들은 7×7(보폭 2)을 썼습니다. 큰 필터는 한 번에 넓게 보지만 파라미터가 많고 비선형이 한 번뿐입니다. 3×3을 쌓으면 같은 넓이를 더 적은 가중치로, 더 복잡한 판단 함수로 볼 수 있어 깊게 쌓기에 유리합니다.

2. 규칙적인 전체 구조 (A~E 다섯 가지 깊이)

한 문장 직관: 같은 모양의 블록을 "칸 수만 다르게" 쌓은 레고 탑 다섯 개를 만들어 높이만 비교한 실험입니다(해설용 비유).

단계별 설명

  1. 입력은 224×224 RGB 이미지입니다. 전처리는 학습셋 평균 RGB 값을 각 픽셀에서 빼는 것뿐입니다.
  2. 합성곱 층은 모두 3×3, 보폭 1, 패딩 1입니다. 그래서 합성곱을 지나도 가로세로 크기가 그대로입니다.
  3. 크기는 2×2 최대 풀링(보폭 2) 다섯 번으로만 줄입니다. 한 번에 가로세로가 절반이 됩니다.
  4. 채널 수는 첫 층 64에서 시작해 풀링을 지날 때마다 두 배가 되어 512에서 멈춥니다(64 → 128 → 256 → 512 → 512).
  5. 끝에는 완전연결층(FC) 3개가 있습니다. 4096, 4096, 그리고 1000개 클래스용 1000입니다. 마지막은 소프트맥스입니다.
  6. 모든 은닉층에 ReLU를 씁니다.

다섯 구성의 차이 (논문 표 1 · 2 요약)

구성가중치 층 수특징파라미터(백만)
A11 (합성곱 8 + FC 3)가장 얕음133
A-LRN11A에 국소 응답 정규화(LRN) 추가133
B13앞 두 단계에 3×3 층 추가133
C16B에 1×1 합성곱 3개 추가134
D16C의 1×1을 3×3으로138
E19 (합성곱 16 + FC 3)가장 깊음144

D가 흔히 말하는 VGG-16, E가 VGG-19입니다. 깊이가 크게 늘어도 파라미터는 133M → 144M로 조금만 늡니다. 파라미터 대부분이 끝의 FC층에 있기 때문입니다.

수식 — 크기 변화

합성곱(3×3, 보폭 1, 패딩 1)의 출력 크기와 풀링(2×2, 보폭 2)의 출력 크기는 다음과 같습니다.

Wconv=W−3+2⋅11+1=W,Wpool=W−22+1=W2W_{\text{conv}} = \frac{W - 3 + 2 \cdot 1}{1} + 1 = W, \qquad W_{\text{pool}} = \frac{W - 2}{2} + 1 = \frac{W}{2}

기호 풀이

  • WW: 입력 특징 지도의 가로(또는 세로) 칸 수
  • 33, 22: 필터 · 풀링 창 크기
  • 패딩 11: 가장자리에 0을 한 줄씩 덧대는 것
  • 분모 11, 22: 보폭(창을 몇 칸씩 옮기나)

숫자로 해 보기 (해설용 계산)

224에서 풀링 다섯 번: 224→112→56→28→14→7224 \to 112 \to 56 \to 28 \to 14 \to 7. 마지막 특징 지도는 7×7×512입니다. 첫 FC층이 받는 입력은 7×7×512=25,0887 \times 7 \times 512 = 25{,}088개 값이고, 이를 4096개로 잇는 가중치만 25,088×4,096≈125{,}088 \times 4{,}096 \approx 1억 개입니다. 전체 133M~144M 중 큰 몫이 여기서 나온다는 것을 손으로 확인할 수 있습니다(이 분해는 해설용 계산이며, 논문은 구성별 총 파라미터 수만 제시합니다).

왜 이렇게 했나

깊이 효과를 공정하게 재려면 나머지를 고정해야 합니다. 그래서 모든 구성이 같은 원칙(3×3, 같은 풀링 위치, 같은 FC)을 따르고 층 수만 다릅니다. LRN은 A-LRN 실험에서 성능을 올리지 못하고 메모리 · 시간만 늘려서 더 깊은 구성(B~E)에서는 뺐습니다.

3. 1×1 합성곱 — 넓이는 그대로, 비선형만 추가

한 문장 직관: 1×1 합성곱은 한 픽셀 위치에서 채널들끼리만 섞는 "작은 완전연결층"입니다(해설용 비유).

단계별 설명

  1. 1×1 필터는 주변 픽셀을 보지 않고, 같은 위치의 채널 값들만 가중합합니다.
  2. 그래서 수용 영역을 넓히지 않습니다.
  3. 그 뒤에 ReLU가 붙으므로 비선형이 하나 늘어납니다.
  4. 구성 C는 이 1×1을 세 군데 넣었고, D는 같은 자리에 3×3을 넣었습니다.

수식

위치 (i,j)(i, j)의 입력 채널 벡터를 xij∈RC\mathbf{x}_{ij} \in \mathbb{R}^{C}라 하면

yij=ReLU(Wxij+b),W∈RC′×C\mathbf{y}_{ij} = \mathrm{ReLU}(W \mathbf{x}_{ij} + \mathbf{b}), \quad W \in \mathbb{R}^{C' \times C}
  • CC, C′C': 입력 · 출력 채널 수 (논문 구성 C에서는 둘이 같음)
  • WW, b\mathbf{b}: 모든 위치가 공유하는 가중치 · 편향

숫자로 해 보기 (해설용 예)

채널 2개짜리 픽셀 x=(1,−2)\mathbf{x} = (1, -2), W=(1120)W = \begin{pmatrix} 1 & 1 \\ 2 & 0 \end{pmatrix}, b=0\mathbf{b} = 0이라 하면 Wx=(1−2, 2+0)=(−1, 2)W\mathbf{x} = (1 - 2,\ 2 + 0) = (-1,\ 2)이고, ReLU를 지나 (0,2)(0, 2)가 됩니다. 주변 픽셀은 전혀 쓰지 않았습니다.

결과로 본 교훈: C는 B보다 좋았지만(비선형 추가의 효과), 같은 깊이의 D보다 나빴습니다. 논문은 "비선형도 도움이 되지만, 3×3처럼 공간 맥락을 보는 필터도 중요하다"고 해석합니다.

4. 학습 방법 — 얕은 망으로 깊은 망을 시작하기

한 문장 직관: 높은 탑을 처음부터 쌓기 어려우니, 낮은 탑(A)을 먼저 세우고 그 아래 · 위층을 옮겨 와 높은 탑의 뼈대로 쓰는 방식입니다(해설용 비유).

단계별 설명 (논문 설정)

  1. 다항 로지스틱 회귀(소프트맥스 교차 엔트로피) 목표를 미니배치 경사하강법 + 모멘텀으로 최적화합니다.
  2. 배치 256, 모멘텀 0.9, 가중치 감쇠(L2) 5×10−45 \times 10^{-4}, 앞 두 FC층에 드롭아웃 0.5.
  3. 학습률은 10−210^{-2}에서 시작해, 검증 정확도가 멈추면 10분의 1로 줄입니다. 총 3번 줄였고 37만 반복(74 에폭)에서 멈췄습니다.
  4. 초기화: 먼저 얕은 A를 무작위 초기화로 학습합니다. 더 깊은 망은 앞 합성곱 4층과 끝 FC 3층을 A의 값으로 채우고, 가운데 층만 무작위로 둡니다. 무작위 값은 평균 0 · 분산 10−210^{-2} 정규분포, 편향은 0입니다.
  5. 논문은 제출 뒤에 Glorot & Bengio(2010)의 무작위 초기화로도 사전학습 없이 초기화할 수 있음을 알았다고 덧붙입니다.

수식 — 모멘텀 경사하강 + 가중치 감쇠 (표준 형태로 단순화한 설명용 식)

v←μv−η(∇wL+λw),w←w+vv \leftarrow \mu v - \eta\left(\nabla_w \mathcal{L} + \lambda w\right), \qquad w \leftarrow w + v
기호뜻논문 값
ww가중치—
vv속도(이전 이동 방향의 누적)—
μ\mu모멘텀0.9
η\eta학습률시작 10−210^{-2}
λ\lambdaL2 감쇠 계수5×10−45 \times 10^{-4}
∇wL\nabla_w \mathcal{L}손실의 기울기—

숫자로 해 보기 (해설용 예 — 논문 수치 아님)

w=1.0w = 1.0, 기울기 ∇wL=0.5\nabla_w \mathcal{L} = 0.5, v=0v = 0, μ=0.9\mu = 0.9, η=0.1\eta = 0.1, λ=0.01\lambda = 0.01로 두면 v=0−0.1×(0.5+0.01)=−0.051v = 0 - 0.1 \times (0.5 + 0.01) = -0.051, w=1.0−0.051=0.949w = 1.0 - 0.051 = 0.949입니다. 다음 단계에 기울기가 같다면 v=0.9×(−0.051)−0.051=−0.0969v = 0.9 \times (-0.051) - 0.051 = -0.0969로 이동 폭이 커집니다. 같은 방향으로 계속 내려가면 가속되는 것이 모멘텀입니다.

왜 이렇게 했나

깊은 망은 나쁜 초기화로 시작하면 기울기가 불안정해 학습이 멈출 수 있습니다(당시엔 배치 정규화가 나오기 전입니다). 그래서 얕은 망의 값을 빌려 출발점을 안정시켰습니다. 논문은 파라미터가 더 많고 깊은데도 AlexNet보다 적은 에폭에 수렴한 이유를 ① 깊이와 작은 필터가 주는 암묵적 규제 ② 일부 층의 사전 초기화로 추측합니다.

5. 스케일 지터링 — 크기를 바꿔 가며 학습 · 시험

한 문장 직관: 같은 고양이 사진을 확대 · 축소해 가며 보여 주면, 가까이 찍힌 고양이도 멀리 찍힌 고양이도 알아보게 됩니다(해설용 비유).

단계별 설명

  1. 학습 이미지의 짧은 변을 SS로 맞춘 뒤 224×224를 무작위로 잘라냅니다. 좌우 뒤집기 · RGB 색 변화도 섞습니다.
  2. 고정 스케일: S=256S = 256 또는 S=384S = 384. 384 망은 256 망의 가중치로 시작하고 학습률을 10−310^{-3}으로 낮춥니다.
  3. 다중 스케일(지터링): 이미지마다 SS를 [256,512][256, 512]에서 무작위로 뽑습니다. 속도를 위해 S=384S = 384로 학습한 망을 미세조정해 만듭니다.
  4. 시험 때도 짧은 변을 QQ로 맞추고, 여러 QQ로 돌린 결과의 확률을 평균할 수 있습니다.

수식 — 시험 스케일 고르기 (논문 규칙)

Q={{S−32, S, S+32}S 고정일 때{Smin⁡, 0.5(Smin⁡+Smax⁡), Smax⁡}S∈[Smin⁡,Smax⁡] 지터링일 때Q = \begin{cases} \{S - 32,\ S,\ S + 32\} & S \text{ 고정일 때} \\ \{S_{\min},\ 0.5(S_{\min} + S_{\max}),\ S_{\max}\} & S \in [S_{\min}, S_{\max}] \text{ 지터링일 때} \end{cases}
  • SS: 학습 때 짧은 변 길이, QQ: 시험 때 짧은 변 길이
  • Smin⁡=256S_{\min} = 256, Smax⁡=512S_{\max} = 512

숫자로 해 보기 (논문 규칙에 대입)

  • S=256S = 256이면 Q={224,256,288}Q = \{224, 256, 288\}
  • S=384S = 384이면 Q={352,384,416}Q = \{352, 384, 416\}
  • 지터링이면 Q={256, 0.5×(256+512), 512}={256,384,512}Q = \{256,\ 0.5 \times (256 + 512),\ 512\} = \{256, 384, 512\}

잘라낸 224×224가 짧은 변 256 이미지에서는 거의 전체를, 512 이미지에서는 일부(물체의 부분)를 담습니다. 같은 물체를 여러 "확대 배율"로 보게 되는 셈입니다.

왜 이렇게 했나

실제 사진 속 물체는 크기가 제각각입니다. 한 크기로만 학습하면 다른 크기에 약해집니다. 지터링은 데이터를 크기 방향으로 늘리는 증강이라 비용이 거의 없이 다중 스케일 통계를 배우게 합니다.

6. 밀집 평가 — FC층을 합성곱으로 바꾸기

한 문장 직관: 사진을 조각조각 잘라 여러 번 넣는 대신, 망 자체를 "어떤 크기 사진이든 통째로 받는 창틀"로 바꿉니다(해설용 비유).

단계별 설명

  1. 첫 FC층(7×7×512 → 4096)을 7×7 합성곱으로, 나머지 두 FC층을 1×1 합성곱으로 바꿉니다. 가중치는 같은 값을 모양만 바꿔 씁니다.
  2. 이제 망 전체가 합성곱이라 224보다 큰 이미지를 그대로 넣을 수 있습니다.
  3. 출력은 1000채널짜리 클래스 점수 지도가 됩니다(위치마다 점수).
  4. 이를 공간 평균해 1000개 점수 하나로 만들고, 좌우 뒤집은 이미지 결과와 평균합니다.

숫자로 해 보기 (해설용 계산)

짧은 변 384, 정사각형 이미지라 하면 다섯 번 풀링 뒤 384/32=12384 / 32 = 12, 즉 12×12×512 지도가 나옵니다. 7×7 합성곱을 보폭 1로 적용하면 12−7+1=612 - 7 + 1 = 6, 6×6개 위치의 클래스 점수가 나옵니다. 36개 점수를 평균하면 이미지 하나의 점수가 됩니다. 224 이미지라면 224/32=7224/32 = 7 → 7−7+1=17 - 7 + 1 = 1, 원래 FC와 똑같이 한 위치만 나옵니다.

왜 이렇게 했나

여러 조각(multi-crop)을 잘라 넣으면 조각마다 망을 다시 계산해야 해서 비효율적입니다. 밀집 평가는 한 번 계산으로 이미지 전체를 봅니다. 논문은 조각 평가가 약간 더 좋고 둘을 합치면 더 좋다고 보고하면서, 그 이유를 가장자리 처리(조각은 0 패딩, 밀집 평가는 이웃 픽셀이 채움)의 차이로 추정합니다.

7. 처리 흐름

mermaid
flowchart LR
    A["입력 이미지<br/>짧은 변 S로 크기 조정"] --> B["224×224 무작위 자르기<br/>뒤집기 · 색 변화"]
    B --> C["3×3 합성곱 묶음 ×5단계<br/>64→128→256→512→512 채널"]
    C --> D["단계마다 2×2 최대 풀링<br/>224→112→56→28→14→7"]
    D --> E["FC 4096 → FC 4096 → FC 1000"]
    E --> F["소프트맥스<br/>1000개 클래스 확률"]
    F --> G["시험: FC를 합성곱으로 바꿔<br/>여러 Q에서 밀집 평가 후 평균"]

결과

모든 수치는 논문이 보고한 값입니다. 데이터는 ILSVRC-2012(1000개 클래스, 학습 130만 · 검증 5만 · 시험 10만 장)이고, 평가는 top-1 오류(1등 예측이 틀린 비율)와 top-5 오류(정답이 상위 5개 예측 안에 없는 비율)입니다.

단일 스케일 평가 (검증셋, 논문 표 3 요약)

구성학습 Stop-1 (%)top-5 (%)
A25629.610.4
A-LRN25629.710.5
B25628.79.9
C[256; 512]27.38.8
D[256; 512]25.68.1
E[256; 512]25.58.0
  • 깊어질수록 오류가 줄었고, 19층(E)에서 포화했습니다.
  • LRN은 도움이 되지 않았습니다(A 29.6 vs A-LRN 29.7).
  • B의 3×3 두 층 쌍을 5×5 한 층으로 바꾼 얕은 망은 top-1 오류가 B보다 7% 높았습니다. "작은 필터 깊은 망 > 큰 필터 얕은 망"의 직접 증거입니다.
  • 학습 스케일 지터링이 고정 스케일보다 확실히 좋았습니다.

다중 스케일 · 조각 평가 · 앙상블

  • 시험 때 여러 스케일을 쓰면 단일 모델 최고가 검증 top-1/top-5 24.8%/7.5%였고, 시험셋에서 E가 top-5 7.3%를 냈습니다.
  • 조각 평가와 밀집 평가를 합치면 D 24.4%/7.2%, E 24.4%/7.1%였습니다.
  • ILSVRC-2014 제출 당시 7개 망 앙상블은 시험 오류 7.3%였습니다. 제출 뒤 D · E 두 망만 합쳐 밀집 평가 7.0%, 조각 · 밀집 결합 6.8%로 낮췄습니다.
  • 분류 부문 2위였고, 1위 GoogLeNet은 6.7%였습니다. 단일 망 기준으로는 VGG가 7.0%로 단일 GoogLeNet보다 0.9% 앞섰다고 논문은 보고합니다.
  • 위치 찾기 부문에서는 오류 25.3%로 1위를 했습니다.

다른 데이터셋으로 옮기기 (부록 B)

ILSVRC로 학습한 망의 마지막 FC를 떼고, 끝에서 두 번째 층의 4096차원 값을 특징으로 써서 선형 SVM만 새로 학습했습니다(미세조정 없음).

데이터셋지표VGG D & E
VOC-2007mAP89.7
VOC-2012mAP89.3
Caltech-101평균 클래스 재현율92.7 ± 0.5
Caltech-256평균 클래스 재현율86.2 ± 0.3

VOC-2012 행동 분류에서도 이미지만 쓸 때 79.2, 사람 상자까지 쓸 때 84.0 mAP로 최고 수준이었습니다.

구현: Caffe를 고쳐 GPU 4개 데이터 병렬로 학습했고, 단일 GPU 대비 3.75배 빨랐습니다. NVIDIA Titan Black 4개로 망 하나에 구조에 따라 2~3주가 걸렸습니다.

왜 중요한가 · 이후 영향

  • "깊이가 중요하다"를 깔끔하게 증명했습니다. 조건을 고정한 비교라 결론이 설득력 있었고, 이후 ResNet이 "그럼 100층 넘게는?"이라는 질문을 이어받습니다.
  • 3×3 쌓기가 표준이 됐습니다. 이후 대부분의 합성곱 망(ResNet 포함)이 3×3을 기본 블록으로 씁니다.
  • 사전학습 특징 추출기의 대명사가 됐습니다. 공개된 VGG-16/19 가중치는 물체 검출 · 분할 · 캡션 생성 · 질감 인식 등에 널리 쓰였습니다. 논문도 Girshick 외가 AlexNet 대신 16층 모델을 써서 검출 최고 성적을 냈다고 언급합니다.
  • 구조가 단순해 교육용으로도 좋습니다. 같은 패턴의 반복이라 합성곱 망을 처음 배울 때 기준 모델로 자주 쓰입니다.

한계 · 주의할 점

  • 무겁습니다. 파라미터가 1억 3천만~1억 4천만 개이고, 대부분이 FC층에 몰려 있습니다. 후속 ResNet 논문은 VGG-19의 연산량을 196억 FLOPs로 보고합니다.
  • 19층에서 포화했습니다. 논문 스스로 E에서 오류가 포화한다고 썼습니다. 이 방식으로 더 깊게 쌓는 길은 ResNet의 잔차 연결이 나오고서야 열렸습니다.
  • 학습이 까다로웠습니다. 얕은 망의 값을 빌려 초기화해야 했고(이후 더 나은 초기화 방법이 나옴), 배치 정규화도 없던 시절이라 2~3주가 걸렸습니다.
  • 분류 1위는 아니었습니다. 같은 해 GoogLeNet이 더 적은 연산으로 분류 1위를 했습니다. VGG의 강점은 최고 점수보다 단순함과 옮겨 쓰기 쉬움에 있습니다.

이어서 읽을 것

  • 앞: AlexNet(2012) — VGG가 기준으로 삼은 구조 · 학습 방식
  • 앞: 드롭아웃 — VGG도 FC층에 0.5로 사용
  • 뒤: ResNet — VGG 철학(3×3, 채널 두 배)을 이어받아 152층까지
  • 뒤: 배치 정규화 — 깊은 망을 사전 초기화 없이 학습하게 한 방법
  • 뒤: ViT — 합성곱 대신 트랜스포머로 이미지를 보는 방향

용어 정리

용어쉬운 뜻
합성곱 신경망(ConvNet)작은 창(필터)을 이미지 위로 밀며 특징을 뽑는 신경망
필터 · 커널합성곱에서 쓰는 작은 가중치 격자(예: 3×3)
수용 영역(receptive field)한 출력 칸이 입력에서 실제로 보는 넓이
보폭(stride) · 패딩(padding)창을 몇 칸씩 옮기나 · 가장자리에 0을 덧대는 것
최대 풀링(max-pooling)작은 구역에서 가장 큰 값만 남겨 크기를 줄임
완전연결층(FC)모든 입력과 모든 출력이 연결된 층
ReLU음수를 0으로 바꾸는 활성화 함수
LRNAlexNet이 쓴 국소 응답 정규화. VGG 실험에선 효과 없음
스케일 지터링학습 · 시험 때 이미지 크기를 무작위로 바꾸는 증강
밀집 평가(dense evaluation)FC를 합성곱으로 바꿔 이미지 전체에 한 번에 적용
top-1 / top-5 오류1등 예측이 틀린 비율 / 정답이 상위 5개에 없는 비율
앙상블여러 모델의 예측 확률을 평균해 쓰는 것
mAP클래스별 평균 정밀도를 다시 평균한 검출 · 분류 지표

스스로 점검

1. 3×3 합성곱 세 층과 7×7 합성곱 한 층은 무엇이 같고 무엇이 다른가요? 답: 보는 넓이(유효 수용 영역)는 7×7로 같습니다. 다른 점은 ① 3×3 세 층은 ReLU가 세 번 들어가 판단 함수가 더 복잡하고 ② 파라미터가 27C227C^2로 49C249C^2보다 적다는 것입니다.

2. 구성 C(1×1 포함)가 D(3×3만)보다 나빴다는 결과는 무엇을 뜻하나요? 답: 1×1로 비선형을 늘리는 것도 도움은 되지만(C가 B보다 좋음), 주변 픽셀을 함께 보는 3×3처럼 공간 맥락을 잡는 필터가 더 중요하다는 뜻입니다.

3. VGG 특징을 다른 데이터셋에 옮길 때 무엇을 바꾸고 무엇을 그대로 두었나요? 답: 마지막 1000분류 FC층만 떼고, 끝에서 두 번째 층의 4096차원 값을 특징으로 써서 선형 SVM만 새로 학습했습니다. 합성곱 망의 가중치는 미세조정 없이 그대로 두었습니다.

다음에 볼 것

이 글을 이해했다면 이어서 보면 좋은 항목입니다.

출처

AI 원리부터 이해하기 · 딥러닝 기초 모듈

딥러닝 기초 모듈 학습

이 글은 딥러닝 기초 모듈의 학습 자료입니다. 전체 29개 자료 중 18번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

arXiv (논문별 상이)

arXiv 1409.1556