CNN · RNN ·
생성모델
왜 이미지에는 CNN이고 시퀀스에는 RNN인가. 구조는 데이터의 모양을 따른다 — 그 한 문장을 고양이의 시각 피질에서 GAN의 위조 경쟁까지 세 번 반복한다.
고양이의 뇌에서 발견한 설계도
두 신경과학자가 고양이의 시각 피질에 전극을 꽂고 화면에 막대를 비추고 있었다. 우연히 슬라이드를 갈아 끼우다 발견한 사실 — 특정 뉴런은 특정 각도의 선분에만, 특정 위치에서만 반응했다. 단순한 세포들이 층층이 조합되어 복잡한 인식을 만드는 구조. 허벨과 위젤은 이 발견으로 노벨상을 받는다.
18년 뒤 후쿠시마가 그 구조를 신경망으로 옮겼고(네오코그니트론, 1980), 다시 18년 뒤 얀 르쿤이 역전파로 학습시켰다(LeNet-5, 1998). 미국 수표의 손글씨 숫자를 읽는 이 신경망이, 오늘날 모든 영상 인식의 조상이다.
이 장의 주인공은 특정 모델이 아니라 설계 원리다 — 데이터의 모양(공간·시간·분포)에 맞춰 연결을 설계하면, 완전연결보다 적은 파라미터로 더 잘 배운다.
출처 Hubel & Wiesel, "Receptive fields, binocular interaction and functional architecture in the cat's visual cortex", J. Physiol. 160, 1962: ncbi.nlm.nih.gov
눈에서 배운 구조 — CNN의 계보
CNN의 힘은 새 연산이 아니라 연결의 절제에서 나온다 — 전부 연결하지 않고, 이웃만 본다.
특징 추출 + 분류 — 두 부분의 결합
CNN은 컨벌루션·풀링을 반복하는 특징 추출부와, 그 특징으로 판정하는 완전연결 분류부로 이루어진다. 앞부분이 "무엇이 보이는가"를, 뒷부분이 "그래서 무엇인가"를 맡는다.
답은 "이미지라는 데이터의 성질을 구조에 새겨 넣었기 때문"이다. ① 이미지에서 의미 있는 패턴(에지, 모서리)은 국소적이다 — 그러니 이웃만 보면 된다(부분 연결). ② 같은 패턴은 어디서든 같은 패턴이다 — 그러니 같은 커널을 모든 위치에 재사용하면 된다(가중치 공유). 이 두 가정이 맞는 데이터에서 CNN은 완전연결망을 압도하고, 가정이 맞지 않는 데이터(예: 열 순서가 의미 없는 표 데이터)에서는 이점이 사라진다. "구조는 데이터의 가정이다"라는 관점은 뒤의 RNN·트랜스포머에도 똑같이 적용된다.
생각해 볼 질문 — 허벨·위젤의 단순 세포/복합 세포는 CNN의 어느 구성 요소에 각각 대응하는가?
출처 Fukushima, "Neocognitron", Biological Cybernetics 36, 1980: springer.com · LeCun 외, "Gradient-Based Learning Applied to Document Recognition", Proc. IEEE, 1998: ieeexplore.ieee.org
컨벌루션 — 이웃에 가중치를 곱해 더한다
필터를 미리 설계하던 시대는 끝났다 — CNN은 어떤 필터가 유용한지를 데이터에서 스스로 배운다.
커널이 미끄러지며 만드는 특성맵
컨벌루션은 주변 화소값들에 가중치(커널)를 곱해 더한 값을 새 화소로 삼는 연산이다. 커널이 한 칸씩 미끄러지며 만든 출력이 특성맵(feature map)이다.
필터를 갈아 끼우며 특성맵 보기
한 줄 목표: "필터가 곧 특징 검출기"라는 말을 눈으로 확인한다. 왼쪽 원본에 3×3 필터를 적용한 결과가 오른쪽이다.
조작: 라플라시안 → 소벨 세로 → 소벨 가로 순서로 바꿔 보자. 관찰 포인트: 라플라시안은 모든 윤곽을, 소벨 세로는 세로 방향 경계만, 가로는 가로 경계만 남긴다 — 필터마다 "찾는 것"이 다르다는 것이 보이면 성공이다. CNN은 이런 필터 128개, 256개를 데이터에서 스스로 학습한다.
영상처리 교과서의 오랜 기술이 이것이었다 — 전문가가 라플라시안 같은 필터를 미리 설계해 특징을 뽑았다. CNN의 전환은 필터의 값을 학습 파라미터로 만든 것이다. 어떤 필터가 만들어질지는 우리도 모른다. 학습이 끝난 CNN을 열어 보면 첫 층에는 에지·색 대비 필터가, 깊은 층에는 눈·바퀴 같은 부품 검출기가 자라 있곤 한다 — 허벨·위젤의 단순→복합 세포 계층이 데이터에서 저절로 재현되는 셈이다. 실습 노트북(CNN실습)의 특성맵 시각화에서 직접 열어 본다.
생각해 볼 질문 — 3×3 커널 두 층을 겹치면 한 화소가 "보는" 범위(수용 영역)는 몇×몇이 되는가? 5×5 한 층과 비교하면 파라미터는?
특성맵 크기와 풀링
기말고사가 사랑하는 공식 하나 — 출력 크기 = floor((N − K + 2P) / S) + 1. 유도하면 외울 필요가 없다.
입력 · 커널 · 스트라이드 · 패딩 → 출력
커널이 미끄러질 수 있는 횟수를 세면 공식이 나온다. 시작 위치 1곳 + 남은 (N−K+2P)칸을 S칸씩 이동 — 그래서 나누고 버림한 뒤 1을 더한다.
예1: N=5, K=3, S=1, P=0 → ⌊2/1⌋+1 = 3 예2: 패딩 P=1 추가 → ⌊4/1⌋+1 = 5 (입력 크기 유지)
기출: N=32, K=4, S=2, P=2 → ⌊32/2⌋+1 = 17 → 평균풀링 2×2, S=2 → ⌊15/2⌋+1 = 8
특성맵 크기 계산기 — 컨벌루션 + 풀링 연쇄
한 줄 목표: 공식에 값을 넣는 손을 만든다. 기말 기출(32×32 → conv → pool)이 프리셋으로 들어 있다.
조작: 기본값이 기말 기출 설정이다 — 계산 과정이 32→17→8로 나오는지 확인하자. 이어서 P를 0으로, S를 1로 바꿔 보자. 관찰 포인트: 패딩은 크기를 지키는 장치, 스트라이드는 크기를 줄이는 장치라는 역할 분담, 그리고 (N−K+2P)가 S로 나누어떨어지지 않을 때 버림(floor)이 작동하는 순간이 보이면 성공이다.
다채널·다커널로 확장해도 공식은 그대로다. 입력이 RGB 3채널이면 커널도 3×3×3으로 두꺼워져 결과는 여전히 한 장의 특성맵이고, 커널을 128개 두면 특성맵이 128장 나온다 — 출력의 "가로세로"는 공식이, "장수"는 커널 개수가 정한다. 시험 계산에서 채널 수를 가로세로 크기에 섞는 실수가 흔하니 구분해 둘 것.
생각해 볼 질문 — 어떤 N, K, S 조합에서 커널이 입력의 오른쪽 끝을 정확히 못 밟고 남는 픽셀이 생기는가? floor가 그 픽셀들을 어떻게 처리하는가?
줄이는 것이 왜 도움이 되는가
풀링(서브샘플링)은 구역별로 대표값(최대 또는 평균)만 남겨 입력의 크기를 줄인다. 잃는 것은 정밀한 위치, 얻는 것은 세 가지다.
- 계산이 빨라진다 — 다음 층이 처리할 데이터가 4분의 1로 준다.
- 과적합이 줄어든다 — 매개변수와 표현의 자유도가 함께 줄어든다.
- 이동에 둔감해진다 — 물체가 조금 움직여도 결과가 유지된다.
풀링의 "위치를 잊는" 성질은 분류에는 미덕이지만, 위치 자체가 답인 과제, 즉 물체가 어디 있는지 찾는 검출이나 픽셀별로 분류하는 분할에는 손실이다. 그런 과제의 신경망들이 풀링을 줄이거나 건너뛰기 연결로 위치 정보를 되살리는 이유다. 최근 분류 모델 중에도 풀링 대신 스트라이드 컨벌루션으로 크기를 줄이는 설계가 많다 — "축소"와 "요약"을 한 연산이 겸하는 것이다.
생각해 볼 질문 — 최대 풀링과 평균 풀링은 각각 어떤 특징을 살리고 죽이는가? 밝은 점 하나가 중요한 과제라면?
RNN과 LSTM — 시간을 거슬러 배우기
순환 구조는 기억을 만들지만, 긴 기억은 만들지 못했다 — M5의 기울기 소실이 시간축에서 재발한다.
순환 — 이전 정보가 쌓이는 구조
순환신경망(RNN)은 출력의 일부를 다음 시각의 자기 입력으로 되돌린다. 현재 입력에 이전 정보가 쌓이며 갱신되므로, 순서가 있는 데이터(문장, 음성, 시계열)에 맞는 구조다.
학습은 이 펼친 그래프 위의 역전파, 즉 BPTT(BackPropagation Through Time)다. 시계열이 길수록 그래프가 길어져 계산 자원이 비례해 늘고 기울기도 불안정해지므로, 실무에서는 적당한 길이로 끊어 역전파하는 Truncated-BPTT를 쓴다 — "어디서 끊는가"가 배울 수 있는 의존 거리의 상한이 된다.
생각해 볼 질문 — "나는 프랑스에서 자랐다. … 그래서 ___어를 유창하게 한다"의 빈칸을 맞히려면 몇 시각 전의 정보가 필요한가? 이 문장이 다음 카드의 예고다.
장기 의존 — 소실과 폭발의 시간축 재발
시간을 거슬러 역전파하면 층을 거슬러 갈 때와 같은 일이 생긴다 — 기울기가 시각마다 조금씩 줄어 0으로 소멸하거나, 반대로 커져 폭발한다.
M5의 기울기 소실 계산기를 떠올리면 원리가 같다 — 층 수 자리에 시각 수가 들어갈 뿐이다. 문장 30단어면 30층 신경망을 통과하는 셈이니, 먼 과거의 정보는 학습 신호가 거의 닿지 않는다(장기 의존 문제). LSTM 게이트가 이 문제를 크게 완화했지만 근본적으로 순차 처리라는 제약(병렬화 불가)이 남았고, 그 제약을 "순서를 위치 임베딩으로 바꾸고 전부 병렬로 보자"로 돌파한 것이 2장의 트랜스포머다 — RNN의 한계를 알아야 트랜스포머가 왜 그렇게 생겼는지 보인다.
생각해 볼 질문 — 클리핑은 폭발에는 통하는데 소실에는 왜 못 쓰는가? ("작으면 키우면 되지 않나?"가 왜 안 되는지 생각해 보자)
오토인코더와 GAN — p(x)를 배우는 신경망
분류는 p(y|x)를, 생성은 p(x) 자체를 배운다 — 그리고 무작위 노이즈가 "매번 다른 출력"의 원천이다.
판별과 생성 — 무엇을 배우는가가 다르다
생성모델은 훈련 데이터의 규칙성·패턴을 학습해, 그 확률분포와 유사하되 새로운 샘플을 만들어 내는 신경망이다. 레이블에는 관심이 없다.
생성모델이 사실적인 몬드리안풍 그림을 만들 수 있다면, 그 스타일을 지배하는 일반 규칙을 학습했다고 봐야 한다. 중요한 설계 요소 하나 — 고정된 계산(예: 픽셀 평균)은 매번 같은 출력만 내므로, 출력에 영향을 주는 무작위 요소(랜덤 노이즈)가 반드시 입력에 포함된다. 학습이 끝난 뒤 노이즈가 잠재공간의 "주소" 역할을 한다.
이 구분은 2장의 계보와 이렇게 이어진다 — 오토인코더·GAN·확산 모델은 모두 p(x)를 배우는 서로 다른 전략이고, LLM도 "다음 토큰의 조건부 분포"를 배운다는 점에서 텍스트의 생성모델이다. M2에서 "얼굴의 목록이 아니라 얼굴다움의 분포를 배웠다"고 했던 문장의 수식 버전이 p(x)다.
생각해 볼 질문 — 같은 데이터로 판별 모델과 생성 모델을 다 만들 수 있다. 스팸 메일 데이터라면 각각 무엇을 할 수 있게 되는가?
오토인코더 — 자신을 복원하는 훈련
오토인코더는 입력과 동일한 출력을 만드는 것이 목표인 신경망이다. 가운데 좁은 병목(잠재공간)을 통과해야 하므로, 복원을 잘하려면 데이터의 본질을 압축해 담는 법을 배워야 한다.
- 쓰임새: 특징 학습, 차원 축소, 표현 학습 — "정답 없이" 데이터만으로 배우는 비지도 학습이다.
- 노이즈 제거: 입력에 잡음을 섞고 깨끗한 원본을 복원하게 훈련하면, 잡음 제거기가 된다 — 본질만 남기는 압축의 부수 효과.
- 생성: 학습 후 잠재공간의 임의 좌표를 디코더에 넣으면 새로운 샘플이 나온다 — 1장(M2)의 인코더·디코더 그림이 바로 이 구조였다.
초기 오토인코더 생성물이 흐릿했던 이유(M2에서 언급)는 손실 함수가 픽셀 평균 오차였기 때문이다 — 여러 그럴듯한 답의 "평균"은 흐릿한 이미지다. 이 흐릿함을 공격한 두 노선이 "진짜 같은지"를 다른 신경망이 심판하게 한 GAN과, 복원을 잘게 나눠 반복한 확산 모델이다. 다음 카드가 전자다.
생각해 볼 질문 — 병목을 아주 넓게 (입력 차원과 같게) 만들면 오토인코더는 무엇을 배우게 되는가? 왜 그것이 쓸모없는가?
GAN — 위조범과 감정사의 군비 경쟁
생성자는 가짜를 만들고, 판별자는 진짜와 가짜를 가려낸다. 두 신경망이 적대적으로 경쟁하며 번갈아 훈련되는 동안, 위조의 품질이 판별 불가능 수준까지 올라간다.
고해상도의 어려움, 데이터 의존성, 자원 소모까지 합치면 GAN의 한계는 다섯 갈래다. 이 한계들이 확산 모델로의 세대교체(M2의 계보)를 부른 실질적 이유였다 — 확산은 훈련이 안정적이고 다양성이 유지되는 대신 생성이 느리다. 한편 "두 모델의 적대적 경쟁"이라는 GAN의 발상 자체는 살아남아, 위조 탐지·강건성 훈련·평가자 모델 등 다른 자리에서 계속 쓰인다.
생각해 볼 질문 — 모드 붕괴를 학생-채점자 관계에 비유하면 어떤 상황인가? 채점 기준(판별자)을 어떻게 바꿔야 막을 수 있는가?
출처 Goodfellow 외, "Generative Adversarial Networks", NeurIPS 27, 2014: arxiv.org
같은 데이터, 세 구조 — 실습 예고
실습 노트북(CNN실습)은 CIFAR-10 이미지 분류에 MLP·CNN·트랜스포머(ViT) 세 구조를 나란히 붙여, 파라미터 수·정확도·추론 시간을 직접 비교한다.
CNN 블록의 최소 형태 (PyTorch)
이 장에서 배운 요소가 코드에서 어디에 있는지 짚는 것이 목적이다. 전체 학습·시각화는 실습 노트북에서.
관찰 포인트: Conv2d(3, 32, …)의 3과 32가 각각 무엇의 개수인지(입력 채널/커널 수) 말할 수 있고, 주석의 크기 계산(32→32→16)을 실습 2의 계산기로 재현할 수 있으면 성공이다.
이 자료가 바로잡은 세 가지
구조들의 나열이 아니라 하나의 원리 — 데이터의 성질을 연결에 새긴다.
기억해 둘 세 문장
- CNN이 강한 것은 연결이 많아서가 아니라 적어서다. "패턴은 국소적이고, 어디서든 같다"는 이미지의 성질을 부분 연결과 커널 재사용으로 새긴 결과다.
- RNN의 실패는 M5의 산수가 시간축에서 재발한 것이다. 시각 수 = 층 수. 그래서 처방도 같은 곳(게이트, 그리고 결국 트랜스포머)에서 나왔다.
- 생성모델의 "창의성"은 랜덤 노이즈 + 배운 분포다. p(x)를 배운 모델에서 노이즈가 잠재공간의 주소가 된다 — LLM의 온도 샘플링(M2)과 같은 원리의 이미지 버전.
지금까지의 모델은 전부 "많은 데이터"를 전제했다. 다음 장 거리 기반 학습과 퓨샷은 그 반대의 상황, 즉 데이터가 적거나 레이블이 없을 때를 다룬다. kNN의 "가까운 것이 답이다" 한 문장이 K-means를 지나 Prototypical Networks까지 이어진다. 기말의 "시나리오 → 알고리즘 식별" 3문항이 그 사정거리다.
참고문헌
공개 원문 우선. 링크는 2026년 8월 확인 기준.
1차 문헌
- Hubel, D. H., & Wiesel, T. N. (1962). Receptive Fields, Binocular Interaction and Functional Architecture in the Cat's Visual Cortex. Journal of Physiology, 160, 106–154. ncbi.nlm.nih.gov
- Fukushima, K. (1980). Neocognitron: A Self-organizing Neural Network Model for a Mechanism of Pattern Recognition Unaffected by Shift in Position. Biological Cybernetics, 36, 193–202. springer.com
- LeCun, Y., et al. (1998). Gradient-Based Learning Applied to Document Recognition (LeNet-5). Proceedings of the IEEE, 86(11). ieeexplore.ieee.org
- Hochreiter, S., & Schmidhuber, J. (1997). Long Short-Term Memory. Neural Computation, 9(8), 1735–1780. ieeexplore.ieee.org
- Goodfellow, I., et al. (2014). Generative Adversarial Networks. NeurIPS 27. arxiv.org
교재 · 보조 자료
- 천인국 (2023). 인공지능: 파이썬으로 배우는 머신러닝과 딥러닝 (2판). 인피니티북스. — 11·12주차 강의 교재.
- 실습 노트북. CNN실습 — CIFAR-10에서 MLP·CNN·ViT 비교와 특성맵·어텐션 시각화. 강의 홈에서 배포.
그림 2·3의 수치 예와 특성맵 공식 예제는 본문 공식으로 직접 계산해 검산했다. 허벨·위젤의 "우연한 발견" 일화는 널리 알려진 회고에 근거한 것으로, 실험 결과 자체는 1962년 논문 기준이다.