AI 수학 (Mathematics for AI)
인공지능은 데이터에서 패턴을 찾아 예측하는 기술입니다. 그 핵심에는 수학이 있습니다. 이 페이지에서는 AI를 이해하는 데 필요한 수학적 개념을 기초부터 쌓아 올립니다.
스마트폰의 얼굴 인식, 번역기, 추천 알고리즘 — 이 모든 것의 뒤에는 행렬 곱셈, 미분, 확률 계산이 돌아가고 있습니다.
AI/머신러닝을 이해하려면 크게 네 가지 수학 분야가 필요합니다.
- 선형대수: 데이터를 벡터/행렬로 표현하고, 신경망의 연산을 수행합니다. AI의 "언어"입니다.
- 미적분: 손실 함수의 기울기를 구하여 모델을 개선합니다. AI의 "학습 엔진"입니다.
- 확률/통계: 불확실성을 다루고, 데이터로부터 결론을 이끌어냅니다. AI의 "추론 도구"입니다.
- 최적화: 최적의 파라미터를 찾아가는 과정을 설계합니다. AI의 "훈련 방법"입니다.
이 페이지에서는 각 분야의 핵심 개념이 AI에서 어떻게 쓰이는지를 직관적인 예시와 함께 설명합니다.
학생이 문제집(데이터)을 풀면서 틀린 문제(손실)를 확인하고, 자신의 풀이 방법(가중치)을 수정하여, 다음에는 더 잘 맞추도록 개선하는 과정을 반복합니다. AI도 정확히 같은 과정입니다. 데이터를 넣고 예측하고, 틀린 정도를 측정하고, 파라미터를 조금씩 고치는 과정을 수백만 번 반복하는 것입니다.
이런 곳에 쓰여요
- 이미지 인식: 사진 속 고양이와 개를 구분하는 CNN(합성곱 신경망)의 핵심이 행렬 연산과 경사하강법입니다.
- 자연어 처리와 LLM: ChatGPT 같은 언어 모델이 다음 토큰을 예측할 때 임베딩, 어텐션, 소프트맥스 함수를 사용합니다.
- 추천 시스템: 넷플릭스, 유튜브가 사용자 취향을 예측할 때 행렬 분해와 최적화를 활용합니다.
- 자율주행: 카메라 영상에서 도로, 차량, 보행자를 실시간으로 인식하는 신경망이 동작합니다.
난이도: ★★★★☆ (대학교)
문제를 수학 문제로 바꾸기
AI를 공부할 때 가장 먼저 해야 할 일은 현실의 문제를 수학의 언어로 번역하는 것입니다. 번역이 끝나면 나머지는 거의 모두 함수, 벡터, 확률, 최적화 문제로 바뀝니다. 즉 AI는 마법이 아니라, 잘 정의된 수학 문제를 빠르게 반복해서 푸는 과정입니다.
- 현실의 대상을 숫자로 바꾸어 입력 벡터 $\mathbf{x}$를 만듭니다.
- 모델 $f_{\theta}$가 입력으로부터 예측값 $\hat{y}$를 계산합니다.
- 정답 $y$와 예측값 $\hat{y}$의 차이를 손실 함수 $L(y,\hat{y})$로 측정합니다.
- 손실이 줄어들도록 파라미터 $\theta$를 업데이트합니다.
결국 AI 학습은 "함수 $f_{\theta}$를 잘 고르는 문제"입니다.
특성, 라벨, 모델, 손실 함수
현실 문제를 수학으로 옮길 때는 몇 가지 기본 객체를 먼저 정해야 합니다.
| 개념 | 기호 | 뜻 | 예시 |
|---|---|---|---|
| 특성(Feature) | $\mathbf{x}$ | 입력을 이루는 숫자 정보 | 픽셀 밝기, 나이, 키, 단어 빈도 |
| 라벨(Label) | $y$ | 모델이 맞혀야 하는 정답 | 집값, 시험 점수, 스팸 여부 |
| 모델(Model) | $f_{\theta}$ | 입력을 예측값으로 바꾸는 함수 | 선형 회귀, 로지스틱 회귀, 신경망 |
| 예측값(Prediction) | $\hat{y}$ | 모델이 현재 낸 답 | 78점, 스팸 확률 0.91 |
| 손실(Loss) | $L(y,\hat{y})$ | 정답과 예측의 차이 | MSE, 교차 엔트로피 |
- 집값 예측: 입력은 면적, 방 개수, 역과의 거리이고, 정답은 실제 집값입니다. 출력이 연속적인 값이므로 회귀(Regression) 문제입니다.
- 스팸 분류: 입력은 메일 속 단어, 링크 수, 발신자 정보이고, 정답은 스팸/정상입니다. 출력이 둘 중 하나이므로 이진 분류(Binary Classification) 문제입니다.
- 이미지 분류: 입력은 픽셀값 벡터이고, 정답은 고양이/개/자동차 같은 클래스입니다. 출력이 여러 범주 중 하나이므로 다중 분류(Multi-class Classification) 문제입니다.
파라미터(Parameter)는 학습으로 자동 조정되는 값입니다. 예를 들어 가중치와 편향이 여기에 해당합니다. 반면 하이퍼파라미터(Hyperparameter)는 사람이 정하는 값입니다. 학습률, 배치 크기, 층 수가 대표적입니다. AI 실험이 어려운 이유는 모델이 파라미터를 배우는 동안, 연구자나 개발자는 하이퍼파라미터를 조정해야 하기 때문입니다.
벡터와 행렬: AI의 언어
AI에서 모든 데이터는 벡터로, 모든 변환은 행렬로 표현됩니다. 이 섹션에서는 AI에서 가장 많이 쓰이는 선형대수 개념을 복습합니다.
컴퓨터는 숫자만 이해합니다. 이미지든, 텍스트든, 음성이든 모든 데이터를 숫자의 배열(벡터)로 변환해야 합니다. 그리고 신경망이 하는 일의 대부분은 이 숫자 배열에 행렬을 곱하는 것입니다. 실제로 딥러닝 학습 시간의 대부분은 거대한 행렬 곱셈을 수행하는 데 쓰입니다. GPU가 AI에 중요한 이유도 GPU가 행렬 곱셈에 특화되어 있기 때문입니다.
데이터를 벡터로 표현하기
AI 모델에 데이터를 입력하려면, 먼저 데이터를 숫자들의 나열인 벡터(Vector)로 변환해야 합니다.
- 이미지: 28×28 흑백 이미지는 각 픽셀의 밝기값을 나열하면 784차원 벡터가 됩니다.
- 텍스트: 문장을 단어 빈도 벡터(각 단어가 몇 번 나왔는지)나 임베딩 벡터(의미를 수치로 변환)로 표현합니다.
- 표 형태 데이터: 나이, 키, 몸무게 등 각 행이 하나의 벡터입니다.
일반적으로, $n$개의 특성(feature)을 가진 데이터 하나는 $n$차원 벡터로 표현됩니다.
$$\mathbf{x} = (x_1, x_2, \ldots, x_n) \in \mathbb{R}^n$$벡터의 내적과 노름
내적(Dot Product)은 두 벡터의 대응하는 성분끼리 곱한 뒤 합한 것으로, 두 벡터가 얼마나 같은 방향을 가리키는지를 측정합니다.
$$\mathbf{a} \cdot \mathbf{b} = \sum_{i} a_i b_i$$내적을 이용하면 두 벡터 사이의 각도를 구할 수 있고, 이를 통해 유사도를 측정할 수 있습니다.
코사인 유사도(Cosine Similarity)는 검색 엔진과 추천 시스템에서 널리 사용되는 유사도 지표입니다.
$$\cos\theta = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\|\|\mathbf{b}\|}$$값이 1에 가까우면 두 벡터가 비슷한 방향, 0이면 직교(관련 없음), -1이면 반대 방향입니다.
L2 노름(Norm)은 벡터의 크기(길이)를 나타냅니다.
$$\|\mathbf{x}\| = \sqrt{\sum_{i} x_i^2}$$행렬 곱셈 = 변환
행렬 곱(Matrix Multiplication)은 입력 데이터를 새로운 표현으로 변환하는 연산입니다. 신경망에서 각 층이 하는 일의 핵심이 바로 행렬 곱입니다.
$$\mathbf{Y} = \mathbf{W}\mathbf{X}$$여기서 $\mathbf{X}$는 입력 데이터, $\mathbf{W}$는 가중치 행렬, $\mathbf{Y}$는 변환된 출력입니다.
입력 $\mathbf{x} = (3, 1)$이 주어지고, 가중치 행렬과 편향이 다음과 같다고 합시다.
$$\mathbf{W} = \begin{pmatrix} 0.5 & -0.3 \\ 0.2 & 0.8 \end{pmatrix}, \quad \mathbf{b} = \begin{pmatrix} 0.1 \\ -0.1 \end{pmatrix}$$1단계 — 행렬 곱: $\mathbf{W}\mathbf{x} = \begin{pmatrix} 0.5 \times 3 + (-0.3) \times 1 \\ 0.2 \times 3 + 0.8 \times 1 \end{pmatrix} = \begin{pmatrix} 1.2 \\ 1.4 \end{pmatrix}$
2단계 — 편향 더하기: $\begin{pmatrix} 1.2 \\ 1.4 \end{pmatrix} + \begin{pmatrix} 0.1 \\ -0.1 \end{pmatrix} = \begin{pmatrix} 1.3 \\ 1.3 \end{pmatrix}$
3단계 — 활성화 함수 (ReLU): $\text{ReLU}\begin{pmatrix} 1.3 \\ 1.3 \end{pmatrix} = \begin{pmatrix} 1.3 \\ 1.3 \end{pmatrix}$ (양수이므로 그대로)
이 3단계가 신경망 한 층의 전부입니다! 이 과정을 여러 층 쌓으면 복잡한 패턴을 학습할 수 있습니다.
신경망의 각 층은 본질적으로 다음 세 단계로 이루어집니다.
- 행렬 곱: 입력에 가중치 행렬을 곱함 ($\mathbf{W}\mathbf{x}$)
- 편향 더하기: 결과에 편향 벡터를 더함 ($+ \mathbf{b}$)
- 활성화 함수: 비선형 함수를 적용 ($\sigma(\cdot)$)
배치 처리(Batch Processing): 여러 데이터를 행렬로 묶으면 한 번의 행렬 곱으로 동시에 계산할 수 있습니다. GPU가 AI 학습에 빠른 이유는, GPU가 대규모 행렬 곱셈에 특화되어 있기 때문입니다.
행렬 연산과 AI 응용
| 연산 | 수식 | AI에서의 역할 |
|---|---|---|
| 행렬-벡터 곱 | $\mathbf{W}\mathbf{x}$ | 한 층의 순전파 |
| 행렬-행렬 곱 | $\mathbf{W}\mathbf{X}$ | 배치 순전파 |
| 전치 | $\mathbf{W}^T$ | 역전파에서 기울기 전파 |
| 역행렬 | $\mathbf{W}^{-1}$ | 선형 회귀의 정규방정식 |
다변수 함수와 그래디언트
AI 모델이 학습한다는 것은, 손실 함수(예측과 정답의 차이)를 최소화하는 파라미터를 찾는 것입니다. 이를 위해서는 "파라미터를 어느 방향으로 바꾸면 손실이 줄어드는가?"를 알아야 합니다. 이 정보를 제공하는 것이 바로 미분(그래디언트)입니다. 미분은 AI의 학습 과정 전체를 가능하게 하는 핵심 도구입니다.
다변수 함수
다변수 함수(Multivariable Function)란 여러 개의 입력 변수를 받아 하나의 실수값을 출력하는 함수입니다. 수학적으로 $f: \mathbb{R}^n \to \mathbb{R}$로 표기합니다.
예를 들어 $f(x, y) = x^2 + y^2$은 두 개의 변수 $x$, $y$를 받아 하나의 값을 출력합니다. 이 함수는 3차원 공간에서 아래로 볼록한 그릇 모양의 곡면을 이룹니다.
편미분
편미분(Partial Derivative)은 다변수 함수에서 하나의 변수만 변화시키고 나머지 변수는 고정한 채로 미분하는 것입니다. 직관적으로, 한 방향으로만 기울기를 측정하는 것입니다.
$$\frac{\partial f}{\partial x_i} = \lim_{h \to 0} \frac{f(x_1, \ldots, x_i + h, \ldots, x_n) - f(x_1, \ldots, x_i, \ldots, x_n)}{h}$$예를 들어 $f(x,y) = x^2 + 3xy$일 때, $y$를 상수로 보고 $x$에 대해 미분하면 $\frac{\partial f}{\partial x} = 2x + 3y$이고, $x$를 상수로 보고 $y$에 대해 미분하면 $\frac{\partial f}{\partial y} = 3x$입니다.
그래디언트 벡터
그래디언트(Gradient)는 모든 편미분을 모아 하나의 벡터로 만든 것입니다.
$$\nabla f = \left(\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, \ldots, \frac{\partial f}{\partial x_n}\right)$$그래디언트의 핵심 성질: 그래디언트 벡터는 함수값이 가장 가파르게 증가하는 방향을 가리킵니다. 따라서 반대 방향인 $-\nabla f$는 함수값이 가장 빠르게 감소하는 방향입니다. 이 성질이 뒤에서 다룰 경사하강법의 핵심 아이디어가 됩니다.
야코비 행렬과 헤시안
그래디언트를 확장하면, 다변수 함수의 미분을 행렬로 표현할 수 있습니다. 이를 통해 여러 입력과 여러 출력을 가진 복잡한 함수의 변화를 체계적으로 다룰 수 있습니다.
야코비 행렬 (Jacobian Matrix)
앞서 그래디언트는 스칼라 함수($f: \mathbb{R}^n \to \mathbb{R}$)의 미분이었습니다. 그렇다면 벡터 함수($\mathbf{f}: \mathbb{R}^n \to \mathbb{R}^m$), 즉 여러 입력을 받아 여러 출력을 내는 함수의 미분은 어떻게 표현할까요? 이때 사용하는 것이 야코비 행렬(Jacobian Matrix)입니다.
$m$개의 출력과 $n$개의 입력을 가진 벡터 함수 $\mathbf{f}$의 야코비 행렬은 $m \times n$ 행렬로, 각 출력의 각 입력에 대한 편미분을 모아놓은 것입니다.
$$\mathbf{J} = \begin{pmatrix} \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{pmatrix}$$AI에서의 의미: 역전파의 연쇄법칙은 사실 야코비 행렬의 곱으로 표현됩니다. 각 층의 변환을 벡터 함수로 보면, 층을 통과할 때마다 야코비 행렬이 곱해져서 기울기가 전파됩니다.
- $f_1 = x^2 + y$이므로 $\frac{\partial f_1}{\partial x} = 2x$, $\frac{\partial f_1}{\partial y} = 1$
- $f_2 = xy$이므로 $\frac{\partial f_2}{\partial x} = y$, $\frac{\partial f_2}{\partial y} = x$
헤시안 행렬 (Hessian Matrix)
헤시안 행렬(Hessian Matrix)은 스칼라 함수 $f: \mathbb{R}^n \to \mathbb{R}$의 2차 편미분을 모아놓은 행렬입니다. 그래디언트가 함수의 기울기(1차 변화)를 알려준다면, 헤시안은 기울기가 어떻게 변하는지(2차 변화), 즉 곡률(Curvature)을 알려줍니다.
$$\mathbf{H} = \begin{pmatrix} \frac{\partial^2 f}{\partial x_1^2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\ \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n \partial x_1} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{pmatrix}$$AI에서의 역할:
- 뉴턴법(Newton's Method): 헤시안 정보를 활용하면 경사하강법보다 더 빠르게 수렴하는 최적화가 가능합니다.
- 손실 함수의 곡률 분석: 헤시안의 고유값을 보면 손실 곡면이 얼마나 가파른지, 어느 방향으로 평평한지 알 수 있습니다.
- 볼록성 판별: 헤시안이 모든 곳에서 양정치(Positive Definite)이면 함수는 볼록(Convex)합니다. 볼록 함수에서는 극소 = 최소이므로 최적화가 쉬워집니다.
최적화와 경사하강법
최적화 문제
최적화(Optimization)란 주어진 함수의 값을 최소(또는 최대)로 만드는 입력값을 찾는 문제입니다. AI에서는 대부분 손실 함수를 최소화하는 문제로 귀결됩니다.
$$\min_{\mathbf{x}} f(\mathbf{x})$$볼록 함수
볼록 함수(Convex Function)란 함수 위의 임의의 두 점을 잇는 선분이 항상 함수 그래프 위에 놓이는 함수입니다. 수학적으로, 임의의 $\mathbf{x}, \mathbf{y}$와 $0 \leq t \leq 1$에 대해 다음이 성립합니다.
$$f(t\mathbf{x} + (1-t)\mathbf{y}) \leq tf(\mathbf{x}) + (1-t)f(\mathbf{y})$$그릇 안에 구슬을 놓으면 어디에 놓든 결국 바닥(최솟값)으로 굴러 내려갑니다. 이것이 볼록 함수의 핵심 성질입니다. 반면 울퉁불퉁한 지형(비볼록 함수)에서는 구슬이 작은 웅덩이(극소)에 빠져서 진짜 가장 낮은 곳(최소)까지 가지 못할 수 있습니다. 실제 딥러닝의 손실 함수는 비볼록인 경우가 대부분이므로, 경사하강법이 전역 최솟값을 보장하지 못합니다. 그러나 경험적으로 "충분히 좋은" 극소에 도달하는 경우가 많습니다.
볼록 함수의 가장 중요한 성질은 극소 = 최소라는 것입니다. 즉, 기울기가 0인 점을 찾으면 그것이 전체에서 가장 작은 값입니다. 이 성질 덕분에 경사하강법이 안정적으로 작동합니다.
라그랑주 승수법 맛보기
라그랑주 승수법(Method of Lagrange Multipliers)은 제약 조건이 있는 최적화 문제를 푸는 방법입니다. AI에서는 정규화, SVM(서포트 벡터 머신) 등에서 등장합니다.
10만 원의 예산(제약 조건)으로 식사의 만족도(목적 함수)를 최대화하고 싶습니다. 예산 제약이 없다면 가장 비싼 식당에 가면 되지만, 제약이 있으므로 예산 범위 안에서 최적의 선택을 해야 합니다. 라그랑주 승수법은 이런 제약 조건부 최적화를 체계적으로 푸는 수학적 도구입니다.
문제: 제약 조건 $g(\mathbf{x}) = 0$ 하에서 $f(\mathbf{x})$를 최소화합니다.
방법: 라그랑지안 $\mathcal{L}(\mathbf{x}, \lambda) = f(\mathbf{x}) + \lambda g(\mathbf{x})$를 구성하고, $\nabla_{\mathbf{x}} \mathcal{L} = 0$과 $g(\mathbf{x}) = 0$을 동시에 풀어 최적점을 찾습니다. 여기서 $\lambda$는 라그랑주 승수라 하며, 제약 조건이 목적 함수에 미치는 영향의 크기를 나타냅니다.
경사하강법 (Gradient Descent)
짙은 안개 속에서 산 정상에 서 있다고 상상해 봅시다. 앞이 보이지 않아 골짜기(최솟값)가 어디인지 모릅니다. 할 수 있는 가장 좋은 전략은 발 밑의 경사가 가장 급한 방향으로 한 걸음씩 내려가는 것입니다. 이것이 바로 경사하강법의 핵심 아이디어입니다!
- 현재 위치 = 현재 파라미터 값
- 발 밑의 경사 = 그래디언트 (기울기)
- 한 걸음의 크기 = 학습률 $\eta$
- 골짜기 = 손실 함수의 최솟값
경사하강법은 그래디언트의 반대 방향으로 조금씩 이동하면서 함수의 최솟값을 찾아가는 알고리즘입니다. 앞서 그래디언트가 가장 가파르게 증가하는 방향이라고 배웠으므로, 반대 방향으로 가면 가장 빠르게 감소합니다.
$$\mathbf{x}_{t+1} = \mathbf{x}_t - \eta \nabla f(\mathbf{x}_t)$$여기서 $\eta$는 학습률(Learning Rate)이라 부르며, 한 번에 얼마나 이동할지를 결정하는 양수입니다.
$f(x) = (x - 3)^2$의 최솟값을 경사하강법으로 찾아 봅시다. 최솟값은 $x = 3$에서 $f(3) = 0$입니다.
도함수: $f'(x) = 2(x - 3)$, 학습률 $\eta = 0.1$, 초기값 $x_0 = 0$
| 단계 | $x_t$ | $f'(x_t)$ | $x_{t+1} = x_t - 0.1 \cdot f'(x_t)$ | $f(x_{t+1})$ |
|---|---|---|---|---|
| 0 | $0$ | $-6$ | $0 - 0.1 \times (-6) = 0.6$ | $5.76$ |
| 1 | $0.6$ | $-4.8$ | $0.6 + 0.48 = 1.08$ | $3.69$ |
| 2 | $1.08$ | $-3.84$ | $1.08 + 0.384 = 1.464$ | $2.36$ |
| $\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ | $\vdots$ |
| 20 | $\approx 2.97$ | $\approx -0.06$ | $\approx 2.976$ | $\approx 0.0006$ |
$x$가 점점 3에 가까워지고, $f(x)$가 0에 수렴하는 것을 볼 수 있습니다. 이것이 AI 모델이 학습하는 과정의 본질입니다!
- 학습률이 너무 크면: 큰 걸음으로 뛰어내려가다가 골짜기를 넘어 반대편 경사를 올라가 버립니다. 계속 이리저리 뛰다가 결국 발산합니다.
- 학습률이 너무 작으면: 아주 조금씩 움직이므로 골짜기에 도달하는 데 엄청나게 오랜 시간이 걸립니다.
- 학습률이 적당하면: 처음에는 빠르게, 골짜기에 가까워지면 서서히 느려지며 안정적으로 수렴합니다.
적절한 학습률을 찾는 것이 AI 학습의 중요한 과제 중 하나입니다. 실무에서는 학습률을 처음에 크게 시작하고 점차 줄이는 학습률 스케줄링을 많이 사용합니다.
경사하강법의 변형
기본 경사하강법을 개선한 다양한 알고리즘이 있습니다.
- 확률적 경사하강법(SGD): 전체 데이터 대신 무작위로 뽑은 하나의 데이터로 기울기를 계산합니다. 빠르지만 불안정합니다.
- 미니배치 경사하강법(Mini-batch GD): 데이터를 작은 묶음(배치)으로 나누어 기울기를 계산합니다. SGD와 전체 GD의 절충안입니다.
- 모멘텀(Momentum): 이전 단계의 이동 방향을 기억하여 관성처럼 활용합니다. $\mathbf{v}_{t+1} = \beta \mathbf{v}_t + \eta \nabla f(\mathbf{x}_t)$, $\mathbf{x}_{t+1} = \mathbf{x}_t - \mathbf{v}_{t+1}$
- Adam: 모멘텀과 학습률 자동 조절을 결합한 알고리즘으로, 현재 가장 널리 쓰입니다. 각 파라미터마다 적응적으로 학습률을 조절합니다.
정보 이론 기초
정보 이론은 "정보를 어떻게 측정하고 효율적으로 전달할 것인가"를 다루는 분야입니다. AI에서는 이 개념이 손실 함수의 설계에 직결됩니다. 분류 모델의 학습에서 가장 많이 쓰이는 교차 엔트로피 손실 함수가 바로 정보 이론에서 나온 것입니다. 정보 이론을 이해하면 "왜 교차 엔트로피를 손실 함수로 쓰는가?"에 대한 깊은 이해를 얻을 수 있습니다.
정보량 (Information)
어떤 사건이 발생했을 때, 그 사건이 얼마나 "놀라운지"를 수치로 나타낸 것이 정보량(Information)입니다. 확률이 낮은 사건일수록 발생했을 때 더 놀랍고, 따라서 더 많은 정보를 담고 있습니다.
"내일 해가 뜹니다"라는 뉴스는 놀랍지 않습니다(확률이 거의 1). 정보량이 0에 가깝습니다. 하지만 "내일 서울에 눈이 2미터 쌓입니다"라는 뉴스는 매우 놀랍습니다(확률이 거의 0). 정보량이 매우 큽니다. 이처럼 예측하기 어려운 사건일수록 더 많은 정보를 담고 있습니다.
예를 들어, 확률 $\frac{1}{2}$인 사건의 정보량은 $-\log_2 \frac{1}{2} = 1$ 비트이고, 확률 $\frac{1}{8}$인 사건의 정보량은 $-\log_2 \frac{1}{8} = 3$ 비트입니다.
엔트로피 (Entropy)
엔트로피는 확률 분포 전체의 불확실성(평균 정보량)을 측정하는 양입니다.
$$H(X) = -\sum_{x} P(x) \log P(x)$$엔트로피가 클수록 결과를 예측하기 어렵고, 작을수록 결과가 뻔합니다.
엔트로피는 "다음에 무엇이 나올지 얼마나 불확실한가?"를 숫자로 표현한 것입니다. AI 분류 모델의 출력이 (고양이: 0.99, 개: 0.01)이면 엔트로피가 낮아 모델이 확신하고 있다는 뜻입니다. 반면 (고양이: 0.5, 개: 0.5)이면 엔트로피가 최대이고, 모델이 전혀 구분하지 못한다는 뜻입니다.
- 공정한 동전(앞면 확률 0.5): $H = -0.5\log_2 0.5 - 0.5\log_2 0.5 = 1$ 비트 (최대 불확실성)
- 편향된 동전(앞면 확률 0.9): $H = -0.9\log_2 0.9 - 0.1\log_2 0.1 \approx 0.47$ 비트 (거의 앞면이 나올 것이라 예측 가능)
교차 엔트로피 (Cross-Entropy)
참 분포 $P$와 예측 분포 $Q$가 있을 때, 교차 엔트로피(Cross-Entropy)는 $Q$를 사용하여 $P$로부터 온 데이터를 인코딩하는 데 필요한 평균 비트 수입니다.
$$H(P, Q) = -\sum_{x} P(x) \log Q(x)$$예측 분포 $Q$가 참 분포 $P$와 같으면 교차 엔트로피는 엔트로피 $H(P)$와 같아지고, 이것이 최소값입니다. $Q$가 $P$와 다를수록 교차 엔트로피는 커집니다.
정답이 "고양이"(확률 분포 $P$: 고양이=1, 개=0)인데, 모델의 예측($Q$)이 (고양이=0.9, 개=0.1)이라면:
$$H(P, Q) = -(1 \times \log 0.9 + 0 \times \log 0.1) = -\log 0.9 \approx 0.105$$모델이 확신에 찬 예측 (고양이=0.99, 개=0.01)을 하면:
$$H(P, Q) = -\log 0.99 \approx 0.01$$모델의 예측이 정답에 가까울수록 교차 엔트로피가 작아집니다. 따라서 교차 엔트로피를 최소화하면 모델이 정답에 가까운 예측을 하도록 학습됩니다.
KL 발산 (Kullback-Leibler Divergence)
KL 발산은 두 확률 분포 사이의 "거리"를 측정합니다. (엄밀히는 거리가 아닙니다. 대칭이 아니기 때문입니다.)
$$D_{KL}(P \| Q) = H(P, Q) - H(P) = \sum_{x} P(x) \log \frac{P(x)}{Q(x)} \geq 0$$KL 발산은 항상 0 이상이며, $P = Q$일 때만 0이 됩니다.
손실 함수
손실 함수의 정의
손실 함수(Loss Function)란 모델의 예측값 $\hat{y}$과 실제값 $y$ 사이의 차이를 하나의 숫자로 측정하는 함수입니다. 모델의 학습 목표는 이 손실 함수를 최소화하는 것입니다. 앞서 배운 최적화와 경사하강법이 바로 이 손실 함수를 줄이기 위해 사용됩니다.
회귀 문제의 손실 함수
출력이 연속적인 값(예: 주택 가격, 온도)인 회귀(Regression) 문제에서는 다음 손실 함수를 사용합니다.
평균 제곱 오차(MSE, Mean Squared Error):
$$\text{MSE} = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2$$각 데이터의 예측 오차를 제곱하여 평균을 낸 것입니다. 큰 오차에 더 큰 벌점을 줍니다.
평균 절대 오차(MAE, Mean Absolute Error):
$$\text{MAE} = \frac{1}{n}\sum_{i=1}^{n}|y_i - \hat{y}_i|$$오차의 절대값을 평균낸 것입니다. 이상값(outlier)에 MSE보다 덜 민감합니다.
분류 문제의 손실 함수
출력이 범주(예: 고양이/개, 스팸/정상)인 분류(Classification) 문제에서는 정보이론에서 배운 교차 엔트로피를 사용합니다.
이진 교차 엔트로피 (Binary Cross-Entropy): 두 가지 분류(예/아니오)일 때:
$$L = -[y\log\hat{y} + (1-y)\log(1-\hat{y})]$$여기서 $y \in \{0, 1\}$은 실제 라벨, $\hat{y} \in (0, 1)$은 모델이 예측한 확률입니다.
다중 분류 교차 엔트로피 (Categorical Cross-Entropy): 세 가지 이상의 분류일 때:
$$L = -\sum_{k=1}^{K} y_k \log \hat{y}_k$$여기서 $K$는 분류의 개수, $y_k$는 원-핫 인코딩된 실제 라벨, $\hat{y}_k$는 각 클래스에 대한 예측 확률입니다.
문제 유형별 손실 함수 정리
| 문제 유형 | 손실 함수 | 수식 | 특징 |
|---|---|---|---|
| 회귀 | MSE | $\frac{1}{n}\sum(y_i - \hat{y}_i)^2$ | 큰 오차에 민감, 미분이 매끄러움 |
| 회귀 | MAE | $\frac{1}{n}\sum|y_i - \hat{y}_i|$ | 이상값에 강건, 0에서 미분 불가 |
| 이진 분류 | 이진 교차 엔트로피 | $-[y\log\hat{y} + (1-y)\log(1-\hat{y})]$ | 확률 출력에 적합 |
| 다중 분류 | 교차 엔트로피 | $-\sum y_k \log \hat{y}_k$ | 소프트맥스와 함께 사용 |
선형 회귀와 로지스틱 회귀
신경망을 이해하기 전에, 가장 간단한 학습 모델부터 살펴봅시다. 이 모델들은 신경망의 특수한 경우이기도 합니다.
선형 회귀 (Linear Regression)
선형 회귀는 입력 $\mathbf{x}$로부터 연속적인 값 $y$를 예측하는 가장 기본적인 모델입니다. 예를 들어, 공부 시간으로 시험 점수를 예측하거나, 집의 면적으로 가격을 예측하는 문제입니다.
모델:
$$\hat{y} = \mathbf{w}^T\mathbf{x} + b$$여기서 $\mathbf{w}$는 가중치 벡터, $b$는 편향(절편)입니다. 입력이 하나뿐이면 $\hat{y} = wx + b$, 즉 직선의 방정식이 됩니다.
손실 함수: 앞에서 배운 MSE(평균 제곱 오차)를 사용합니다.
$$L = \frac{1}{n}\sum_{i=1}^{n}(y_i - \mathbf{w}^T\mathbf{x}_i - b)^2$$정규방정식 (Normal Equation): 선형 회귀는 미분을 0으로 놓고 풀면 해를 수식으로 바로 구할 수 있습니다. 이것이 선형대수학의 힘입니다.
$$\hat{\mathbf{w}} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y}$$물론 경사하강법으로도 풀 수 있습니다. 가중치를 기울기의 반대 방향으로 반복적으로 업데이트합니다.
$$w \leftarrow w - \eta \frac{\partial L}{\partial w}$$데이터: (1시간, 50점), (2시간, 60점), (3시간, 65점), (4시간, 75점), (5시간, 80점)
모델 $\hat{y} = wx + b$를 학습한다고 합시다. 경사하강법을 사용하면:
- $w$와 $b$를 임의의 값(예: $w=0, b=0$)으로 초기화합니다.
- 각 데이터에 대해 예측값 $\hat{y}_i = wx_i + b$를 계산합니다.
- 손실 $L = \frac{1}{5}\sum(y_i - \hat{y}_i)^2$을 구합니다.
- 기울기 $\frac{\partial L}{\partial w}$와 $\frac{\partial L}{\partial b}$를 계산하여 $w$, $b$를 업데이트합니다.
- 이 과정을 손실이 충분히 작아질 때까지 반복하면, 대략 $w \approx 7.5$, $b \approx 43$ 정도의 값을 얻습니다.
로지스틱 회귀 (Logistic Regression)
로지스틱 회귀는 입력 $\mathbf{x}$가 특정 클래스에 속할 확률을 예측하는 모델입니다. 이름에 "회귀"가 들어있지만, 실제로는 이진 분류(Binary Classification) 문제에 사용됩니다. 예를 들어, 이메일이 스팸인지 아닌지, 환자가 질병이 있는지 없는지를 판별합니다.
모델: 선형 회귀의 출력에 시그모이드 함수를 적용하여 확률값(0과 1 사이)으로 변환합니다.
$$\hat{y} = \sigma(\mathbf{w}^T\mathbf{x} + b) = \frac{1}{1 + e^{-(\mathbf{w}^T\mathbf{x}+b)}}$$손실 함수: 앞의 손실 함수 섹션에서 배운 이진 교차 엔트로피를 사용합니다.
$$L = -[y\log\hat{y} + (1-y)\log(1-\hat{y})]$$결정 경계 (Decision Boundary): 로지스틱 회귀에서 $\hat{y} = 0.5$가 되는 경계는 $\mathbf{w}^T\mathbf{x} + b = 0$인 초평면(2차원에서는 직선)입니다. 이 경계를 기준으로 한쪽은 클래스 1, 다른 쪽은 클래스 0으로 분류합니다.
신경망의 수학 구조
퍼셉트론 (Perceptron)
퍼셉트론은 신경망의 가장 기본 단위입니다. 입력 벡터 $\mathbf{x}$에 가중치 $\mathbf{w}$를 곱하고 편향 $b$를 더한 뒤, 활성화 함수 $\sigma$를 적용합니다.
$$z = \mathbf{w}^T\mathbf{x} + b, \quad a = \sigma(z)$$여기서 $\mathbf{w}^T\mathbf{x} = w_1 x_1 + w_2 x_2 + \cdots + w_n x_n$은 선형대수학의 내적입니다. 가중치 $\mathbf{w}$는 각 입력이 출력에 미치는 영향의 크기를 결정하고, 편향 $b$는 기준점을 조절합니다.
활성화 함수 (Activation Functions)
활성화 함수는 선형 변환의 결과에 비선형성을 추가하는 함수입니다. 활성화 함수가 없으면 여러 층을 쌓아도 결국 하나의 선형 변환과 같아서, 복잡한 패턴을 학습할 수 없습니다.
시그모이드(Sigmoid):
$$\sigma(z) = \frac{1}{1+e^{-z}}$$출력을 $(0, 1)$ 범위로 압축합니다. 확률로 해석할 수 있어 이진 분류의 출력층에 사용됩니다.
ReLU (Rectified Linear Unit):
$$\text{ReLU}(z) = \max(0, z)$$음수는 0으로, 양수는 그대로 출력합니다. 계산이 매우 빠르고, 뒤에서 다룰 기울기 소실 문제를 완화합니다. 현재 가장 널리 쓰이는 은닉층 활성화 함수입니다.
소프트맥스(Softmax):
$$\text{softmax}(z_i) = \frac{e^{z_i}}{\sum_{j} e^{z_j}}$$여러 출력값을 확률 분포로 변환합니다. 모든 출력이 0과 1 사이이며, 합이 1이 됩니다. 다중 분류 문제의 출력층에 사용됩니다.
활성화 함수 비교
| 함수 | 범위 | 도함수 | 특징 |
|---|---|---|---|
| 시그모이드 | $(0, 1)$ | $\sigma(z)(1-\sigma(z))$ | 확률 해석 가능, 기울기 소실 문제 |
| ReLU | $[0, \infty)$ | $z > 0$이면 1, 아니면 0 | 계산 빠름, 기울기 소실 완화 |
| 소프트맥스 | $(0, 1)$, 합 = 1 | (야코비 행렬) | 확률 분포 출력, 다중 분류용 |
활성화 함수의 그래프
시그모이드는 출력을 $(0,1)$로 압축하지만 양 끝에서 기울기가 거의 0입니다(기울기 소실). ReLU는 양수 영역에서 기울기가 1로 일정하여 깊은 신경망에서도 기울기가 잘 전달됩니다. Tanh는 출력 범위가 $(-1,1)$로 시그모이드보다 중심이 0이라 학습이 약간 더 안정적입니다.
Tanh (Hyperbolic Tangent):
$$\tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}$$범위 $(-1, 1)$, 도함수 $1 - \tanh^2(z)$
다층 신경망 (MLP, Multi-Layer Perceptron)
퍼셉트론을 여러 층으로 쌓으면 다층 신경망이 됩니다. $l$번째 층의 출력은 다음과 같이 계산됩니다.
$$\mathbf{a}^{(l)} = \sigma\!\left(\mathbf{W}^{(l)}\mathbf{a}^{(l-1)} + \mathbf{b}^{(l)}\right)$$여기서 $\mathbf{W}^{(l)}$은 $l$번째 층의 가중치 행렬, $\mathbf{b}^{(l)}$은 편향 벡터, $\mathbf{a}^{(l-1)}$은 이전 층의 출력입니다. 각 층은 본질적으로 행렬 곱 + 활성화 함수입니다. 이것이 선형대수학이 AI의 핵심인 이유입니다.
역전파
회사에서 실수가 발생했다고 합시다. "최종 결과물에 문제가 있다면, 그 원인은 어느 팀의 어떤 결정 때문인가?"를 거슬러 올라가며 추적하는 것과 같습니다. 역전파도 마찬가지입니다. 최종 손실(오차)이 크다면, 각 가중치가 그 오차에 얼마나 기여했는지를 출력층에서 입력층으로 거슬러 올라가며 계산합니다. 기여도가 큰 가중치를 더 많이 수정하고, 기여도가 작은 가중치는 조금만 수정합니다.
순전파 (Forward Propagation)
순전파는 입력 데이터를 신경망의 각 층을 통과시켜 최종 출력을 얻고, 손실 함수로 오차를 계산하는 과정입니다.
흐름: 입력 $\mathbf{x}$ → 각 층에서 $\mathbf{W}\mathbf{a} + \mathbf{b}$ 계산 → 활성화 함수 적용 → 출력 $\hat{y}$ → 손실 $L$ 계산
역전파 (Backpropagation)
역전파는 미적분학의 연쇄법칙(Chain Rule)을 이용해 손실 함수에 대한 각 가중치의 기울기를 효율적으로 계산하는 알고리즘입니다. 출력층에서 시작하여 입력층 방향으로 기울기를 전파합니다.
연쇄법칙 복습
신경망은 여러 함수를 연쇄적으로 합성한 것입니다: 입력 → 선형 변환 → 활성화 → 선형 변환 → 활성화 → … → 출력. 최종 손실이 처음 가중치에 어떤 영향을 받는지 알려면, 중간에 거치는 모든 함수의 미분을 줄줄이 곱해야 합니다. 이것이 바로 연쇄법칙(Chain Rule)입니다.
비유하자면, "나비 효과"를 정량적으로 추적하는 것입니다. 첫 번째 층의 가중치를 살짝 바꾸면 → 첫 번째 층 출력이 변하고 → 두 번째 층 입력이 변하고 → … → 최종 손실이 변합니다. 각 단계의 변화량을 곱하면 전체 영향을 계산할 수 있습니다.
합성함수의 미분에서 연쇄법칙은 다음과 같습니다.
$$\frac{\partial L}{\partial w} = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} \cdot \frac{\partial z}{\partial w}$$각 항의 의미를 살펴보면:
- $\frac{\partial L}{\partial a}$: 출력 $a$가 손실 $L$에 미치는 영향
- $\frac{\partial a}{\partial z}$: 활성화 함수의 도함수 (예: 시그모이드의 경우 $\sigma(z)(1-\sigma(z))$)
- $\frac{\partial z}{\partial w}$: 가중치 $w$가 선형 결합 $z$에 미치는 영향 (= 입력값)
구체적 예시: 2층 신경망에서 역전파
입력 $x$, 은닉층 가중치 $w_1$, 출력층 가중치 $w_2$, 활성화 함수 $\sigma$를 가진 간단한 2층 신경망을 생각합시다.
1단계 — 순전파:
- 은닉층: $z_1 = w_1 x$, $a_1 = \sigma(z_1)$
- 출력층: $z_2 = w_2 a_1$, $\hat{y} = \sigma(z_2)$
- 손실: $L = \frac{1}{2}(\hat{y} - y)^2$
2단계 — 출력층 기울기:
$$\frac{\partial L}{\partial w_2} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z_2} \cdot \frac{\partial z_2}{\partial w_2} = (\hat{y} - y) \cdot \sigma'(z_2) \cdot a_1$$3단계 — 은닉층 기울기:
$$\frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z_2} \cdot \frac{\partial z_2}{\partial a_1} \cdot \frac{\partial a_1}{\partial z_1} \cdot \frac{\partial z_1}{\partial w_1} = (\hat{y} - y) \cdot \sigma'(z_2) \cdot w_2 \cdot \sigma'(z_1) \cdot x$$4단계 — 가중치 업데이트:
$$w_1 \leftarrow w_1 - \eta \frac{\partial L}{\partial w_1}, \quad w_2 \leftarrow w_2 - \eta \frac{\partial L}{\partial w_2}$$기울기 소실과 폭발
역전파에서 연쇄법칙을 적용하면, 각 층의 도함수가 곱해집니다. 층이 많아지면 문제가 생길 수 있습니다.
- 기울기 소실(Vanishing Gradient): 시그모이드의 도함수는 최대 0.25입니다. 여러 층을 곱하면 기울기가 0에 가까워져 초반 층의 가중치가 거의 업데이트되지 않습니다.
- 기울기 폭발(Exploding Gradient): 도함수 값이 1보다 크면 여러 층을 곱할수록 기울기가 발산합니다.
ReLU 활성화 함수는 양수 영역에서 도함수가 정확히 1이므로, 기울기가 곱해져도 소실되지 않습니다. 이것이 현대 신경망에서 ReLU가 가장 많이 쓰이는 이유입니다.
학습 알고리즘 한눈에 보기
지금까지 나온 식을 하나의 흐름으로 묶으면, 학습은 순전파 → 손실 계산 → 역전파 → 파라미터 업데이트의 반복입니다. 컴퓨터는 이 반복을 미니배치 단위로 수천 번, 수만 번 수행합니다.
데이터 전체를 한 번에 쓰면 기울기가 안정적이지만 계산이 무겁습니다. 데이터 하나만 쓰면 빠르지만 흔들림이 큽니다. 미니배치(Mini-batch)는 이 둘의 절충안으로, 계산 효율과 학습 안정성을 동시에 확보합니다.
미니배치 학습 의사코드
입력: 데이터셋 D, 초기 파라미터 theta, 학습률 eta, epoch 수 E
for epoch = 1 to E:
데이터를 무작위로 섞습니다.
for 각 미니배치 (X_B, y_B) in D:
y_hat = model(X_B, theta)
L = loss(y_hat, y_B)
g = gradient(L, theta)
theta = theta - eta * g
return theta
각 줄이 의미하는 것
- shuffle: 데이터 순서에 따른 편향을 줄입니다.
- model: 현재 파라미터로 예측을 만듭니다. 이것이 순전파입니다.
- loss: 예측과 정답의 차이를 하나의 숫자로 압축합니다.
- gradient: 각 파라미터를 어느 방향으로 얼마나 바꿔야 할지 계산합니다. 이것이 역전파의 결과입니다.
- update: 그래디언트의 반대 방향으로 조금 이동합니다. 이것이 최적화 단계입니다.
데이터가 3,200개이고 배치 크기가 32이면, 한 epoch에는 100번의 업데이트가 일어납니다. epoch를 10번 돌리면 총 1,000번 업데이트합니다. 따라서 "학습을 오래 했다"는 말은 결국 파라미터를 많이 수정했다는 뜻입니다.
어텐션과 트랜스포머(Transformer)의 수학
현대 AI, 특히 대규모 언어 모델(Large Language Model, LLM)은 문장을 단순히 왼쪽에서 오른쪽으로만 읽지 않습니다. 현재 토큰(Token)이 문장 안의 다른 토큰들을 얼마나 참고해야 하는지를 계산하여 문맥을 만듭니다. 이 계산 규칙이 바로 어텐션(Attention)입니다.
어텐션의 기본 아이디어
어텐션은 "지금 이 토큰이, 다른 토큰들 가운데 누구를 얼마나 참고할 것인가?"를 정하는 가중 평균입니다. 따라서 핵심 수학은 내적으로 유사도를 재고, 소프트맥스로 가중치를 정규화하고, 가중합으로 정보를 모으는 것입니다.
- Query (Q): 지금 무엇을 찾고 있는가를 나타내는 벡터
- Key (K): 각 토큰이 어떤 정보를 가지고 있는가를 나타내는 벡터
- Value (V): 실제로 전달할 내용 벡터
이 식은 다음 세 단계로 읽습니다.
- $QK^T$로 Query와 Key의 유사도를 계산합니다.
- 점수가 너무 커지지 않도록 $\sqrt{d_k}$로 나누어 스케일을 맞춥니다.
- 소프트맥스로 가중치를 만든 뒤, Value의 가중 평균을 계산합니다.
수치 예시: 두 후보 중 어디에 더 주목할까요
현재 토큰의 Query를 $q=(2,1)$, 두 후보 토큰의 Key를 $k_1=(1,0)$, $k_2=(0,1)$라고 합시다. 두 후보의 Value는 $v_1=(1,0)$, $v_2=(0,1)$라고 하겠습니다.
1단계 — 내적 점수 계산:
$$q \cdot k_1 = 2, \qquad q \cdot k_2 = 1$$2단계 — 스케일링과 소프트맥스:
$$\left(\frac{2}{\sqrt{2}}, \frac{1}{\sqrt{2}}\right) \approx (1.41, 0.71)$$ $$\operatorname{softmax}(1.41, 0.71) \approx (0.67, 0.33)$$3단계 — Value의 가중 평균:
$$0.67\,v_1 + 0.33\,v_2 = 0.67(1,0) + 0.33(0,1) = (0.67, 0.33)$$즉 모델은 두 후보를 모두 참고하지만, 첫 번째 후보를 약 두 배 더 강하게 참고합니다. 어텐션은 하나만 고르는 것이 아니라, 여러 후보를 비율을 두고 섞는 것입니다.
왜 차원의 제곱근으로 나눕니까
차원이 커질수록 내적값의 크기도 함께 커지는 경향이 있습니다. 그러면 소프트맥스가 너무 뾰족해져 한 토큰에 거의 모든 확률을 몰아주고, 나머지는 거의 0이 됩니다. 이렇게 되면 학습 초기에 기울기가 불안정해질 수 있습니다.
Query와 Key의 각 성분이 평균 0, 분산 1이라고 가정하면, 내적 $q \cdot k = \sum_i q_i k_i$의 분산은 대략 $d_k$가 됩니다. 따라서 $\sqrt{d_k}$로 나누면 점수의 분산이 대략 1로 맞춰져, 소프트맥스 입력의 크기가 지나치게 커지는 것을 막을 수 있습니다.
멀티헤드 어텐션과 Transformer 블록
하나의 어텐션만 쓰면 한 종류의 관계만 보기 쉽습니다. 그래서 Transformer는 여러 개의 어텐션을 병렬로 사용합니다. 어떤 헤드는 주어와 동사의 관계를 보고, 다른 헤드는 수식어와 명사의 관계를 보고, 또 다른 헤드는 먼 거리 문맥을 볼 수 있습니다.
$$\operatorname{head}_i = \operatorname{Attention}(QW_i^Q, KW_i^K, VW_i^V)$$ $$\operatorname{MultiHead}(Q, K, V) = \operatorname{Concat}(\operatorname{head}_1, \ldots, \operatorname{head}_h)W^O$$또한 어텐션만으로는 단어의 순서를 알 수 없으므로, 입력 임베딩(Embedding)에 위치 정보(Position) $p_i$를 더하여 $x_i = e_i + p_i$처럼 사용합니다. 이렇게 하면 Transformer는 무엇이 중요한가와 어디에 있는가를 동시에 표현할 수 있습니다.
ChatGPT 같은 언어 모델은 대규모 Transformer를 사용하여 다음 토큰의 확률 분포를 예측합니다. 즉 이 페이지에서 배운 벡터, 내적, 소프트맥스, 교차 엔트로피, 경사하강법, 역전파가 그대로 LLM의 내부 계산으로 이어집니다.
확률적 학습
AI는 데이터로부터 학습합니다. 하지만 데이터에는 잡음(noise)이 있고, 같은 입력에 대해서도 결과가 다를 수 있습니다. 이러한 불확실성을 다루는 도구가 바로 확률과 통계입니다. 확률 이론은 AI가 "이 사진이 고양이일 확률이 93%입니다"처럼 불확실성을 정량화하고, 데이터로부터 합리적인 결론을 이끌어내는 기반을 제공합니다.
최대우도추정 (MLE, Maximum Likelihood Estimation)
최대우도추정은 관측된 데이터가 나올 확률을 최대화하는 파라미터 $\theta$를 찾는 방법입니다.
주머니에 다양한 동전이 있습니다. 어떤 동전은 앞면이 나올 확률이 30%, 어떤 것은 50%, 어떤 것은 80%입니다. 동전 하나를 꺼내서 10번 던졌더니 앞면이 7번 나왔습니다. 어떤 동전이었을까요? 직관적으로 앞면 확률이 80%인 동전이 가장 그럴듯합니다. 이렇게 "관측된 결과가 나올 가능성이 가장 높은 파라미터를 찾는 것"이 최대우도추정입니다.
곱셈은 계산이 불안정하므로(매우 작은 수들의 곱은 컴퓨터에서 0이 됨), 로그를 취해 로그우도(Log-Likelihood)를 사용합니다.
$$\ell(\theta) = \sum_{i=1}^{n} \log P(x_i | \theta)$$과적합과 정규화
과적합(Overfitting)이란 모델이 훈련 데이터의 패턴뿐 아니라 잡음까지 "외워" 버려서, 새로운 데이터에 대한 예측 성능이 떨어지는 현상입니다. 마치 수학 시험 기출문제만 달달 외운 학생이 새로운 문제를 풀지 못하는 것과 같습니다.
L2 정규화(Regularization): 가중치가 너무 커지지 않도록 손실 함수에 벌점을 추가합니다.
$$L_{\text{reg}} = L + \lambda\|\mathbf{w}\|^2$$여기서 $\lambda$는 정규화 강도를 조절하는 하이퍼파라미터이고, $\|\mathbf{w}\|^2 = \sum w_i^2$은 모든 가중치의 제곱합입니다. 이 항이 추가되면 가중치가 작은 값을 유지하게 되어 모델이 단순해지고, 과적합이 줄어듭니다.
드롭아웃(Dropout): 학습 중에 무작위로 일부 뉴런을 비활성화하는 기법입니다. 마치 시험 공부를 할 때 매번 다른 친구들과 스터디 그룹을 만드는 것과 같습니다. 특정 뉴런에 지나치게 의존하지 않게 되어 모델이 더 일반적인 패턴을 학습합니다.
베이즈 관점 (Bayesian Perspective)
확률론의 베이즈 정리를 모델 학습에 적용하면, 데이터 $D$를 관찰한 후의 파라미터 분포를 구할 수 있습니다.
처음에 "이 동전은 공정할 것이다"라는 사전 믿음(사전 분포)을 갖고 있습니다. 동전을 10번 던져서 앞면이 9번 나왔습니다. 이 증거(데이터)를 바탕으로 "이 동전은 앞면이 나올 확률이 높은 편향된 동전일 수 있다"라고 믿음을 업데이트합니다(사후 분포). 더 많은 데이터를 관찰할수록 사전 믿음의 영향은 줄어들고, 데이터가 말해주는 바에 더 가까워집니다.
- $P(D|\theta)$: 우도(Likelihood) — 파라미터 $\theta$일 때 데이터가 관측될 확률 (MLE가 최대화하는 것)
- $P(\theta)$: 사전 분포(Prior) — 학습 전에 파라미터에 대해 가지고 있는 사전 지식
- $P(\theta|D)$: 사후 분포(Posterior) — 데이터를 관찰한 후 업데이트된 믿음
L2 정규화는 사실 가중치에 대해 정규분포 사전 분포를 가정한 MAP(Maximum A Posteriori) 추정과 동일합니다. 즉 정규화는 베이즈 관점에서 자연스러운 해석을 가집니다.
차원의 저주와 차원 축소
차원의 저주 (Curse of Dimensionality)
데이터의 차원이 높아지면 직관에 반하는 여러 현상이 발생합니다. 이를 차원의 저주라고 합니다.
- 데이터 간 거리가 비슷해짐: 고차원에서는 최근접 이웃(nearest neighbor)과 최원접 이웃(farthest neighbor)의 거리 차이가 줄어들어, 거리 기반 알고리즘(예: k-NN)의 성능이 떨어집니다.
- 필요한 데이터 양이 기하급수적으로 증가: 각 차원을 10등분하면 $d$차원 공간에서 $10^d$개의 칸이 필요합니다. 차원이 늘어날수록 데이터가 극도로 희소해집니다.
- 단위 초구(hypersphere)의 부피가 0에 수렴: 고차원에서 데이터는 초입방체의 "모서리"에 몰리고 중심 부근은 거의 비게 됩니다.
주성분 분석 (PCA, Principal Component Analysis)
3차원 물체에 빛을 비추면 2차원 그림자가 생깁니다. 어떤 각도에서 빛을 비추느냐에 따라 그림자의 모양이 달라집니다. PCA는 물체의 형태를 가장 잘 보존하는 방향으로 그림자를 드리우는 것과 같습니다. 데이터가 가장 많이 퍼져 있는(분산이 큰) 방향을 찾아서, 그 방향으로 투영하면 정보 손실을 최소화하면서 차원을 줄일 수 있습니다.
예를 들어, 학생들의 성적 데이터에 국어, 영어, 수학 3과목이 있는데, 국어와 영어 점수가 항상 비슷하게 움직인다면(상관관계가 높다면), 사실상 "어학 능력"과 "수리 능력" 두 가지 차원으로 축소해도 대부분의 정보를 보존할 수 있습니다.
핵심 아이디어: 데이터의 분산이 가장 큰 방향을 찾아 차원을 축소합니다. 정보 손실을 최소화하면서 차원을 줄이는 것이 목표입니다.
PCA의 단계:
- 중심화: 데이터의 평균을 0으로 맞춥니다.
- 공분산 행렬 계산: $\mathbf{C} = \frac{1}{n}\mathbf{X}^T\mathbf{X}$
- 고유값 분해: $\mathbf{C} = \mathbf{V}\mathbf{\Lambda}\mathbf{V}^T$
- 고유벡터 선택: 가장 큰 고유값에 대응하는 고유벡터 $k$개를 선택합니다.
- 차원 축소: $\mathbf{Z} = \mathbf{X}\mathbf{V}_k$로 원래 데이터를 $k$차원으로 변환합니다.
고유값이 큰 순서대로 정렬하면, 앞쪽 고유벡터가 데이터의 변동(분산)을 가장 많이 설명하는 방향입니다. 상위 $k$개의 고유벡터만 사용하면 데이터의 핵심 구조를 보존하면서 차원을 줄일 수 있습니다.
수치적 안정성
AI 모델을 실제로 구현할 때는 수치적 문제에 주의해야 합니다. 수학적으로 동일한 수식이라도 컴퓨터에서는 부동소수점 연산의 한계로 인해 오버플로(overflow)나 언더플로(underflow)가 발생할 수 있습니다.
소프트맥스의 오버플로 문제
소프트맥스 함수 $\text{softmax}(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}}$에서 $z_i$가 크면 $e^{z_i}$가 오버플로를 일으키고, $z_i$가 매우 작은 음수이면 $e^{z_i} \approx 0$이 되어 언더플로가 발생합니다.
해결: 입력 벡터에서 최댓값을 빼줍니다.
$$\text{softmax}(z_i) = \frac{e^{z_i - \max(\mathbf{z})}}{\sum_j e^{z_j - \max(\mathbf{z})}}$$이는 분자와 분모에 $e^{-\max(\mathbf{z})}$를 곱한 것이므로 수학적으로 완전히 동일한 결과를 줍니다. 최댓값을 빼면 지수의 최대값이 0이 되어 $e^0 = 1$ 이하의 값만 계산하면 되므로 오버플로가 방지됩니다.
로그 확률의 사용
확률의 곱 $\prod_{i=1}^{n} P(x_i)$은 데이터가 많을수록 매우 작은 수가 되어 언더플로가 발생합니다. 예를 들어 $0.01$을 100번 곱하면 $10^{-200}$으로, 일반적인 부동소수점으로 표현할 수 없습니다.
해결: 로그를 취해 곱셈을 덧셈으로 변환합니다.
$$\prod_{i=1}^{n} P(x_i) \longrightarrow \sum_{i=1}^{n} \log P(x_i)$$이것이 최대우도추정(MLE)에서 우도(likelihood) 대신 로그우도(log-likelihood)를 사용하는 이유입니다. 로그는 단조증가 함수이므로 최대화하는 지점은 동일합니다.
Log-Sum-Exp 트릭
$\log\sum_i e^{z_i}$를 직접 계산하면 $e^{z_i}$에서 오버플로가 발생할 수 있습니다. 이를 안정적으로 계산하는 방법이 Log-Sum-Exp 트릭입니다.
$$\log\sum_i e^{z_i} = c + \log\sum_i e^{z_i - c}, \quad c = \max(\mathbf{z})$$$c = \max(\mathbf{z})$를 빼면 지수 중 최대가 $e^0 = 1$이 되어 오버플로가 방지됩니다. 이 트릭은 교차 엔트로피 손실 함수를 계산할 때 필수적으로 사용됩니다.
torch.nn.CrossEntropyLoss나 tf.nn.softmax_cross_entropy_with_logits는 내부적으로 이 트릭을 사용합니다. 소프트맥스와 교차 엔트로피를 분리해서 계산하면 수치적 문제가 생길 수 있으므로, 항상 통합 함수를 사용하는 것이 좋습니다.
전체 흐름 요약
AI 모델의 학습은 다음과 같은 순환 과정으로 이루어집니다.
수학 분야별 AI에서의 역할
| 수학 분야 | AI에서의 역할 | 관련 개념 |
|---|---|---|
| 선형대수학 | 신경망의 구조와 연산 | 행렬 곱, 벡터, 내적, 고유값 분해, 어텐션 |
| 미적분학 | 최적화와 역전파 | 편미분, 그래디언트, 연쇄법칙 |
| 최적화 | 파라미터 업데이트 전략 | 경사하강법, 모멘텀, Adam, 미니배치 |
| 확률론 | 학습과 추론 | 조건부 확률, 베이즈 정리, 분포 |
| 정보 이론 | 손실 함수 설계 | 엔트로피, 교차 엔트로피, KL 발산 |
| 통계학 | 모델 평가와 일반화 | 추정, 편향-분산, 가설 검정 |
| 수치해석 | 수치적 안정성 | 부동소수점 오차, 수치 미분 |