- Authors
- Name
들어가며
AI/ML 논문을 처음 펼치면 가장 먼저 벽처럼 느껴지는 것이 수식이다. 코드를 읽고 쓸 줄 아는 개발자라면 논문의 알고리즘 자체는 이해할 수 있는 경우가 많지만, 수식 표기법을 모르면 첫 페이지부터 막힌다.
이 글은 **"논문을 읽기 위해 최소한으로 필요한 수학"**과 **"그 수학을 표현하는 LaTeX/KaTeX 문법"**을 한 번에 정리한다. 교과서를 처음부터 끝까지 공부하라는 것이 아니라, 실제 논문에서 반복적으로 등장하는 패턴을 빠르게 습득하는 것이 목표다.
1. 논문 수학 로드맵
1.1 선형대수 (Linear Algebra)
벡터와 행렬
논문에서 데이터는 거의 항상 벡터 또는 행렬로 표현된다.
- 스칼라: — 단일 실수값
- 벡터: — 차원 열벡터
- 행렬: — 행 열
% 벡터 (볼드체)
\mathbf{x} = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}
% 행렬
\mathbf{W} = \begin{bmatrix}
w_{11} & w_{12} & \cdots & w_{1n} \\
w_{21} & w_{22} & \cdots & w_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
w_{m1} & w_{m2} & \cdots & w_{mn}
\end{bmatrix}
핵심 연산:
이 한 줄이 신경망의 한 레이어다. 는 가중치, 는 편향.
내적 (Dot Product)
두 벡터의 유사도를 측정하는 가장 기본적인 연산이다.
\mathbf{a}^\top \mathbf{b} = \sum_{i=1}^{n} a_i b_i
고유값 분해 (Eigendecomposition)
행렬 에 대해 를 만족하는 (고유값)와 (고유벡터)를 찾는 것이다. PCA, 스펙트럴 클러스터링 등에서 핵심적으로 등장한다.
특이값 분해 (SVD)
임의의 행렬 를 세 행렬의 곱으로 분해한다.
- : 좌특이벡터 (직교행렬)
- : 특이값 대각행렬
- : 우특이벡터 (직교행렬)
차원 축소, 추천 시스템, LoRA 등에서 빈번하게 등장한다.
\mathbf{A} = \mathbf{U} \boldsymbol{\Sigma} \mathbf{V}^\top
노름 (Norm)
벡터의 "크기"를 측정한다.
| 노름 | 수식 | 의미 | 논문에서의 용도 |
|---|---|---|---|
| 절대값 합 | Lasso 정규화, 희소성 | ||
| 유클리드 거리 | Ridge 정규화, weight decay | ||
| 최대 절대값 | adversarial attack bound | ||
| Frobenius | 행렬 원소 제곱합의 루트 | 행렬 근사 오차 |
1.2 미적분 (Calculus)
편미분 (Partial Derivative)
다변수 함수에서 하나의 변수에 대해서만 미분한다.
신경망의 각 파라미터가 손실에 미치는 영향을 알려준다.
Gradient (기울기 벡터)
모든 편미분을 벡터로 모은 것이다.
\nabla_{\boldsymbol{\theta}} \mathcal{L} = \begin{bmatrix}
\frac{\partial \mathcal{L}}{\partial \theta_1} \\
\frac{\partial \mathcal{L}}{\partial \theta_2} \\
\vdots \\
\frac{\partial \mathcal{L}}{\partial \theta_n}
\end{bmatrix}
체인룰 (Chain Rule)
합성 함수의 미분법이며, **역전파(backpropagation)**의 수학적 기반이다.
3층 네트워크 예시:
Jacobian과 Hessian
- Jacobian : 벡터 함수의 1차 미분 행렬.
- Hessian : 스칼라 함수의 2차 미분 행렬.
Hessian은 곡률 정보를 담고 있어 2차 최적화(Newton's method)에서 사용된다.
\mathbf{J} = \begin{bmatrix}
\frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_n} \\
\vdots & \ddots & \vdots \\
\frac{\partial f_m}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_n}
\end{bmatrix}
1.3 확률·통계 (Probability & Statistics)
확률 분포
| 분포 | 수식 | 논문에서의 용도 |
|---|---|---|
| 베르누이 | 이진 분류 | |
| 카테고리컬 | 다중 분류 | |
| 가우시안 | VAE 잠재 공간, 노이즈 모델링 | |
| 다변량 가우시안 | 연속 잠재 변수 |
기대값과 분산
\mathbb{E}[X] = \sum_x x \, P(x)
\text{Var}(X) = \mathbb{E}[X^2] - (\mathbb{E}[X])^2
조건부 확률과 베이즈 정리
- : 사전 확률 (prior)
- : 우도 (likelihood)
- : 사후 확률 (posterior)
- : 증거 (evidence/marginal likelihood)
MLE와 MAP
Maximum Likelihood Estimation (MLE):
Maximum A Posteriori (MAP):
MAP는 MLE에 사전 분포(prior) 를 추가한 것이다. L2 정규화는 가우시안 사전 분포를 가정한 MAP와 동치다.
1.4 최적화 (Optimization)
경사 하강법 (Gradient Descent)
는 학습률(learning rate)이다. 미니배치를 사용하면 SGD가 된다.
Adam Optimizer
가장 널리 쓰이는 옵티마이저다. 1차 모멘트(평균)와 2차 모멘트(분산)의 이동 평균을 사용한다.
\begin{aligned}
m_t &= \beta_1 m_{t-1} + (1-\beta_1) g_t \\
v_t &= \beta_2 v_{t-1} + (1-\beta_2) g_t^2 \\
\hat{m}_t &= \frac{m_t}{1-\beta_1^t}, \quad
\hat{v}_t &= \frac{v_t}{1-\beta_2^t} \\
\theta_{t+1} &= \theta_t
- \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t
\end{aligned}
정규화 (Regularization)
과적합 방지를 위해 손실 함수에 벌칙 항을 추가한다.
- : 정규화 강도 (하이퍼파라미터)
- L1 정규화(): 희소성 유도 → feature selection
- L2 정규화(): weight decay → 매개변수 크기 제한
Convex vs Non-Convex
- 볼록(convex): 전역 최솟값 = 지역 최솟값. 로지스틱 회귀, SVM 등.
- 비볼록(non-convex): 지역 최솟값이 여러 개. 딥러닝의 손실 함수가 대부분 여기에 해당.
논문에서 "non-convex optimization"이라고 하면, 전역 최적점 보장이 없다는 뜻이다.
2. 논문에서 자주 나오는 수식 패턴
2.1 Softmax와 Cross-Entropy
Softmax: 로짓 벡터를 확률 분포로 변환한다.
Cross-Entropy Loss: 분류 문제의 표준 손실 함수다.
여기서 는 one-hot 정답, 는 softmax 출력이다.
\text{softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}
\mathcal{L}_{\text{CE}} = -\sum_{i=1}^{K} y_i \log(\hat{y}_i)
2.2 Attention Score와 Scaled Dot-Product
Transformer의 핵심인 Scaled Dot-Product Attention:
- : Query 행렬
- : Key 행렬
- : Value 행렬
- : 스케일링 팩터 (내적 값이 커지는 것을 방지)
Multi-Head Attention:
\text{Attention}(\mathbf{Q}, \mathbf{K}, \mathbf{V})
= \text{softmax}\!\left(
\frac{\mathbf{Q}\mathbf{K}^\top}{\sqrt{d_k}}
\right)\mathbf{V}
2.3 KL Divergence와 ELBO
KL Divergence: 두 확률 분포 사이의 "거리"(비대칭)를 측정한다.
성질:
- (항상 0 이상)
- (비대칭)
ELBO (Evidence Lower Bound): VAE의 핵심 목적함수다.
- 첫째 항: reconstruction loss — 디코더가 입력을 얼마나 잘 복원하는지
- 둘째 항: KL 항 — 인코더의 사후 분포가 사전 분포와 얼마나 가까운지
\log p(\mathbf{x}) \geq
\underbrace{\mathbb{E}_{q(\mathbf{z}|\mathbf{x})}
[\log p(\mathbf{x}|\mathbf{z})]}_{\text{reconstruction}}
- \underbrace{D_{\text{KL}}(q(\mathbf{z}|\mathbf{x})
\,\|\, p(\mathbf{z}))}_{\text{regularization}}
2.4 Normalization과 Loss 표기
Layer Normalization:
여기서 , 이고, 와 는 학습 가능한 파라미터, 는 원소별 곱(element-wise multiplication)이다.
Batch Normalization:
와 는 미니배치 단위로 계산된다.
RMSNorm (LLaMA 등에서 사용):
Loss 표기 관례:
- 또는 : 손실 함수 전체
- , : 특정 손실의 하첨자 표기
- : 샘플 단위 손실 (소문자)
- : 목적 함수 (= 손실 + 정규화)
3. LaTeX 읽기/작성 핵심
3.1 기본 수식 문법
분수, 합, 적분
% 분수
\frac{a}{b} % → a/b
\dfrac{a}{b} % → 큰 분수 (display style)
% 합
\sum_{i=1}^{N} x_i % → Σ from i=1 to N
\prod_{j=1}^{M} p_j % → Π from j=1 to M
% 적분
\int_{a}^{b} f(x)\,dx % → 정적분
\iint_D f(x,y)\,dx\,dy % → 이중적분
\oint_C \mathbf{F}\cdot d\mathbf{r} % → 선적분
렌더링 결과:
첨자와 위첨자
x_i % 아래 첨자
x^2 % 위 첨자 (제곱)
x_i^{(j)} % 복합: i번째 원소의 j번째 반복
\hat{y} % y-hat (예측값)
\bar{x} % x-bar (평균)
\tilde{x} % x-tilde (변환값)
\dot{x} % 시간 미분
\mathbf{W} % 볼드 (행렬/벡터)
\mathcal{L} % 캘리그래피 (손실함수)
\mathbb{R} % 블랙보드 볼드 (수 체계)
논문에서 매우 자주 보는 패턴들:
행렬
% 소괄호 행렬
\begin{pmatrix} a & b \\ c & d \end{pmatrix}
% 대괄호 행렬
\begin{bmatrix} a & b \\ c & d \end{bmatrix}
% 행렬식
\begin{vmatrix} a & b \\ c & d \end{vmatrix}
3.2 정렬 환경
aligned (여러 줄 수식 정렬)
$$
\begin{aligned}
f(x) &= ax^2 + bx + c \\
&= a(x - h)^2 + k \\
&= a(x - r_1)(x - r_2)
\end{aligned}
$$
& 기호로 정렬 기준점을 맞추고, \\로 줄을 바꾼다.
cases (조건 분기)
$$
f(x) = \begin{cases}
1 & \text{if } x > 0 \\
0 & \text{if } x = 0 \\
-1 & \text{if } x < 0
\end{cases}
$$
ReLU 같은 활성화 함수 정의에서 자주 보인다:
3.3 논문에서 자주 보이는 매크로 읽는 법
논문 PDF에서 직접 LaTeX 소스를 볼 일은 드물지만, arXiv 소스를 받거나 블로그를 작성할 때 자주 등장하는 매크로들이 있다.
% 흔한 사용자 정의 매크로
\newcommand{\E}{\mathbb{E}} % 기대값
\newcommand{\R}{\mathbb{R}} % 실수 집합
\newcommand{\KL}{D_{\text{KL}}} % KL Divergence
\newcommand{\norm}[1]{\lVert #1 \rVert} % 노름
\newcommand{\inner}[2]{\langle #1, #2 \rangle} % 내적
% 사용 예
\E_{x \sim p}[f(x)] % → 𝔼_{x~p}[f(x)]
\norm{\mathbf{x}}_2 % → ‖x‖₂
\inner{\mathbf{a}}{\mathbf{b}} % → ⟨a, b⟩
팁: arXiv 논문의 소스를 보려면 URL에서
abs를e-prints로 바꾸거나 "Download source"를 클릭하면.tex파일을 받을 수 있다.\newcommand정의를 먼저 확인하면 본문 수식 해독이 훨씬 쉬워진다.
4. KaTeX 실전
4.1 MDX 블로그에서 KaTeX 렌더링하기
이 블로그처럼 Next.js + Contentlayer + MDX 스택에서 KaTeX를 사용하려면 두 가지 플러그인이 필요하다.
npm install remark-math rehype-katex
Contentlayer 설정 예시:
// contentlayer.config.ts
import remarkMath from 'remark-math'
import rehypeKatex from 'rehype-katex'
export default makeSource({
mdx: {
remarkPlugins: [remarkMath],
rehypePlugins: [rehypeKatex],
},
})
그리고 레이아웃에 KaTeX CSS를 추가한다:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/katex.min.css" />
4.2 Inline vs Block 수식 사용 기준
Inline 수식 ($...$): 문장 안에 자연스럽게 녹여 쓸 때.
손실 함수 $\mathcal{L}$을 $\boldsymbol{\theta}$에 대해 미분하면...
→ 손실 함수 을 에 대해 미분하면...
Block 수식 ($$...$$): 독립된 수식을 강조할 때.
$$
\nabla_{\boldsymbol{\theta}} \mathcal{L} = \frac{1}{N} \sum_{i=1}^{N} \nabla_{\boldsymbol{\theta}} \ell(f(\mathbf{x}_i; \boldsymbol{\theta}), y_i)
$$
판단 기준:
- 기호 1~2개 → inline
- 분수, 합, 행렬 등 높이가 큰 수식 → block
- 설명의 핵심 공식 → block
- 참조용 변수 언급 → inline
4.3 흔한 렌더링 에러와 해결법
1) \text{} 안에서 특수문자 에러
% 에러
\text{cross-entropy} % 하이픈이 마이너스로 해석될 수 있음
% 해결
\text{cross\text{-}entropy}
% 또는 그냥 하이픈 없이
\text{cross entropy}
2) \\ 줄바꿈이 동작하지 않음
KaTeX에서 \\은 aligned, cases, bmatrix 등 환경 내부에서만 동작한다. 일반 블록 수식에서 줄을 바꾸려면 별도 $$ 블록을 쓰거나 aligned로 감싼다.
% 에러: 블록 수식에서 직접 줄바꿈
$$
a = b \\
c = d
$$
% 해결: aligned 사용
$$
\begin{aligned}
a &= b \\
c &= d
\end{aligned}
$$
3) \boldsymbol vs \mathbf
\mathbf{x}: 로마체 볼드. 라틴 알파벳만 지원.\boldsymbol{\theta}: 이탤릭 볼드. 그리스 문자에도 사용 가능.
\mathbf{W} % 행렬 W (로마체 볼드) ✅
\mathbf{\theta} % ❌ 그리스 문자에는 비추천
\boldsymbol{\theta} % ✅ 그리스 문자 볼드
4) $$ 블록 앞뒤 빈 줄 필수
MDX에서 $$ 블록 수식이 렌더링되지 않는 가장 흔한 원인이다.
<!-- 에러: 빈 줄 없음 -->
이것은 수식이다:
$$
x = y
$$
다음 문장.
<!-- 해결: 앞뒤 빈 줄 추가 -->
이것은 수식이다:
$$
x = y
$$
다음 문장.
5) KaTeX 미지원 명령어
KaTeX는 LaTeX의 부분 집합만 지원한다. 자주 겪는 미지원 명령:
| LaTeX 명령 | KaTeX 상태 | 대안 |
|---|---|---|
\DeclareMathOperator | 미지원 | \operatorname{name} |
\newcommand | 미지원 | 수식에 직접 작성 |
\eqref | 미지원 | 수동 번호 매기기 |
\substack | 지원 | - |
\xleftarrow | 지원 | - |
5. 실전 학습법
5.1 논문 1편 읽을 때 체크리스트
- Abstract → 목적 파악: 이 논문이 해결하려는 문제가 무엇인지 한 문장으로 정리
- 그림/표 먼저 훑기: Figure 1은 대부분 전체 아키텍처 요약
- 기호 표(Notation) 찾기: 보통 2~3페이지에 정리되어 있음
- 핵심 수식 식별: 보통 3~5개. 번호가 매겨진 수식 위주로 읽기
- 수식 자연어 번역: 각 수식을 "입력 → 연산 → 출력" 흐름으로 풀어 쓰기
- 실험 결과 확인: 표/그래프에서 baseline 대비 개선폭 확인
- Ablation study 해석: 어떤 컴포넌트가 성능에 기여하는지 파악
- 코드 확인: 공개된 GitHub 구현과 수식 대조
5.2 수식이 막힐 때 역추적 방법
기호 사전 만들기
논문을 읽을 때 모르는 기호가 나오면, 노트에 즉시 기록한다.
## 기호 사전 (Paper: Attention Is All You Need)
| 기호 | 의미 | 차원 | 비고 |
| ------------------------------------ | ----------------------- | ------------------------------------------ | ---------------------- |
| $d_{\text{model}}$ | 모델 히든 차원 | 스칼라 | 512 |
| $d_k$ | Key/Query 차원 | 스칼라 | $d_{\text{model}} / h$ |
| $d_v$ | Value 차원 | 스칼라 | $d_{\text{model}} / h$ |
| $h$ | 헤드 수 | 스칼라 | 8 |
| $\mathbf{Q}, \mathbf{K}, \mathbf{V}$ | Query, Key, Value | 행렬 | |
| $\mathbf{W}^Q_i$ | i번째 헤드의 Query 투영 | $\mathbb{R}^{d_{\text{model}} \times d_k}$ | |
역추적 3단계:
- 기호를 정의한 곳 찾기: 수식 위/아래 텍스트에서 "where"나 "여기서" 검색
- 차원 역추적: 행렬 곱이 성립하려면 내부 차원이 일치해야 한다. 이를 이용해 모르는 기호의 차원을 유추
- 코드 대조:
attention_scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(d_k)같은 코드에서 수식의 의미를 확인
5.3 예제: Scaled Dot-Product Attention 단계별 풀이
Step 1: 입력 확인
- : 개 쿼리, 각각 차원
- : 개 키, 각각 차원
- : 개 값, 각각 차원
Step 2: 계산
원소는 번째 쿼리와 번째 키의 내적 → 유사도 점수
Step 3: 로 나누기
내적 값은 가 클수록 절대값이 커진다. 이를 로 나눠서 softmax가 포화되는 것을 방지한다. 이것이 "scaled"의 의미다.
Step 4: softmax 적용
각 행(쿼리)에 대해 softmax를 적용하여 어텐션 가중치(확률 분포)를 만든다.
Step 5: Value에 가중합
어텐션 가중치로 Value 벡터들을 가중 합산한다.
결과:
한 줄 요약: "각 쿼리가 모든 키와의 유사도를 구하고, 그 유사도를 가중치로 사용하여 값들의 가중 평균을 출력한다."
PyTorch 대응 코드:
import torch
import torch.nn.functional as F
import math
def scaled_dot_product_attention(Q, K, V):
d_k = Q.size(-1)
scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(d_k)
attn_weights = F.softmax(scores, dim=-1)
output = torch.matmul(attn_weights, V)
return output, attn_weights
6. 부록
6.1 기호 치트시트
| 기호 | LaTeX | 읽는 법 | 의미 |
|---|---|---|---|
\nabla | 나블라 / 그래디언트 | 벡터 미분 연산자 | |
\partial | 편미분 | 편미분 기호 | |
\sum | 시그마 / 합 | 합산 | |
\prod | 파이 곱 / 곱 | 곱셈 | |
\int | 인테그럴 / 적분 | 적분 | |
\lVert \cdot \rVert | 노름 | 벡터/행렬의 크기 | |
\lvert \cdot \rvert | 절대값 | 스칼라 절대값 또는 집합 크기 | |
\mathbb{E} | 기대값 | 확률 변수의 평균 | |
\text{Var} | 분산 | 확률 변수의 분산 | |
\arg\max | 아그맥스 | 최대값을 주는 인자 | |
\arg\min | 아그민 | 최소값을 주는 인자 | |
\propto | 비례 | ~에 비례한다 | |
\sim | 틸다 / ~를 따른다 | : 가 분포 를 따름 | |
\in | 속한다 | 원소 관계 | |
\subset | 부분집합 | 부분집합 관계 | |
\forall | 모든 | 전칭 기호 | |
\exists | 존재한다 | 존재 기호 | |
\infty | 무한 | 무한대 | |
\approx | 약 같다 | 근사적으로 같다 | |
\triangleq | 정의한다 | ~로 정의한다 (definition) | |
\odot | 아다마르 곱 | 원소별 곱셈 | |
\otimes | 크로네커 곱 / 텐서 곱 | 텐서 곱셈 | |
\oplus | 직합 | 직접 합 | |
\langle \cdot, \cdot \rangle | 내적 | 내적 (inner product) | |
\mathcal{O} | 빅오 | 시간/공간 복잡도 | |
\theta, \boldsymbol{\theta} | 세타 | 모델 파라미터 | |
\eta | 에타 | 학습률 | |
\lambda | 람다 | 정규화 계수, 고유값 | |
\epsilon | 엡실론 | 아주 작은 값, 노이즈 | |
\sigma | 시그마 | 표준편차, sigmoid 함수 | |
\phi, \varphi | 파이 | 모델 파라미터 (보조) | |
\psi | 프사이 | 파라미터, 함수 | |
\alpha, \beta, \gamma | 알파, 베타, 감마 | 하이퍼파라미터 | |
\mu | 뮤 | 평균 | |
\mathbb{R}^n | 실수 n차원 | n차원 실수 공간 | |
\mathbb{Z} | 정수 | 정수 집합 | |
\top | 전치 | 행렬 전치 (transpose) |
6.2 추천 참고자료
교과서
- Mathematics for Machine Learning (Deisenroth et al.) — 무료 PDF 제공. ML에 필요한 수학만 집중 정리
- Deep Learning (Goodfellow, Bengio, Courville) — Part I이 수학 기초. deeplearningbook.org에서 무료 열람
- Pattern Recognition and Machine Learning (Bishop) — 확률 그래프 모델까지 포괄. 베이지안 관점의 교과서
- Linear Algebra Done Right (Axler) — 선형대수 이론 중심. 증명 기반으로 깊이 있는 이해에 적합
온라인 강의
- 3Blue1Brown — Essence of Linear Algebra (YouTube) — 시각화 중심의 선형대수 직관 시리즈
- 3Blue1Brown — Essence of Calculus (YouTube) — 미적분 핵심 개념의 시각적 이해
- Stanford CS229 — Machine Learning — Andrew Ng의 ML 강의. 수학적 기반이 탄탄
- MIT 18.06 — Linear Algebra (Gilbert Strang) — 공학 관점의 선형대수 명강의
도구 및 레퍼런스
- KaTeX 공식 문서 (katex.org) — 지원 함수/기호 전체 목록
- Detexify (detexify.kirelabs.org) — 손으로 기호를 그리면 LaTeX 명령어를 찾아주는 도구
- Mathpix Snip — 수식 이미지를 촬영하면 LaTeX 코드로 변환해주는 OCR 도구
- Overleaf (overleaf.com) — 온라인 LaTeX 에디터. 실시간 프리뷰 가능
- arXiv Vanity — arXiv 논문을 웹 페이지로 변환하여 수식을 편하게 읽을 수 있음
- Papers with Code (paperswithcode.com) — 논문과 구현 코드를 함께 확인. 수식과 코드 대조에 최적
마무리
논문의 수식은 결국 **"데이터가 어떻게 변환되는지"**를 압축해서 표현한 것이다. 처음에는 기호 하나하나가 낯설겠지만, 위에서 정리한 패턴들이 전체 논문 수식의 80% 이상을 커버한다.
가장 효과적인 학습 순서는:
- 이 글의 기호 치트시트를 옆에 두고
- 관심 있는 논문 1편을 골라
- 핵심 수식 3~5개만 자연어로 풀어 쓰고
- 대응하는 코드(PyTorch/JAX)와 대조하는 것이다
수식을 코드로, 코드를 수식으로 양방향 번역할 수 있게 되면, 논문 읽기 속도가 비약적으로 빨라진다.