AI 수학 (Mathematics for AI)

인공지능은 데이터에서 패턴을 찾아 예측하는 기술입니다. 그 핵심에는 수학이 있습니다. 이 페이지에서는 AI를 이해하는 데 필요한 수학적 개념을 기초부터 쌓아 올립니다.

스마트폰의 얼굴 인식, 번역기, 추천 알고리즘 — 이 모든 것의 뒤에는 행렬 곱셈, 미분, 확률 계산이 돌아가고 있습니다.

AI에는 어떤 수학이 필요합니까?

AI/머신러닝을 이해하려면 크게 네 가지 수학 분야가 필요합니다.

  • 선형대수: 데이터를 벡터/행렬로 표현하고, 신경망의 연산을 수행합니다. AI의 "언어"입니다.
  • 미적분: 손실 함수의 기울기를 구하여 모델을 개선합니다. AI의 "학습 엔진"입니다.
  • 확률/통계: 불확실성을 다루고, 데이터로부터 결론을 이끌어냅니다. AI의 "추론 도구"입니다.
  • 최적화: 최적의 파라미터를 찾아가는 과정을 설계합니다. AI의 "훈련 방법"입니다.

이 페이지에서는 각 분야의 핵심 개념이 AI에서 어떻게 쓰이는지를 직관적인 예시와 함께 설명합니다.

일상 비유 — AI 학습은 "시험공부"와 같습니다.

학생이 문제집(데이터)을 풀면서 틀린 문제(손실)를 확인하고, 자신의 풀이 방법(가중치)을 수정하여, 다음에는 더 잘 맞추도록 개선하는 과정을 반복합니다. AI도 정확히 같은 과정입니다. 데이터를 넣고 예측하고, 틀린 정도를 측정하고, 파라미터를 조금씩 고치는 과정을 수백만 번 반복하는 것입니다.

이런 곳에 쓰여요

  • 이미지 인식: 사진 속 고양이와 개를 구분하는 CNN(합성곱 신경망)의 핵심이 행렬 연산과 경사하강법입니다.
  • 자연어 처리와 LLM: ChatGPT 같은 언어 모델이 다음 토큰을 예측할 때 임베딩, 어텐션, 소프트맥스 함수를 사용합니다.
  • 추천 시스템: 넷플릭스, 유튜브가 사용자 취향을 예측할 때 행렬 분해와 최적화를 활용합니다.
  • 자율주행: 카메라 영상에서 도로, 차량, 보행자를 실시간으로 인식하는 신경망이 동작합니다.

선수 지식: 미적분학, 선형대수학, 확률론

난이도: ★★★★☆ (대학교)

문제를 수학 문제로 바꾸기

AI를 공부할 때 가장 먼저 해야 할 일은 현실의 문제를 수학의 언어로 번역하는 것입니다. 번역이 끝나면 나머지는 거의 모두 함수, 벡터, 확률, 최적화 문제로 바뀝니다. 즉 AI는 마법이 아니라, 잘 정의된 수학 문제를 빠르게 반복해서 푸는 과정입니다.

지도학습(Supervised Learning)의 기본 틀:
  1. 현실의 대상을 숫자로 바꾸어 입력 벡터 $\mathbf{x}$를 만듭니다.
  2. 모델 $f_{\theta}$가 입력으로부터 예측값 $\hat{y}$를 계산합니다.
  3. 정답 $y$와 예측값 $\hat{y}$의 차이를 손실 함수 $L(y,\hat{y})$로 측정합니다.
  4. 손실이 줄어들도록 파라미터 $\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 실험이 어려운 이유는 모델이 파라미터를 배우는 동안, 연구자나 개발자는 하이퍼파라미터를 조정해야 하기 때문입니다.

현실 문제를 수학 문제로 번역하기 현실 문제 예: 집값 예측 입력 벡터 x = (x1, x2, ...) 모델 y_hat = f_theta(x) 파라미터 theta 포함 예측값 y_hat 정답 y 손실 함수 L(y, y_hat) AI 학습은 예측과 정답의 차이를 줄이도록 모델의 파라미터를 반복해서 조정하는 과정입니다.

벡터와 행렬: AI의 언어

AI에서 모든 데이터는 벡터로, 모든 변환은 행렬로 표현됩니다. 이 섹션에서는 AI에서 가장 많이 쓰이는 선형대수 개념을 복습합니다.

왜 선형대수가 AI의 핵심입니까?

컴퓨터는 숫자만 이해합니다. 이미지든, 텍스트든, 음성이든 모든 데이터를 숫자의 배열(벡터)로 변환해야 합니다. 그리고 신경망이 하는 일의 대부분은 이 숫자 배열에 행렬을 곱하는 것입니다. 실제로 딥러닝 학습 시간의 대부분은 거대한 행렬 곱셈을 수행하는 데 쓰입니다. GPU가 AI에 중요한 이유도 GPU가 행렬 곱셈에 특화되어 있기 때문입니다.

데이터를 벡터로 표현하기

AI 모델에 데이터를 입력하려면, 먼저 데이터를 숫자들의 나열인 벡터(Vector)로 변환해야 합니다.

일반적으로, $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}$$
임베딩과 벡터 연산: ChatGPT와 같은 언어 모델은 단어를 고차원 벡터로 변환(임베딩)합니다. 놀랍게도, 벡터 연산이 의미 관계를 반영합니다. 예를 들어 "왕 - 남자 + 여자 ≈ 여왕"처럼, 벡터 공간에서의 덧셈과 뺄셈이 단어의 의미를 조작할 수 있습니다.

행렬 곱셈 = 변환

행렬 곱(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단계가 신경망 한 층의 전부입니다! 이 과정을 여러 층 쌓으면 복잡한 패턴을 학습할 수 있습니다.

신경망의 각 층은 본질적으로 다음 세 단계로 이루어집니다.

  1. 행렬 곱: 입력에 가중치 행렬을 곱함 ($\mathbf{W}\mathbf{x}$)
  2. 편향 더하기: 결과에 편향 벡터를 더함 ($+ \mathbf{b}$)
  3. 활성화 함수: 비선형 함수를 적용 ($\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 모델이 학습한다는 것은, 손실 함수(예측과 정답의 차이)를 최소화하는 파라미터를 찾는 것입니다. 이를 위해서는 "파라미터를 어느 방향으로 바꾸면 손실이 줄어드는가?"를 알아야 합니다. 이 정보를 제공하는 것이 바로 미분(그래디언트)입니다. 미분은 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$는 함수값이 가장 빠르게 감소하는 방향입니다. 이 성질이 뒤에서 다룰 경사하강법의 핵심 아이디어가 됩니다.

예시: $f(x,y) = x^2 + y^2$이면 $\nabla f = (2x, 2y)$입니다. 점 $(1, 1)$에서 그래디언트는 $(2, 2)$로, 원점에서 멀어지는 방향입니다. 반대 방향인 $(-2, -2)$로 이동하면 함수값이 가장 빠르게 줄어듭니다. 즉, 최솟값(원점)을 향하게 됩니다.
f=1 f=4 f=9 최솟값 등고선과 그래디언트 f(x,y) = x^2 + y^2 등고선 그래디언트 방향

야코비 행렬과 헤시안

그래디언트를 확장하면, 다변수 함수의 미분을 행렬로 표현할 수 있습니다. 이를 통해 여러 입력과 여러 출력을 가진 복잡한 함수의 변화를 체계적으로 다룰 수 있습니다.

야코비 행렬 (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에서의 의미: 역전파의 연쇄법칙은 사실 야코비 행렬의 곱으로 표현됩니다. 각 층의 변환을 벡터 함수로 보면, 층을 통과할 때마다 야코비 행렬이 곱해져서 기울기가 전파됩니다.

예시: $\mathbf{f}(x,y) = (x^2 + y,\; xy)$의 야코비 행렬을 구해봅시다.
  • $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$
따라서 $\mathbf{J} = \begin{pmatrix} 2x & 1 \\ y & x \end{pmatrix}$입니다. 점 $(1, 2)$에서는 $\mathbf{J} = \begin{pmatrix} 2 & 1 \\ 2 & 1 \end{pmatrix}$이 됩니다.

헤시안 행렬 (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에서의 역할:

심화 — 실제 딥러닝에서의 한계: 실제 딥러닝에서는 파라미터가 수백만에서 수십억 개에 달하므로, 헤시안을 직접 계산하고 저장하는 것은 사실상 불가능합니다(파라미터가 $n$개이면 헤시안은 $n \times n$ 행렬). 대신 Adam 같은 1차 방법(그래디언트만 사용)이나, 헤시안의 근사를 사용하는 방법이 실전에서 쓰입니다.

최적화와 경사하강법

최적화 문제

최적화(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 학습의 중요한 과제 중 하나입니다. 실무에서는 학습률을 처음에 크게 시작하고 점차 줄이는 학습률 스케줄링을 많이 사용합니다.

경사하강법의 변형

기본 경사하강법을 개선한 다양한 알고리즘이 있습니다.

경사하강법 경로 시작점 최솟값 각 단계 등고선

정보 이론 기초

정보 이론이 AI에서 중요한 이유:

정보 이론은 "정보를 어떻게 측정하고 효율적으로 전달할 것인가"를 다루는 분야입니다. AI에서는 이 개념이 손실 함수의 설계에 직결됩니다. 분류 모델의 학습에서 가장 많이 쓰이는 교차 엔트로피 손실 함수가 바로 정보 이론에서 나온 것입니다. 정보 이론을 이해하면 "왜 교차 엔트로피를 손실 함수로 쓰는가?"에 대한 깊은 이해를 얻을 수 있습니다.

정보량 (Information)

어떤 사건이 발생했을 때, 그 사건이 얼마나 "놀라운지"를 수치로 나타낸 것이 정보량(Information)입니다. 확률이 낮은 사건일수록 발생했을 때 더 놀랍고, 따라서 더 많은 정보를 담고 있습니다.

일상 비유 — 뉴스의 가치:

"내일 해가 뜹니다"라는 뉴스는 놀랍지 않습니다(확률이 거의 1). 정보량이 0에 가깝습니다. 하지만 "내일 서울에 눈이 2미터 쌓입니다"라는 뉴스는 매우 놀랍습니다(확률이 거의 0). 정보량이 매우 큽니다. 이처럼 예측하기 어려운 사건일수록 더 많은 정보를 담고 있습니다.

$$I(x) = -\log_2 P(x)$$

예를 들어, 확률 $\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이 됩니다.

핵심 연결: 교차 엔트로피를 최소화하는 것은 KL 발산을 최소화하는 것과 같습니다. $H(P, Q) = H(P) + D_{KL}(P \| Q)$에서 $H(P)$는 고정이므로, $H(P,Q)$를 줄이면 $D_{KL}(P\|Q)$가 줄어듭니다. 이것이 분류 문제에서 교차 엔트로피를 손실 함수로 쓰는 이유입니다.

손실 함수

손실 함수의 정의

손실 함수(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$는 각 클래스에 대한 예측 확률입니다.

왜 손실 함수가 미분 가능해야 하는가? 경사하강법으로 손실 함수를 최소화하려면 기울기(그래디언트)를 계산해야 합니다. 기울기를 구하려면 미분이 가능해야 합니다. 그래서 단순히 "맞았다/틀렸다"를 세는 정확도(accuracy) 대신, 미분 가능한 교차 엔트로피를 손실 함수로 사용합니다.

문제 유형별 손실 함수 정리

문제 유형손실 함수수식특징
회귀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$를 학습한다고 합시다. 경사하강법을 사용하면:

  1. $w$와 $b$를 임의의 값(예: $w=0, b=0$)으로 초기화합니다.
  2. 각 데이터에 대해 예측값 $\hat{y}_i = wx_i + b$를 계산합니다.
  3. 손실 $L = \frac{1}{5}\sum(y_i - \hat{y}_i)^2$을 구합니다.
  4. 기울기 $\frac{\partial L}{\partial w}$와 $\frac{\partial L}{\partial b}$를 계산하여 $w$, $b$를 업데이트합니다.
  5. 이 과정을 손실이 충분히 작아질 때까지 반복하면, 대략 $w \approx 7.5$, $b \approx 43$ 정도의 값을 얻습니다.
선형 회귀와 신경망의 관계: 선형 회귀는 활성화 함수가 없는 1층 신경망과 같습니다. 신경망의 가장 단순한 형태인 셈입니다. 여기에 활성화 함수를 추가하고 층을 쌓으면 더 복잡한 패턴을 학습할 수 있게 됩니다.

로지스틱 회귀 (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으로 분류합니다.

로지스틱 회귀와 퍼셉트론: 로지스틱 회귀 = 선형 회귀 + 시그모이드 활성화 함수입니다. 이것은 1개의 퍼셉트론(뒤에서 배울 신경망의 기본 단위)과 정확히 같은 구조입니다.
결정 경계 (Decision Boundary) x1 x2 wᵀx + b = 0 + + + + + + + + 클래스 1 (y=1) 클래스 0 (y=0) + 클래스 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(야코비 행렬)확률 분포 출력, 다중 분류용

활성화 함수의 그래프

활성화 함수 비교 -6 0 6 1 0 시그모이드 -6 0 6 6 ReLU -6 0 6 1 -1 Tanh

시그모이드는 출력을 $(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의 핵심인 이유입니다.

다층 신경망 구조 x1 x2 x3 입력층 h1 h2 h3 h4 은닉층 y1 y2 출력층 W(1) W(2)

역전파

일상 비유 — 역전파는 "책임 추적"입니다.

회사에서 실수가 발생했다고 합시다. "최종 결과물에 문제가 있다면, 그 원인은 어느 팀의 어떤 결정 때문인가?"를 거슬러 올라가며 추적하는 것과 같습니다. 역전파도 마찬가지입니다. 최종 손실(오차)이 크다면, 각 가중치가 그 오차에 얼마나 기여했는지를 출력층에서 입력층으로 거슬러 올라가며 계산합니다. 기여도가 큰 가중치를 더 많이 수정하고, 기여도가 작은 가중치는 조금만 수정합니다.

순전파 (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}$$

각 항의 의미를 살펴보면:

구체적 예시: 2층 신경망에서 역전파

입력 $x$, 은닉층 가중치 $w_1$, 출력층 가중치 $w_2$, 활성화 함수 $\sigma$를 가진 간단한 2층 신경망을 생각합시다.

1단계 — 순전파:

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}$$
역전파는 새로운 수학이 아닙니다. 미적분의 연쇄법칙을 신경망 구조에 체계적으로 적용한 것입니다. 핵심 아이디어는 출력층에서 계산한 기울기를 이전 층으로 재사용함으로써 계산량을 크게 줄이는 것입니다.

기울기 소실과 폭발

역전파에서 연쇄법칙을 적용하면, 각 층의 도함수가 곱해집니다. 층이 많아지면 문제가 생길 수 있습니다.

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

각 줄이 의미하는 것

  1. shuffle: 데이터 순서에 따른 편향을 줄입니다.
  2. model: 현재 파라미터로 예측을 만듭니다. 이것이 순전파입니다.
  3. loss: 예측과 정답의 차이를 하나의 숫자로 압축합니다.
  4. gradient: 각 파라미터를 어느 방향으로 얼마나 바꿔야 할지 계산합니다. 이것이 역전파의 결과입니다.
  5. update: 그래디언트의 반대 방향으로 조금 이동합니다. 이것이 최적화 단계입니다.
배치 크기와 epoch:

데이터가 3,200개이고 배치 크기가 32이면, 한 epoch에는 100번의 업데이트가 일어납니다. epoch를 10번 돌리면 총 1,000번 업데이트합니다. 따라서 "학습을 오래 했다"는 말은 결국 파라미터를 많이 수정했다는 뜻입니다.

어텐션과 트랜스포머(Transformer)의 수학

왜 어텐션이 중요합니까?

현대 AI, 특히 대규모 언어 모델(Large Language Model, LLM)은 문장을 단순히 왼쪽에서 오른쪽으로만 읽지 않습니다. 현재 토큰(Token)이 문장 안의 다른 토큰들을 얼마나 참고해야 하는지를 계산하여 문맥을 만듭니다. 이 계산 규칙이 바로 어텐션(Attention)입니다.

어텐션의 기본 아이디어

어텐션은 "지금 이 토큰이, 다른 토큰들 가운데 누구를 얼마나 참고할 것인가?"를 정하는 가중 평균입니다. 따라서 핵심 수학은 내적으로 유사도를 재고, 소프트맥스로 가중치를 정규화하고, 가중합으로 정보를 모으는 것입니다.

$$\operatorname{Attention}(Q, K, V) = \operatorname{softmax}\!\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$

이 식은 다음 세 단계로 읽습니다.

  1. $QK^T$로 Query와 Key의 유사도를 계산합니다.
  2. 점수가 너무 커지지 않도록 $\sqrt{d_k}$로 나누어 스케일을 맞춥니다.
  3. 소프트맥스로 가중치를 만든 뒤, 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)$$

즉 모델은 두 후보를 모두 참고하지만, 첫 번째 후보를 약 두 배 더 강하게 참고합니다. 어텐션은 하나만 고르는 것이 아니라, 여러 후보를 비율을 두고 섞는 것입니다.

스케일드 닷프로덕트 어텐션 유사도 계산 → 소프트맥스 → Value 가중합 현재 토큰 Query q (2, 1) 후보 토큰 A k1 = (1, 0) v1 = (1, 0) 후보 토큰 B k2 = (0, 1) v2 = (0, 1) softmax 가중치 출력 문맥 벡터 (0.67, 0.33) 0.67 0.33 0.67 v1 0.33 v2 어텐션은 관련성이 큰 토큰에 더 큰 가중치를 주어 문맥 벡터를 만듭니다.

왜 차원의 제곱근으로 나눕니까

차원이 커질수록 내적값의 크기도 함께 커지는 경향이 있습니다. 그러면 소프트맥스가 너무 뾰족해져 한 토큰에 거의 모든 확률을 몰아주고, 나머지는 거의 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는 무엇이 중요한가어디에 있는가를 동시에 표현할 수 있습니다.

LLM과의 연결:

ChatGPT 같은 언어 모델은 대규모 Transformer를 사용하여 다음 토큰의 확률 분포를 예측합니다. 즉 이 페이지에서 배운 벡터, 내적, 소프트맥스, 교차 엔트로피, 경사하강법, 역전파가 그대로 LLM의 내부 계산으로 이어집니다.

확률적 학습

확률과 통계가 AI에서 중요한 이유:

AI는 데이터로부터 학습합니다. 하지만 데이터에는 잡음(noise)이 있고, 같은 입력에 대해서도 결과가 다를 수 있습니다. 이러한 불확실성을 다루는 도구가 바로 확률과 통계입니다. 확률 이론은 AI가 "이 사진이 고양이일 확률이 93%입니다"처럼 불확실성을 정량화하고, 데이터로부터 합리적인 결론을 이끌어내는 기반을 제공합니다.

최대우도추정 (MLE, Maximum Likelihood Estimation)

최대우도추정은 관측된 데이터가 나올 확률을 최대화하는 파라미터 $\theta$를 찾는 방법입니다.

일상 비유 — "어떤 동전인지 맞추기":

주머니에 다양한 동전이 있습니다. 어떤 동전은 앞면이 나올 확률이 30%, 어떤 것은 50%, 어떤 것은 80%입니다. 동전 하나를 꺼내서 10번 던졌더니 앞면이 7번 나왔습니다. 어떤 동전이었을까요? 직관적으로 앞면 확률이 80%인 동전이 가장 그럴듯합니다. 이렇게 "관측된 결과가 나올 가능성이 가장 높은 파라미터를 찾는 것"이 최대우도추정입니다.

$$\hat{\theta} = \arg\max_\theta \prod_{i=1}^{n} P(x_i | \theta)$$

곱셈은 계산이 불안정하므로(매우 작은 수들의 곱은 컴퓨터에서 0이 됨), 로그를 취해 로그우도(Log-Likelihood)를 사용합니다.

$$\ell(\theta) = \sum_{i=1}^{n} \log P(x_i | \theta)$$
MLE와 교차 엔트로피의 연결: MLE에서 로그우도를 최대화하는 것은, 부호를 바꾸면 교차 엔트로피 손실을 최소화하는 것과 수학적으로 동일합니다. 즉, 분류 모델을 교차 엔트로피 손실로 학습하는 것은 사실 최대우도추정을 하고 있는 것입니다. 이것은 앞서 정보 이론 섹션에서 교차 엔트로피가 왜 손실 함수로 쓰이는지 설명한 것과 연결됩니다.

과적합과 정규화

과적합(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(\theta|D) \propto P(D|\theta)P(\theta)$$

L2 정규화는 사실 가중치에 대해 정규분포 사전 분포를 가정한 MAP(Maximum A Posteriori) 추정과 동일합니다. 즉 정규화는 베이즈 관점에서 자연스러운 해석을 가집니다.

차원의 저주와 차원 축소

차원의 저주 (Curse of Dimensionality)

데이터의 차원이 높아지면 직관에 반하는 여러 현상이 발생합니다. 이를 차원의 저주라고 합니다.

직관적 예시: 28×28 흑백 이미지는 784차원 공간의 한 점입니다. 이 공간을 빈틈없이 채우려면 천문학적인 수의 이미지가 필요합니다. 다행히 실제 이미지는 이 공간의 극히 일부(저차원 다양체)에 모여 있습니다.

주성분 분석 (PCA, Principal Component Analysis)

직관적 의미 — "그림자를 잘 드리우기":

3차원 물체에 빛을 비추면 2차원 그림자가 생깁니다. 어떤 각도에서 빛을 비추느냐에 따라 그림자의 모양이 달라집니다. PCA는 물체의 형태를 가장 잘 보존하는 방향으로 그림자를 드리우는 것과 같습니다. 데이터가 가장 많이 퍼져 있는(분산이 큰) 방향을 찾아서, 그 방향으로 투영하면 정보 손실을 최소화하면서 차원을 줄일 수 있습니다.

예를 들어, 학생들의 성적 데이터에 국어, 영어, 수학 3과목이 있는데, 국어와 영어 점수가 항상 비슷하게 움직인다면(상관관계가 높다면), 사실상 "어학 능력"과 "수리 능력" 두 가지 차원으로 축소해도 대부분의 정보를 보존할 수 있습니다.

핵심 아이디어: 데이터의 분산이 가장 큰 방향을 찾아 차원을 축소합니다. 정보 손실을 최소화하면서 차원을 줄이는 것이 목표입니다.

PCA의 단계:

  1. 중심화: 데이터의 평균을 0으로 맞춥니다.
  2. 공분산 행렬 계산: $\mathbf{C} = \frac{1}{n}\mathbf{X}^T\mathbf{X}$
  3. 고유값 분해: $\mathbf{C} = \mathbf{V}\mathbf{\Lambda}\mathbf{V}^T$
  4. 고유벡터 선택: 가장 큰 고유값에 대응하는 고유벡터 $k$개를 선택합니다.
  5. 차원 축소: $\mathbf{Z} = \mathbf{X}\mathbf{V}_k$로 원래 데이터를 $k$차원으로 변환합니다.

고유값이 큰 순서대로 정렬하면, 앞쪽 고유벡터가 데이터의 변동(분산)을 가장 많이 설명하는 방향입니다. 상위 $k$개의 고유벡터만 사용하면 데이터의 핵심 구조를 보존하면서 차원을 줄일 수 있습니다.

응용: PCA는 선형대수학의 고유값 분해를 직접 응용한 것입니다. 넷플릭스 추천, 얼굴 인식(Eigenface), 유전체 분석 등에 쓰입니다.
주성분 분석 (PCA) 2차원 데이터의 주성분 방향 데이터 점 PC1 (분산 큼) PC2 (분산 작음)

수치적 안정성

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$이 되어 오버플로가 방지됩니다. 이 트릭은 교차 엔트로피 손실 함수를 계산할 때 필수적으로 사용됩니다.

실무 가이드: 딥러닝 프레임워크(PyTorch, TensorFlow)에서 torch.nn.CrossEntropyLosstf.nn.softmax_cross_entropy_with_logits는 내부적으로 이 트릭을 사용합니다. 소프트맥스와 교차 엔트로피를 분리해서 계산하면 수치적 문제가 생길 수 있으므로, 항상 통합 함수를 사용하는 것이 좋습니다.

전체 흐름 요약

AI 모델의 학습은 다음과 같은 순환 과정으로 이루어집니다.

데이터 순전파 손실 계산 역전파 가중치 업데이트 수렴할 때까지 반복 AI 학습 과정 경사하강법으로 손실을 최소화

수학 분야별 AI에서의 역할

수학 분야AI에서의 역할관련 개념
선형대수학신경망의 구조와 연산행렬 곱, 벡터, 내적, 고유값 분해, 어텐션
미적분학최적화와 역전파편미분, 그래디언트, 연쇄법칙
최적화파라미터 업데이트 전략경사하강법, 모멘텀, Adam, 미니배치
확률론학습과 추론조건부 확률, 베이즈 정리, 분포
정보 이론손실 함수 설계엔트로피, 교차 엔트로피, KL 발산
통계학모델 평가와 일반화추정, 편향-분산, 가설 검정
수치해석수치적 안정성부동소수점 오차, 수치 미분

더 배우려면