1 왜 이 구분이 필요한가
수학과 통계 문헌을 읽다 보면 “form” 이라는 단어가 맥락마다 다른 의미로 쓰인다. Closed form, functional form, canonical form 은 모두 어떤 수학적 대상의 표현 방식 을 가리키지만, 질문의 차원이 완전히 다르다.
- Closed form: 해를 명시적으로 쓸 수 있는가?
- Functional form: 변수 간 관계를 어떤 모양으로 가정하는가?
- Canonical form: 여러 동치 표현 중 어느 것을 대표로 삼는가?
이 차이를 혼동하면 논문이나 교재의 맥락을 잘못 읽게 된다. 예를 들어 “closed-form solution이 없다” 는 해가 존재하지 않는다는 뜻이 아니라, 유한한 표준 연산으로 해를 명시적으로 적을 수 없다는 뜻이다. 세 용어를 하나씩 정의한 뒤, 비교표와 통합 예시로 정리한다.
2 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 (함수 형태)
변수 간 관계를 어떤 모양의 함수로 가정하느냐 를 가리킨다. 모델링 단계에서 분석자가 선택하는 구조적 사양(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 (표준형/정규형)
여러 동치 표현 중에서 합의된 유일한 대표 형태 를 말한다. “이 클래스의 객체는 이 모양으로 쓰자” 는 규약이다.
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 왜 표준형이 필요한가
같은 수학적 객체라도 표현 방식은 여러 가지이다. 표준형으로 변환하면 두 가지 이점이 있다:
- 판정 가능성: 두 객체가 “같은가 다른가” 를 기계적으로 판정할 수 있다. 예를 들어 두 행렬이 닮음인지 알려면 Jordan form 으로 변환하여 비교하면 된다.
- 이론 전개의 단순화: 특정 형태를 전제하면 정리의 증명이 짧아지고, 알고리즘 설계가 용이해진다.
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
- RREF와 Rank – 기약 행 사다리꼴 (Row Reduced Echelon Form)
- 닮음 행렬과 Jordan Form – 닮음 변환과 표준형
통계에서의 응용
- GLM 이론 기초 – 지수족의 canonical form과 canonical link