AlexNet이 만든 전환점
들어가며: AlexNet은 무엇을 바꿨나
2012년 AlexNet의 성과는 이미지 분류 점수의 개선에 그치지 않았다. 사람이 이미지의 특징을 미리 설계하던 방식에서, 분류에 필요한 표현까지 데이터로 학습하는 방식으로 연구의 중심을 옮겼다. 이 전환은 데이터·모델·최적화·하드웨어가 함께 맞아야 가능했다.
1. 사람이 만든 특징은 어디에서 병목이 되었나
전통적인 이미지 분류를 간단히 쓰면 ‘이미지 → 사람이 설계한 특징 추출기 → 학습된 분류기’다. HOG는 작은 영역의 밝기 변화 방향을 모으고, SIFT는 특징적인 지점 주변을 기술하는 방법이다. 이런 기술자는 원본 픽셀을 분류하기 쉬운 숫자 벡터로 바꾼다. 그 뒤 SVM 같은 모델이 특징 공간에서 범주를 나누는 경계를 학습한다.
이 방식이 전부 수작업이었다는 뜻은 아니다. 분류기의 계수나 물체 부분의 관계 등은 학습할 수 있었다. 다만 어떤 정보가 특징에 들어갈지는 상당 부분 사람의 설계가 결정했다. 특징 추출 단계에서 버린 정보는 뒤의 분류기가 되찾기 어렵다.
예를 들어 물결의 경계 방향이 자동차의 윤곽과 비슷한 HOG 벡터를 만든다면, 분류기는 충실하게 계산하고도 물을 자동차로 오인할 수 있다. 이때 분류기의 결정 경계를 조정하는 것만으로는 표현 자체의 혼동을 해결하기 어렵다.

그림에서 봐야 할 것은 위쪽 사진의 잘못된 상자만이 아니다. 아래의 실제 물결 영역과 특징 시각화를 비교하면, 사람이 보기에는 다른 두 대상이 특정 표현 안에서는 비슷해질 수 있음을 알 수 있다. 분류 성능은 분류기의 능력뿐 아니라, 어떤 차이가 입력 표현에 남아 있는지에도 좌우된다.
CNN에서는 ‘이미지 → 학습되는 합성곱 표현 → 분류’ 전체에 같은 최종 손실의 피드백이 전달된다. 정답을 틀렸을 때 마지막 분류기뿐 아니라 앞쪽 필터도 수정된다. 이것이 end-to-end 학습이다. 이미지 전처리나 사람의 구조 설계가 사라진다는 뜻은 아니다.
2. ImageNet은 데이터셋이자 가설을 시험할 조건이었다
학습되는 표현에는 다양한 예시가 필요하다. 사진 몇 장만으로는 같은 고양이가 조명·각도·배경에 따라 얼마나 다르게 보이는지 충분히 배울 수 없다. 그래서 큰 이미지 데이터셋은 단순히 점수를 재는 시험지 이상의 역할을 했다.
여기서 전체 ImageNet과 대회에 사용한 ImageNet-1k를 구별해야 한다. AlexNet의 대표 실험은 대략 120만 장의 훈련 이미지와 1,000개 범주를 사용하는 ILSVRC 분류 과제다. 전체 ImageNet의 범주 수와 이 실험의 출력 수를 섞으면 모델 설명이 틀어진다.
2012년 대회에서 AlexNet 계열의 제출 시스템은 top-5 오류율 15.3%를 기록했고, 두 번째 시스템은 26.2%였다. top-5 오류는 모델이 내놓은 상위 다섯 후보 중 정답이 없었던 비율이다. ‘한 번에 정답을 고른 정확도’인 top-1과 다르다. 또한 15.3%는 여러 모델의 예측을 합친 대회 제출 결과로 기억해야 한다. 단일 네트워크 한 번의 결과와 혼동하지 않는다. AlexNet 논문
숫자를 계산하면 절대 감소는 10.9%포인트, 상대 오류 감소는 약 41.6%다. ‘오류가 절반 가까이 줄었다’는 인상은 맞지만 정확히 50% 감소한 것은 아니다. 이 정도 격차가 같은 대회에서 나왔다는 사실이 기존 접근에 대한 신뢰를 흔들었다.
그렇다고 데이터와 구조 중 하나만 승리의 원인으로 뽑을 수는 없다. 많은 데이터를 제공해도 표현이 그 다양성을 이용하지 못하면 한계가 있고, 표현력이 큰 모델도 데이터가 부족하면 쉽게 과적합한다. 모델이 규모를 성능으로 바꿀 수 있도록 조건을 함께 갖추는 것이 관건이었다.
3. 신경망은 표현할 수 있어도 학습하지 못할 수 있다
모델의 표현력은 어떤 함수를 나타낼 수 있는가의 문제다. 최적화는 실제로 좋은 가중치를 찾을 수 있는가의 문제다. 층을 늘리면 표현 가능한 함수가 풍부해져도, 손실을 줄이는 학습 과정은 더 어려워질 수 있다.
역전파는 합성함수의 미분인 연쇄 법칙을 사용한다. 앞쪽 층의 가중치가 마지막 손실에 미친 영향을 구하려면 중간 층들의 미분을 거슬러 곱한다. 직관을 위해 각 단계의 크기가 0.5라고 단순화하면, 20단계를 지난 값은 약 0.00000095다. 반대로 1.5를 20번 곱하면 약 3,325가 된다. 실제 신경망에서는 스칼라 하나가 아니라 행렬과 활성화 함수의 미분이 관여하지만, 반복 곱이 신호의 크기를 크게 바꿀 수 있다는 원리는 같다.
작아지는 경우가 기울기 소실, 커지는 경우가 기울기 폭발이다. 전자는 앞쪽 가중치가 충분히 갱신되지 않게 하고, 후자는 한 번의 갱신이 지나치게 커져 학습을 불안정하게 한다. 데이터와 GPU를 늘리는 것만으로 이 문제가 자동으로 사라지지는 않는다.
초기화도 중요하다. 같은 층의 뉴런들을 모두 같은 가중치로 시작시키면 대칭적인 뉴런들이 같은 업데이트를 받아 서로 다른 특징을 배우기 어렵다. 무작위 초기화는 대칭을 깨지만, 그 크기가 부적절하면 신호와 기울기를 불안정하게 만들 수 있다. ‘랜덤이면 된다’가 아니라 분산과 층의 구조가 맞아야 한다.
당시에는 층별 비지도 사전학습으로 좋은 출발점을 만든 뒤 전체를 미세조정하는 방법이 유력했다. 책은 James Martens의 Hessian-free 최적화 연구를, 특정 깊은 모델을 사전학습 없이도 훈련할 수 있음을 보여 준 계기로 소개한다. 이 연구가 모든 신경망에서 사전학습의 불필요함을 증명한 것은 아니다. 중요한 변화는 실패 원인을 구조의 본질적 무능력만으로 설명하지 않고, 최적화 방법에서도 찾게 되었다는 점이다.

왼쪽처럼 보폭이 크면 골짜기를 가로질러 진동한다. 오른쪽처럼 보폭을 줄이면 진동은 완화되지만 길게 뻗은 방향으로 가는 속도도 느려진다. 이 그림은 지역 최솟값에 갇힌 상황이 아니라, 방향마다 곡률이 크게 다른 상황이다. ‘학습이 잘 안 된다’를 하나의 원인으로 뭉뚱그리지 말아야 한다.
AlexNet은 Martens의 2차 최적화 방법을 그대로 사용한 모델이 아니다. 실제 훈련은 모멘텀을 사용한 미니배치 SGD였다. 책에서 두 연구를 연결하는 고리는 알고리즘의 동일성이 아니라, 적절한 조건을 만들면 깊은 모델을 처음부터 학습할 수 있다는 관점이다.
4. AlexNet의 구조를 그림에서 다시 읽기
AlexNet은 학습 가능한 층을 기준으로 다섯 개의 합성곱 층과 세 개의 완전연결 층을 갖는다. 약 6천만 개의 파라미터를 사용하며, 합성곱으로 공간적 특징을 뽑은 뒤 마지막 부분에서 1,000개 범주의 점수를 계산한다.

첫째, 왼쪽에서 오른쪽으로 갈수록 특징 맵의 가로·세로 크기는 줄어든다. stride가 큰 합성곱과 풀링이 공간 해상도를 낮추기 때문이다. 반면 채널은 서로 다른 특징을 담을 공간이다. 그림에서 공간 크기와 채널 수를 같은 종류의 ‘크기’로 읽지 않는 것이 중요하다.
둘째, 두 줄로 나뉜 그림은 원래 두 GPU에 모델을 나눈 구현을 반영한다. 독립적으로 완성된 두 분류기의 앙상블을 그린 것이 아니다. 모델을 장치에 나누는 model parallelism과, 여러 완성된 모델의 예측을 합치는 ensemble은 다른 개념이다.
셋째, 224라는 입력 크기와 55라는 첫 특징 맵 크기를 그대로 외워서 모든 구현에 적용하지 않는다. 출력 크기는 커널·stride·padding에 함께 의존한다. 논문의 도식, 널리 쓰이는 227 입력 설명, 후속 라이브러리 구현 사이에는 세부 차이가 있다. 복습할 공식은 각 공간 축에 대한 다음 식이다.
출력 크기 = floor((입력 크기 + 2 × padding − 커널 크기) / stride) + 1
합성곱은 무엇을 배우는가
합성곱 필터는 작은 영역의 입력과 가중치를 곱해 더하는 연산이다. 하나의 필터를 이미지의 여러 위치에서 반복 사용하므로, 같은 패턴을 찾기 위해 위치마다 별도의 가중치를 배울 필요가 없다. RGB 입력에 3×3 필터를 쓰면 출력 채널 하나에 3×3×3개의 가중치와 선택적인 bias가 필요하다. 출력 채널이 64개라면 가중치는 1,728개다.
같은 가중치를 반복 사용하는 weight sharing은 파라미터를 줄이고 공간적 패턴을 재사용하게 한다. 이것은 ‘물체가 어디로 이동해도 출력이 완전히 같다’는 보장은 아니다. 이상적인 stride 1 합성곱은 입력이 이동하면 특징 맵도 함께 이동하는 translation equivariance를 갖는다. 풀링과 증강 등은 작은 이동에 대한 견고함을 돕지만, 임의의 이동·회전에 대한 완전한 불변성을 만들지는 않는다.
초기 층이 경계와 색 대비, 뒤쪽 층이 더 넓은 패턴에 반응한다는 설명은 유용한 직관이다. 그러나 ‘이 뉴런은 반드시 고양이 귀’처럼 고정된 의미가 할당된 것은 아니다. 특징은 학습되고 여러 채널에 분산될 수 있다.
수용 영역과 완전연결 층
수용 영역(receptive field)은 특정 출력 위치에 영향을 줄 수 있는 원본 입력의 범위다. stride 1인 3×3 합성곱을 두 번 쌓으면 이론적 수용 영역은 5×5가 된다. 세 번이면 7×7이다. 작은 필터라도 층을 쌓아 더 넓은 맥락을 볼 수 있고, 중간에 비선형 변환도 추가된다.
마지막 완전연결 층은 특징을 펼친 벡터를 입력으로 받아 범주별 점수(logit)를 계산하고 softmax가 이를 확률 분포로 바꾼다. 펼치기가 위치의 대응 관계를 완전히 지운다는 뜻은 아니다. 각 위치는 벡터의 인덱스로 남지만, 합성곱처럼 지역 구조와 가중치 공유를 명시적으로 이용하지 않게 된다. AlexNet에서는 이 완전연결 부분이 파라미터의 큰 비중을 차지해 과적합 관리가 특히 중요했다.
5. ReLU는 왜 학습을 빠르게 했나
ReLU의 식은 간단하다.
ReLU(z) = max(0, z)
양수에서는 입력을 그대로 통과시키고 음수에서는 0을 출력한다. 양수 영역의 미분은 1이다. sigmoid는 입력 절댓값이 커지면 0이나 1에 가까워지면서 미분이 작아지고, tanh도 양 끝에서 비슷한 포화가 생긴다. ReLU는 양수 영역에서 이런 포화로 기울기가 줄어드는 문제를 피한다.
여기서 ‘미분이 1’인 것은 ReLU 연산의 양수 구간이다. 앞뒤 가중치 행렬까지 포함한 전체 네트워크의 미분이 1이 되는 것은 아니다. 음수 구간에는 기울기가 전달되지 않으므로 죽은 ReLU 문제도 가능하다. ReLU는 깊은 학습을 유리하게 하는 선택이지, 기울기 소실과 폭발을 모두 해결하는 보증서가 아니다.
학습 속도는 단순한 편의가 아니다. 수렴에 걸리는 시간이 짧아지면 같은 연산 예산으로 구조와 하이퍼파라미터를 더 많이 시험할 수 있다. 학습 속도의 개선이 연구 속도의 개선으로 이어진다.
6. Dropout과 데이터 증강은 서로 다른 것을 바꾼다
모델이 훈련 데이터에는 잘 맞지만 새 데이터에 약하면 과적합을 의심한다. AlexNet은 특히 큰 완전연결 층에 dropout을 적용했다. 훈련 중 일부 활성값을 무작위로 0으로 만들어, 특정 특징들의 조합에 지나치게 의존하기 어렵게 한다.

오른쪽의 빠진 노드는 영구 삭제된 것이 아니다. 다음 훈련 계산에서는 다른 마스크가 선택될 수 있다. AlexNet은 첫 두 완전연결 층에서 절반의 활성값을 제거했다. 추론 때는 전체 네트워크를 사용한다.
신호 크기를 맞추는 방법도 기억해 두면 구현이 헷갈리지 않는다. 유지 확률을 q라 하면, 현대 구현의 inverted dropout은 훈련 때 살아남은 활성값에 1/q를 곱한다. 그러면 마스크에 대한 평균 출력이 원래 크기와 같아져 추론 때 별도 조정이 필요 없다. 초기 방식은 이 보정을 추론 때 수행했다. 두 방식의 스케일 보정을 동시에 적용하면 안 된다.
Dropout을 여러 부분 네트워크의 평균처럼 이해할 수는 있지만, 독립적으로 훈련한 모든 네트워크를 정확히 평균 내는 것과 같지는 않다. 파라미터를 공유하는 하나의 모델을 무작위 마스크로 학습한다는 것이 실제 동작이다.
데이터 증강은 모델 내부가 아니라 입력을 바꾼다. 무작위 crop, 좌우 반전, 색 변화는 같은 대상을 여러 조건에서 보게 한다. 훈련 이미지 수를 파일 개수 이상으로 활용하게 하지만, 완전히 새로운 독립 관측을 수집한 것과 같지는 않다. 또 레이블이 유지되는 변환이어야 한다. 고양이의 좌우 반전과 달리 글자나 방향 표지판의 반전은 정답 자체를 바꿀 수 있다.
LRN(local response normalization)도 당시 구성에 포함되었다. 인접 채널의 활성 크기를 고려해 응답을 정규화하는 방법으로, 이후 쓰인 batch normalization과 같은 연산이 아니다. AlexNet의 모든 구성 요소를 오늘날에도 필수인 원리로 외울 필요는 없다. 오래 남은 원리와 당시 유효했던 세부 선택을 구분해야 한다.
7. GPU와 모멘텀은 서로 다른 병목을 풀었다
AlexNet은 3GB 메모리를 가진 GTX 580 두 장을 사용했다. 모델 가중치뿐 아니라 중간 활성값, 기울기, 미니배치의 작업 공간까지 필요했기 때문에 메모리가 제약이었다. 모델의 일부를 각 GPU에 배치하고 필요한 지점에서 정보를 교환했다.
GPU는 대량의 수치 연산을 병렬로 처리한다. 그러나 계산을 빠르게 한다는 사실과 손실 표면에서 좋은 방향을 찾는다는 사실은 구별해야 한다. 전자는 하드웨어와 구현, 후자는 최적화의 문제다. AlexNet에서는 두 조건을 함께 개선했다.
모멘텀 SGD의 한 표현은 다음과 같다. 여기서 g는 현재 미니배치의 기울기, v는 누적된 이동 방향, η는 학습률, μ는 모멘텀 계수다.
vₜ = μvₜ₋₁ − ηgₜ
wₜ₊₁ = wₜ + vₜ
미니배치마다 계산한 기울기에는 잡음이 있다. 모멘텀은 이전 방향을 일부 유지해 지그재그 움직임을 완화하고 일관된 방향의 진행을 돕는다. 학습률을 줄이면 후반에 더 작은 보폭으로 조정할 수 있다. AlexNet은 모멘텀 0.9, 배치 크기 128, 초기 학습률 0.01을 사용했다. 이 숫자는 역사적 구성이지, 다른 문제에도 그대로 맞는 기본 정답은 아니다.
8. 결과를 읽을 때 생기는 두 가지 과장

첫 번째 과장은 ‘좋은 알고리즘 하나가 모든 것을 바꿨다’다. 도표에는 최종 성능만 보이지만 그 뒤에는 데이터 수집, 구조 설계, 최적화, 정규화, GPU 구현이 있다. 연도별 우승 시스템의 평가·앙상블 조건도 동일한 단일 모델 실험과는 다르다. 이 곡선만으로 개별 기술의 기여도를 분리할 수는 없다.
두 번째 과장은 ‘큰 데이터만 있으면 아무 모델이나 비슷해진다’다. AlexNet의 핵심은 출력의 결정 경계뿐 아니라 입력의 표현까지 학습한다는 데 있다. 자원이 늘 때 무엇을 더 배울 수 있는지가 모델마다 다르다. 좋은 데이터와 좋은 학습 구조를 대립시킬 이유가 없다.
이후 더 깊은 CNN들이 성능을 개선했다. 그러나 깊이를 계속 늘리자, 어느 순간 훈련 오류 자체가 높아지는 문제가 나타났다. ReLU와 좋은 초기화만으로 충분하지 않은 지점이었다. 깊이와 표현력을 늘리는 것만큼, 그 모델을 실제로 최적화할 수 있는지가 중요했다.
복습: 장을 덮고 구조를 복원하기
전통적 특징 추출과 CNN의 차이는? 둘 다 학습 요소가 있을 수 있지만, CNN은 최종 과제의 손실로 특징 추출기까지 함께 조정한다.
데이터가 많으면 왜 항상 해결되지 않는가? 모델이 데이터를 이용할 표현력과 학습 가능성을 갖춰야 한다. 반대로 큰 모델만 있고 데이터가 부족하면 일반화가 나빠질 수 있다.
ReLU·dropout·데이터 증강·GPU의 역할을 구별하면? ReLU는 활성화와 학습 동역학, dropout은 내부 표현의 과도한 의존, 증강은 입력 변화에 대한 학습, GPU는 계산량과 실험 시간의 문제에 대응한다.
15.3%는 무엇의 비율인가? ILSVRC 2012 제출 시스템의 top-5 오류율이다. 단일 모델의 top-1 오류율이 아니다.
층을 더 쌓기만 하면 성능이 좋아지는가? 표현을 더 깊게 쌓을 수 있다는 것과 그것을 실제로 잘 학습할 수 있다는 것은 다르다. 더 깊은 모델이 훈련 데이터조차 못 맞히는 이유를 물어야 한다.