딥러닝 입문의 관문인 신경망·CNN·RNN 3대 구조를 그림 그리듯 풀어냈습니다. 개념 이해부터 무료 강의, Colab에서 MNIST 한 번 돌려보는 실습 경로까지 이 글 하나로 딥러닝의 뼈대를 잡을 수 있어요.
딥러닝 입문, 왜 유독 여기서 다들 막힐까요?
커피를 내릴 때 원두 가루가 여러 겹의 필터를 통과하면서 점점 맑은 액체가 되잖아요. 신경망도 똑같아요. 데이터가 층(Layer)을 하나씩 통과할 때마다 불필요한 정보는 걸러지고, 문제를 푸는 데 필요한 특징만 남습니다. 딥러닝 입문에서 수식보다 먼저 잡아야 할 직관이 바로 이거예요.
이 글은 머신러닝 독학 완벽 로드맵 연재의 5화입니다. 로드맵 7단계 중 4단계 “DL 입문(신경망·CNN·RNN)”에 해당하는 회차인데, 이전 화를 안 읽으셨어도 괜찮아요. 이 글만으로 완결되도록 개념 → 구조 → 실습 순서로 정리했습니다.
⚡ 이 글의 핵심만 먼저 보기 (Key Takeaways)
- 신경망의 본질: 뉴런 하나는 “가중치 곱하고 더한 뒤 활성화 함수 통과”가 전부. 이걸 층으로 쌓으면 복잡한 패턴을 표현할 수 있어요.
- 학습의 원리: 순전파로 예측하고, 오차를 역전파로 되돌려 보내 가중치를 조금씩 수정하는 반복이 곧 “학습”입니다.
- CNN은 이미지: 3×3 필터가 이미지를 훑으며 선·모서리·질감 같은 특징을 자동으로 뽑아냅니다. 사람이 특징을 설계할 필요가 없어요.
- RNN은 순서 데이터: 문장·시계열처럼 순서가 중요한 데이터를 다루지만, 긴 문맥을 잊는 한계 때문에 LSTM과 Transformer가 등장했습니다.
- 비용 0원 학습 경로: 모두를 위한 딥러닝 시즌1(무료) + CS231n 강의자료 + Colab 무료 GPU면 오늘 바로 시작할 수 있어요.
- 당장 할 액션: 개념만 붙잡지 말고 Colab에서 MNIST 손글씨 분류를 한 번 돌려보기. 10분이면 첫 신경망이 학습됩니다.
📌 목차
- 신경망의 직관 — 뉴런·가중치·활성화 함수
- 순전파와 역전파 — 학습은 오차의 왕복 여행
- CNN — 필터가 이미지의 특징을 뽑는다
- RNN과 LSTM — 순서가 있는 데이터의 세계
- Colab·PyTorch·Teachable Machine으로 직접 실습하기
- 이런 분들께 적극 추천합니다
- 자주 묻는 질문 (FAQ)
1. 신경망의 직관 — 뉴런·가중치·활성화 함수
신경망을 이루는 부품은 놀랄 만큼 단순해요. 뉴런 하나가 하는 일은 “입력에 가중치(weight)를 곱해서 전부 더하고, 그 결과를 활성화 함수에 통과시키는 것”이 전부입니다. 여기서 핵심이 있어요. 이 단순한 부품을 층으로 쌓는 순간 표현력이 폭발한다는 점이에요.
① Weight & Bias — 모델이 “배운다”의 실체
가중치는 각 입력이 결과에 얼마나 중요한지를 나타내는 숫자예요. 집값 예측이라면 “평수”에 큰 가중치, “현관문 색”에 작은 가중치가 붙는 식이죠. 학습이란 결국 이 숫자들을 데이터에 맞게 조금씩 조정하는 과정입니다. GPT 같은 거대 모델도 본질은 이 가중치가 수천억 개로 늘어난 것뿐이에요.
② Activation Function — 층을 쌓는 의미를 만드는 스위치
활성화 함수가 없으면 층을 100개 쌓아도 수학적으로 1층짜리 선형 모델과 똑같아져요. ReLU(음수는 0, 양수는 그대로) 같은 비선형 함수가 끼어들어야 “층을 쌓을수록 강해지는” 딥러닝의 성질이 생깁니다. 얕은 층은 단순한 패턴을, 깊은 층은 그 패턴들의 조합을 배우는 구조가 여기서 나와요. 뒤에 나올 실습에서 ReLU 한 줄을 넣고 빼며 MNIST 정확도가 어떻게 달라지는지 직접 확인해 볼 거예요.
2. 순전파와 역전파 — 학습은 오차의 왕복 여행
딥러닝 입문서에서 가장 많이 포기하는 지점이 역전파인데, 수식을 걷어내면 구조는 왕복 여행 하나예요. 그림으로 그리면 이렇게 됩니다.
[순전파] 입력 → (가중치 곱셈+활성화) → 예측값 → 정답과 비교 → 오차 계산
[역전파] 오차 → 뒤 층부터 "네가 오차에 얼마나 기여했나" 계산 → 가중치 수정
이 왕복을 수천~수만 번 반복 = 학습(training)
1) Forward Propagation — 일단 찍고 채점받기
순전파는 현재 가중치로 예측을 한 번 해보는 과정이에요. 처음엔 가중치가 랜덤이라 예측이 엉망이지만 상관없어요. 중요한 건 “정답과 얼마나 틀렸는지”를 손실 함수로 숫자화하는 것까지입니다.
2) Backpropagation — 틀린 만큼 거슬러 올라가 고치기
역전파는 그 오차를 출력층에서 입력층 방향으로 되돌려 보내면서, 각 가중치가 오차에 기여한 만큼 책임을 묻는 과정이에요. 미분(기울기)이 등장하는 이유는 단 하나, “이 가중치를 어느 방향으로 얼마나 움직여야 오차가 줄어드나”를 계산하기 위해서입니다. 이게 경사하강법이고요. 손실 곡선이 내려가다 멈추면 학습률을, 아예 발산하면 데이터 스케일을 점검하는 식의 디버깅도 전부 이 원리에서 나옵니다.
3. CNN — 필터가 이미지의 특징을 뽑는다
이미지를 일반 신경망에 넣으면 픽셀 하나하나가 독립된 입력이 돼서, 고양이가 1픽셀만 옆으로 이동해도 완전히 다른 데이터로 취급돼요. CNN(합성곱 신경망)은 이 문제를 “작은 필터로 이미지를 훑는” 방식으로 해결합니다.
① Convolution Filter — 특징을 자동으로 발견하는 돋보기
3×3짜리 작은 필터가 이미지 전체를 슬라이딩하며 “이 위치에 세로선이 있나?”, “모서리가 있나?”를 검사해요. 놀라운 점은 이 필터의 값 자체가 학습된다는 거예요. 초반 층은 선과 모서리를, 깊은 층은 눈·귀·얼굴 윤곽 같은 고수준 특징을 스스로 찾아냅니다. 과거엔 사람이 손으로 설계하던 특징 추출을 모델이 대신하게 된 게 딥러닝 혁명의 핵심이에요. 그래서 불량 검출·의료 영상처럼 결함의 규칙을 일일이 코드로 못 박기 어려운 분야에서 CNN이 특히 강력합니다.
② Pooling & 구조 — 줄이고, 요약하고, 판단한다
풀링(Pooling)은 특징 맵에서 가장 강한 신호만 남기고 크기를 줄이는 요약 단계예요. “합성곱 → 풀링”을 몇 번 반복해 특징을 압축한 뒤, 마지막에 일반 신경망으로 “고양이 vs 개”를 판단하는 게 CNN의 기본 골격입니다. 스탠퍼드 CS231n이 이 구조를 시각 자료로 가장 잘 설명하니 강의자료만 봐도 큰 도움이 돼요.
4. RNN과 LSTM — 순서가 있는 데이터의 세계
“나는 어제 사과를 ___”의 빈칸을 맞추려면 앞 단어들을 기억해야 하죠. RNN(순환 신경망)은 이전 단계의 출력을 다음 단계 입력에 다시 넣어서, 순서와 문맥을 기억하는 구조입니다. 문장, 주가, 센서 로그처럼 순서가 의미를 갖는 데이터가 전부 대상이에요.
1) RNN — 기억을 이어 붙이는 순환 구조
RNN은 같은 셀을 시간 순서대로 재사용하면서 “은닉 상태”라는 메모리를 갱신해요. 다만 문장이 길어지면 앞부분의 기억이 역전파 과정에서 점점 희미해지는 기울기 소실 문제가 생깁니다. 20단어 전의 주어를 잊어버리는 모델이 되는 거죠.
2) LSTM — 잊을 것과 기억할 것을 고르는 게이트
LSTM은 셀 안에 “잊기 게이트·입력 게이트·출력 게이트”를 달아서, 무엇을 오래 기억하고 무엇을 버릴지 스스로 결정하게 만든 개선판이에요. 2017년 Transformer가 나오기 전까지 번역·음성인식의 주력이 전부 LSTM이었습니다. 지금도 데이터가 크지 않은 시계열 문제에서는 Transformer보다 가볍고 안정적이라 여전히 현역이에요.
그리고 이 LSTM조차 병렬 처리가 안 되는 한계 때문에, “순서를 순환 없이 한 번에 보는” Transformer가 등장합니다. GPT와 Claude의 뿌리가 되는 이 구조는 다음 6화에서 본격적으로 다룰 예정이에요. 오늘 배운 3대 구조와 데이터 매칭을 표로 정리하면 이렇습니다.
| 구조 | 잘 다루는 데이터 | 대표 활용 |
|---|---|---|
| 기본 신경망(MLP) | 표 형태 데이터 | 가격 예측, 이탈 분류 |
| CNN | 이미지, 공간 패턴 | 불량 검출, 의료 영상 |
| RNN/LSTM | 문장, 시계열 | 수요 예측, 음성 인식 |
| Transformer(다음 화) | 긴 문맥의 시퀀스 | GPT, 번역, 코드 생성 |
5. Colab·PyTorch·Teachable Machine으로 직접 실습하기
이론은 여기까지면 충분해요. 이제 돈 한 푼 안 들이고 손으로 돌려보는 경로입니다. 순서는 노코드 체험 → Colab GPU 켜기 → PyTorch로 MNIST 최소 코드 실행 세 단계로 잡으면 부담이 없어요.
① 노코드로 CNN 체험 — Teachable Machine 5분
코드가 아직 부담스럽다면 구글 Teachable Machine부터 열어보세요(teachablemachine.withgoogle.com). 브라우저에서 [Image Project]를 고르고 웹캠으로 “가위 / 바위 / 보” 같은 클래스별 이미지를 몇십 장씩 찍은 뒤 [Train] 버튼만 누르면, 방금 배운 CNN이 실시간으로 손 모양을 분류하는 걸 눈으로 확인할 수 있어요. 필터가 특징을 뽑고 → 학습으로 가중치가 맞춰지고 → 예측이 나오는 전체 흐름을 코드 한 줄 없이 체감하는 가장 빠른 방법입니다.
② Colab 무료 GPU 켜는 법
구글 Colab은 브라우저에서 무료 GPU를 쓸 수 있는 파이썬 노트북 환경이에요. 새 노트를 연 뒤 GPU를 켜는 순서는 이렇습니다.
상단 메뉴 [런타임] → [런타임 유형 변경] → 하드웨어 가속기: [GPU] 선택 → 저장
# 아래 코드로 GPU가 잡혔는지 확인
import torch
print(torch.cuda.is_available()) # True 면 성공
print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else "CPU")
True가 찍히면 무료 GPU가 연결된 거예요. 이 상태로 아래 MNIST 코드를 그대로 붙여 넣으면 CPU만 쓸 때보다 몇 배 빠르게 학습됩니다.
③ PyTorch로 MNIST 손글씨 분류 — 최소 코드
딥러닝의 “Hello World”인 MNIST(0~9 손글씨) 분류예요. 데이터 로드 → 모델 정의 → 학습 → 정확도 확인까지 딱 이만큼이면 첫 신경망이 돌아갑니다. Colab 셀에 붙여 넣고 실행만 누르세요.
import torch, torch.nn as nn
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
dev = "cuda" if torch.cuda.is_available() else "cpu"
# 1) 데이터 로드 — MNIST 손글씨 (자동 다운로드)
tf = transforms.ToTensor()
train = datasets.MNIST("./data", train=True, download=True, transform=tf)
test = datasets.MNIST("./data", train=False, download=True, transform=tf)
train_dl = DataLoader(train, batch_size=64, shuffle=True)
test_dl = DataLoader(test, batch_size=1000)
# 2) 모델 — 입력 784 → 은닉 128(ReLU) → 출력 10
model = nn.Sequential(
nn.Flatten(),
nn.Linear(28*28, 128), nn.ReLU(),
nn.Linear(128, 10),
).to(dev)
# 3) 학습 — 3 에폭이면 충분
opt = torch.optim.Adam(model.parameters(), lr=1e-3)
loss_fn = nn.CrossEntropyLoss()
for epoch in range(3):
for x, y in train_dl:
x, y = x.to(dev), y.to(dev)
opt.zero_grad()
loss_fn(model(x), y).backward() # 역전파
opt.step() # 가중치 수정
# 4) 정확도 확인
correct = 0
model.eval()
with torch.no_grad():
for x, y in test_dl:
x, y = x.to(dev), y.to(dev)
correct += (model(x).argmax(1) == y).sum().item()
print(f"테스트 정확도: {correct/len(test)*100:.2f}%")
3에폭만 돌려도 97% 안팎의 정확도가 나와요. 여기서 nn.ReLU() 줄을 지우고 다시 돌려보면 정확도가 눈에 띄게 떨어집니다. 1번 섹션에서 말한 “활성화 함수가 층을 쌓는 의미를 만든다”를 숫자로 직접 확인하는 실험이에요. 개념 → 최소 코드 한 번 실행, 이 사이클이 독학 완주율을 가르는 베스트 프랙티스입니다.
④ 강의는 이 순서로 — 모두를 위한 딥러닝 → CS231n
실습과 병행할 무료 강의는 순서가 중요해요.
- 1단계 · 모두를 위한 딥러닝 시즌1: 김성훈 교수님의 한국어 무료 강의로, 오늘 다룬 신경망·CNN·RNN을 직관 중심으로 전부 커버해요. 한 강의가 10~15분이라 부담이 적고 비전공자에게 특히 잘 맞습니다. 코드는 버전이 오래된 부분이 있으니 개념만 취하고, 실습은 위 PyTorch 예제로 보완하세요.
- 2단계 · 스탠퍼드 CS231n: 합성곱·풀링 동작을 시각화한 강의노트가 압권이라 CNN을 제대로 파고들 때 봅니다. 영어가 부담되면 강의노트의 그림만 따라가도 구조가 잡혀요.
이 자료들은 연재 1화에서 소개한 GitHub 자료집의 딥러닝 파트에서 검증된 것만 추린 거예요. 개념 강의 2편을 본 날은 반드시 Colab에서 관련 코드 한 셀을 돌려보는 리듬이 결국 완주율을 가릅니다.
6. 이런 분들께 적극 추천합니다
- ML 기초(회귀·분류)는 뗐는데 딥러닝 앞에서 몇 달째 멈춰 있는 독학러
- ChatGPT를 매일 쓰면서 “이게 도대체 어떻게 작동하는 거지?”가 궁금한 기획자·마케터
- 이미지 검수·문서 분류 자동화를 검토 중인데 CNN과 RNN 중 뭘 써야 할지 모르는 실무자
- Transformer·LLM 공부를 시작했다가 기초 구조가 부족해 다시 내려온 개발자
- 유료 부트캠프 등록 전에 무료 자료로 적성부터 확인하고 싶은 커리어 전환 준비생
7. 자주 묻는 질문 (FAQ)
Q. 수학(미분·선형대수)을 모르면 딥러닝 입문이 불가능한가요?
A. 불가능하지 않아요. 오히려 순서를 바꾸는 게 효율적입니다. 먼저 이 글처럼 직관으로 구조를 이해하고, Colab에서 코드를 돌려본 뒤, “역전파에서 미분이 왜 필요했지?”가 궁금해질 때 3Blue1Brown 영상으로 수학을 채우세요. 필요를 느낀 뒤의 수학 공부는 흡수율이 완전히 다릅니다.
Q. 어차피 요즘은 다 Transformer인데, CNN·RNN을 배울 필요가 있나요?
A. 건너뛰면 나중에 더 비쌉니다. Transformer의 어텐션은 “RNN의 순차 처리 한계를 어떻게 극복했나”를 알아야 이해되고, 실무에선 작은 이미지·시계열 문제에 CNN과 LSTM이 여전히 가성비 최고인 경우가 많아요. 3대 구조는 우회로가 아니라 지름길입니다.
Q. TensorFlow와 PyTorch 중 뭘로 실습해야 하나요?
A. 지금 시작한다면 PyTorch를 권해요. 연구·업계 모두 PyTorch 비중이 높아졌고 코드가 파이썬답게 읽힙니다. 다만 이 단계에선 프레임워크 고민보다 “하나로 MNIST를 돌려보는 경험”이 훨씬 중요해요. 프레임워크 비교는 로드맵 5단계, 다음다음 회차에서 자세히 다룹니다.
✍️ 글을 마치며
딥러닝 입문의 3대 구조를 정리하면 한 줄이에요. 표 데이터는 기본 신경망, 이미지는 CNN, 순서 데이터는 RNN/LSTM. 그리고 학습의 정체는 순전파와 역전파의 왕복 반복이라는 것. 이 지도만 있으면 어떤 최신 모델을 만나도 위치를 잡을 수 있습니다.
저는 오늘 밤 Colab에서 활성화 함수를 뺐다 넣었다 하며 MNIST 정확도가 변하는 실험을 가장 먼저 해볼 것 같아요. 비선형성의 역할을 숫자로 직접 확인하는 것만큼 확실한 공부가 없거든요. 다음 6화에서는 오늘 예고한 Transformer로 넘어갑니다. 🙌
여러분은 어떤 부분이 가장 인상적이셨나요? 댓글로 자유롭게 의견 남겨주세요! 😊