신경망은 몇 가지 부품의 조합이다. 입력을 저울질하는 뉴런, 신호를 꺾는 활성함수, 층을 쌓는 은닉층, 틀린 정도를 재는 손실함수, 그리고 책임을 거꾸로 나눠 가중치를 고치는 역전파. 부품 하나하나를 직접 움직여 보고, 마지막에는 이 부품으로 실제 모델을 만들어 평가하고 배포하는 전체 흐름까지 따라간다.
y = 계단(w₁x₁ + w₂x₂ + b)Rosenblatt, 1958
과일 향과 식초 향이 함께 날 때, 뉴런은 두 신호를 각자 다른 세기로 받아 더한다. 합이 발화 문턱을 넘으면 "다가가라" 신호를 보낸다. 시냅스 강도가 가중치, 발화 문턱이 편향이다.
입력마다 가중치를 곱해 더하고 편향을 더한 값 z가 0 이상이면 1, 아니면 0을 낸다. 평면 위에서 보면 w₁x₁ + w₂x₂ + b = 0이라는 직선 하나가 "먹이"와 "먹이 아님"을 가른다. 틀린 점을 만날 때마다 그 점 쪽으로 직선을 조금 옮기는 것이 퍼셉트론의 학습 규칙이다.
퍼셉트론의 학습 규칙은 한 줄이다. 틀린 점 하나를 골라 w ← w + η·(정답 − 예측)·x. 정답이 1인데 0이라고 했으면 그 점 쪽으로 직선을 끌어당기고, 반대면 밀어낸다. 직선으로 나뉘는 문제라면 이 규칙만으로 언젠가 모든 점을 맞힌다.
XOR처럼 "둘 중 하나만 있을 때 먹이"인 문제는 어떤 직선으로도 나눌 수 없다. 1969년 Minsky와 Papert가 이 한계를 수학적으로 보인 뒤 신경망 연구는 한동안 침체했다. 해결책은 층을 하나 더 넣는 것, 바로 은닉층이다. 그 전에, 계단 대신 부드럽게 꺾이는 함수부터 보자.
활성함수는 가중합 z를 받아 뉴런의 출력 a를 정한다. 꺾이는 모양이 있어야 층을 쌓는 의미가 생기고, 기울기(미분) 모양이 학습 속도를 좌우한다.
역전파는 층을 거슬러 갈 때마다 활성함수의 기울기를 곱한다. 시그모이드의 기울기는 아무리 커도 0.25다. 10층을 거슬러 가면 많아야 0.25¹⁰ ≈ 0.00000095배로 줄어든다. 앞쪽 층에는 고치라는 신호가 거의 도착하지 않는다. 이것이 기울기 소실이다.
ReLU는 양수 구간의 기울기가 정확히 1이라 몇 층을 거슬러 가도 신호가 줄지 않고, 계산도 "0과 비교"뿐이라 빠르다. 대신 음수 구간에서는 기울기가 0이라 한번 꺼진 뉴런이 다시 살아나지 못할 수 있다. Leaky ReLU, ELU, Swish 같은 변형은 이 빈틈을 메우려는 시도다. 어느 함수가 늘 최고인 것은 아니고, 문제와 모델에 따라 고른다.
점(픽셀) → 방향 → 이음매 → 모양. 앞 층의 특징을 재료로 다음 층이 한 단계 더 큰 특징을 만든다.
앞 층의 특징 4개(0.8, 0.1, 0.4, 0.0)를 가중치(0.5, 0.3, 0.2, 0.1)로 저울질하고 편향 0.1을 더한다.
위 그림의 방향·이음매 탐지기는 설명을 위해 사람이 미리 정해 둔 규칙이다. 예전 머신러닝은 실제로 이렇게 사람이 특징을 설계했다. 딥러닝은 이 탐지기들의 가중치를 데이터에서 스스로 배운다. 그래서 사람이 생각하지 못한 특징도 찾아낸다.
이미지에서 실제로 어떤 특징이 층마다 생기는지는 3-3(이미지와 CNN)에서 본다.
학습은 손실을 줄이는 일이다. 무엇을 손실로 정하느냐에 따라 모델이 "무엇을 두려워할지"가 달라진다.
(정답 − 예측)². 숫자를 맞히는 회귀 문제의 기본이다. 집값, 가구지출, 기온처럼 연속된 값을 예측할 때 쓴다. 아래 역전파 대시보드가 이 손실을 쓴다.
−log(정답 쪽에 준 확률). 분류 문제의 기본이다. 확신하고 틀리면 벌점이 끝없이 커진다. 출력에 시그모이드나 소프트맥스를 쓸 때 짝을 이룬다.
출력에 시그모이드를 쓰면, MSE의 기울기는 2(p − t)·p(1 − p)가 된다. 정답이 1인데 p = 0.01로 확신하며 틀리면 p(1 − p)가 0에 가까워 기울기도 거의 0이다. 크게 틀렸는데 고치라는 신호가 약한 것이다. 교차 엔트로피를 쓰면 시그모이드의 미분이 깔끔하게 지워져 기울기가 그냥 p − t, 즉 −0.99가 된다. 많이 틀릴수록 세게 고친다.
입력 2 → 은닉 3 → 출력 1목표 1.00 · 손실 = (목표 − 출력)² · 학습률 0.1
입력이 연결을 따라 출력까지 계산된다. 처음 출력은 0.41.
(1.00 − 0.41)² ≈ 0.35. 위 섹션 5의 MSE다.
출력에서 거꾸로 가며 가중치마다 책임(기울기)을 계산한다.
새 가중치 = 기존 − 학습률 × 기울기. 이것이 경사하강이다.
가중치 칸을 누르면 그 연결이 그림에서 강조되고, 아래 "숫자로 따라가기"가 그 가중치의 계산을 보여 준다.
출력에서 틀린 양 −2 × (목표 − 출력)이 먼저 정해진다. 은닉→출력 가중치의 책임은 여기에 그 가중치로 들어온 신호(은닉 값)를 곱한 것이다. 입력→은닉 가중치는 한 칸 더 거슬러 간다. 출력 가중치 v를 곱해 은닉 뉴런까지 책임을 보내고, 은닉 뉴런이 얼마나 민감했는지 h(1 − h)를 곱하고, 들어온 입력 x를 곱한다. 이 "곱해서 거꾸로 보내기"가 연쇄 법칙이다. 섹션 2의 기울기 소실도 바로 이 곱셈에서 생긴다.
"출력 쪽만 (초파리 방식)"을 누르면 입력→은닉 가중치는 고정되고, 위에서 내려오는 가르침 신호(초파리의 도파민에 빗댐)가 출력 쪽 연결만 고친다. 초파리 버섯체의 학습 구조를 크게 줄인 비유이며, 도파민 신호가 기울기처럼 계산되는지는 아직 연구 중이다.
손실을 지형으로 그리면 학습은 가장 낮은 곳을 찾아 내려가는 일이다. 같은 기울기를 보고도 걸음을 어떻게 옮기느냐가 옵티마이저마다 다르다.
이 골짜기는 가로로 길고 세로로 가파르다. SGD는 기울기만큼만 움직이므로 가파른 세로 방향에서는 큰 걸음으로 위아래로 튀고(지그재그), 학습률이 작으면 완만한 가로 방향은 거북이걸음이다("0.1 작게"에서 확인). 모멘텀은 굴러온 속도를 기억해 꾸준한 방향(가로)으로 가속하고 지그재그는 서로 상쇄한다. Adam은 방향마다 기울기 크기를 따로 재서 걸음 폭을 맞추므로 가로·세로를 비슷한 속도로 내려간다.
"미니배치 잡음"은 실제 학습처럼 데이터 일부만 보고 기울기를 계산할 때 생기는 흔들림이다. 학습률을 "크게"로 하면 SGD는 골짜기 벽을 넘어 튕겨 나간다. 어떤 옵티마이저가 늘 이기지는 않는다. Adam은 대부분의 문제에서 무난한 기본값이라 많이 쓰이지만, 여러 딥러닝 과제에서 잘 조율한 SGD가 처음 보는 데이터에 더 잘 맞았다는 연구도 있다 [R12].
학습 점 14개 · 검증 점 80개입력 1 → 은닉 48 (tanh) → 출력 1, Adam
가장 확실한 처방은 데이터를 더 모으는 것이다. 데이터가 적은데 모델이 크면 외우기가 쉽다. 이 그림의 숫자는 이 페이지에서 직접 계산한 설명용 실험이라 실행할 때마다 똑같이 나오도록 난수를 고정해 두었다.
지금까지 본 부품은 학습 단계 하나에 들어간다. 실제 일은 그 앞뒤가 더 길다. 예시는 공장 검사대의 "불량품 찾기" 모델이다.
검사한 제품 200개 중 실제 불량은 20개. 모델은 제품마다 "불량일 확률"을 낸다. 몇 이상을 불량으로 판정할지(문턱)를 바꿔 보자.
두 코드 모두 Colab에 기본으로 설치된 라이브러리만 쓴다. "노트북(.ipynb) 내려받기" 후 Colab에서 파일 → 노트북 업로드로 열거나, 복사해서 새 노트북 칸에 붙여 넣는다.
순전파 → 손실 → 역전파 → 갱신 네 단계를 라이브러리 없이 그대로 옮겼다. 같은 나선 데이터를 "활성함수 없음"과 "tanh 은닉층"으로 학습해 비교한다. 내 데이터로 바꾸려면 코드 안의 [내 데이터로 바꾸려면] 표시 부분에서 X, y만 바꾼다.
실무에서 쓰는 방식이다. 활성함수 없음 / ReLU / ReLU + 드롭아웃 + 조기 종료 세 모델을 비교하고, 마지막 모델을 파일로 저장한다(섹션 9의 ⑥ 저장).
ChatGPT, Qwen, Claude 같은 AI 도우미에 붙여 넣는 프롬프트다. "복사"를 누르면 프롬프트 뒤에 고른 코드가 함께 붙는다. 〔 〕 안을 내 상황으로 바꿔 쓰면 된다.
AI의 답은 출발점일 뿐이다. 제안된 논문·수치·라이브러리 함수는 반드시 원문과 공식 문서로 확인한다. 공모전·논문에 AI 도움을 받았다면 주최 측과 학술지의 규정에 따라 사용 사실과 범위를 밝힌다.
본문의 노란 점선 밑줄과 같은 사전이다. 시리즈 전체에서 같은 표기를 쓴다. 섹션 이름을 누르면 처음 나온 곳으로 간다.
비유는 이해의 첫걸음이지만 오해의 씨앗도 된다. 초파리·뇌 비유에는 강도를 표시했다. 직접 실제로 같은 일을 한다는 근거가 있음 · 부분 일부 성질만 닮음 · 없음 대응하는 것이 알려지지 않음
| 개념 | 일상 비유 | 초파리·뇌 비유 | 비유가 틀리는 지점 |
|---|---|---|---|
| 가중치 | 의견마다 다르게 주는 신뢰도 | 부분 시냅스 강도 | 실제 시냅스는 시간과 몸 상태에 따라 세기가 바뀌고, 신호도 연속된 숫자가 아니라 전기 펄스(스파이크)다 |
| 편향·문턱 | 결정을 내리는 기준선 | 부분 뉴런의 발화 문턱 | 뉴런의 문턱은 고정값이 아니라 피로·적응으로 계속 변한다 |
| 활성함수 | 아무리 돌려도 한계가 있는 볼륨 손잡이 | 부분 자극 세기에 따른 발화 빈도 곡선 | 신경망은 숫자 하나를 내지만 뉴런은 시간에 따라 펄스를 낸다 |
| 은닉층 | 보고를 모아 정리하는 중간 관리자 | 부분 버섯체의 케니언 세포 | 버섯체의 입력 쪽 연결은 대부분 학습으로 바뀌지 않는다. 딥러닝의 은닉층은 모든 연결을 학습한다 |
| 손실함수 | 시험 채점표 | 부분 설탕(보상)·전기충격(처벌)이라는 결과 | 초파리는 "얼마나 틀렸는지"를 숫자 하나로 계산하지 않는다 |
| 역전파 | 사고 뒤 책임을 거꾸로 따져 묻기 | 없음 도파민 신호는 층을 거슬러 계산되지 않는다 | 뇌가 역전파와 비슷한 일을 다른 방법으로 하는지는 연구 중이다 |
| 학습률 | 한 번 지적받고 고치는 폭 | 부분 한 번의 경험으로 변하는 시냅스 양 | 뇌의 변화 폭은 상황·주의·반복에 따라 달라진다 |
| 옵티마이저 | 안개 낀 산을 내려가는 등산객의 걸음걸이 | 없음 | 실제 손실 지형은 수백만 차원이라 그림처럼 한눈에 보이지 않는다 |
| 과적합 | 기출문제 답만 외운 수험생 | 없음 | 사람도 외우기는 하지만, 사람의 일반화 방식은 신경망과 다르다 |
| 드롭아웃 | 몇 명이 빠져도 돌아가는 팀 | 없음 시냅스 전달이 가끔 실패하는 것과 닮았다는 해석은 있으나 근거는 약하다 | 시험 때는 모든 뉴런을 켜고 쓴다. 팀원이 늘 빠져 있는 것이 아니다 |
E-1 저자 소개 · E-2 학술 레퍼런스 · E-3 그림 참고 자료
아래 자료를 구성과 내용의 참고로 삼았다.
강사, 실무 OJT 담당자, 튜터를 위한 운영 안내다. 시간은 예상치이므로 실제 수업에 맞춰 조정한다.
| 대상 | 신경망을 처음 배우는 대학생·직장인. 파이썬 기초가 있으면 Colab 실습까지, 없으면 본문 애니메이션까지 |
|---|---|
| 선수 지식 | 곱셈과 덧셈, 함수 그래프 읽기. 미분은 "기울기 = 조금 바꿨을 때 얼마나 변하나" 정도면 충분 |
| 학습 목표 | ① 퍼셉트론·활성함수·은닉층이 각각 무엇을 하는지 설명한다 ② 순전파 → 손실 → 역전파 → 갱신을 숫자로 따라간다 ③ 과적합을 알아보고 검증 데이터·조기 종료·드롭아웃으로 대응한다 |
| 예상 시간 | 읽기 40~50분 · 애니메이션 시연 25분 · Colab 실습 30분 (코드 1 10분, 코드 2 20분) |
도입 5분(섹션 1 XOR 실패 시연) → 섹션 2·3 시연 15분 → 섹션 5·6 대시보드 15분 → 섹션 8 과적합 10분 → 확인 문제 5분.
섹션 6 대시보드 15분 → 섹션 8·9 25분(정확도의 함정을 업무 사례로 토론) → 코드 2 실습 30분 → 프롬프트 카드로 "우리 팀 데이터에 적용" 20분.
입문자는 섹션 1·2·3·6만, 중급자는 섹션 6의 "숫자로 따라가기"를 손으로 한 번 계산하게 한 뒤 코드 1의 역전파 부분과 대조시킨다.
| 섹션 | 멈춰서 물어볼 질문 | 조작 팁 |
|---|---|---|
| 1 퍼셉트론 | "XOR에서 직선을 아무리 옮겨도 왜 틀린 점이 남을까?" | 쉬운 문제를 먼저 학습시켜 성공을 본 뒤 XOR로 바꾼다 |
| 2 활성함수 | "시그모이드 기울기의 최댓값은 어디서, 얼마인가?" | 시그모이드에서 정지한 뒤 슬라이더를 0으로 옮겨 0.25를 확인한다 |
| 3 은닉층 | "층을 두 개 쌓았는데 왜 왼쪽은 여전히 직선일까?" | 뉴런 수를 4로 줄여 오른쪽도 실패하는 모습을 보여 준다 |
| 4 표현 학습 | "□는 왜 모서리 4개로 판단될까? 사람이라면 무엇을 볼까?" | T와 L을 번갈아 눌러 이음매 층만 달라지는 것을 짚는다 |
| 5 손실함수 | "확신하고 틀렸을 때 어느 손실이 더 세게 고치라고 할까?" | p를 0.01로 두고 두 기울기 숫자를 비교한다 |
| 6 역전파 | "출력에 가까운 가중치와 먼 가중치 중 누구의 기울기가 클까?" | "다음 단계"로 한 바퀴를 천천히 돌린 뒤 가중치 칸을 바꿔 가며 식을 읽는다 |
| 7 옵티마이저 | "SGD는 왜 지그재그로 갈까?" | 학습률을 "크게"로 바꿔 SGD가 튕겨 나가는 장면을 보여 준다 |
| 8 과적합 | "학습 손실이 계속 줄면 좋은 모델일까?" | 규제를 모두 끄고 끝까지 돌린 뒤, 하나씩 켜서 비교한다 |
| 9 전체 흐름 | "불량품 검사에서 놓치는 것과 헛경보 중 무엇이 더 비쌀까?" | 문턱을 0.2와 0.8로 옮겨 정밀도·재현율이 반대로 움직이는 것을 본다 |
| 오해 | 바른 설명 | 보여 줄 장면 |
|---|---|---|
| 층을 많이 쌓으면 무조건 똑똑해진다 | 활성함수가 없으면 몇 층이든 직선 하나와 같다. 있어도 데이터가 적으면 과적합한다 | 섹션 3 왼쪽 그림, 섹션 8 |
| 신경망은 뇌를 그대로 베꼈다 | 층·연결 강도·문턱이라는 뼈대만 빌렸다. 역전파는 뇌에서 확인되지 않았다 | 공통 섹션 D의 "없음" 표시 |
| 학습 손실이 낮으면 좋은 모델이다 | 처음 보는 데이터(검증·시험)의 성능이 기준이다 | 섹션 8 오른쪽 그래프 |
| 정확도가 높으면 좋은 모델이다 | 불균형 데이터에서는 "전부 정상"도 정확도가 높다. 정밀도·재현율을 함께 본다 | 섹션 9 문턱 0.95 |
| Adam이 언제나 최고다 | 무난한 기본값일 뿐이다. 문제에 따라 SGD + 모멘텀이 낫기도 하다 | 섹션 7 학습률 "작게" |
직선(고차원에서는 평면) 하나뿐이다. 선형 변환을 여러 번 합쳐도 선형 변환 하나가 되기 때문이다(W₂W₁x = Wx). 섹션 3의 왼쪽 그림이 그 예다.
시그모이드의 기울기는 최대 0.25라서 층마다 곱해지며 빠르게 작아진다. ReLU는 양수 구간의 기울기가 1이라 거슬러 가도 줄지 않는다. 단, 음수 구간에서는 0이라 꺼진 뉴런이 생길 수 있다.
L = (1 − 0.41)² = 0.3481 ≈ 0.35. ∂L/∂y = −2 × (1 − 0.41) = −1.18. 섹션 6 대시보드의 첫 바퀴 값과 같다.
과적합이다. 검증 손실이 가장 낮았던 시점의 모델을 쓰고(조기 종료), 드롭아웃·가중치 감쇠를 켜거나 데이터를 늘린다.
정확도 90%, 재현율 0%. 불량을 하나도 찾지 못했다. 그래서 불균형 데이터에서는 정확도만 보면 안 된다.
코드 1에서 tanh를 ReLU로 바꾼다(활성함수와 그 미분 두 줄). 은닉 뉴런 수를 4, 16, 64로 바꿔 검증 정확도를 표로 정리하고, 가장 좋은 설정과 그 이유를 세 문장으로 쓴다.
코드 2의 데이터를 내 업무 데이터(특징 2개 이상, 정답 0/1)로 바꾼다. 학습/검증/시험을 6:2:2로 나누고, 시험 데이터의 정확도·정밀도·재현율을 보고한다. 문턱 0.5가 업무에 맞는지 근거를 들어 판단한다.
| 입문자 | 섹션 4·7은 건너뛰어도 흐름이 끊기지 않는다. 섹션 6은 "다음 단계" 버튼으로 한 바퀴만 같이 본다 |
|---|---|
| 심화 | 섹션 6의 "숫자로 따라가기"를 손으로 계산하게 한 뒤, 코드 1의 d1·d2·d3 줄과 하나씩 대응시킨다. 섹션 7에 학습률 감소(스케줄)를 더하면 어떻게 될지 토론한다 |
| 더 배우기 | 안상선, 「비즈니스를 위한 데이터 과학」 강의안 (데이터 과학 전반) · STEP [K-디지털] 인공지능 자연어 처리 (3-5·3-8과 연결) · STEP [K-디지털] 핀테크 데이터 분석 기초 (3-6과 연결) |
| 강사용 자료 | 확인 문제의 채점 기준과 과제 예시 답안은 교육자용 정답 페이지 (3-2)에서 볼 수 있다 |
「3-2 신경망의 부품」 편을 끝까지 읽었어요. 연구실 식구들이 한마디씩 정리해 드립니다.