08.2 딥러닝의 초기 역사
딥러닝이 지금처럼 큰 주목을 받게 된 계기는 이미지 인식 기술을 겨루는 장場인 ILSVRCImageNet Large Scale Visual Recognition Challenge의 2012년 대회입니다. 그해의 대회에서 딥러닝에 기초한 기법, 일명 AlexNet이 압도적인 성적으로 우승하면서 그동안의 이미지 인식에 대한 접근법을 뿌리부터 뒤흔들었습니다. 이 2012년 딥러닝의 역습이 전환점이 되어, 그 후로는 대회의 주역은 항상 딥러닝이었습니다. 이번 절에서는 ILSVRC 대회를 축으로 최근의 딥러닝 트렌드를 살펴보겠습니다.
8.2.1 이미지넷
이미지넷ImageNet[25]은 100만 장이 넘는 이미지를 담고 있는 데이터셋입니다. [그림 8-7]과 같이 다양한 종류의 이미지를 포함하며 각 이미지에는 레이블(클래스 이름)이 붙어 있습니다. 매년 열리는 ILSVRC는 이 거대한 데이터셋을 사용하여 자웅을 겨루는 천하제일 이미지 인식 기술 대회인 셈이죠.
그림 8-7 대규모 데이터셋 ImageNet의 데이터들[25]

ILSVRC 대회에는 시험 항목이 몇 가지 있는데, 그중 하나가 분류classification입니다. 분류 부문에서는 $1,000$개의 클래스를 제대로 분류하는지를 겨룹니다. 그럼 최근 ILSVRC의 분류 시험 결과를 살펴보시죠. [그림 8-8]은 2010년부터 최근까지 ILSVRC의 분류 부분 우승팀의 성적입니다. 여기에서는 톱-5 오류top-5 error를 막대 그래프로 나타냈습니다. 톱-5 오류란 확률이 가장 높다고 생각하는 후보 클래스 5개 안에 정답이 포함되지 않은, 즉 5개 모두가 틀린 비율입니다.
그림 8-8 ILSVRC 최우수 팀의 성적 추이 : 세로축은 오류율, 가로축은 연도, 가로축의 괄호 안은 팀 이름(또는 기법 이름)

[그림 8-8]에서 주목할 점은 2012년 이후 선두는 항상 딥러닝 방식이라는 것입니다. 실제로 2012년의 AlexNet이 오류율을 크게 낮췄고, 그 후 딥러닝을 활용한 기법이 꾸준히 정확도를 개선해왔습니다. 특히 2015년에는 150층이 넘는 심층 신경망인 ResNet이 오류율을 $3.5\%$까지 낮췄습니다. 덧붙여서, 이 결과는 일반적인 인간의 인식 능력을 넘어섰다고 합니다.
지니가 ILSVRC의 오류 추이 그래프 단상에 서서, 2012년 AlexNet을 기점으로 인간의 인식 에러 장벽(5%)을 훌쩍 넘어가 버린 딥러닝 돌풍의 역사를 침이 마르도록 해설하고 있어요.
지니의 이미지넷 연대기 해설
- 지니: “도로시, 기계학습 역사에서 2012년 ILSVRC 대회는 신화적인 전환점이야. 그동안 20% 벽에 막혀있던 오류율을 AlexNet이 15.3%로 단숨에 깎아내렸고, 2015년 ResNet은 3.5%까지 줄여서 인간의 평균 오차율마저 추월해 버렸단다!”
- 도로시: “와! 인간보다 이미지를 더 정확하게 보는 인공지능이 탄생한 역사적인 대회구나!”
최근 몇 년 빼어난 성적을 거두고 있는 딥러닝 중에서도 VGG, GoogLeNet, ResNet은 특히 유명하며, 다양한 딥러닝 분야에서 활용됩니다. 이어지는 절들에서는 이들 세 유명 신경망을 간단히 소개해드리겠습니다.
8.2.2 VGG
VGG는 합성곱 계층과 풀링 계층으로 구성되는 ‘기본적’인 CNN입니다. 다만, [그림 8-9]와 같이 비중 있는 층(합성곱 계층, 완전연결 계층)을 모두 16층(혹은 19층)으로 심화한 게 특징입니다(층의 깊이에 따라서 ‘VGG16’과 ‘VGG19’로 구분하기도 합니다).
그림 8-9 VGG[22]

VGG에서 주목할 점은 $3 \times 3$의 작은 필터를 사용한 합성곱 계층을 연속으로 거친다는 것입니다. 그림에서 보듯 합성곱 계층을 2~4회 연속으로 풀링 계층을 두어 크기를 절반으로 줄이는 처리를 반복합니다. 그리고 마지막에는 완전연결 계층을 통과시켜 결과를 출력합니다.
NOTE_ VGG는 2014년 대회에서 2위를 거뒀습니다. 성능 면에서는 1위인 GoogLeNet에 뒤지지만, VGG는 구성이 간단하여 응용하기 좋습니다. 그래서 많은 기술자가 VGG 기반의 신경망을 즐겨 사용합니다.
지니가 복잡한 수치 연산을 날개 돋친 듯 초고속으로 전산 처리하는 가속 병렬 GPU 카드를 탑재하고 있고, 도로시가 학습 시간 단축 효과를 실감해 보고 있어요.
도로시의 하드웨어 가속 깨달음
- 도로시: “심층 신경망에는 매개변수가 수천만 개씩 쓰여서 CPU로는 학습에 며칠씩 걸리는데, 병렬 계산에 특화된 GPU 가속기 덕분에 훨씬 복잡한 모델도 순식간에 학습을 끝마칠 수 있게 된 거네!”
- 지니: “정답이야! 빅 데이터와 강력한 하위 GPU 연산 능력이 결합되어 딥러닝이라는 초거대 신경망 훈련이 가능해진 거란다.”
8.2.3 GoogLeNet
GoogLeNet의 구성은 [그림 8-10]과 같습니다. 그림의 사각형이 합성곱 계층과 풀링 계층 등의 계층을 나타냅니다.
그림 8-10 GoogLeNet[23]

그림을 보면 구성이 매우 복잡해 보이는데, 기본적으로는 지금까지 보아온 CNN과 다르지 않습니다. 단, GoogLeNet은 세로 방향 깊이뿐 아니라 가로 방향도 깊다는 점이 특징입니다.
GoogLeNet에는 가로 방향에 ‘폭’이 있습니다. 이를 인셉션 구조라 하며, 그 기반 구조는 [그림 8-11]과 같습니다.
그림 8-11 GoogLeNet의 인셉션 구조[23]

인셉션 구조는 [그림 8-11]과 같이 크기가 다른 필터(와 풀링)를 여러 개 적용하여 그 결과를 결합합니다. 이 인셉션 구조를 하나의 빌딩 블록(구성요소)으로 사용하는 것이 GoogLeNet의 특징인 것이죠. 또 GoogLeNet에서는 $1 \times 1$ 크기의 필터를 사용한 합성곱 계층을 많은 곳에서 사용합니다. 이 $1 \times 1$의 합성곱 연산은 채널 쪽으로 크기를 줄이는 것으로, 매개변수 제거와 고속 처리에 기여합니다(자세한 것은 원논문[23]을 참고하세요).
8.2.4 ResNet
ResNetResidual Network[24]은 마이크로소프트의 팀이 개발한 네트워크입니다. 그 특징은 지금까지보다 층을 더 깊게 할 수 있는 특별한 ‘장치’에 있습니다.
지금까지 층을 깊게 하는 것이 성능 향상에 중요하다는 건 알고 있었습니다. 그러나 딥러닝의 학습에서는 층이 지나치게 깊으면 학습이 잘 되지 않고, 오히려 성능이 떨어지는 경우도 많습니다. ResNet에서는 그런 문제를 해결하기 위해서 스킵 연결skip connection을 도입합니다. 이 구조가 층의 깊이에 비례해 성능을 향상시킬 수 있게 한 핵심입니다(물론 층을 깊게 하는 데는 여전히 한계가 있습니다).
스킵 연결이란 [그림 8-12]와 같이 입력 데이터를 합성곱 계층을 건너뛰어 출력에 바로 더하는 구조를 말합니다.
그림 8-12 ResNet의 구성요소[24] : ‘weight layer’는 합성곱 계층을 말한다.
[그림 8-12]에서는 입력 $x$를 연속한 두 합성곱 계층을 건너뛰어 출력에 바로 연결합니다. 이 단축 경로가 없었다면 두 합성곱 계층의 출력이 $F(x)$가 되나, 스킵 연결로 인해 $F(x) + x$가 되는 게 핵심입니다. 스킵 연결은 층이 깊어져도 학습을 효율적으로 할 수 있도록 해주는데, 이는 역전파 때 스킵 연결이 신호 감쇄를 막아주기 때문입니다.
NOTE_ 스킵 연결은 입력 데이터를 ‘그대로’ 흘리는 것으로, 역전파 때도 상류의 기울기를 그대로 하류로 보냅니다. 여기에서의 핵심은 상류의 기울기에 아무런 수정도 가하지 않고 ‘그대로’ 흘린다는 것이죠. 그래서 스킵 연결로 기울기가 작아지거나 지나치게 커질 걱정 없이 앞 층에 ‘의미 있는 기울기’가 전해지리라 기대할 수 있습니다. 층을 깊게 할수록 기울기가 작아지는 소실 문제를 이 스킵 연결이 줄여주는 것입니다.
ResNet은 먼저 설명한 VGG 신경망을 기반으로 스킵 연결을 도입하여 층을 깊게 했습니다. 그 결과는 [그림 8-13]처럼 됩니다.
그림 8-13 ResNet[24] : 블록이 $3 \times 3$인 합성곱 계층에 대응. 층을 건너뛰는 스킵 연결이 특징이다.

[그림 8-13]과 같이 ResNet은 합성곱 계층을 2개 층마다 건너뛰면서 층을 깊게 합니다. 실험 결과 150층 이상으로 해도 정확도가 오르는 모습을 확인할 수 있었습니다. 그리고 ILSVRC 대회에서는 톱-5 오류율이 겨우 $3.5\%$라는 경이적인 결과를 냈습니다.
NOTE_ 이미지넷이 제공하는 거대한 데이터셋으로 학습한 가중치 값들은 실제 제품에 활용해도 효과적이고, 또 많이들 그렇게 이용하고 있습니다. 이를 전이 학습transfer learning이라고 해서, 학습된 가중치(혹은 그 일부)를 다른 신경망에 복사한 다음, 그 상태로 재학습을 수행합니다. 예를 들어 VGG와 구성이 같은 신경망을 준비하고, 미리 학습된 가중치를 초깃값으로 설정한 후, 새로운 데이터셋을 대상으로 재학습fine tuning을 수행합니다. 전이 학습은 보유한 데이터셋이 적을 때 특히 유용한 방법입니다.
도로시가 계단형 16층 VGG 구조와 복잡한 가로 폭의 GoogLeNet 인셉션 구조, 그리고 스킵 다리가 촘촘한 ResNet 구조를 테이블 위에 차례로 펼쳐 비교 분석하고 있어요.
도로시의 3대 거장 네트워크 정리
- 도로시: “VGG는 $3 \times 3$ 소형 필터로 표준적이고 심플하게 깊이를 더했고, GoogLeNet은 가로 방향 인셉션 분기와 $1 \times 1$ 필터로 매개변수를 슬림하게 깎았으며, ResNet은 스킵 연결로 무려 152층의 깊이를 실현했어! 각자의 개성이 정말 뚜렷하다!”
- 지니: “훌륭해! 이 3대 표준 아키텍처들은 성능이 이미 완벽히 검증되어서, 실무에서는 이 구조들에 사전 학습된 가중치를 얹어 그대로 재훈련하는 전이 학습(Transfer Learning) 기법으로 널리 사용된단다.”
- 토토: “왈왈! (구조판을 짚으며) 3대 거장 완전 요약이다 멍!”