Closed Form, Functional Form, Canonical Form

수학 문헌에서 자주 혼동되는 세 가지 Form의 차이

수학, 통계, 머신러닝 문헌에서 반복적으로 등장하는 closed form, functional form, canonical form은 서로 가리키는 차원이 다르다. 각 용어의 정의, 핵심 질문, 실무 사례를 비교하여 정리한다.

Mathematics
Statistics
저자

Kwangmin Kim

공개

2026년 05월 05일

1 왜 이 구분이 필요한가

수학과 통계 문헌을 읽다 보면 “form” 이라는 단어가 맥락마다 다른 의미로 쓰인다. Closed form, functional form, canonical form 은 모두 어떤 수학적 대상의 표현 방식 을 가리키지만, 질문의 차원이 완전히 다르다.

  • Closed form: 해를 명시적으로 쓸 수 있는가?
  • Functional form: 변수 간 관계를 어떤 모양으로 가정하는가?
  • Canonical form: 여러 동치 표현 중 어느 것을 대표로 삼는가?

이 차이를 혼동하면 논문이나 교재의 맥락을 잘못 읽게 된다. 예를 들어 “closed-form solution이 없다” 는 해가 존재하지 않는다는 뜻이 아니라, 유한한 표준 연산으로 해를 명시적으로 적을 수 없다는 뜻이다. 세 용어를 하나씩 정의한 뒤, 비교표와 통합 예시로 정리한다.

2 Closed Form (닫힌 형식)

정의: Closed Form

해(solution) 또는 식(expression)이 유한한 표준 연산 만으로 명시적으로 쓰인 형태를 말한다. 표준 연산이란 사칙연산, 거듭제곱, 로그, 삼각함수 등 미리 정해진 함수 집합을 의미한다. 무한급수, 반복 알고리즘, 수치 근사에 의존하지 않는다.

“닫혀 있다” 는 표현은 유한 단계 안에 답이 갇혀 있다 는 의미이다. 무엇을 “표준 함수” 로 인정하는지는 맥락에 따라 달라지므로 다소 관습적인 개념이다.

2.1 핵심 질문

이 식을 유한 단계의 명시적 표현으로 쓸 수 있는가?

2.2 예시

문제 Closed form 여부 근거
OLS 해 \(\hat{\beta} = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}\) 있음 유한한 행렬 연산으로 해가 명시적으로 표현된다
로지스틱 회귀 MLE 없음 IRLS, Newton-Raphson 등 수치 반복이 필요하다
\(\int_0^1 e^{-x^2}\,dx\) 맥락 의존 오차함수 \(\mathrm{erf}\) 를 표준 함수로 인정하면 있고, 초등함수만 인정하면 없다
이차방정식 \(ax^2 + bx + c = 0\) 있음 근의 공식 \(x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}\)
5차 이상 일반 다항식 없음 Abel-Ruffini 정리에 의해 유한 거듭제곱근으로 표현 불가

2.3 실무적 의미

Closed form 해가 존재하면 계산이 빠르고 해의 성질(편미분, 점근 행동 등)을 분석적으로 파악할 수 있다. 반대로 closed form이 없으면 수치 최적화에 의존해야 하며, 수렴 속도, 초기값 민감성, 지역 최적해 문제가 발생할 수 있다.

3 Functional Form (함수 형태)

정의: Functional Form

변수 간 관계를 어떤 모양의 함수로 가정하느냐 를 가리킨다. 모델링 단계에서 분석자가 선택하는 구조적 사양(structural specification) 이다.

3.1 핵심 질문

\(y\)\(x\) 의 관계를 어떤 모양의 함수로 놓는가?

3.2 대표적인 Functional Form

이름 수식 특징
선형 \(y = \beta_0 + \beta_1 x\) 기울기가 상수
로그-선형 \(\log y = \beta_0 + \beta_1 x\) \(x\) 의 한 단위 변화 \(\to\) \(y\)\(\beta_1 \times 100\%\) 변화
다항식 \(y = \beta_0 + \beta_1 x + \beta_2 x^2\) 곡선 관계 허용
Cobb-Douglas \(y = A \, x_1^{\alpha} \, x_2^{\beta}\) 경제학의 생산함수, 규모 수익 = \(\alpha + \beta\)
4-Parameter Logistic (4PL) \(y = d + \frac{a - d}{1 + (x/c)^b}\) 용량-반응(dose-response) 곡선

3.3 Functional Form Misspecification

참 관계의 모양을 잘못 가정하면 functional form misspecification 이 발생한다. 참 관계가 이차인데 선형으로 모델링하면 잔차에 체계적 패턴이 남는다. Ramsey RESET test 등으로 이를 진단한다.

왜 중요한가: functional form 을 잘못 잡으면 closed form 해가 존재하더라도 해 자체가 편향된다. OLS 해 \(\hat{\beta} = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}\) 는 closed form 이지만, \(\mathbf{X}\)\(x^2\) 항을 빠뜨리면 \(\hat{\beta}\) 가 참 값에서 벗어난다.

3.4 관련 개념과의 차이

FDA(Functional Data Analysis)에서 “functional” 은 데이터 자체를 함수(곡선)로 본다 는 다른 의미로 쓰인다. 회귀 분석에서 functional form 이라 하면 위의 모델 사양을 가리키는 것이 일반적이다.

4 Canonical Form (표준형/정규형)

정의: Canonical Form

여러 동치 표현 중에서 합의된 유일한 대표 형태 를 말한다. “이 클래스의 객체는 이 모양으로 쓰자” 는 규약이다.

4.1 핵심 질문

여러 동치 표현 중 어느 것을 대표로 삼는가?

4.2 분야별 Canonical Form

분야 Canonical form 역할
선형대수 Jordan canonical form, RREF 행렬의 구조적 본질을 드러낸다
최적화 Standard form: \(\max \mathbf{c}^\top \mathbf{x}\) s.t. \(\mathbf{A}\mathbf{x} \le \mathbf{b},\; \mathbf{x} \ge 0\) 알고리즘(심플렉스법)이 요구하는 입력 형태를 통일한다
지수족 \(f(x \mid \theta) = h(x) \exp\bigl(\boldsymbol{\eta}(\theta)^\top \mathbf{T}(x) - A(\theta)\bigr)\) Natural parameter \(\boldsymbol{\eta}\) 와 충분통계량 \(\mathbf{T}(x)\) 를 명시한다
GLM Canonical link (정규 = identity, 이항 = logit, 포아송 = log) Fisher 정보량의 분해가 깔끔해지고 추론이 단순화된다
데이터베이스 1NF, 2NF, 3NF, BCNF 중복과 갱신 이상(anomaly)을 단계적으로 제거한다
논리학 CNF(Conjunctive Normal Form), DNF SAT solver 등 알고리즘의 입력 형식을 통일한다

4.3 왜 표준형이 필요한가

같은 수학적 객체라도 표현 방식은 여러 가지이다. 표준형으로 변환하면 두 가지 이점이 있다:

  1. 판정 가능성: 두 객체가 “같은가 다른가” 를 기계적으로 판정할 수 있다. 예를 들어 두 행렬이 닮음인지 알려면 Jordan form 으로 변환하여 비교하면 된다.
  2. 이론 전개의 단순화: 특정 형태를 전제하면 정리의 증명이 짧아지고, 알고리즘 설계가 용이해진다.

5 세 용어 비교

용어 무엇에 대한 형식인가 핵심 질문 결정 주체
Closed form 해/식의 표현 유한 단계 명시식으로 쓸 수 있는가? 수학적 성질 (분석자가 선택할 수 없다)
Functional form 모델의 구조 가정 \(y\)\(x\) 의 관계를 어떤 모양으로 두는가? 분석자의 모델링 판단
Canonical form 표현의 표준화 여러 동치 표현 중 어느 것을 대표로 삼는가? 학문적 관습/알고리즘 요구

이 세 개념은 서로 독립적인 차원이므로 조합이 가능하다:

  • 지수족을 canonical form 으로 쓰면 충분통계량이 드러나고, functional form 을 정확히 잡으면 MLE 가 종종 closed form 으로 나온다.
  • 로지스틱 회귀의 functional form 은 로그-오즈 선형 모형이고, 이항 분포의 canonical link 가 logit 이므로 canonical form 과 맞물린다. 그러나 MLE 의 closed form 해는 존재하지 않아 수치 최적화가 필요하다.

6 통합 예시: OLS에서 세 Form 이 만나는 지점

선형 회귀를 통해 세 개념이 어떻게 교차하는지 확인한다.

단계 관련 form 설명
모델 사양 Functional form \(y = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\epsilon}\) 으로 선형 관계 를 가정한다
정규방정식 Canonical form \(\mathbf{X}^\top \mathbf{X} \boldsymbol{\beta} = \mathbf{X}^\top \mathbf{y}\) 는 최소제곱 문제의 표준 형태 이다
OLS 해 Closed form \(\hat{\boldsymbol{\beta}} = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}\) — 유한 행렬 연산으로 명시적 해 를 얻는다

이 예시에서 functional form 을 바꾸면(예: \(x^2\) 항 추가) 정규방정식의 canonical form 은 동일한 구조를 유지하지만, \(\mathbf{X}\) 의 내용이 달라지므로 closed form 해의 이 변한다.

7 코드 예시

7.1 Closed form 해 vs 수치 해 비교

import numpy as np
from scipy.optimize import minimize

np.random.seed(42)
n, p = 100, 3
X = np.column_stack([np.ones(n), np.random.randn(n, p - 1)])
beta_true = np.array([2.0, -1.5, 0.8])
y = X @ beta_true + np.random.randn(n) * 0.5

# --- Closed form (OLS 정규방정식) ---
beta_closed = np.linalg.solve(X.T @ X, X.T @ y)

# --- 수치 최적화 (closed form 없는 상황을 시뮬레이션) ---
def sse(beta):
    return np.sum((y - X @ beta) ** 2)

result = minimize(sse, x0=np.zeros(p), method="BFGS")
beta_numeric = result.x

print("Closed form  :", np.round(beta_closed, 4))
print("수치 최적화  :", np.round(beta_numeric, 4))
print("차이 (L2 norm):", np.round(np.linalg.norm(beta_closed - beta_numeric), 8))

두 결과가 사실상 동일함을 확인할 수 있다. 이 예시에서 closed form 해가 존재하므로 수치 최적화는 불필요하지만, 로지스틱 회귀처럼 closed form 이 없는 모델에서는 수치 해가 유일한 방법이 된다.

7.2 Functional Form 오사양 탐지

import numpy as np

np.random.seed(42)
n = 200
x = np.random.uniform(0, 5, n)
y_true = 3 + 2 * x - 0.5 * x**2  # 참 관계: 이차
y = y_true + np.random.randn(n) * 1.0

# 선형 모형 (functional form 오사양)
X_linear = np.column_stack([np.ones(n), x])
beta_linear = np.linalg.solve(X_linear.T @ X_linear, X_linear.T @ y)
resid_linear = y - X_linear @ beta_linear

# 이차 모형 (올바른 functional form)
X_quad = np.column_stack([np.ones(n), x, x**2])
beta_quad = np.linalg.solve(X_quad.T @ X_quad, X_quad.T @ y)
resid_quad = y - X_quad @ beta_quad

print(f"선형 모형 잔차 표준편차: {resid_linear.std():.3f}")
print(f"이차 모형 잔차 표준편차: {resid_quad.std():.3f}")
print(f"이차 항 계수 추정치:     {beta_quad[2]:.3f} (참값: -0.500)")

선형 모형의 잔차가 이차 모형보다 크고, 잔차 플롯에 곡선 패턴이 남는다. 이것이 functional form misspecification 의 전형적 징후이다.

8 관련 주제

선행 지식

선형대수에서의 Canonical Form

통계에서의 응용

Subscribe

Enjoy this blog? Get notified of new posts by email: