
요즘은 코드 세 줄이면 분류 AI가 돌아갑니다. model.fit() 한 줄이면 학습 끝이죠. 그런데 이런 순간이 반드시 옵니다. 😰 "정확도가 50%에서 안 올라가요." "손실이 nan이 됐어요." "학습률을 바꿨더니 폭발했어요."
라면 봉지 뒷면의 레시피만 따라도 맛있는 라면은 나오지만, 물이 넘치거나 면이 불었을 때 왜 그런지는 알려 주지 않습니다. 01권의 첫 글에서는 AI에 왜 수학이 필요한지, 어떤 순서로 공부하면 되는지 정리하고, 00권 여섯 장을 20줄 코드로 다시 맛봅니다.
📘 이 글은 위키독스 도서 Zero to 머신러닝 딥러닝 Master 의 01-01 왜 수학인가? — 요리를 배울 것인가? 라면만 끓이다 갈 것인가! 을 블로그용으로 다듬은 글입니다.
💻 실습 코드: GitHub · 🏠 mldict.net · ✍️ 기술 블로그
💻 이 글의 코드:
01-01-why-math· Open in Colab — 핵심 코드와 실제 실행 결과는 글 아래 💻 GitHub 실습 섹션에 있습니다.
⬅️ 이전 글: #10 SVD 추천 시스템부터 미니 신경망(XOR)까지 — 수포자 수학 6개 장 총정리 (2부) \
➡️ 다음 글: #12 머신러닝 수식 읽는 법 — 그리스 문자·수학 기호 사전과 읽기 규칙 10가지 (ML 공식 100선, 1부)
model.fit()은 라면 끓이기입니다. 훌륭한 시작이지만, 문제가 생겼을 때 진단하려면 원리를 알아야 합니다.📐 입문 기초 수학
수학이 두렵다고요? 괜찮아요! 이 챕터는 덧셈·뺄셈부터 시작해서
머신러닝에 꼭 필요한 수학까지 차근차근 안내합니다.
그리스 문자부터
벡터·
행렬·
미분·
적분·
통계까지 —
*인공지능을 위한 기초수학*(이상구·이재화) 교재와 함께 학습합니다.
전 13챕터 · 완전 입문
✏️ 꼭 알아야 할 TIP
🎯 이 책의 목표: 여러분을 수학자로 만드는 것이 아닙니다. AI 코드를 읽다가 만나는 수식 앞에서 "아, 이건 내적이구나"라고 알아보게 만드는 것입니다.
🍜 한 줄 비유:
model.fit()한 줄로 AI를 돌리는 것은 라면 끓이기입니다. 훌륭한 시작이죠. 하지만 면이 불었을 때 왜 그런지 알려면 조금 더 알아야 합니다.🔑 이 책 전체를 관통하는 한 가지 습관:
모든 장에서 손으로 유도한 식을 코드로 옮기고, 그 결과가 맞는지 확인합니다. 이 사이클이 몸에 배면 어떤 논문도 두렵지 않습니다.
⏱️ 필요한 것: 초등학교 수준의 사칙연산과 파이썬을 설치할 의지. 그게 전부입니다.
🚗 학습 순서: 운전 → 계기판 읽기 → 보닛 열기 → 정비. 처음부터 엔진을 뜯지 않습니다. 2단계에서 자세히 안내합니다.
📋 선행지식 (Prerequisites)
- ➕ 사칙연산(더하기·빼기·곱하기·나누기) — 정말로 이것만 있으면 됩니다
- 🔢 괄호와 분수를 읽을 수 있는 정도 — 예: ,
- 💻 컴퓨터에 프로그램을 설치해본 경험 — 없어도 4단계에서 처음부터 안내합니다
- 🚫 필요 없는 것: 고등학교 미적분, 대학 선형대수, 프로그래밍 경력
💬 ※ "수포자였다"는 분들을 기준으로 쓰인 책입니다. 모르는 기호가 나오면 그 자리에서 바로 설명합니다.
🎯 학습 목표
☐ 🍜 AI를 배우는 데 왜 수학이 필요한지 라면과 요리의 비유로 설명할 수 있다 🟢 초급
☐ 🚗 운전 → 정비의 4단계 학습 로드맵에서 자신의 현재 위치를 말할 수 있다 🟢 초급
☐ 🗺️ 여섯 개 장이 각각 무엇을 다루고 어떻게 이어지는지 설명할 수 있다 🟢 초급 ⭐
☐ 🛠️ 파이썬과 NumPy 환경을 설치하고 정상 동작을 확인할 수 있다 🟢 초급
☐ 🔬 이 책의 핵심 습관인 "수식 → 코드 → 검증" 사이클을 직접 한 번 돌려볼 수 있다 🔵 중급 ⭐
☐ 🎬 여섯 장의 내용을 20줄짜리 코드 한 편으로 미리 맛보고, 각 줄이 어느 장 내용인지 짚을 수 있다 🔵 중급 🚀
📊 핵심 학습 내용
| 단계 | 학습 내용 | 핵심 질문 | 결과 |
|---|---|---|---|
| 1️⃣ | 🍜 라면과 요리 | 왜 수학이 필요한가? | 배움의 동기가 생긴다 |
| 2️⃣ | 🚗 운전에서 정비까지 | 어떻게 공부할 것인가? | 4단계 로드맵을 얻는다 |
| 3️⃣ | 🗺️ 여섯 개의 재료 | 무엇을 배우게 되는가? | 전체 지도를 갖는다 |
| 4️⃣ | 🛠️ 부엌 차리기 | 무엇을 준비하는가? | 파이썬·NumPy가 돌아간다 |
| 5️⃣ | 🎬 20줄 맛보기 | 수식이 코드가 되는가? | 여섯 장을 미리 체험한다 |
🔎 ① 핵심 질문 — 라이브러리만 쓰면 안 되나요?\
요즘은 코드 세 줄이면 이미지 분류 AI가 돌아갑니다.
🐍 Python — "라면 끓이기" 수준의 코드
from sklearn.linear_model import LogisticRegression
model = LogisticRegression() # 모델 준비
model.fit(X_train, y_train) # 학습 — 이 한 줄이 전부!
print(model.score(X_test, y_test)) # 정확도 확인
🔗 GitHub에서 코드 보기 — 01_01_why_math.py L12–L16
이것만으로도 대단합니다. 진심으로요. 😊 그런데 이런 순간이 반드시 옵니다.
nan이 됐어요. nan이 뭐죠?"이 질문들에 답하려면 레시피 뒷면에 없는 것을 알아야 합니다.
💜 더 쉽게 이해하기 — 🍜 라면과 요리
라면 봉지 뒷면에는 이렇게 쓰여 있습니다.\
"물 550ml를 끓인 후 면과 스프를 넣고 4분 30초간 더 끓입니다." 🍜이 레시피만 따라도 맛있는 라면이 나옵니다. 훌륭하죠. 그런데 이런 일들이 생깁니다.
🌊 물이 넘쳤다 → 왜 넘치지? 불을 줄여야 하나, 뚜껑을 열어야 하나?\
🍝 면이 불었다 → 4분 30초를 지켰는데 왜?\
🥚 계란을 넣고 싶다 → 언제 넣어야 하지? 처음? 마지막?\
👥 3인분을 끓여야 한다 → 물도 3배? 시간도 3배?레시피에는 "물 550ml"만 있지, "왜 550ml인지"는 없습니다. 하지만 "면이 물을 흡수해 전분이 풀리는 데 필요한 양"이라는 원리를 알면, 3인분일 때 물을 정확히 얼마 넣을지 스스로 판단할 수 있습니다. 🧠
요리를 할 줄 아는 사람은 레시피가 없어도 냉장고 속 재료로 새 음식을 만듭니다. 👨🍳 그 차이가 이 책이 채우려는 간격입니다.
📖 비유를 AI에 그대로 대입하면
| 단계 | 🍜 라면 / 요리에서 | 🤖 AI에서 | 필요한 지식 |
|---|---|---|---|
| ① 레시피 따라하기 | 물 550ml, 4분 30초 | model.fit() 호출 | 없음 (튜토리얼만) |
| ② 미세 조정 | "면발 꼬들하게" 30초 덜 끓임 | 학습률·에폭 수 조정 | 🌫️ 미분 (00-04) |
| ③ 문제 진단 | 물이 넘치는 원인을 앎 | 손실이 nan인 이유를 앎 | 🏥 확률·수치안정성 (00-05) |
| ④ 재료 이해 | 계란을 언제 넣을지 앎 | 층·활성화 함수 선택 | 📋 행렬 (00-02) |
| ⑤ 새 요리 창작 | 레시피 없이 요리함 | 논문 구현·손실 함수 설계 | 🎒 여섯 장 전부 |
⚠️ 오해하지 마세요 — "라면은 나쁘다"는 말이 절대 아닙니다.\
바쁜 날엔 저도 라면을 끓입니다. 🍜 실무에서도 대부분의 시간은 라이브러리를 씁니다. 매번 신경망을 NumPy로 짜는 사람은 없습니다.\
\
핵심은 "라면만 끓일 줄 아는 사람"과 "요리도 할 줄 아는데 오늘은 라면을 끓이는 사람"의 차이입니다. 평소엔 똑같아 보이지만, 문제가 생겼을 때 완전히 달라집니다. 🔧
💡 직관적 의미\
수학은 AI의 "성분표"이자 "조리 원리"입니다. 몰라도 먹을 수는 있지만, 알면 맛을 조절할 수 있습니다. 그리고 이 책이 다루는 여섯 가지는 소금·설탕·불 조절 수준의 가장 기초적인 재료일 뿐입니다. 미슐랭 셰프가 될 필요는 없습니다. 😊
🛠️ 실습 1 🟢 — 종이와 펜만 있으면 됩니다
① 최근에 AI/코딩을 하다가 "왜 이렇게 되지?"라고 막혔던 순간을 하나 적어보세요.\
② 그것이 위 표의 ①~⑤ 중 어느 단계의 문제였는지 표시해보세요.\
③ 그 단계에 필요한 장(00-02, 00-04, 00-05 …)을 확인하고, 책갈피를 꽂아두세요. 📑\
→ 이 책을 다 읽은 뒤 그 문제로 돌아오면, 답이 보일 것입니다.
🔎 ① 핵심 질문 — 어디서부터 시작해야 하나요?\
수학책을 펴자마자 1페이지부터 순서대로 읽으려다 3일 만에 포기한 경험, 있으신가요? 😅 그건 여러분 잘못이 아닙니다. 순서가 틀렸기 때문입니다.
💜 더 쉽게 이해하기 — 🚗 아무도 엔진부터 배우지 않는다
운전을 배울 때를 떠올려보세요. 운전학원에서 첫날부터 엔진 실린더의 압축비를 가르치던가요? 🔧
아닙니다. 핸들 잡는 법, 브레이크 밟는 법부터 배웁니다. 자동차가 어떻게 굴러가는지 몰라도 운전은 할 수 있으니까요. 🚙
그런데 운전을 오래 하다 보면 자연스럽게 더 알고 싶어집니다.\
🔴 "이 경고등은 무슨 뜻이지?" → 계기판을 배우게 되고\
🔊 "이상한 소리가 나는데?" → 보닛을 열어보게 되고\
⚡ "출력을 더 올리고 싶은데?" → 정비와 튜닝을 배우게 됩니다수학도 똑같습니다. AI를 먼저 굴려보고, 궁금해질 때 그 부분의 원리를 배우는 것 — 그게 가장 빠른 길입니다. 이 책은 그 순서로 쓰였습니다. 🛣️
🔢 진행 과정 — 4단계 학습 로드맵

📖 각 단계에서 실제로 무엇을 하나
| 단계 | 🚗 자동차에서 | 🤖 AI에서 | 대응 장 |
|---|---|---|---|
| 🚙 ① 운전 | 핸들·페달 조작 목적지까지 감 | 데이터를 숫자로 정리하고 모델에 넣어 돌려봄 | 00-01 벡터 00-02 행렬 |
| 🔴 ② 계기판 | 경고등이 뜨면 무슨 문제인지 앎 | 손실이 안 줄면 학습률, nan이면 발산을 의심 | 00-03 최소제곱 00-04 미분 |
| 🔍 ③ 보닛 | 엔진·변속기 구조 부품의 역할을 앎 | 소프트맥스·역전파를 직접 구현해봄 | 00-05 확률 00-06 SVD·종합 |
| 🔧 ④ 정비 | 부품 교체·튜닝 내 차를 개조 | 새 아키텍처 설계 논문 구현·LoRA | 이후 권 (DeZero·PyTorch) |
🧭 지금 내 위치는? — 자가 진단
☐ 튜토리얼을 따라 치면 돌아가지만, 값을 바꾸면 무서워진다 → ①에서 ②로 가는 중\
☐ 하이퍼파라미터를 감으로 바꿔가며 실험한다 → ② 단계, 00-04가 큰 도움이 됩니다\
☐ 에러 메시지는 읽지만 왜 그런지는 모른다 → ②~③, 00-05의 수치 안정성 파트 추천\
☐ 논문의 수식을 보면 코드로 옮길 자신이 없다 → ③, 이 책 전체가 그 훈련입니다\
☐ 위 어느 것도 해당 없고 아직 아무것도 안 해봤다 → 완벽합니다! ①부터 편하게 시작하세요 😊
🍜 두 비유가 만나는 지점
라면 비유는 "왜"를, 자동차 비유는 "어떻게"를 말합니다.
🍜 왜 배우나? — 레시피만으로는 물이 넘칠 때 대처할 수 없으니까\
🚗 어떻게 배우나? — 엔진부터가 아니라 운전부터, 궁금해질 때 한 겹씩그래서 이 책은 "장바구니(00-01) → 성적표(00-02) → 영수증(00-03) → 등산(00-04) → 병원 검사(00-05) → 책 요약(00-06)"처럼 이미 아는 일상에서 출발합니다. 새 지식을 넣는 게 아니라, 이미 하고 있던 생각에 이름표를 붙이는 것입니다. 🏷️
🛠️ 실습 2 🟢
① 위 자가 진단에서 자신의 위치를 하나 골라보세요.\
② 그 단계에 해당하는 장을 먼저 읽어도 됩니다. 이 책은 순서대로 읽는 것을 권하지만, 급한 불부터 끄는 것도 좋은 전략입니다. 🔥\
③ 하루에 한 단계씩, 6일이면 완주할 수 있는 분량입니다. 캘린더에 표시해보세요. 📅
🐞 공부하다 흔히 빠지는 함정
❌ 함정 ① "수학을 다 끝내고 코딩하자"\
왜 실패하나? 수학은 끝이 없습니다. 그리고 쓸 일이 없는 지식은 반드시 잊힙니다. 수정: 한 개념을 배우면 그날 바로 코드로 돌려보세요. 이 책의 모든 장이 그렇게 구성되어 있습니다.❌ 함정 ② 증명을 전부 이해하려 함\
왜 실패하나? 엔진 설계도를 다 읽어야 운전할 수 있는 건 아닙니다. 수정: "이 식이 무엇을 계산하는가"를 먼저 잡고, 증명은 필요할 때 돌아오세요. 이 책은 유도를 보여주되 외우라고 하지 않습니다.❌ 함정 ③ 눈으로만 읽기\
왜 실패하나? 요리책을 읽는다고 요리 실력이 늘지 않습니다. 🍳 수정: 코드를 직접 타이핑하고, 숫자를 바꿔가며 실행하세요. "학습률을 10배로 하면?"을 직접 해보는 5분이 설명 10페이지보다 낫습니다.❌ 함정 ④ 막히면 자책하기\
왜 실패하나? 처음 보는 기호에 막히는 건 당연합니다. , , — 전부 그냥 약속된 줄임말일 뿐입니다. 수정: 이 책은 기호가 나올 때마다 변수 정의를 붙여둡니다. 막히면 그 박스로 돌아오세요. 📦
🔎 ① 핵심 질문 — 무엇을 배우게 되나요?\
AI를 요리에 비유하면, 이 책은 여섯 가지 기본 재료를 다룹니다. 각각이 일상의 한 장면에서 출발하고, 마지막에 전부 합쳐 신경망 하나를 만듭니다. 🍳
💜 더 쉽게 이해하기 — 🧺 장바구니에서 신경망까지
🛒 00-01 마트에서 사과 3개, 바나나 2개를 샀습니다 → 벡터\
📋 00-02 반 전체의 과목별 성적표를 만듭니다 → 행렬\
🧾 00-03 영수증 두 장으로 사과와 바나나 가격을 역추적합니다 → 연립방정식\
🌫️ 00-04 안개 낀 산에서 발밑 경사만으로 내려옵니다 → 미분\
🏥 00-05 정확도 99% 검사에서 양성인데 실제 환자일 확률은 2% → 확률\
📚 00-06 300페이지 소설을 3페이지로 요약합니다 → SVD·PCA🤖 그리고 00-06의 마지막에서, 이 여섯 가지를 전부 써서 NumPy만으로 신경망을 만들어 학습시킵니다. 흩어진 조각이 하나의 그림이 되는 순간이죠. 🧩✨
🗺️ 시각화 ② — 여섯 장이 이어지는 흐름

📖 각 장의 핵심 수식과 코드 한 줄\
지금은 이해할 필요가 전혀 없습니다. 😊 다만 "수식 하나가 코드 한 줄이 된다"는 감각만 눈에 담아두세요.
| 장 | 일상 비유 | 핵심 수식 | 코드 한 줄 |
|---|---|---|---|
| 🛒 00-01 | 장바구니 | a @ b | |
| 📋 00-02 | 성적표 | A @ B | |
| 🧾 00-03 | 영수증 | np.linalg.lstsq(A, b) | |
| 🌫️ 00-04 | 안개 산 | x -= lr * df(x) | |
| 🏥 00-05 | 병원 검사 | np.exp(z)/np.exp(z).sum() | |
| 📚 00-06 | 책 요약 | np.linalg.svd(A) |
🔗 장들이 서로를 어떻게 부르는가
이 여섯 장은 독립된 여섯 과목이 아닙니다. 뒤 장이 앞 장을 계속 불러 씁니다.\
\
• 00-02 행렬 곱셈은 사실 00-01 내적의 반복입니다\
• 00-03 정규방정식은 00-02의 전치·역행렬로 만들어집니다\
• 00-04 경사하강법은 00-03과 같은 답에 다른 길로 도착합니다\
• 00-05 손실의 기울기 는 00-03의 잔차와 형태가 같습니다\
• 00-06 PCA는 00-03의 와 같은 구조를 고유값 분해한 것입니다\
• 그리고 마지막 신경망은 이 여섯을 한 바퀴 안에서 전부 씁니다\
\
📌 그래서 본문에는 🔗 표시가 자주 나옵니다. "이건 00-01에서 배운 그거예요"라는 신호입니다. 앞 장이 기억나지 않으면 그때 돌아가면 됩니다. 😊
🔎 ① 무엇이 필요한가?\
요리를 하려면 냄비와 불이 필요하듯, 우리에게는 파이썬(불)과 NumPy(냄비)가 필요합니다. 딱 두 개면 이 책 전체를 따라올 수 있습니다. 🍳
❓ NumPy가 왜 필요한가?\
파이썬 기본 리스트로도 계산은 됩니다. 그런데 느립니다. 🐢 NumPy는 같은 종류의 숫자를 메모리에 빽빽하게 붙여 저장하고 C로 컴파일된 코드로 한 번에 처리하기 때문에, 수백만 개도 순식간에 계산합니다. 🚄 (00-01 심화에서 실제로 100배 차이를 측정해봅니다.)
🔢 진행 과정 — 세 갈래 중 하나만 고르세요
| 방법 | 설치 | 추천 대상 |
|---|---|---|
| 🌐 Google Colab | 불필요 — 브라우저만 있으면 됨 | ⭐ 처음이라면 이것! 설치 실패 걱정 없음 |
| 🐍 Anaconda | 설치 프로그램 하나로 전부 | 내 컴퓨터에서 계속 쓸 사람 |
| ⌨️ pip | pip install numpy | 이미 파이썬이 깔려 있는 사람 |
💻 코드 구현 — 부엌이 제대로 차려졌는지 확인\
아래 코드를 그대로 복사해 실행해보세요. 오류 없이 끝까지 출력되면 준비 완료입니다. ✅
🐍 Python — 환경 점검 스크립트
import sys
import numpy as np # 관례적으로 np라는 짧은 별칭을 씁니다
print("파이썬 버전:", sys.version.split()[0])
print("NumPy 버전 :", np.__version__)
# 첫 벡터를 만들어봅니다 (00-01에서 자세히 배웁니다)
v = np.array([3.0, 4.0])
print("\n첫 벡터 :", v)
print("모양 :", v.shape) # (2,) → 숫자가 2개인 1차원
print("자료형 :", v.dtype) # float64 (실수)
print("길이(노름):", np.linalg.norm(v)) # √(3²+4²) = 5.0
print("\n✅ 여기까지 출력되면 준비 완료입니다!")
🔗 GitHub에서 코드 보기 — 01_01_why_math.py L20–L34
📘 코드 이해 — 한 줄씩
| 코드 | 하는 일 |
|---|---|
import numpy as np | NumPy를 불러오고 np라는 별명을 붙임 — 전 세계 공통 관례 |
np.array([3.0, 4.0]) | 파이썬 리스트를 계산 가능한 배열로 변환 |
v.shape | 모양을 튜플로 반환 — (2,)는 "1차원이고 원소 2개" |
v.dtype | 담긴 숫자의 자료형 — 3.0처럼 점을 찍었으니 float64 |
np.linalg.norm(v) | 벡터의 길이 — 00-01에서 배울 내용 미리보기 |
🧩 코드 설명 — Python 기초
•
import ... as ...— 라이브러리를 불러오며 짧은 별명을 붙입니다.np는 전 세계가 쓰는 관례라 다른 이름은 쓰지 마세요.\
\
•.(점) 문법 —np.array는 "np라는 도구상자 안의 array라는 도구"라는 뜻입니다.np.linalg.norm은 "np → linalg(선형대수) 서랍 → norm 도구"입니다. 🧰\
\
•3.0vs3⚠️ — 점을 찍으면 실수, 안 찍으면 정수입니다. 이 차이가 나중에 계산 결과를 조용히 망가뜨리는 흔한 버그의 원인입니다. 수치 계산에서는 점을 찍는 습관을 들이세요.\
\
•\n— 줄바꿈 문자입니다. 출력을 보기 좋게 나눌 때 씁니다.\
\
•(2,)의 쉼표 — 파이썬에서 원소가 하나인 튜플은(2,)로 써야 숫자(2)와 구분됩니다.
✅🟩 실행 결과 (버전 숫자는 환경마다 다릅니다)
파이썬 버전: 3.12.3
NumPy 버전 : 2.4.4
첫 벡터 : [3. 4.]
모양 : (2,)
자료형 : float64
길이(노름): 5.0
✅ 여기까지 출력되면 준비 완료입니다!
🎉 축하합니다! 방금 첫 벡터를 만들고 그 길이까지 구했습니다. — 중학교 때 배운 피타고라스 정리가 그대로 쓰인 것입니다. 📐 여러분은 이미 이 책의 첫 수학을 사용했습니다. 😊
🐞 설치가 안 될 때 — 증상별 처방
| 에러 메시지 | 원인과 해결 |
|---|---|
ModuleNotFoundError: numpy | NumPy 미설치 → pip install numpy 실행 |
SyntaxError | 오타 — 괄호·따옴표 짝이 맞는지 확인 |
IndentationError | 들여쓰기 문제 — 파이썬은 공백이 문법입니다. 스페이스 4칸으로 통일 |
'python' is not recognized | 경로 문제 → Google Colab으로 갈아타는 것이 가장 빠릅니다 🌐 |
💬 중요: 설치에서 30분 이상 막히면 고민하지 말고 Colab을 쓰세요. 이 책의 목표는 설치 전문가가 되는 게 아니라 수학을 이해하는 것입니다. 🎯
🔎 ① 이 절의 목적\
지금부터 나올 코드는 이해하지 않아도 됩니다. 목적은 딱 하나입니다 — "수학 공식이 파이썬 한 줄로 바뀌는 순간"을 직접 실행해서 눈으로 보는 것. 🔬
여섯 장의 핵심을 각각 두세 줄씩만 뽑았습니다. 지금은 "아, 이런 걸 배우겠구나" 정도면 충분합니다. 이 책을 다 읽고 다시 돌아오면 전부 읽힐 것입니다. 📖
💜 더 쉽게 이해하기 — 🍽️ 코스 요리의 애피타이저
레스토랑에서 여섯 코스가 나온다면, 셰프는 종종 한 접시에 여섯 가지를 조금씩 담은 애피타이저를 먼저 내옵니다. 🍽️
배를 채우려는 게 아니라 "오늘 이런 맛들이 나옵니다"를 미리 알려주기 위해서죠. 아래 코드가 정확히 그 애피타이저입니다. 한 입씩만 맛보세요. 😋
🔬 수학공식 ① — 여섯 장의 핵심 식을 한자리에
🛒 00-01 벡터 — 같은 자리끼리 곱해서 더하기 (총액 계산)
📋 00-02 행렬 — 행과 열을 짝지어 내적 (여러 계산을 한 번에)
🧾 00-03 최소제곱 — 완벽한 답이 없을 때 오차가 최소인 답
🌫️ 00-04 경사하강법 — 기울기 반대로 한 걸음씩
🏥 00-05 소프트맥스 — 아무 숫자를 합이 1인 확률로
📚 00-06 SVD — 어떤 행렬이든 세 조각으로 분해
기호 안내 (지금 외울 필요 없습니다 😊)\
• — "전부 더하라"는 뜻의 줄임말 (시그마)\
• — 내적 (00-01에서 배웁니다)\
• — 전치, 행과 열을 맞바꿈 (00-02)\
• — 미분, 순간 기울기 (00-04)\
• — 학습률, 한 걸음의 보폭 (00-04)
💻 코드 구현 — 위 여섯 식을 그대로 파이썬으로
🐍 Python — 여섯 장 맛보기 (그대로 복사해 실행해보세요)
import numpy as np
np.set_printoptions(suppress=True) # 지수 표기 끄기 (보기 편하게)
# ═══ 🛒 00-01 벡터: 장바구니 총액 = 내적 ═══
# 수식: a·b = Σ aᵢbᵢ
basket = np.array([3, 2, 1]) # 사과3, 바나나2, 우유1
price = np.array([2000, 1500, 3000]) # 각 단가
print("00-01 총액:", basket @ price, "원") # @ 가 내적!
# ═══ 📋 00-02 행렬: 행과 열을 짝지어 곱하기 ═══
# 수식: Cᵢⱼ = Σₖ AᵢₖBₖⱼ
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print("00-02 행렬곱:\n", A @ B) # 같은 @ 기호를 행렬에!
# ═══ 🧾 00-03 최소제곱: 점 3개에 가장 가까운 직선 ═══
# 수식: x̂ = (AᵀA)⁻¹Aᵀb
X = np.array([1., 2., 3.])
Y = np.array([2., 3., 5.])
M = np.column_stack([X, np.ones(3)]) # 1로 채운 열 = 절편용
w = np.linalg.lstsq(M, Y, rcond=None)[0]
print(f"00-03 직선: y = {w[0]:.4f}x + {w[1]:.4f}")
# ═══ 🌫️ 00-04 경사하강법: 골짜기 바닥 찾기 ═══
# 수식: x ← x - η·f'(x)
df = lambda x: 2*x - 4 # f(x)=x²-4x+5 의 미분
x = 10.0
for _ in range(30):
x = x - 0.1 * df(x) ← 이 한 줄이 AI 학습의 전부!
print(f"00-04 30스텝 후 x = {x:.6f} (정답 2)")
# ═══ 🏥 00-05 소프트맥스: 점수를 확률로 ═══
# 수식: ŷᵢ = exp(zᵢ) / Σ exp(zⱼ)
z = np.array([3.5, 1.2, 0.8]) # 강아지/고양이/토끼 점수
e = np.exp(z - z.max()) # max 빼기 = 안전장치
p = e / e.sum()
print("00-05 확률:", p.round(4), "합계:", round(float(p.sum()), 4))
# ═══ 📚 00-06 SVD: 행렬을 세 조각으로 ═══
# 수식: A = UΣVᵀ
D = np.array([[1., 2, 3, 4], [2, 3, 4, 5],
[3, 4, 5, 6], [4, 5, 6, 7]])
S = np.linalg.svd(D, compute_uv=False) # 특잇값만 뽑기
print("00-06 특잇값:", S.round(4))
print(f" 첫 조각 하나로 정보의 {S[0]**2/np.sum(S**2):.1%} 를 담는다")
🔗 GitHub에서 코드 보기 — 01_01_why_math.py L38–L82
📘 코드 이해 — 수식이 코드의 어느 줄이 되었나
| 장 | 수학공식 | 파이썬 코드 | 읽는 법 |
|---|---|---|---|
| 🛒 00-01 | basket @ price | "짝지어 곱해서 전부 더해라" | |
| 📋 00-02 | A @ B | "내적을 모든 행·열 짝에 반복" | |
| 🧾 00-03 | np.linalg.lstsq(M, Y) | "오차가 가장 작은 답을 다오" | |
| 🌫️ 00-04 | x = x - 0.1*df(x) | "기울기 반대로 한 걸음" | |
| 🏥 00-05 | np.exp(z)/np.exp(z).sum() | "양수로 만들고 합을 1로" | |
| 📚 00-06 | np.linalg.svd(D) | "세 조각으로 쪼개라" |
📌 보이시나요? 무섭게 생긴 수식이 전부 한 줄짜리 코드가 되었습니다. 이 책이 하는 일은 왼쪽 열과 오른쪽 열을 이어주는 것, 딱 그것입니다. 🌉
🧩 코드 설명 — 지금 알아두면 좋은 것 세 가지
•
@기호 ⭐ — 파이썬에서 내적·행렬곱 전용 연산자입니다. 놀랍게도 벡터에 쓰면 내적, 행렬에 쓰면 행렬곱이 됩니다. 왜 같은 기호일까요? 행렬곱이 내적의 반복이기 때문입니다 — 00-02에서 확인합니다! 🔗\
⚠️*(별표)는 완전히 다른 연산(성분별 곱)입니다. 이 둘을 혼동하는 것이 초보자의 1순위 버그입니다.\
\
•lambda x: 2*x - 4— 이름 없는 한 줄 함수입니다.def df(x): return 2*x-4과 완전히 같습니다.\
\
•for _ in range(30)— 밑줄_은 "반복 횟수만 필요하고 값은 안 쓴다"는 관례적 표시입니다. AI 학습은 이렇게 같은 일을 수없이 반복하는 과정입니다. 🔁
✅🟩 실행 결과
00-01 총액: 12000 원
00-02 행렬곱:
[[19 22]
[43 50]]
00-03 직선: y = 1.5000x + 0.3333
00-04 30스텝 후 x = 2.009904 (정답 2)
00-05 확률: [0.8566 0.0859 0.0576] 합계: 1.0
00-06 특잇값: [17.1652 1.1652 0. 0. ]
첫 조각 하나로 정보의 99.5% 를 담는다
🔍 결과를 하나씩 음미해봅시다
🛒 12,000원 — 을 사람이 계산하는 방식 그대로 컴퓨터가 했습니다. 이게 내적이고, 신경망 뉴런 하나가 하는 일과 정확히 같습니다.
🧾 — 점 는 한 직선 위에 있지 않습니다. 그런데도 컴퓨터가 "가장 덜 억울한 직선"을 찾아냈습니다. 이것이 머신러닝의 원형입니다.
🌫️ 10 → 2.009904 — 10에서 출발해 30번 조금씩 움직였더니 정답 2에 거의 도착했습니다. 정답을 알려준 적이 없는데도 말이죠! 이것이 학습입니다. 🤯
🏥 [0.8566, 0.0859, 0.0576] — 의미 없던 점수 이 "강아지 85.7%"라는 말이 됐고, 합계가 정확히 1.0입니다. AI가 확률로 대답하는 원리입니다.
📚 99.5% — 4×4 행렬 16개 숫자를 조각 하나로 줄였는데 정보의 99.5%가 남았습니다. 넷플릭스 추천과 이미지 압축이 이 원리로 돌아갑니다.
🔬 이 책의 핵심 습관 — "수식 → 코드 → 검증"
위 코드에서 가장 중요한 부분은 주석입니다. 각 블록 위에
# 수식: ...이 적혀 있죠.이 책의 모든 장은 같은 3단계로 진행됩니다.\
① 수식을 손으로 유도한다 (왜 그런지 이해)\
② 코드로 한 줄씩 옮긴다 (수식↔코드 대응표 제공)\
③ 실행해서 검증한다 (손계산 결과와 일치하는지 확인)특히 ③이 핵심입니다. 예를 들어 00-04에서는 손으로 유도한 미분을 수치미분으로 채점하고, 00-06에서는 PCA 결과를 SVD 결과와 대조합니다. "내가 맞았는지 스스로 확인하는 법"을 배우는 것 — 그것이 이 책이 주려는 가장 큰 선물입니다. 🎁
🛠️ 실습 3 🔵 — 숫자를 직접 바꿔보세요
① 00-01:
basket을[5, 1, 2]로 바꾸면 총액이 얼마인가요? (정답: 17,500원)\
② 00-04: 학습률0.1을0.5로 바꿔보세요. 놀랍게도 1스텝 만에 정답 2에 도착합니다! 왜일까요? → 00-04에서 유도합니다\
③ 00-04: 이번엔1.1로 바꿔보세요. ⚠️ 숫자가 폭발합니다(약 1901). 이것이 발산입니다\
④ 00-05:z를[1.0, 1.0, 1.0]으로 바꾸면? (정답: 셋 다 0.3333 — 아무 정보가 없으면 균등 확률)\
⑤ 00-05:z - z.max()에서- z.max()를 지우고z = np.array([1000., 1001., 1002.])로 해보세요. 💥nan이 나옵니다 — 왜 안전장치가 필요한지 00-05에서 증명합니다
🐞 실수하기 쉬운 부분 — 지금부터 조심할 것
❌ 실수 ①
@와*혼동 ⭐ 1순위 버그\
A @ B는 행렬곱,A * B는 성분별 곱입니다. 둘 다 에러 없이 실행되지만 값이 다릅니다. 확인법: 결과가 이상하면print(결과.shape)부터 찍어보세요.❌ 실수 ② 정수와 실수 혼동\
np.array([3, 4])는 정수라 소수 계산에서 값이 잘립니다. 수정: 수치 계산에는[3.0, 4.0]처럼 점을 찍으세요.❌ 실수 ③ 결과를 눈으로만 확인\
"대충 맞는 것 같다"는 가장 위험한 판단입니다. 수정: 작은 예제로 손계산과 대조하세요. 이 책은 매 장에서 그 방법을 알려줍니다.✅ 가장 좋은 습관: 새 코드를 쓰면 제일 작은 예제(2×2 행렬, 데이터 3개)로 먼저 돌려보고 손으로 검산하세요. 큰 데이터에서 틀리면 어디서 틀렸는지 절대 못 찾습니다. 🛡️
🧠 개념 문제
Q1 🟢 "라이브러리만 쓰면 되지 않나?"라는 질문에 라면 비유로 답해보세요.
Q2 🟢 자동차 비유의 4단계를 순서대로 쓰고, 이 책이 담당하는 범위를 말하세요.
Q3 🔵 "수식 → 코드 → 검증" 중 세 번째 단계가 왜 중요한가요?
🧮 계산 문제
Q4 🟢 사과 2개(1000원), 우유 3개(2000원)의 총액을 내적 형태로 쓰고 계산하세요.
Q5 🟢 벡터 의 길이를 피타고라스 정리로 구하세요.
💻 구현 문제
Q6 🟢 환경 점검 코드를 실행하고, 벡터를 로 바꿔 길이가 Q5의 답과 같은지 확인하세요.
Q7 🔵 맛보기 코드의 00-04 부분에서 반복 횟수를 5회로 줄이면 가 얼마가 되나요?
🚀 사고 확장 문제
Q8 🔵 00-04에서 "정답을 알려주지 않았는데 정답을 찾았다"고 했습니다. 그럼 컴퓨터는 무엇을 단서로 찾아간 걸까요?
Q9 🔵🚀 00-01의 @와 00-02의 @가 같은 기호인 이유를 추측해보세요.
✅ 해설
A1. 라면 봉지 뒷면대로 끓이면 맛있는 라면이 나오지만, 물이 넘치거나 면이 불었을 때 원인을 알 수 없습니다. 라이브러리도 마찬가지로, 잘 돌아갈 때는 문제없지만 정확도가 안 오르거나 손실이
nan일 때 대처할 수 없습니다. 다만 "라면이 나쁘다"는 뜻은 아닙니다 — 요리를 아는 사람도 평소엔 라면을 끓입니다. 🍜A2. ① 운전(일단 돌려보기) → ② 계기판 읽기(경고등의 의미 알기) → ③ 보닛 열기(엔진 구조 보기) → ④ 정비·튜닝(개조하기). 이 책은 ①~③을 담당하고, ④는 이후 권(DeZero·PyTorch)에서 다룹니다. 🚗
A3. 수식을 잘못 유도했거나 코드로 잘못 옮겼어도, 실행하면 그럴듯한 숫자가 나와서 틀린 줄 모르고 넘어가기 때문입니다. 손계산·다른 방법과 대조해야 비로소 확신할 수 있습니다. 실제로 이 책에서는 미분을 두 방법으로, PCA를 두 경로로 계산해 교차 검증합니다. 🔬
A4. 원.\
코드로는np.array([2,3]) @ np.array([1000,2000])입니다.A5.
A6.
v = np.array([6.0, 8.0])로 바꾸면np.linalg.norm(v)가 10.0을 출력합니다. 손계산과 일치하죠 — 이것이 바로 "검증"입니다! ✅A7.
range(30)을range(5)로 바꾸면 약 4.62가 나옵니다. 정답 2까지 아직 멀죠. 5번으로는 부족하고 30번은 충분하다는 것 — "몇 번 반복할지"가 중요한 선택임을 보여줍니다. 00-04에서 자세히 다룹니다.A8. 기울기입니다. 🌫️ 안개 속에서 목적지는 안 보이지만 발밑 경사는 느낄 수 있듯, 컴퓨터는 "지금 위치에서 어느 쪽이 내리막인가"만 알고 그 방향으로 반복해서 걸었습니다. 전체 지도 없이 국소 정보만으로 최적점에 도달한 것이죠. 이것이 AI 학습의 본질입니다.
A9. 행렬 곱셈이 사실은 내적의 반복이기 때문입니다. 행렬 의 칸은 "의 번째 행과 의 번째 열의 내적"입니다. 즉 행렬곱 = 내적을 모든 행·열 짝에 대해 반복한 것. 그래서 파이썬은 같은
@기호를 씁니다. 00-02에서 직접 확인합니다! 🔗
🎯 개념 요약
🍜 왜 배우나 — 레시피만으로는 문제를 진단할 수 없다\
🚗 어떻게 배우나 — 운전 → 계기판 → 보닛 → 정비\
🗺️ 무엇을 배우나 — 일상 비유로 출발하는 여섯 재료\
🛠️ 준비물 — 파이썬 + NumPy (또는 Colab)\
🔬 핵심 습관 — 수식 → 코드 → 검증\
🎬 맛보기 — 여섯 수식이 각각 코드 한 줄이 됨
📌 핵심 문장 3가지
① 🍜 라면도 훌륭한 시작이다. 다만 물이 넘칠 때 대처하려면 원리를 알아야 한다.\
\
② 🚗 엔진부터 배우지 않는다. 먼저 굴려보고, 궁금해질 때 한 겹씩 열어본다.\
\
③ 🔬 무섭게 생긴 수식도 결국 코드 한 줄이다. 이 책은 그 둘을 잇는 다리다.
☑️ 개념 체크리스트 (성취 기준)
☐ 라이브러리만 쓸 때의 한계를 라면 비유로 설명할 수 있다 🟢\
☐ "라면은 나쁘다"가 아니라는 것을 설명할 수 있다 🟢\
☐ 자동차 비유의 4단계를 순서대로 말할 수 있다 🟢⭐\
☐ 자가 진단에서 내 현재 위치를 짚을 수 있다 🟢\
☐ 여섯 장의 일상 비유를 하나씩 연결할 수 있다 🟢\
☐ 장들이 서로를 어떻게 부르는지 한 가지 예를 들 수 있다 🔵\
☐ 파이썬·NumPy 환경에서 첫 코드를 실행했다 🟢⭐\
☐ 벡터 의 길이가 5임을 손과 코드로 확인했다 🟢\
☐ 맛보기 코드를 실행하고 여섯 결과를 모두 확인했다 🔵⭐\
☐ @와 *가 다르다는 것을 알고 있다 🔵\
☐ "수식 → 코드 → 검증"이 이 책의 핵심 습관임을 설명할 수 있다 🔵⭐
🚫 공부 시작 전 마음가짐 체크리스트
☐ 모르는 기호가 나와도 자책하지 않기 — 전부 그 자리에서 설명합니다\
☐ 증명을 다 이해하려 하지 않기 — "무엇을 계산하는가"가 먼저\
☐ 눈으로만 읽지 않기 — 코드는 반드시 직접 타이핑하고 실행\
☐ 숫자를 바꿔가며 실험하기 — 실습 문제는 5분이면 됩니다\
☐ 설치에 30분 이상 쓰지 않기 — 막히면 Colab으로\
☐ 하루 한 장이면 충분 — 6일이면 완주입니다 📅\
☐ 앞 장이 기억 안 나면 돌아가기 — 🔗 표시를 따라가면 됩니다
📚 추가 학습
🌐 Colab 익히기 — 셀 실행 단축키 Shift+Enter만 알면 충분합니다\
🐍 파이썬 기초 — 변수·리스트·for문·함수 정의까지만 훑어두면 편합니다\
✏️ 맛보기 코드 변형 — 실습 3의 다섯 문항을 전부 실행해보세요\
📓 학습 노트 만들기 — 각 장의 수식↔코드 대응표만 따로 모아두면 최고의 요약본이 됩니다\
🤔 질문 목록 만들기 — 읽다가 막힌 부분을 적어두고, 해당 장을 읽은 뒤 다시 보세요
➡️
🔮 다음 장 예고 — 01-02. 그리스 문자와 수학 기호 — ML 수식의 알파벳 🔤
부엌이 차려졌으니 이제 레시피를 읽는 법부터 배웁니다. 머신러닝 수식이 어려운 가장 큰 이유는 내용이 아니라 처음 보는 기호입니다. , , , …
다음 장에서는 그리스 문자와 연산 기호를 소리 내어 읽는 법으로 익히고, ML 공식 100개를 한국어 문장으로 낭독해 봅니다. 기호가 읽히면 01-03 벡터부터는 수식이 문장처럼 들어옵니다.
📂 이 장의 코드 폴더: book/01-ml-math-basics-python/01-01-why-math
책에 실린 코드를 장(절)별로 모아 둔 폴더입니다. 아래 파일을 열어 보거나, Colab에서 바로 실행해 보세요.
| 파일 | 용도 | 링크 |
|---|---|---|
01_01_why_math.py | 책의 코드 블록 3개를 순서대로 모은 실행 스크립트 (# %% 셀 구분) | 코드 보기 |
01_01_why_math.ipynb | 같은 코드를 블록당 셀 1개로 담은 주피터 노트북 | 보기 · Colab |
README.md | 코드 블록 목록 · 실행 방법 · 검증 결과 | 보기 |
🎬 medium-series/10-why-math/ | Medium 시리즈 예제 — 같은 주제를 블로그용으로 다듬은 실습 | 폴더 · Colab |
🧪 저장소 검증 상태: 🧩 문맥 필요(조각) —
X_train이(가) 이 절 안에서 정의되지 않습니다 — 데이터·변수·클래스를 미리 준비했다고 가정한 설명용 코드 조각입니다.
📄 01_01_why_math.py L20–L34 · Block 2 (📍 01-01-D · 4단계 — 🛠️ 부엌 차리기: 환경 준비)
import sys
import numpy as np # 관례적으로 np라는 짧은 별칭을 씁니다
print("파이썬 버전:", sys.version.split()[0])
print("NumPy 버전 :", np.__version__)
# 첫 벡터를 만들어봅니다 (00-01에서 자세히 배웁니다)
v = np.array([3.0, 4.0])
print("\n첫 벡터 :", v)
print("모양 :", v.shape) # (2,) → 숫자가 2개인 1차원
print("자료형 :", v.dtype) # float64 (실수)
print("길이(노름):", np.linalg.norm(v)) # √(3²+4²) = 5.0
print("\n✅ 여기까지 출력되면 준비 완료입니다!")
▶ 실행 결과 — 위 코드를 실행한 출력 (직접 실행: Windows · Python 3.11.2 · numpy 2.4.6 · scipy 1.17.1 · sklearn 1.9.1, 앞 블록부터 순서대로 실행)
파이썬 버전: 3.11.2
NumPy 버전 : 2.4.6
첫 벡터 : [3. 4.]
모양 : (2,)
자료형 : float64
길이(노름): 5.0
✅ 여기까지 출력되면 준비 완료입니다!
📄 01_01_why_math.py L53–L82 · Block 3 (📍 01-01-E · 5단계 — 🎬 맛보기: 여섯 장을 20줄로)
# ═══ 🧾 00-03 최소제곱: 점 3개에 가장 가까운 직선 ═══
# 수식: x̂ = (AᵀA)⁻¹Aᵀb
X = np.array([1., 2., 3.])
Y = np.array([2., 3., 5.])
M = np.column_stack([X, np.ones(3)]) # 1로 채운 열 = 절편용
w = np.linalg.lstsq(M, Y, rcond=None)[0]
print(f"00-03 직선: y = {w[0]:.4f}x + {w[1]:.4f}")
# ═══ 🌫️ 00-04 경사하강법: 골짜기 바닥 찾기 ═══
# 수식: x ← x - η·f'(x)
df = lambda x: 2*x - 4 # f(x)=x²-4x+5 의 미분
x = 10.0
for _ in range(30):
x = x - 0.1 * df(x) # ← 이 한 줄이 AI 학습의 전부!
print(f"00-04 30스텝 후 x = {x:.6f} (정답 2)")
# ═══ 🏥 00-05 소프트맥스: 점수를 확률로 ═══
# 수식: ŷᵢ = exp(zᵢ) / Σ exp(zⱼ)
z = np.array([3.5, 1.2, 0.8]) # 강아지/고양이/토끼 점수
e = np.exp(z - z.max()) # max 빼기 = 안전장치
p = e / e.sum()
print("00-05 확률:", p.round(4), "합계:", round(float(p.sum()), 4))
# ═══ 📚 00-06 SVD: 행렬을 세 조각으로 ═══
# 수식: A = UΣVᵀ
D = np.array([[1., 2, 3, 4], [2, 3, 4, 5],
[3, 4, 5, 6], [4, 5, 6, 7]])
S = np.linalg.svd(D, compute_uv=False) # 특잇값만 뽑기
print("00-06 특잇값:", S.round(4))
print(f" 첫 조각 하나로 정보의 {S[0]**2/np.sum(S**2):.1%} 를 담는다")
▶ 실행 결과 — 위 코드를 실행한 출력 (직접 실행: Windows · Python 3.11.2 · numpy 2.4.6 · scipy 1.17.1 · sklearn 1.9.1, 앞 블록부터 순서대로 실행)
00-03 직선: y = 1.5000x + 0.3333
00-04 30스텝 후 x = 2.009904 (정답 2)
00-05 확률: [0.8566 0.0859 0.0576] 합계: 1.0
00-06 특잇값: [17.1652 1.1652 0. 0. ]
첫 조각 하나로 정보의 99.5% 를 담는다
📝 실행 메모
- Block 1 은(는) 단독 실행되지 않습니다:
NameError: name 'X_train' is not defined— 앞 절에서 만든 변수·클래스를 가정한 책의 설명용 코드 조각입니다
👉 Open in Colab — 01_01_why_math.ipynb · 설치 없이 브라우저에서 셀을 위에서부터 순서대로 실행하세요.
git clone https://github.com/otoloism/Zero_to_ML_Master.git
cd Zero_to_ML_Master
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r book/requirements.txt # 책 전체용 (PyTorch 등 포함, 용량 큼)
# 이 장만 실행한다면 이것만으로 충분합니다: pip install numpy scikit-learn
cd book/01-ml-math-basics-python/01-01-why-math
python 01_01_why_math.py
⭐ 코드가 도움이 되셨다면 GitHub 저장소에 Star를 눌러 주세요. 새 장의 코드가 올라올 때 가장 먼저 알 수 있습니다.
🍴 직접 고쳐 보며 실험하고 싶다면 Fork 해서 내 저장소에서 마음껏 바꿔 보세요. 오류 제보·개선 제안은 Issues로 환영합니다!
다음 글은 01-02 그리스 문자와 수학 기호 — ML 수식의 알파벳 (예제 100선) 🔤 입니다. 머신러닝 수식이 어려운 가장 큰 이유는 내용이 아니라 처음 보는 기호입니다. , , , … 그리스 문자와 연산 기호를 소리 내어 읽는 법부터 익히고, ML 공식 100개를 한국어 문장으로 읽어 봅니다.
⬅️ 이전 글: #10 SVD 추천 시스템부터 미니 신경망(XOR)까지 — 수포자 수학 6개 장 총정리 (2부) \
➡️ 다음 글: #12 머신러닝 수식 읽는 법 — 그리스 문자·수학 기호 사전과 읽기 규칙 10가지 (ML 공식 100선, 1부)
이 시리즈는 수학을 놓았던 비전공자가 AI를 직접 구현하기까지의 공부 기록을 그대로 옮긴 연재입니다. 원문 책, 코드, 개념 사전을 함께 보면 훨씬 빨리 늡니다. 🚀
| 바로가기 | 이런 분께 | |
|---|---|---|
| 📘 책 (위키독스, 무료) | Zero to 머신러닝 딥러닝 Master | 5권 · 20개 장 · 163개 절 전체를 순서대로 읽고 싶은 분 |
| 📄 이 글의 원문 | 01-01 왜 수학인가? — 요리를 배울 것인가? 라면만 끓이다 갈 것인가! | 연습문제·해설까지 전부 보고 싶은 분 |
| 💻 실습 코드 (GitHub) | otoloism/Zero_to_ML_Master | .py·.ipynb를 Colab에서 바로 돌려보고 싶은 분 |
| 🏠 머신러닝 백과사전 | mldict.net | 본문 속 핵심 개념을 카드로 다시 확인하고 싶은 분 |
| ✍️ 기술 블로그 | wikidocs.net/blog/@mldict | 새 글 알림을 가장 먼저 받고 싶은 분 |
⭐ 도움이 되셨다면 velog 팔로우와 GitHub Star를 눌러 주세요. 다음 글을 쓰는 가장 큰 힘이 됩니다. 궁금한 점은 댓글로 편하게 남겨 주세요! 🙌