수식을 자연스럽게 읽는 법
"수학을 챙겨라"의 진짜 의미
교수님이 말한 수학 역량은 모든 수식을 증명하는 능력이 아니다. 논문에서 수식이 나왔을 때 "아, 이건 이런 이야기구나"하고 읽을 수 있는 상태 — 이게 연구실의 최소 조건이다.
이건 두 가지 능력으로 분해된다:
Mathematical Literacy (수식 문해력): 한국어 문장을 읽듯이 수식을 왼쪽에서 오른쪽으로 "읽는" 것. 각 기호가 뭘 뜻하는지 반사적으로 떠오르는 상태.
Mathematical Intuition (수식 직관): 수식이 왜 그 형태인지 느끼는 것. 기계적 암기가 아니라, 수식 뒤의 그림이 보이는 것.
예시 — 정책 경사법:
읽을 줄 아는 사람의 머릿속:
"파라미터 θ에 대한 목적함수 J의 기울기는,
정책 π가 만드는 경험들에 대해 평균을 내는데,
각 경험에서 '그 행동을 선택할 확률의 로그'의 기울기에
'그 행동이 얼마나 좋았는지(Q값)'를 곱한 것이다"
이게 자연스러워지려면 훈련이 필요하다.
수식이 벽으로 느껴지는 3가지 원인
1. 기호 어휘력 부족 — Σ, ∇, ∂, ∈, ∀, ∥·∥ 같은 기호를 볼 때마다 "이거 뭐였지?"하고 멈추는 상태. 영어 단어를 하나하나 사전 찾으면서 읽는 것과 같다. 단순 노출량의 문제.
2. 연산 직관 부족 — 기호는 알지만, what-is-matrix-multiplication-geometrically|행렬 곱셈이 기하학적으로 무엇을 하는 건지, 미분이 실제로 무엇을 측정하는 건지가 체감이 안 되는 상태.
3. 표기법 변환 능력 부족 — 같은 개념이 논문마다 다른 표기를 쓰는데(, , ), "아, 다 같은 파라미터 이야기구나"라고 매핑 못하는 상태.
훈련법
1단계: 기호 어휘 카드 (2주)
수식을 만날 때마다 Obsidian 기호 사전에 추가한다:
| 기호 | 읽는 법 | 의미 | 예시 | |------|---------|------|------| | ∇ | "nabla" 또는 "grad" | 기울기 벡터 | ∇f = (∂f/∂x, ∂f/∂y) | | Σ | "sum" | 합산 | Σᵢ xᵢ = x₁+x₂+... | | ∈ | "in" 또는 "원소" | 집합 소속 | x ∈ ℝ ("x는 실수") | | ∥·∥ | "norm" | 크기/거리 | ∥v∥ = √(v₁²+v₂²) | | ∂ | "partial" | 편미분 | ∂f/∂x | | 𝔼 | "expectation" | 기댓값/평균 | 𝔼[X] = Σ xᵢ·P(xᵢ) | | ∝ | "proportional to" | 비례 | P(x) ∝ exp(-x²) | | argmax | "아그맥스" | 최댓값의 인자 | argmax_a Q(s,a) |
2주면 핵심 기호 50개 정도 모이고, 대부분의 수식이 "읽히기" 시작한다.
2단계: 수식을 한국어로 번역 (소리 내서)
수식을 볼 때마다 소리 내서 한국어로 읽는다. 이게 제일 중요하다.
예시 — 선형회귀 손실함수:
"손실 L은 파라미터 w의 함수인데,
N개 데이터에 대해 평균을 내는데,
각 데이터에서 (실제값 yᵢ - 예측값 wᵀxᵢ)의 차이를 제곱한 거야.
즉, '예측이 얼마나 틀렸는지'의 평균이구나."
습관화하면 수식이 문장으로 들리기 시작한다. 같은 패턴(Σ, 1/N, 제곱 오차)이 반복되면서 점점 빨라진다.
3단계: 수식을 코드로 번역
프로그래머에게 가장 강력한 무기. 수식을 코드로 구현하면 추상이 구체가 된다.
// ∇_w L = (2/N) Σ (wᵀxᵢ - yᵢ) · xᵢ
Vector gradient(const Vector& w, const Data& data) {
Vector grad(w.size(), 0.0);
for (int i = 0; i < data.N; i++) {
double error = dot(w, data.x[i]) - data.y[i]; // wᵀxᵢ - yᵢ
for (int j = 0; j < w.size(); j++) {
grad[j] += error * data.x[i][j]; // error · xᵢ
}
}
for (auto& g : grad) g *= 2.0 / data.N; // 2/N
return grad;
}
이렇게 하면 Σ가 for문이라는 게 체감되고, wᵀx가 dot-product라는 게 손에 잡히고, ∇가 "각 파라미터 방향으로 얼마나 기울어졌는지"라는 게 보인다.
4단계: 수식을 그림으로 변환
수식의 기하학적 의미를 직접 그려본다. 3Blue1Brown 스타일인데, 직접 해봐야 효과가 있다.
예시 — 행렬 곱 :
수식만 보면: 행×열 곱해서 새 벡터
그림으로 보면: 공간 자체를 변환하는 것
[1 0] [x] x축 그대로, y축 그대로 → 항등 변환
[0 1] [y]
[2 0] [x] x방향 2배 → 스케일링
[0 1] [y]
[0 -1] [x] x→-y, y→x → 90도 회전
[1 0] [y]
종이에 좌표계 그리고 변환 전후를 그려보면 "linear-transformation|행렬 = 공간 변환"이 몸으로 이해된다.
실전 루틴 (매일 30분)
월/수/금 — 수식 읽기 훈련 (MML 책 진도)
├─ 새 수식 → 한국어로 번역 (소리 내서)
├─ 모르는 기호 → 기호 사전에 추가
└─ 수식 하나를 코드로 구현 (작은 것이라도)
화/목 — 3Blue1Brown "Essence of Linear Algebra"
├─ 영상 보고, 핵심 직관을 기록
├─ "행렬 곱 = 공간 변환" 같은 직관을 자기 언어로 정리
└─ 영상의 예시를 코드로 재현
주말 — 프로젝트에서 만난 수식 정리
├─ 관계 대수 → SQL 변환의 수학
├─ LLM 관련 수식 (softmax, cross-entropy 등)
└─ "이 수식이 왜 이 형태인가?" Why 질문
핵심 자료
3Blue1Brown "Essence of Linear Algebra" (YouTube, 무료) — 선형대수의 기하학적 직관. 행렬이 "숫자표가 아니라 공간 변환"이라는 걸 체감하게 해준다. 필수.
MML (Mathematics for Machine Learning) — 이미 보고 있는 책. 위의 루틴과 결합하면 효과가 달라진다.
Immersive Math (immersivemath.com, 무료) — 인터랙티브 선형대수 교과서. 3D 시각화를 직접 만져보면서 배울 수 있다.
한 줄 요약
수식 역량의 핵심은 "기호를 읽고 → 한국어로 번역하고 → 코드로 구현하고 → 그림으로 그리는" 4단계 변환이다. 모든 수식을 증명할 필요 없다 — 읽히면 된다.