learn

수식을 자연스럽게 읽는 법

수식을 자연스럽게 읽는 법

"수학을 챙겨라"의 진짜 의미

교수님이 말한 수학 역량은 모든 수식을 증명하는 능력이 아니다. 논문에서 수식이 나왔을 때 "아, 이건 이런 이야기구나"하고 읽을 수 있는 상태 — 이게 연구실의 최소 조건이다.

이건 두 가지 능력으로 분해된다:

Mathematical Literacy (수식 문해력): 한국어 문장을 읽듯이 수식을 왼쪽에서 오른쪽으로 "읽는" 것. 각 기호가 뭘 뜻하는지 반사적으로 떠오르는 상태.

Mathematical Intuition (수식 직관): 수식이 왜 그 형태인지 느끼는 것. 기계적 암기가 아니라, 수식 뒤의 그림이 보이는 것.

예시 — 정책 경사법:

θJ(θ)=Eπθ[θlogπθ(as)Qπθ(s,a)]\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\left[\nabla_\theta \log \pi_\theta(a|s) \cdot Q^{\pi_\theta}(s,a)\right]

읽을 줄 아는 사람의 머릿속:

"파라미터 θ에 대한 목적함수 J의 기울기는,
 정책 π가 만드는 경험들에 대해 평균을 내는데,
 각 경험에서 '그 행동을 선택할 확률의 로그'의 기울기에
 '그 행동이 얼마나 좋았는지(Q값)'를 곱한 것이다"

이게 자연스러워지려면 훈련이 필요하다.


수식이 벽으로 느껴지는 3가지 원인

1. 기호 어휘력 부족 — Σ, ∇, ∂, ∈, ∀, ∥·∥ 같은 기호를 볼 때마다 "이거 뭐였지?"하고 멈추는 상태. 영어 단어를 하나하나 사전 찾으면서 읽는 것과 같다. 단순 노출량의 문제.

2. 연산 직관 부족 — 기호는 알지만, what-is-matrix-multiplication-geometrically|행렬 곱셈이 기하학적으로 무엇을 하는 건지, 미분이 실제로 무엇을 측정하는 건지가 체감이 안 되는 상태.

3. 표기법 변환 능력 부족 — 같은 개념이 논문마다 다른 표기를 쓰는데(ww, θ\theta, W\mathbf{W}), "아, 다 같은 파라미터 이야기구나"라고 매핑 못하는 상태.


훈련법

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)=1Ni=1N(yiwTxi)2L(\mathbf{w}) = \frac{1}{N}\sum_{i=1}^{N}(y_i - \mathbf{w}^T\mathbf{x}_i)^2

"손실 L은 파라미터 w의 함수인데,
 N개 데이터에 대해 평균을 내는데,
 각 데이터에서 (실제값 yᵢ - 예측값 wᵀxᵢ)의 차이를 제곱한 거야.
 
 즉, '예측이 얼마나 틀렸는지'의 평균이구나."

습관화하면 수식이 문장으로 들리기 시작한다. 같은 패턴(Σ, 1/N, 제곱 오차)이 반복되면서 점점 빨라진다.

3단계: 수식을 코드로 번역

프로그래머에게 가장 강력한 무기. 수식을 코드로 구현하면 추상이 구체가 된다.

wL=2Ni=1N(wTxiyi)xi\nabla_w L = \frac{2}{N}\sum_{i=1}^{N}(\mathbf{w}^T\mathbf{x}_i - y_i)\mathbf{x}_i

// ∇_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 스타일인데, 직접 해봐야 효과가 있다.

예시 — 행렬 곱 AxA\mathbf{x}:

수식만 보면: 행×열 곱해서 새 벡터
그림으로 보면: 공간 자체를 변환하는 것

 [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단계 변환이다. 모든 수식을 증명할 필요 없다 — 읽히면 된다.