본문 바로가기
즐거운, 즐겁게/딥러닝, 두고두고 꺼내보는

[딥러닝 이론 + PyTorch 실무 완전 정복 #2] 딥러닝이란 무엇인가? — 뉴런 하나부터 과적합까지

by DoubleS2 2026. 8. 11.
딥러닝 이론 + PyTorch 실무 완전 정복 두 번째 편. 환경을 다 깔았으니 이제 진짜 이론입니다.
딥러닝이 대체 무슨 문제를 푸는 건지, 뉴런 하나가 하는 일이 뭔지부터 차근차근 정리합니다.


📎 출처: 이 글은 인프런 「딥러닝 이론 + PyTorch 실무 완전 정복」 (변정현) 강의를 수강하며 쓰는 복습 기록입니다. 강의 자료를 그대로 옮기지 않고, 제가 이해할 수 있는 방향으로 다시 정리한 글입니다.


🎯 1. 딥러닝을 한 문장으로 — "X를 Y로 옮기는 함수 찾기"

강의는 고양이 사진 한 장으로 시작합니다.
사진을 넣으면 "Cat"이라는 답이 나오는 상자를 어떻게 만들 것인가.

여기서 강의는 이 질문에 대해서

"어떻게 답을 맞히나"가 아니라 "X와 Y를 이어주는 함수를 어떻게 구하나"로 문제를 바꿔놓습니다.

입력값 X가 있고 정답 Y가 있으면, 둘 사이에는 `Y = f(X)`인 어떤 함수 f가 있다고 볼 수 있습니다.
문제는 이 f를 정확히 구하는 게 불가능하다는 것이죠.
(사진의 픽셀 값에서 "고양이"까지 가는 규칙을 사람이 수식으로 적을 방법이 없으니까요...)

그래서 방향을 바꿉니다. 정확히 구하지 못한다면 최대한 비슷한 함수로 흉내내면 되지 않을까.
그 흉내내는 도구가 Neural Network입니다.

신경망이 내놓는 예측을 `NN(X)`라고 쓰면, 목표는 한 줄로 정리됩니다.
예측값이 실제값에 최대한 가까워지게 만들 것

딥러닝은 정답 함수 f를 찾는 게 아니라, 계산 가능한 신경망으로 f를 흉내내는 일입니다


Hidden Layer가 하나 이상 쌓인 신경망을 Deep Neural Network라고 부르고, 이걸 학습시키는 게 딥러닝이에요.

 

💡 저는 딥러닝을 "정답지를 못 구하니까, 정답지와 최대한 비슷한 가짜 정답지를 만드는 일"로 이해했어요. 그래서 이 분야엔 정확한 해 대신 더 나은 근사라는 말이 계속 나오나 봅니다.

🧠 2. 뉴런 하나가 하는 일 — 곱하고, 더하고, 비튼다

신경망의 구성은 생각보다 단순합니다.
Input Layer + (하나 이상의) Hidden Layer + Output Layer,

이게 전부예요.

각 Layer는 여러 개의 뉴런(Neuron)으로 이루어져 있습니다.
그리고 뉴런은 다음 Layer의 뉴런들과 선(edge)으로 연결됩니다.

그럼 뉴런 하나는 무슨 일을 할까요. 강의는 이걸 딱 3단계로 쪼갭니다.

곱하고(Weight Multiplication) → 더하고(Aggregation) → 비트는(Activation) 3단계가 뉴런 하나의 전부입니다

단계 하는 일 수식
Weight Multiplication (가중치 곱)  이전 Layer의 각 값에 연결선마다 정해진 가중치를 곱한다 `x_i × w_ji`
Aggregation (집계) 곱한 값들을 전부 더해 하나의 숫자로 만든다 `Σ x_i × w_ji`
 Activation Function (활성화 함수) 합쳐진 값을 비선형 함수에 통과시켜 최종 값을 정한다  `σ( · )`


세 단계를 이어 붙이면 j번째 뉴런의 값은 `h_j = σ( Σ x_i × w_ji )`가 됩니다.
`w_j1`은 __이전 Layer의 1번 뉴런__과 __이번 Layer의 j번 뉴런__ 사이의 가중치입니다. 

 

활성화 함수로는 Sigmoid · Tanh · ReLU · Softmax 같은 것들이 쓰입니다.
이건 뒤에 따로 한 섹션을 잡아 다룬다고 하니, 지금은 이름만 알아두고 넘어가면 될 것 같아요.

💡 3단계 중에 학습으로 값이 바뀌는 건 가중치 w 하나뿐입니다. 활성화 함수는 우리가 골라서 끼워두는 부품이고요.


왜 하필 "신경망"이라고 부를까

강의는 이 구조에 왜 신경망이라는 이름이 붙었는지도 짚고 갑니다.
사람의 신경세포(Neuron)가 전기 신호를 받아서 다시 전기 신호를 내보내는 방식과 구조가 닮았기 때문이라고 해요.
여러 갈래로 신호를 받고 → 하나로 모으고 → 다음으로 내보내는 흐름이 앞의 3단계와 그대로 겹칩니다.


🔍 3. 학습이란 결국 가중치를 고치는 일


자, 그럼 원래 질문으로 돌아옵니다.

어떻게 해야 예측값이 실제값에 가까워질까요?

답은 하나뿐입니다. 

각 Layer의 가중치 w를 최적화하는 것

가중치가 정해지면 주어진 입력에 대한 출력도 자동으로 결정됩니다.
뒤집어 말하면 신경망이 달라진다는 건 가중치가 달라진다는 뜻이에요.

그러면 질문이 두 개 따라옵니다.

  1. 가중치를 처음에 어떻게 정해야 예측이 정확할까?
  2. 가중치를 어떻게 고쳐야 예측이 더 정확해질까?


첫 번째 답은 좀 허무하지만.."모른다. 그래서 랜덤하게 정한다."입니다.
어떤 값이 좋은지 미리 알 방법이 없으니 일단 무작위로 시작한다는 거예요. 

초기화를 잘하는 방법은 뒤에 따로 다룬다고 하니 참고하세요.

두 번째 답이 이 강의 전체의 중요한 부분입니다.
손실 함수(Loss Function)로 얼마나 틀렸는지를 재고, 경사 하강법(Gradient Descent)으로 그 값이 줄어드는 쪽으로 가중치를 옮깁니다.

랜덤한 가중치에서 출발해 예측 → 채점 → 수정을 반복하는 게 학습의 전부입니다


그래서 학습은 정답을 한 번에 계산해내는 일이 아니라, 틀린 만큼 조금씩 고쳐 나가는 반복 작업입니다.

 

💡 저는 이 대목을 "랜덤에서 시작해서 덜 틀리는 쪽으로 굴러가는 것"으로 외웠어요.
     학습이 잘 안 될 때 의심할 곳도 결국 셋 중 하나 — 출발점(초기화), 채점 기준(Loss), 굴러가는 방식(Gradient Descent)입니다.

🗂️ 4. 데이터를 셋으로 나누는 이유

이론의 나머지 절반은 데이터를 어떻게 쓸 것인가입니다.

딥러닝에서는 데이터셋을 Training · Validation · Test 세 덩어리로 나눠 씁니다.

데이터셋 하는 일 여기서 하면 안되는 것
Training (학습) 경사 하강법으로 Loss가 줄어들도록 가중치를 최적화 -
Validation (검증) 모델 성능 평가와 하이퍼파라미터 튜닝 가중치 학습에 쓰기
Test (시험) 최종적으로 고른 모델의 성능을 한 번 측정 튜닝에 참고하기


여기서 하이퍼파라미터(Hyperparameter)라는 말이 나옵니다.
학습으로 정해지는 가중치와 달리, 모델 구조와 학습 방식에 영향을 주는, 우리가 직접 정하는 값이에요.

Validation이 따로 필요한 이유는 간단합니다.
학습 데이터로만 성능을 재면 외운 걸 그대로 물어보는 시험이 되니까요.

그런데 강의는 여기서 한 발 더 나갑니다.
Validation으로 튜닝을 너무 열심히 하면, 이번엔 Validation에 과적합된다는 것이죠.

그래서 Test는 마지막에 딱 한 번만 꺼내 쓰는 봉인된 데이터로 남겨둡니다.

 

💡 셋의 관계를 "연습 문제 · 모의고사 · 수능"으로 정리했어요.
     모의고사를 계속 다시 풀면서 점수를 올리면, 그건 실력이 는 게 아니라 그 모의고사에 익숙해진 것뿐이잖아요.

📉 5. 과적합, 그리고 K-fold 교차 검증

Overfitting — 학습 데이터의 노이즈까지 외워버리는 것

과적합(Overfitting)은 학습 데이터에서는 잘하는데 처음 보는 데이터(unseen data)에서는 성능이 나오지 않는 상태입니다.
원인은 신경망이 학습 데이터에 섞인 노이즈까지 같이 학습해버리는 것이라고 해요.
그 결과 일반화 성능(generalizability)이 떨어집니다.

이걸 눈으로 보는 방법이 강의에 나오는 Loss 그래프입니다.

학습 손실은 계속 떨어지는데 검증 손실이 다시 올라가기 시작하면, 그 지점부터 과적합입니다

 

학습 손실은 계속 떨어집니다.
그런데 검증 손실은 어느 지점부터 다시 올라가요.

그 갈라지는 순간이 과적합의 시작입니다.

⚠️ 그래서 Train Loss만 보고 있으면 과적합을 눈치챌 수 없습니다.
     학습이 잘되고 있다는 착각만 커져요. 두 곡선은 항상 같이 봐야 합니다.


K-fold Cross Validation — 검증 데이터를 한 군데로 고정하지 않기

Validation을 한 덩어리로 고정해두면 또 다른 문제가 생깁니다.
하필 그 덩어리를 어떻게 골랐느냐에 따라 평가가 흔들리는 것이죠.

K-fold 교차 검증은 이걸 자리를 옮겨가며 푸는 방법이에요. 순서는 이렇습니다.

 

  1. 데이터 분할 — 전체 데이터를 겹치지 않는 K개 덩어리(fold)로 나눕니다. 보통 K는 5나 10을 씁니다
  2. 반복 학습·검증 — 한 fold를 검증용으로 두고 나머지 K-1개로 학습합니다. 이걸 fold를 옮겨가며 K번
  3. 성능 측정 — 매번 검증 성능을 재두고, K번이 끝나면 평균을 냅니다
  4. 최종 평가 또는 튜닝 — 이 평균값을 그 모델의 성능으로 삼습니다

검증용 fold를 한 칸씩 옮겨가며 K번 반복하고, 그 결과를 평균 냅니다


장점은 세 가지로 정리됩니다.
데이터를 최대한 활용하고, 과적합을 방지하며, 검증 데이터 선택에 따라 평가가 크게 달라지지 않는다는 것.

 

💡 K-fold는 "평가를 한 번만 보지 않고 K번 봐서 평균 내는 것"이라고 이해했어요.
     데이터가 넉넉하지 않을수록 값어치가 커지는 방법인 것 같습니다.

⚖️ 6. Loss와 Evaluation Metric은 다르다

이론 마지막은 제가 그동안 뭉뚱그려 쓰던 두 단어를 갈라주는 부분이었습니다.

둘 다 모델이 얼마나 잘하나를 재는 것 같은데, 쓰이는 자리가 완전히 다르더라고요.

구분 Loss Function Evaluation Metric
무엇을 재나? 예측값과 실제 타겟 값의 차이 학습된 모델이 얼마나 잘 맞히는지
언제 쓰나? 학습 중, 가중치를 조정하기 위해 학습 후, 성능을 평가하고 보고하기 위해
미분 가능히야 하나? 반드시 그래야 함 그럴 필요 없음
예시 Cross Entropy Loss, Mean Squared Loss 정확도, 정밀도, 재현율, F1 Score



핵심은 미분 가능성입니다.
경사 하강법은 기울기를 따라 내려가는 방법이라, Loss는 미분이 되어야만 합니다.

반면 정확도 같은 지표는 미분이 안 돼도 상관없어요.
학습에 직접 쓰이지 않고 결과를 사람이 읽기 위한 숫자니까요.

💡 "Loss는 모델이 보는 점수, Metric은 사람이 보는 점수"로 외웠습니다.
      그래서 둘이 항상 같은 방향으로 움직이지도 않는다고 하네요.

✍️ 마무리 & 다음 단계

정리하면 이번 편은 질문 하나로 시작해서 답 하나로 끝납니다.

"X를 Y로 옮기는 함수를 어떻게 구하나?"

"구하지 못하니 신경망으로 근사하고, 가중치를 반복해서 고쳐 나간다"였습니다.
그 안을 열어보니 뉴런 하나는 곱하고 · 더하고 · 비트는 3단계였어요.

학습은 랜덤 초기화 → Loss로 채점 → Gradient Descent로 수정의 반복이었고요.

나머지 절반은 데이터 이야기였습니다.
Training · Validation · Test를 왜 나누는지, 과적합을 어떻게 알아채는지, Loss와 Metric이 왜 다른지.

이론이라 손에 잡히는 게 없어 보이지만, 다음 편에서 코드를 만지면 이 정의들이 익숙해지실 겁니다



📎 출처: 이 글은 인프런 「딥러닝 이론 + PyTorch 실무 완전 정복」 (변정현) 강의를 수강한 뒤, 딥러닝 기초를 오래 기억하기 위해 개인 학습 목적으로 다시 정리한 것입니다. 강의 슬라이드는 캡처하지 않았고, 본문의 도식은 개념만 가져와 제가 새로 그렸습니다. 잘못 이해한 부분이 있다면 댓글로 알려주세요. 🙏