GBT
한국외국어대학교기술경영학부
CNN · RNN · 생성모델 · 강의자료
인공지능 · 딥러닝의 구조들

CNN · RNN ·
생성모델

왜 이미지에는 CNN이고 시퀀스에는 RNN인가. 구조는 데이터의 모양을 따른다 — 그 한 문장을 고양이의 시각 피질에서 GAN의 위조 경쟁까지 세 번 반복한다.

1962 → 20145개 장해설 · 실습 포함원문 출처 링크
1962년, 하버드

고양이의 뇌에서 발견한 설계도

두 신경과학자가 고양이의 시각 피질에 전극을 꽂고 화면에 막대를 비추고 있었다. 우연히 슬라이드를 갈아 끼우다 발견한 사실 — 특정 뉴런은 특정 각도의 선분에만, 특정 위치에서만 반응했다. 단순한 세포들이 층층이 조합되어 복잡한 인식을 만드는 구조. 허벨과 위젤은 이 발견으로 노벨상을 받는다.

18년 뒤 후쿠시마가 그 구조를 신경망으로 옮겼고(네오코그니트론, 1980), 다시 18년 뒤 얀 르쿤이 역전파로 학습시켰다(LeNet-5, 1998). 미국 수표의 손글씨 숫자를 읽는 이 신경망이, 오늘날 모든 영상 인식의 조상이다.

이 장의 주인공은 특정 모델이 아니라 설계 원리다 — 데이터의 모양(공간·시간·분포)에 맞춰 연결을 설계하면, 완전연결보다 적은 파라미터로 더 잘 배운다.

공간 — CNN이웃 픽셀만 보는 부분 연결과 커널 재사용. 특성맵 크기 공식까지.
시간 — RNN같은 가중치를 시간축으로 재사용. 길어지면 소실·폭발 — M5의 병이 재발한다.
분포 — 생성모델p(y|x)가 아니라 p(x)를 배운다. 오토인코더의 복원과 GAN의 경쟁.

출처 Hubel & Wiesel, "Receptive fields, binocular interaction and functional architecture in the cat's visual cortex", J. Physiol. 160, 1962: ncbi.nlm.nih.gov

01
1962 — 1998

눈에서 배운 구조 — CNN의 계보

CNN의 힘은 새 연산이 아니라 연결의 절제에서 나온다 — 전부 연결하지 않고, 이웃만 본다.

전체 구조

특징 추출 + 분류 — 두 부분의 결합

CNN은 컨벌루션·풀링을 반복하는 특징 추출부와, 그 특징으로 판정하는 완전연결 분류부로 이루어진다. 앞부분이 "무엇이 보이는가"를, 뒷부분이 "그래서 무엇인가"를 맡는다.

입력 이미지가 컨벌루션과 풀링을 반복하는 특징 추출부를 지나 완전연결 분류부로 이어지는 CNN 전체 구조도
그림 1. 뒤쪽 완전연결층은 4~5장에서 배운 MLP 그대로다 — 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

02
연산

컨벌루션 — 이웃에 가중치를 곱해 더한다

필터를 미리 설계하던 시대는 끝났다 — CNN은 어떤 필터가 유용한지를 데이터에서 스스로 배운다.

연산의 정의

커널이 미끄러지며 만드는 특성맵

컨벌루션은 주변 화소값들에 가중치(커널)를 곱해 더한 값을 새 화소로 삼는 연산이다. 커널이 한 칸씩 미끄러지며 만든 출력이 특성맵(feature map)이다.

5×5 입력에 3×3 커널을 원소별로 곱해 더한 값이 3×3 특성맵의 한 칸이 되는 컨벌루션 연산 예시
그림 2. 손으로 확인할 것 — 음영 구역과 커널을 원소별로 곱해 더하면 4가 나오고, 그것이 특성맵의 첫 칸이다. 커널을 오른쪽으로 한 칸 밀면 둘째 칸. 이 단순 반복이 연산의 전부이며, 시험의 "특성맵 값을 채우시오" 유형도 이 계산 그대로다. 실제로는 여기에 바이어스를 더하고 ReLU를 통과시킨 것(ReLU(WX+b))이 다음 층에 저장된다.
커널 (kernel)3×3 또는 5×5가 일반적. 커널의 원소가 곧 학습되는 가중치다.
스트라이드 (stride)커널이 한 번에 이동하는 칸 수. 2면 하나씩 건너뛰며 적용되어 출력이 절반 크기가 된다.
패딩 (padding)가장자리를 0으로 둘러 출력 크기를 보존하고, 모서리 정보의 손실을 막는다.
직접 해보기 1 · 조작

필터를 갈아 끼우며 특성맵 보기

한 줄 목표: "필터가 곧 특징 검출기"라는 말을 눈으로 확인한다. 왼쪽 원본에 3×3 필터를 적용한 결과가 오른쪽이다.

조작: 라플라시안 → 소벨 세로 → 소벨 가로 순서로 바꿔 보자. 관찰 포인트: 라플라시안은 모든 윤곽을, 소벨 세로는 세로 방향 경계만, 가로는 가로 경계만 남긴다 — 필터마다 "찾는 것"이 다르다는 것이 보이면 성공이다. CNN은 이런 필터 128개, 256개를 데이터에서 스스로 학습한다.

더 읽기

영상처리 교과서의 오랜 기술이 이것이었다 — 전문가가 라플라시안 같은 필터를 미리 설계해 특징을 뽑았다. CNN의 전환은 필터의 값을 학습 파라미터로 만든 것이다. 어떤 필터가 만들어질지는 우리도 모른다. 학습이 끝난 CNN을 열어 보면 첫 층에는 에지·색 대비 필터가, 깊은 층에는 눈·바퀴 같은 부품 검출기가 자라 있곤 한다 — 허벨·위젤의 단순→복합 세포 계층이 데이터에서 저절로 재현되는 셈이다. 실습 노트북(CNN실습)의 특성맵 시각화에서 직접 열어 본다.

생각해 볼 질문 — 3×3 커널 두 층을 겹치면 한 화소가 "보는" 범위(수용 영역)는 몇×몇이 되는가? 5×5 한 층과 비교하면 파라미터는?

03
공식

특성맵 크기와 풀링

기말고사가 사랑하는 공식 하나 — 출력 크기 = floor((N − K + 2P) / S) + 1. 유도하면 외울 필요가 없다.

크기 공식 · 계산 실습

입력 · 커널 · 스트라이드 · 패딩 → 출력

커널이 미끄러질 수 있는 횟수를 세면 공식이 나온다. 시작 위치 1곳 + 남은 (N−K+2P)칸을 S칸씩 이동 — 그래서 나누고 버림한 뒤 1을 더한다.

출력 크기 O = ⌊ (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
직접 해보기 2 · 계산기

특성맵 크기 계산기 — 컨벌루션 + 풀링 연쇄

한 줄 목표: 공식에 값을 넣는 손을 만든다. 기말 기출(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×4 입력을 2×2 구역으로 나눠 구역별 최댓값만 남기는 최대 풀링 예시
그림 3. 색깔 구역마다 최댓값 하나만 살아남는다. 5가 구역 안 어디에 있었는지는 잊힌다 — 이 망각이 의도된 설계다: 특징이 한두 픽셀 이동해도 출력이 같아지므로, 물체의 위치 이동에 둔감한(이동 불변) 인식이 된다.
  • 계산이 빨라진다 — 다음 층이 처리할 데이터가 4분의 1로 준다.
  • 과적합이 줄어든다 — 매개변수와 표현의 자유도가 함께 줄어든다.
  • 이동에 둔감해진다 — 물체가 조금 움직여도 결과가 유지된다.
더 읽기

풀링의 "위치를 잊는" 성질은 분류에는 미덕이지만, 위치 자체가 답인 과제, 즉 물체가 어디 있는지 찾는 검출이나 픽셀별로 분류하는 분할에는 손실이다. 그런 과제의 신경망들이 풀링을 줄이거나 건너뛰기 연결로 위치 정보를 되살리는 이유다. 최근 분류 모델 중에도 풀링 대신 스트라이드 컨벌루션으로 크기를 줄이는 설계가 많다 — "축소"와 "요약"을 한 연산이 겸하는 것이다.

생각해 볼 질문 — 최대 풀링과 평균 풀링은 각각 어떤 특징을 살리고 죽이는가? 밝은 점 하나가 중요한 과제라면?

04
시퀀스

RNN과 LSTM — 시간을 거슬러 배우기

순환 구조는 기억을 만들지만, 긴 기억은 만들지 못했다 — M5의 기울기 소실이 시간축에서 재발한다.

구조

순환 — 이전 정보가 쌓이는 구조

순환신경망(RNN)은 출력의 일부를 다음 시각의 자기 입력으로 되돌린다. 현재 입력에 이전 정보가 쌓이며 갱신되므로, 순서가 있는 데이터(문장, 음성, 시계열)에 맞는 구조다.

RNN의 순환 구조와 이를 시간축으로 펼친 그림. 같은 가중치가 매 시각 재사용된다
그림 4. 오른쪽 펼친 그림의 상자 셋은 서로 다른 신경망이 아니라 같은 가중치의 재사용이다 — CNN이 커널을 공간에 재사용했다면 RNN은 시간에 재사용한다. 각 시각마다 행렬곱의 합을 tanh로 변환해 위(출력)와 옆(다음 시각)으로 동시에 내보낸다. 입력 길이에 제한이 없어 언어 모델링·기계 번역·음성 인식·이미지 캡션에 두루 쓰였다.
더 읽기

학습은 이 펼친 그래프 위의 역전파, 즉 BPTT(BackPropagation Through Time)다. 시계열이 길수록 그래프가 길어져 계산 자원이 비례해 늘고 기울기도 불안정해지므로, 실무에서는 적당한 길이로 끊어 역전파하는 Truncated-BPTT를 쓴다 — "어디서 끊는가"가 배울 수 있는 의존 거리의 상한이 된다.

생각해 볼 질문 — "나는 프랑스에서 자랐다. … 그래서 ___어를 유창하게 한다"의 빈칸을 맞히려면 몇 시각 전의 정보가 필요한가? 이 문장이 다음 카드의 예고다.

한계와 처방

장기 의존 — 소실과 폭발의 시간축 재발

시간을 거슬러 역전파하면 층을 거슬러 갈 때와 같은 일이 생긴다 — 기울기가 시각마다 조금씩 줄어 0으로 소멸하거나, 반대로 커져 폭발한다.

기울기 폭발 → 클리핑기울기가 임계값을 넘으면 잘라서 줄인다. 오버플로로 NaN이 나기 전에 제동을 거는 실용적 처방.
기울기 소실 → 게이트 (LSTM)무엇을 기억하고 잊을지 조절하는 게이트를 셀에 추가한다. 기억이 곱셈의 연쇄를 우회하는 통로를 얻는다.
더 읽기

M5의 기울기 소실 계산기를 떠올리면 원리가 같다 — 층 수 자리에 시각 수가 들어갈 뿐이다. 문장 30단어면 30층 신경망을 통과하는 셈이니, 먼 과거의 정보는 학습 신호가 거의 닿지 않는다(장기 의존 문제). LSTM 게이트가 이 문제를 크게 완화했지만 근본적으로 순차 처리라는 제약(병렬화 불가)이 남았고, 그 제약을 "순서를 위치 임베딩으로 바꾸고 전부 병렬로 보자"로 돌파한 것이 2장의 트랜스포머다 — RNN의 한계를 알아야 트랜스포머가 왜 그렇게 생겼는지 보인다.

생각해 볼 질문 — 클리핑은 폭발에는 통하는데 소실에는 왜 못 쓰는가? ("작으면 키우면 되지 않나?"가 왜 안 되는지 생각해 보자)

05
생성

오토인코더와 GAN — p(x)를 배우는 신경망

분류는 p(y|x)를, 생성은 p(x) 자체를 배운다 — 그리고 무작위 노이즈가 "매번 다른 출력"의 원천이다.

관점 전환

판별과 생성 — 무엇을 배우는가가 다르다

생성모델은 훈련 데이터의 규칙성·패턴을 학습해, 그 확률분포와 유사하되 새로운 샘플을 만들어 내는 신경망이다. 레이블에는 관심이 없다.

판별 모델 — p(y|x)"이 그림(x)이 주어졌을 때 몬드리안 작품일 확률(y)은?" 경계를 배운다. 4~6장의 분류가 전부 여기다.
생성 모델 — p(x)"몬드리안스러운 그림이란 어떤 분포인가?" 분포 자체를 배워, 거기서 새 샘플을 뽑는다.

생성모델이 사실적인 몬드리안풍 그림을 만들 수 있다면, 그 스타일을 지배하는 일반 규칙을 학습했다고 봐야 한다. 중요한 설계 요소 하나 — 고정된 계산(예: 픽셀 평균)은 매번 같은 출력만 내므로, 출력에 영향을 주는 무작위 요소(랜덤 노이즈)가 반드시 입력에 포함된다. 학습이 끝난 뒤 노이즈가 잠재공간의 "주소" 역할을 한다.

더 읽기

이 구분은 2장의 계보와 이렇게 이어진다 — 오토인코더·GAN·확산 모델은 모두 p(x)를 배우는 서로 다른 전략이고, LLM도 "다음 토큰의 조건부 분포"를 배운다는 점에서 텍스트의 생성모델이다. M2에서 "얼굴의 목록이 아니라 얼굴다움의 분포를 배웠다"고 했던 문장의 수식 버전이 p(x)다.

생각해 볼 질문 — 같은 데이터로 판별 모델과 생성 모델을 다 만들 수 있다. 스팸 메일 데이터라면 각각 무엇을 할 수 있게 되는가?

복원에서 생성으로

오토인코더 — 자신을 복원하는 훈련

오토인코더는 입력과 동일한 출력을 만드는 것이 목표인 신경망이다. 가운데 좁은 병목(잠재공간)을 통과해야 하므로, 복원을 잘하려면 데이터의 본질을 압축해 담는 법을 배워야 한다.

  • 쓰임새: 특징 학습, 차원 축소, 표현 학습 — "정답 없이" 데이터만으로 배우는 비지도 학습이다.
  • 노이즈 제거: 입력에 잡음을 섞고 깨끗한 원본을 복원하게 훈련하면, 잡음 제거기가 된다 — 본질만 남기는 압축의 부수 효과.
  • 생성: 학습 후 잠재공간의 임의 좌표를 디코더에 넣으면 새로운 샘플이 나온다 — 1장(M2)의 인코더·디코더 그림이 바로 이 구조였다.
더 읽기

초기 오토인코더 생성물이 흐릿했던 이유(M2에서 언급)는 손실 함수가 픽셀 평균 오차였기 때문이다 — 여러 그럴듯한 답의 "평균"은 흐릿한 이미지다. 이 흐릿함을 공격한 두 노선이 "진짜 같은지"를 다른 신경망이 심판하게 한 GAN과, 복원을 잘게 나눠 반복한 확산 모델이다. 다음 카드가 전자다.

생각해 볼 질문 — 병목을 아주 넓게 (입력 차원과 같게) 만들면 오토인코더는 무엇을 배우게 되는가? 왜 그것이 쓸모없는가?

2014

GAN — 위조범과 감정사의 군비 경쟁

생성자는 가짜를 만들고, 판별자는 진짜와 가짜를 가려낸다. 두 신경망이 적대적으로 경쟁하며 번갈아 훈련되는 동안, 위조의 품질이 판별 불가능 수준까지 올라간다.

랜덤 노이즈가 생성자를 거쳐 가짜 이미지가 되고, 판별자가 진짜 이미지와 구분하며, 판별 결과가 생성자의 학습 신호로 되돌아가는 GAN 구조도
그림 5. 붉은 점선이 이 구조의 심장이다 — 판별자의 판정이 생성자의 손실 함수가 된다. 판별자가 가짜(y=0)로 판정하면 생성자의 손실이 커져 학습이 진행된다. 훈련 초기의 생성자는 순수 노이즈를 내지만, 판별자를 속이려는 압력 아래 진짜 데이터의 구조를 점차 복제한다. 생성자의 내부는 컨벌루션의 역방향 — 활성화 맵에서 이미지를 키워 가는 전치 컨벌루션(업샘플링)이다.
모드 붕괴판별자를 속이는 데 성공한 몇 가지 샘플만 반복 생성 — 다양성이 죽는다.
불안정한 균형판별자가 너무 강해도 약해도 생성자가 못 배운다. 훈련이 곡예다.
평가의 어려움"진짜 같은가"는 주관적이다 — 전통적 지표가 통하지 않아 별도의 평가법이 필요하다.
더 읽기

고해상도의 어려움, 데이터 의존성, 자원 소모까지 합치면 GAN의 한계는 다섯 갈래다. 이 한계들이 확산 모델로의 세대교체(M2의 계보)를 부른 실질적 이유였다 — 확산은 훈련이 안정적이고 다양성이 유지되는 대신 생성이 느리다. 한편 "두 모델의 적대적 경쟁"이라는 GAN의 발상 자체는 살아남아, 위조 탐지·강건성 훈련·평가자 모델 등 다른 자리에서 계속 쓰인다.

생각해 볼 질문 — 모드 붕괴를 학생-채점자 관계에 비유하면 어떤 상황인가? 채점 기준(판별자)을 어떻게 바꿔야 막을 수 있는가?

출처 Goodfellow 외, "Generative Adversarial Networks", NeurIPS 27, 2014: arxiv.org

코드로 확인하기

같은 데이터, 세 구조 — 실습 예고

실습 노트북(CNN실습)은 CIFAR-10 이미지 분류에 MLP·CNN·트랜스포머(ViT) 세 구조를 나란히 붙여, 파라미터 수·정확도·추론 시간을 직접 비교한다.

코드로 확인하기

CNN 블록의 최소 형태 (PyTorch)

이 장에서 배운 요소가 코드에서 어디에 있는지 짚는 것이 목적이다. 전체 학습·시각화는 실습 노트북에서.

import torch.nn as nn block = nn.Sequential( nn.Conv2d(3, 32, kernel_size=3, padding=1), # RGB 3채널 → 커널 32개, P=1 nn.BatchNorm2d(32), # 정규화 (M5 보조자료) nn.ReLU(), # 비선형 (M5) nn.MaxPool2d(2), # 2×2 최대 풀링 → 크기 절반 nn.Dropout(0.25), # 과적합 대책 (M5) ) # 32×32 입력이 이 블록을 지나면? → conv(P=1,K=3,S=1): 32 유지 → pool: 16 # 과제: 실습 노트북에서 MLP/CNN/ViT의 파라미터 수와 정확도를 표로 정리하고, # "연결을 줄인 CNN이 왜 더 정확한가"를 이 장의 두 가정으로 설명해 보라.

관찰 포인트: Conv2d(3, 32, …)의 3과 32가 각각 무엇의 개수인지(입력 채널/커널 수) 말할 수 있고, 주석의 크기 계산(32→32→16)을 실습 2의 계산기로 재현할 수 있으면 성공이다.

06
정리

이 자료가 바로잡은 세 가지

구조들의 나열이 아니라 하나의 원리 — 데이터의 성질을 연결에 새긴다.

기억해 둘 세 문장

  1. CNN이 강한 것은 연결이 많아서가 아니라 적어서다. "패턴은 국소적이고, 어디서든 같다"는 이미지의 성질을 부분 연결과 커널 재사용으로 새긴 결과다.
  2. RNN의 실패는 M5의 산수가 시간축에서 재발한 것이다. 시각 수 = 층 수. 그래서 처방도 같은 곳(게이트, 그리고 결국 트랜스포머)에서 나왔다.
  3. 생성모델의 "창의성"은 랜덤 노이즈 + 배운 분포다. p(x)를 배운 모델에서 노이즈가 잠재공간의 주소가 된다 — LLM의 온도 샘플링(M2)과 같은 원리의 이미지 버전.
다음 장 예고

지금까지의 모델은 전부 "많은 데이터"를 전제했다. 다음 장 거리 기반 학습과 퓨샷은 그 반대의 상황, 즉 데이터가 적거나 레이블이 없을 때를 다룬다. kNN의 "가까운 것이 답이다" 한 문장이 K-means를 지나 Prototypical Networks까지 이어진다. 기말의 "시나리오 → 알고리즘 식별" 3문항이 그 사정거리다.

한국외국어대학교 기술경영학부 · 본문 도표(그림 1–5)는 직접 제작. 그림 2의 컨벌루션 값과 공식 예제(32→17→8)는 본문 공식으로 재검산했다.
출처

참고문헌

공개 원문 우선. 링크는 2026년 8월 확인 기준.

1차 문헌

  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
  2. 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
  3. LeCun, Y., et al. (1998). Gradient-Based Learning Applied to Document Recognition (LeNet-5). Proceedings of the IEEE, 86(11). ieeexplore.ieee.org
  4. Hochreiter, S., & Schmidhuber, J. (1997). Long Short-Term Memory. Neural Computation, 9(8), 1735–1780. ieeexplore.ieee.org
  5. Goodfellow, I., et al. (2014). Generative Adversarial Networks. NeurIPS 27. arxiv.org

교재 · 보조 자료

  1. 천인국 (2023). 인공지능: 파이썬으로 배우는 머신러닝과 딥러닝 (2판). 인피니티북스. — 11·12주차 강의 교재.
  2. 실습 노트북. CNN실습 — CIFAR-10에서 MLP·CNN·ViT 비교와 특성맵·어텐션 시각화. 강의 홈에서 배포.
인용 원칙

그림 2·3의 수치 예와 특성맵 공식 예제는 본문 공식으로 직접 계산해 검산했다. 허벨·위젤의 "우연한 발견" 일화는 널리 알려진 회고에 근거한 것으로, 실험 결과 자체는 1962년 논문 기준이다.