Ch.6 §6.5 — 양정치 행렬 (Positive Definite Matrices)

5가지 동치 조건·에너지 해석·이차형식 기하학·촐레스키 분해·ML 응용

Strang Ch.6.5를 기반으로 양정치 행렬이 왜 “가장 아름다운 행렬 부류”인지 다룬다. 다섯 가지 동치 조건(고유값·피벗·선행 주부분 행렬식·에너지·\(\mathbf{R}^\top \mathbf{R}\))의 직관적 의미, 이차형식 \(\mathbf{x}^\top \mathbf{A}\mathbf{x}\) 의 기하학(타원체·주축·밥그릇), 완전제곱식과 피벗의 관계, 촐레스키 분해 \(\mathbf{A} = \mathbf{L}\mathbf{L}^\top\), 그리고 헤시안 판정·PCA·공분산·Newton 최적화·커널 방법 등 ML 응용까지 수식과 직관을 함께 제시한다.

Math
Linear Algebra
저자

Kwangmin Kim

공개

2026년 04월 10일

1 왜 양정치 행렬인가

대칭 행렬 중에서도 양정치(Positive Definite) 행렬은 특별히 아름다운 성질을 가진다. Strang은 이 장을 열며 “대칭 행렬이 가장 중요한 행렬이라면, 양정치 행렬은 그 중에서도 가장 아름다운 부류”라고 말한다. 이 주장은 수사가 아니다 — 양정치라는 조건 하나가 행렬의 안정성·가역성·기하학적 의미·수치적 풀이를 한꺼번에 보장하기 때문이다.

분야 등장하는 양정치 행렬 왜 양정치여야 하는가
통계 공분산 행렬 \(\mathbf{\Sigma}\) 분산은 항상 \(\geq 0\) (independent 변수면 \(>0\))
최적화 극솟점에서의 헤시안 \(\mathbf{H}\) \(\mathbf{H}\) 가 양정치 \(\Leftrightarrow\) 밥그릇 모양 \(\Leftrightarrow\) 극솟값
머신러닝 커널 행렬 \(\mathbf{K}\) (Mercer 조건) SVM·가우시안 프로세스의 수렴성 보장
수치해석 정규방정식 \(\mathbf{A}^\top \mathbf{A}\) (독립 열) 최소제곱법 해의 유일성
물리 관성 텐서·강성 행렬 에너지 \(\mathbf{x}^\top \mathbf{K}\mathbf{x} > 0\) (안정)
제어공학 리야푸노프 함수 \(V(\mathbf{x}) = \mathbf{x}^\top \mathbf{P}\mathbf{x}\) \(\mathbf{P} > 0\) 이면 안정성 증명

공통점은 “에너지” 또는 “분산”이라는 개념이 음수가 되어서는 안 된다는 물리적·통계적 제약이다. 양정치 조건은 이 제약을 수학적으로 포착한다.

양정치의 핵심 한 줄

대칭 행렬 \(\mathbf{A}\)양정치(Positive Definite)라 함은 다음을 의미한다.

\[ \mathbf{x}^\top \mathbf{A} \mathbf{x} > 0 \quad \text{for all } \mathbf{x} \neq \mathbf{0} \]

이것이 에너지 테스트(energy test)이다. Strang은 이 부등식 하나가 다른 네 조건(고유값·피벗·행렬식·\(\mathbf{R}^\top \mathbf{R}\))과 동치임을 보이는 것이 Ch.6.5의 전부라고 말한다.

대칭 행렬이 일반 행렬보다 좋았다면, 양정치 대칭 행렬은 대칭 행렬보다 한 단계 더 좋다. 에너지 \(\mathbf{x}^\top \mathbf{A}\mathbf{x}\) 가 항상 양수라는 조건은 단순해 보이지만, 그 결과 고유값이 모두 양수가 되고, 따라서 행렬이 가역이며, 유일한 제곱근을 가지고, 유일한 최솟값을 가지는 볼록 함수를 정의한다.


2 에너지 테스트: 왜 “에너지”라고 부르는가

이차형식 \(\mathbf{x}^\top \mathbf{A}\mathbf{x}\) 에 “에너지”라는 이름이 붙은 이유는 물리학에서 온다.

직관: 스프링의 탄성 에너지

질량-스프링 시스템에서 스프링이 \(x\) 만큼 늘어났을 때 저장되는 탄성 에너지는 \(\frac{1}{2}kx^2\) 이다. 여러 개의 스프링이 연결된 시스템에서는 이것이 행렬 형태로 확장된다.

\[ E(\mathbf{x}) = \frac{1}{2}\mathbf{x}^\top \mathbf{K}\mathbf{x} \]

여기서 \(\mathbf{K}\)강성 행렬(stiffness matrix)이다. 에너지는 음수가 될 수 없다 — 음의 에너지는 물리적으로 의미가 없기 때문이다. 더 나아가, 시스템이 평형 상태(\(\mathbf{x} = \mathbf{0}\))가 아니면 반드시 양의 에너지가 저장되어야 한다 (그렇지 않으면 시스템이 “저절로” 다른 상태로 이동할 수 있는, 즉 불안정한 상태이다).

이 물리적 요구사항이 바로 \(\mathbf{x}^\top \mathbf{K}\mathbf{x} > 0\) for \(\mathbf{x} \neq \mathbf{0}\) 이다. 즉, 안정한 물리 시스템의 강성 행렬은 반드시 양정치이다.

이 직관은 통계와 최적화로도 그대로 번역된다.

  • 통계: \(\mathbf{x}^\top \mathbf{\Sigma}\mathbf{x}\) 는 방향 \(\mathbf{x}\) 로의 데이터 분산이다. 분산은 음수가 될 수 없다.
  • 최적화: 극솟점 근처에서 함수를 2차 근사하면 \(f(\mathbf{x}_0 + \mathbf{h}) \approx f(\mathbf{x}_0) + \frac{1}{2}\mathbf{h}^\top \mathbf{H}\mathbf{h}\) 이다. \(\mathbf{x}_0\) 가 극솟점이려면 임의의 방향 \(\mathbf{h}\) 로 함수 값이 증가해야 하므로 \(\mathbf{h}^\top \mathbf{H}\mathbf{h} > 0\), 즉 헤시안이 양정치여야 한다.

에너지·분산·곡률 — 이름은 달라도 수학적으로는 모두 같은 이차형식이다.


3 다섯 가지 동치 조건

Strang Ch.6.5의 핵심은 양정치성을 판별하는 다섯 가지 동치 조건이다. 이들은 서로 전혀 다른 각도에서 양정치를 바라보는데, 모두 같은 것을 말한다는 점이 놀랍다.

양정치 판별의 5가지 동치 조건

대칭 행렬 \(\mathbf{A}\) 에 대해 다음 다섯 조건은 모두 동치이다.

  1. 에너지 조건: \(\mathbf{x}^\top \mathbf{A}\mathbf{x} > 0\) for all \(\mathbf{x} \neq \mathbf{0}\)
  2. 고유값 조건: 모든 고유값 \(\lambda_i > 0\)
  3. 피벗 조건: 가우스 소거법의 모든 피벗 \(d_i > 0\)
  4. 선행 주부분 행렬식 조건: 모든 \(k \times k\) 선행 주부분 행렬식 \(|\mathbf{A}_k| > 0\)
  5. 분해 조건: 독립 열을 가진 행렬 \(\mathbf{R}\) 에 대해 \(\mathbf{A} = \mathbf{R}^\top \mathbf{R}\) 로 쓸 수 있다

각 조건의 직관부터 살펴본다.

3.1 조건 1 — 에너지: “모든 방향에서 양수”

\(\mathbf{x}^\top \mathbf{A}\mathbf{x} > 0\)정의 그 자체이다. 어떤 방향 \(\mathbf{x}\) 로 잘라도 이차형식 값이 양수여야 한다. 이것이 가장 본질적이지만, 실무에서 직접 확인하기는 어렵다 — 무한히 많은 \(\mathbf{x}\) 를 시험해야 하기 때문이다. 그래서 다른 조건들이 필요하다.

3.2 조건 2 — 고유값: “주축 방향의 스케일”

스펙트럼 정리 \(\mathbf{A} = \mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^\top\) 를 대입하면 에너지가 고유값의 합으로 분해된다.

\[ \mathbf{x}^\top \mathbf{A}\mathbf{x} = \mathbf{x}^\top \mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^\top \mathbf{x} = \mathbf{y}^\top \mathbf{\Lambda} \mathbf{y} = \sum_{i=1}^n \lambda_i y_i^2 \]

여기서 \(\mathbf{y} = \mathbf{Q}^\top \mathbf{x}\)\(\mathbf{x}\) 를 고유벡터 좌표계로 회전한 것이다. \(\mathbf{Q}\) 가 직교 행렬이므로 \(\mathbf{x} \neq \mathbf{0}\) 이면 \(\mathbf{y} \neq \mathbf{0}\) 이다. 이제 \(\sum \lambda_i y_i^2 > 0\) 이 모든 \(\mathbf{y} \neq \mathbf{0}\) 에서 성립하려면 모든 \(\lambda_i > 0\) 이어야 한다. 역방향도 같은 식으로 증명된다.

직관: 왜 고유값이 부호를 지배하는가

대칭 행렬의 변환은 “회전 → 축별 스케일링 → 역회전”이다. 회전은 방향만 바꾸고 길이는 보존하므로 에너지의 부호에 영향이 없다. 부호를 결정하는 것은 축별 스케일링, 즉 고유값뿐이다. 하나라도 음수면 그 축 방향으로 에너지가 음수가 되고, 0이면 그 축은 “없는 것”처럼 되어 준정치(semi-definite)가 된다.

3.3 조건 3 — 피벗: “소거가 제공하는 지름길”

가우스 소거법으로 \(\mathbf{A}\) 를 상삼각 행렬 \(\mathbf{U}\) 로 바꾸면 대각 원소가 피벗 \(d_1, d_2, \dots, d_n\) 이 된다. 대칭 행렬의 경우 \(\mathbf{A} = \mathbf{L}\mathbf{D}\mathbf{L}^\top\) 분해가 존재하며, \(\mathbf{D}\) 의 대각 원소가 피벗이다. 이 분해를 이차형식에 대입하면:

\[ \mathbf{x}^\top \mathbf{A}\mathbf{x} = \mathbf{x}^\top \mathbf{L}\mathbf{D}\mathbf{L}^\top \mathbf{x} = \mathbf{z}^\top \mathbf{D}\mathbf{z} = \sum_{i=1}^n d_i z_i^2 \quad (\mathbf{z} = \mathbf{L}^\top \mathbf{x}) \]

역시 제곱항의 합이 되는데, 이번에는 계수가 피벗이다. \(\mathbf{L}\) 은 하삼각 단위 행렬이므로 가역이고 \(\mathbf{x} \neq \mathbf{0} \Leftrightarrow \mathbf{z} \neq \mathbf{0}\) 이다. 따라서 모든 \(\mathbf{x} \neq \mathbf{0}\) 에 대해 \(\mathbf{x}^\top \mathbf{A}\mathbf{x} > 0\)모든 피벗 \(d_i > 0\) 이 동치이다.

직관: 피벗 vs 고유값

피벗과 고유값은 일반적으로 다른 값이지만, 같은 부호 패턴을 가진다 (실베스터 관성 법칙, Sylvester’s law of inertia). 즉, 양수 피벗 개수 = 양수 고유값 개수, 음수 피벗 개수 = 음수 고유값 개수. 이것이 피벗으로 양정치 판별이 가능한 이유이다. 피벗 계산은 \(O(n^3/3)\) 이지만 고유값 계산은 반복적이고 느리므로, 실무에서는 피벗 판별이 훨씬 빠르다.

3.4 조건 4 — 선행 주부분 행렬식: “부분 행렬의 부피”

\(\mathbf{A}\) 의 왼쪽 위 \(k \times k\) 부분 행렬을 \(\mathbf{A}_k\) 라 하고 그 행렬식을 \(|\mathbf{A}_k|\) 라 한다 (선행 주부분 행렬식, leading principal minor). 조건은:

\[ |\mathbf{A}_1| > 0, \quad |\mathbf{A}_2| > 0, \quad \dots, \quad |\mathbf{A}_n| = |\mathbf{A}| > 0 \]

이 조건이 피벗 조건과 동치인 이유는 다음 항등식 때문이다.

\[ d_k = \frac{|\mathbf{A}_k|}{|\mathbf{A}_{k-1}|} \]

즉, \(k\) 번째 피벗은 연속된 두 선행 주부분 행렬식의 비율이다. 모든 \(|\mathbf{A}_k| > 0\) 이면 모든 비율이 양수이므로 모든 피벗도 양수이다. 역방향도 같은 식이다.

직관: 왜 선행 주부분만 보는가

\(|\mathbf{A}_k| > 0\) 조건은 부분 벡터 공간에서의 에너지가 양수임을 말한다. 첫 \(k\) 개 좌표만 사용한 벡터 \((\mathbf{x}_1, \dots, \mathbf{x}_k, 0, \dots, 0)^\top\) 의 이차형식은 \(\mathbf{A}_k\) 에 의해 결정된다. 이 부분 공간에서 양정치이면 행렬식(= 고유값의 곱)이 양수여야 한다. 모든 차원의 부분 공간에서 양정치이면 전체도 양정치이다 — 이것이 Cauchy interlacing의 결과이기도 하다.

하지만 조심할 점이 있다. 선행 주부분 행렬식만 본다. 임의의 주부분 행렬식이 아니다.

주의: 선행(Leading) vs 일반 주부분 행렬식
  • 선행 주부분 행렬식: 왼쪽 위 \(k \times k\) 부분만 본다 — 양정치 판별에 사용
  • 주부분 행렬식(Principal minor): 임의의 \(k\) 개 행·열 선택 — 양반정치(PSD) 판별에 필요

예를 들어 \(\mathbf{A} = \begin{bmatrix} 0 & 0 \\ 0 & -1 \end{bmatrix}\) 의 선행 주부분 행렬식은 \(|\mathbf{A}_1| = 0\), \(|\mathbf{A}_2| = 0\) 이지만 양정치가 아니다 (사실 양반정치도 아니다).

양반정치(PSD)의 올바른 판별: 고유값 \(\geq 0\), 또는 모든 주부분 행렬식 \(\geq 0\). 선행만 보면 충분하지 않다.

3.5 조건 5 — \(\mathbf{A} = \mathbf{R}^\top \mathbf{R}\): “그람 행렬로 쓸 수 있다”

어떤 행렬 \(\mathbf{R}\) (독립 열을 가진)의 그람 행렬\(\mathbf{A}\) 가 쓰인다는 조건이다. 이것은 가장 강력한 조건이면서도 가장 유용하다. 왜 동치인지 본다.

\(\mathbf{A} = \mathbf{R}^\top \mathbf{R} \Rightarrow\) 양정치:

\[ \mathbf{x}^\top \mathbf{A}\mathbf{x} = \mathbf{x}^\top \mathbf{R}^\top \mathbf{R}\mathbf{x} = (\mathbf{R}\mathbf{x})^\top (\mathbf{R}\mathbf{x}) = \|\mathbf{R}\mathbf{x}\|^2 \geq 0 \]

등호는 \(\mathbf{R}\mathbf{x} = \mathbf{0}\) 일 때만 성립한다. \(\mathbf{R}\) 의 열이 독립이면 \(\mathbf{R}\mathbf{x} = \mathbf{0} \Rightarrow \mathbf{x} = \mathbf{0}\) 이므로, \(\mathbf{x} \neq \mathbf{0}\) 이면 \(\mathbf{x}^\top \mathbf{A}\mathbf{x} > 0\) 이다.

양정치 \(\Rightarrow \mathbf{A} = \mathbf{R}^\top \mathbf{R}\): 스펙트럼 정리에서 \(\mathbf{A} = \mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^\top\) 이고 \(\lambda_i > 0\) 이므로 \(\mathbf{\Lambda}^{1/2} = \text{diag}(\sqrt{\lambda_i})\) 가 실수이다. 그러면

\[ \mathbf{A} = \mathbf{Q}\mathbf{\Lambda}^{1/2}\mathbf{\Lambda}^{1/2}\mathbf{Q}^\top = (\mathbf{\Lambda}^{1/2}\mathbf{Q}^\top)^\top (\mathbf{\Lambda}^{1/2}\mathbf{Q}^\top) \]

이 되어 \(\mathbf{R} = \mathbf{\Lambda}^{1/2}\mathbf{Q}^\top\) 이 존재한다. 다른 선택으로는 촐레스키 분해 \(\mathbf{A} = \mathbf{L}\mathbf{L}^\top\) 이 있는데, 이것이 실무에서 가장 많이 쓰인다.

직관: 양정치는 “내적의 행렬 표현”이다

\(\mathbf{A} = \mathbf{R}^\top \mathbf{R}\) 이라는 식은 \(\mathbf{A}_{ij}\)\(\mathbf{R}\)\(i\) 번째 열과 \(j\) 번째 열의 내적이라는 뜻이다.

\[ \mathbf{A}_{ij} = \mathbf{r}_i^\top \mathbf{r}_j \]

이런 형태의 행렬을 그람 행렬(Gram matrix)이라 부른다. 즉, 모든 양정치 행렬은 어떤 벡터 집합의 내적 테이블이다. 이것이 커널 방법의 핵심 — 커널 함수 \(k(\mathbf{x}_i, \mathbf{x}_j) = \phi(\mathbf{x}_i)^\top \phi(\mathbf{x}_j)\) 가 만드는 커널 행렬이 양정치(또는 양반정치)인 이유이다 (Mercer 조건).


4 완전제곱식: 피벗이 계수로 나타나는 이유

조건 3(피벗)의 기하학적 의미를 구체적으로 보기 위해 \(2 \times 2\) 예시를 전개한다. \(\mathbf{A} = \begin{bmatrix} a & b \\ b & c \end{bmatrix}\) 의 이차형식은:

\[ Q(x_1, x_2) = ax_1^2 + 2bx_1 x_2 + cx_2^2 \]

이것을 \(x_1\) 에 대해 “완전제곱”으로 묶는다.

\[ Q = a\left(x_1^2 + \frac{2b}{a}x_1 x_2\right) + cx_2^2 = a\left(x_1 + \frac{b}{a}x_2\right)^2 - \frac{b^2}{a}x_2^2 + cx_2^2 \]

정리하면:

\[ \boxed{\; Q(x_1, x_2) = a\left(x_1 + \frac{b}{a}x_2\right)^2 + \frac{ac - b^2}{a}x_2^2 \;} \]

제곱항의 계수를 보자. 첫 번째는 \(a\), 두 번째는 \((ac - b^2)/a\) 이다. 그런데 이 두 값이 정확히 가우스 소거법의 피벗이다.

  • 첫 번째 피벗: \(d_1 = a = |\mathbf{A}_1|\)
  • 두 번째 피벗: \(d_2 = (ac - b^2)/a = |\mathbf{A}_2|/|\mathbf{A}_1|\)

이제 양정치 판별이 매우 명확해진다. \(Q > 0\) 이려면 두 제곱항의 계수가 모두 양수여야 하고, 그것이 곧 피벗이 모두 양수 = 선행 주부분 행렬식이 모두 양수라는 뜻이다.

직관: 완전제곱식은 “좌표계 회전”이다

완전제곱식 \(a(x_1 + \frac{b}{a}x_2)^2 + \frac{ac-b^2}{a}x_2^2\)\(u_1 = x_1 + \frac{b}{a}x_2, u_2 = x_2\) 라는 새 좌표계에서 \(\mathbf{A}\) 를 대각 행렬로 본 것이다. 새 좌표에서 행렬은 \(\text{diag}(d_1, d_2)\) 이고, 이것이 바로 \(\mathbf{L}\mathbf{D}\mathbf{L}^\top\) 분해의 \(\mathbf{D}\) 이다. 스펙트럼 정리의 \(\mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^\top\) 가 “직교 회전”을 쓰는 반면, 완전제곱식은 “비직교 shear”로 대각화한다. 둘 다 같은 이야기를 다른 언어로 하는 셈이다.

4.1 \(3 \times 3\) 예시

Strang의 단골 예시: \(\mathbf{B} = \begin{bmatrix} 2 & -1 & -1 \\ -1 & 2 & -1 \\ -1 & -1 & 2 + c \end{bmatrix}\) 에 가우스 소거법을 적용한다.

피벗은 순서대로 \(d_1 = 2, d_2 = 3/2, d_3 = c\) 가 된다. 완전제곱식은:

\[ \mathbf{x}^\top \mathbf{B}\mathbf{x} = 2\left(x_1 - \tfrac{1}{2}x_2 - \tfrac{1}{2}x_3\right)^2 + \tfrac{3}{2}(x_2 - x_3)^2 + c\, x_3^2 \]

계수 \(2, 3/2, c\) 가 피벗과 정확히 일치한다.

  • \(c > 0\): 양정치 (모든 제곱항 양수)
  • \(c = 0\): 양반정치 — \(\mathbf{x} = (1, 1, 1)^\top\) 을 대입하면 세 괄호가 모두 0이 되어 \(\mathbf{x}^\top \mathbf{B}\mathbf{x} = 0\)
  • \(c < 0\): 부정치 — \(\mathbf{x} = (0, 0, 1)^\top\) 방향으로 음수

\(c\) 를 파라미터로 변화시키면서 양정치 → 양반정치 → 부정치로 변하는 전이를 관찰할 수 있다. 이 “경계 사례” (\(c = 0\))는 수학적으로 매우 중요한데, 공학에서 구조물의 좌굴(buckling) 한계에 해당한다.

일반화: 쌍선형형식 (Bilinear Form)

이차형식 \(\mathbf{x}^\top A \mathbf{x}\) 는 두 벡터 인수가 같은 특수 경우이다. 두 인수를 분리하면 쌍선형형식(bilinear form)이 된다.

\[B(\mathbf{u}, \mathbf{v}) = \mathbf{u}^\top A \mathbf{v}\]

정의는 양쪽 인수 각각에 대한 선형성이다:

  • \(B(c\mathbf{u}_1 + \mathbf{u}_2, \mathbf{v}) = c\,B(\mathbf{u}_1, \mathbf{v}) + B(\mathbf{u}_2, \mathbf{v})\)
  • \(B(\mathbf{u}, c\mathbf{v}_1 + \mathbf{v}_2) = c\,B(\mathbf{u}, \mathbf{v}_1) + B(\mathbf{u}, \mathbf{v}_2)\)

세 특수 케이스:

행렬 \(A\) 쌍선형형식 이름
\(A = I\) \(\mathbf{u}^\top \mathbf{v}\) 내적(dot product) — mit-01-3
\(A\) 대칭 & \(\mathbf{u} = \mathbf{v}\) \(\mathbf{x}^\top A \mathbf{x}\) 이차형식 — 이 포스트
\(A\) 일반 (대칭 아님) \(\mathbf{u}^\top A \mathbf{v}\) 일반 쌍선형형식

ML 응용:

  • 어텐션 스코어: \(\mathbf{q}^\top W \mathbf{k}\) — Query-Key 내적을 학습 가능한 가중 행렬 \(W\) 로 일반화
  • 공분산 표현: \(\operatorname{Cov}(a^\top X, b^\top X) = a^\top \Sigma b\)
  • Word embedding 유사도: 두 임베딩 사이의 가중 유사도 \(\mathbf{u}^\top W \mathbf{v}\)

5 이차형식의 기하학: 밥그릇·안장·타원체

양정치 판별의 기하학적 그림을 보자. \(\mathbf{x}^\top \mathbf{A}\mathbf{x}\)\(\mathbf{x}\) 의 함수로서 곡면을 이룬다.

5.1 다섯 가지 이차형식

분류 조건 고유값 부호 곡면 형태 예시
양정치 (Positive Definite) \(\mathbf{x}^\top \mathbf{A}\mathbf{x} > 0\) 모두 \(>0\) 위로 열린 밥그릇 \(x_1^2 + x_2^2\)
양반정치 (Positive Semi-Definite) \(\mathbf{x}^\top \mathbf{A}\mathbf{x} \geq 0\) 모두 \(\geq 0\), 일부 \(=0\) 평탄한 골짜기 포함 밥그릇 \((x_1 + x_2)^2\)
부정치 (Indefinite) 부호 혼재 양수·음수 모두 안장점 (saddle) \(x_1^2 - x_2^2\)
음반정치 (Negative Semi-Definite) \(\mathbf{x}^\top \mathbf{A}\mathbf{x} \leq 0\) 모두 \(\leq 0\) 평탄한 능선 포함 뒤집힌 밥그릇 \(-(x_1 + x_2)^2\)
음정치 (Negative Definite) \(\mathbf{x}^\top \mathbf{A}\mathbf{x} < 0\) 모두 \(<0\) 뒤집힌 밥그릇 \(-x_1^2 - x_2^2\)
직관: 밥그릇의 이유

양정치의 곡면 \(z = \mathbf{x}^\top \mathbf{A}\mathbf{x}\)밥그릇처럼 생긴 이유는 단순하다. 원점 \(\mathbf{x} = \mathbf{0}\) 에서 \(z = 0\) 이고, 원점이 아닌 모든 방향에서 \(z > 0\) 이다. 즉, 원점이 유일한 전역 최솟값이다. 이것이 왜 양정치 이차형식이 최적화에서 “이상적인” 목적함수인지의 이유이다 — 지역 최솟값이 없고, 경사하강법이 반드시 전역 최소로 수렴한다.

5.2 등고면: 타원체

\(\mathbf{x}^\top \mathbf{A}\mathbf{x} = 1\) 이라는 등고면(level set)을 잘라보자. 스펙트럼 정리에서 \(\mathbf{A} = \mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^\top\) 이고 \(\mathbf{y} = \mathbf{Q}^\top \mathbf{x}\) 로 좌표 변환하면:

\[ \mathbf{y}^\top \mathbf{\Lambda} \mathbf{y} = \sum_{i=1}^n \lambda_i y_i^2 = 1 \]

이것은 표준형 타원체 방정식이다. 기하학적으로:

  • 주축 방향: 고유벡터 \(\mathbf{q}_1, \dots, \mathbf{q}_n\)
  • 주축 반지름: \(1/\sqrt{\lambda_i}\)
  • 큰 고유값 \(\Rightarrow\) 그 방향은 타원이 짧다 (에너지가 빨리 증가)
  • 작은 고유값 \(\Rightarrow\) 그 방향은 타원이 길다 (에너지가 천천히 증가)
직관: 공분산 타원과 PCA

데이터의 공분산 행렬 \(\mathbf{\Sigma}\) 를 생각하자. \(\mathbf{x}^\top \mathbf{\Sigma}^{-1} \mathbf{x} = 1\) 은 데이터 구름을 감싸는 표준 타원이다 (마할라노비스 거리). 이 타원의:

  • 장축 = 데이터가 가장 널리 퍼진 방향 = \(\mathbf{\Sigma}\) 의 가장 큰 고유값 방향 = PC1
  • 단축 = 데이터가 가장 덜 퍼진 방향 = \(\mathbf{\Sigma}\) 의 가장 작은 고유값 방향 = 마지막 PC

PCA는 이 타원의 주축을 찾는 절차 그 자체이다. “분산을 최대화하는 방향”이라는 언어와 “이차형식의 주축”이라는 언어는 완전히 같은 것이다.


6 헤시안과 극솟값 판정

다변수 미적분학에서 함수 \(f(\mathbf{x})\) 의 극솟값을 판정하는 2차 조건이 바로 양정치성이다.

6.1 Taylor 2차 전개

임계점 \(\mathbf{x}_0\) (\(\nabla f(\mathbf{x}_0) = \mathbf{0}\)) 근처에서 함수를 전개하면:

\[ f(\mathbf{x}_0 + \mathbf{h}) \approx f(\mathbf{x}_0) + \underbrace{\nabla f(\mathbf{x}_0)^\top \mathbf{h}}_{=0} + \frac{1}{2}\mathbf{h}^\top \mathbf{H}(\mathbf{x}_0) \mathbf{h} \]

여기서 \(\mathbf{H}_{ij} = \partial^2 f / \partial x_i \partial x_j\)헤시안(Hessian)이다. 1차 항이 사라지므로 극값의 유형은 2차 항의 부호로 결정된다.

헤시안 \(\mathbf{H}(\mathbf{x}_0)\) 함수 거동 임계점 유형
양정치 \(\mathbf{h}^\top \mathbf{H} \mathbf{h} > 0\) 엄격한 국소 극소
양반정치 \(\geq 0\) (일부 방향은 \(=0\)) 극소 가능성 (더 고차 판정 필요)
부정치 일부는 \(>0\), 일부는 \(<0\) 안장점
음정치 \(\mathbf{h}^\top \mathbf{H} \mathbf{h} < 0\) 엄격한 국소 극대
직관: 밥그릇 vs 안장

밥그릇 위의 한 점에서 어느 방향으로 움직여도 위로 올라간다 — 이것이 극솟점이다. 안장점에서는 한 방향으로는 올라가고 다른 방향으로는 내려간다. 헤시안의 고유값이 모두 양수이면 모든 방향에서 곡률이 위로 볼록이므로 밥그릇(극소)이고, 부호가 섞여 있으면 안장이다.

6.2 Newton’s Method와 양정치

Newton 최적화는 다음 업데이트를 쓴다:

\[ \mathbf{x}_{k+1} = \mathbf{x}_k - \mathbf{H}(\mathbf{x}_k)^{-1} \nabla f(\mathbf{x}_k) \]

이 공식은 \(\mathbf{H}\) 가 양정치일 때만 “내리막” 방향이 보장된다. 이유는:

\[ \nabla f^\top \cdot (-\mathbf{H}^{-1} \nabla f) = -\nabla f^\top \mathbf{H}^{-1} \nabla f < 0 \]

마지막 부등호는 \(\mathbf{H}^{-1}\) 도 양정치이기 때문이다. \(\mathbf{H}\) 가 양정치가 아니면 (안장점 근처 등) Newton 방향이 오히려 함수를 증가시킬 수 있다. 이것이 Levenberg-Marquardt 같은 수정 기법이 \(\mathbf{H} + \alpha \mathbf{I}\) (작은 \(\alpha > 0\) 추가)를 써서 강제로 양정치로 만드는 이유이다.


7 \(\mathbf{A}^\top \mathbf{A}\) 는 항상 양반정치

이 정리는 선형대수에서 가장 자주 쓰이는 결과 중 하나이다.

정리: \(\mathbf{A}^\top \mathbf{A}\) 의 양정치성

임의의 \(m \times n\) 실수 행렬 \(\mathbf{A}\) 에 대해:

  1. \(\mathbf{A}^\top \mathbf{A}\) 는 항상 대칭이고 양반정치(PSD)이다.
  2. \(\mathbf{A}\) 의 열이 독립이면 (즉 \(\text{rank}(\mathbf{A}) = n\)) \(\mathbf{A}^\top \mathbf{A}\)양정치이다.

증명: 대칭성은 \((\mathbf{A}^\top \mathbf{A})^\top = \mathbf{A}^\top (\mathbf{A}^\top)^\top = \mathbf{A}^\top \mathbf{A}\) 에서 바로 나온다. 에너지를 보면:

\[ \mathbf{x}^\top (\mathbf{A}^\top \mathbf{A}) \mathbf{x} = (\mathbf{A}\mathbf{x})^\top (\mathbf{A}\mathbf{x}) = \|\mathbf{A}\mathbf{x}\|^2 \geq 0 \]

제곱 노름이므로 항상 \(\geq 0\), 즉 양반정치이다. 등호는 \(\mathbf{A}\mathbf{x} = \mathbf{0}\) 일 때, 즉 \(\mathbf{x}\)\(\mathbf{A}\) 의 영공간에 있을 때만 성립한다. \(\mathbf{A}\) 의 열이 독립이면 영공간은 \(\{\mathbf{0}\}\) 뿐이므로 \(\mathbf{x} \neq \mathbf{0} \Rightarrow \mathbf{x}^\top \mathbf{A}^\top \mathbf{A}\mathbf{x} > 0\), 양정치이다. \(\blacksquare\)

왜 이것이 중요한가: 최소제곱법과 정규방정식

선형 회귀 \(\mathbf{A}\mathbf{x} = \mathbf{b}\) 의 최소제곱 해는 정규방정식 \(\mathbf{A}^\top \mathbf{A}\mathbf{x} = \mathbf{A}^\top \mathbf{b}\) 에서 나온다. \(\mathbf{A}\) 의 열이 독립(독립 변수들이 다중공선성이 없음)이면 \(\mathbf{A}^\top \mathbf{A}\) 가 양정치이고, 따라서 가역이므로 해가 유일하다.

\[ \hat{\mathbf{x}} = (\mathbf{A}^\top \mathbf{A})^{-1} \mathbf{A}^\top \mathbf{b} \]

반대로 열이 독립이 아니면 \(\mathbf{A}^\top \mathbf{A}\) 는 양반정치에 머물러 가역이 아니고, 해가 무수히 많아진다(다중공선성 문제). 이때 Ridge 회귀의 \(\mathbf{A}^\top \mathbf{A} + \lambda \mathbf{I}\)\(\lambda > 0\) 만큼 양정치성을 “억지로 회복”시키는 정규화이다.


8 촐레스키 분해: 행렬의 제곱근

양정치 행렬의 가장 실용적인 응용 중 하나가 촐레스키 분해(Cholesky Decomposition)이다.

촐레스키 분해

양정치 대칭 행렬 \(\mathbf{A}\) 는 다음과 같이 유일하게 분해된다.

\[ \mathbf{A} = \mathbf{L}\mathbf{L}^\top \]

여기서 \(\mathbf{L}\)양의 대각 성분을 가진 하삼각 행렬이다.

이것은 수 \(a = \sqrt{a} \cdot \sqrt{a}\) 의 행렬판이다. \(\mathbf{L}\) 을 “\(\mathbf{A}\) 의 제곱근”으로 생각할 수 있다 (정확히는 여러 제곱근 중 하나).

8.1 왜 촐레스키가 특별한가

분해 존재 조건 연산량 유일성
LU 분해 일반 행렬 \(O(n^3/3)\) 일반적으로 non-unique
\(\mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^\top\) (스펙트럼) 대칭 \(O(n^3)\) 이상 (반복) Unique up to sign
촐레스키 \(\mathbf{L}\mathbf{L}^\top\) 양정치 대칭 \(O(n^3/6)\) 유일 (양의 대각 조건)

촐레스키는 LU의 절반 비용이다. 대칭성과 양정치성이 그만큼의 정보를 제공한다는 뜻이다. 또한 촐레스키 분해가 성공했다 = 행렬이 양정치다라는 강력한 판별 도구로 기능한다. 실무에서 양정치 판별은 보통 Cholesky를 시도해서 실패하는지 보는 방식으로 한다.

8.2 \(2 \times 2\) 수작업 예시

\(\mathbf{A} = \begin{bmatrix} 4 & 2 \\ 2 & 5 \end{bmatrix}\) 의 촐레스키 분해.

\(\mathbf{L} = \begin{bmatrix} \ell_{11} & 0 \\ \ell_{21} & \ell_{22} \end{bmatrix}\) 로 놓고 \(\mathbf{L}\mathbf{L}^\top\) 을 전개하면:

\[ \mathbf{L}\mathbf{L}^\top = \begin{bmatrix} \ell_{11}^2 & \ell_{11}\ell_{21} \\ \ell_{11}\ell_{21} & \ell_{21}^2 + \ell_{22}^2 \end{bmatrix} \]

\(\mathbf{A}\) 와 비교하여:

  • \(\ell_{11}^2 = 4 \Rightarrow \ell_{11} = 2\)
  • \(\ell_{11}\ell_{21} = 2 \Rightarrow \ell_{21} = 1\)
  • \(\ell_{21}^2 + \ell_{22}^2 = 5 \Rightarrow \ell_{22}^2 = 4 \Rightarrow \ell_{22} = 2\)

따라서 \(\mathbf{L} = \begin{bmatrix} 2 & 0 \\ 1 & 2 \end{bmatrix}\). 검증: \(\mathbf{L}\mathbf{L}^\top = \begin{bmatrix} 4 & 2 \\ 2 & 5 \end{bmatrix} = \mathbf{A}\) ✓.

8.3 샘플링으로의 응용

목표 공분산 \(\mathbf{\Sigma}\) 를 가진 다변수 정규분포에서 표본을 생성하려면:

  1. 촐레스키 분해 \(\mathbf{\Sigma} = \mathbf{L}\mathbf{L}^\top\)
  2. \(\mathbf{z} \sim \mathcal{N}(\mathbf{0}, \mathbf{I})\) 생성 (표준 정규, 쉬움)
  3. \(\mathbf{y} = \mathbf{L}\mathbf{z} + \boldsymbol{\mu}\) 로 선형 변환

그러면 \(\text{Cov}(\mathbf{y}) = \mathbf{L}\, \text{Cov}(\mathbf{z})\, \mathbf{L}^\top = \mathbf{L}\mathbf{I}\mathbf{L}^\top = \mathbf{L}\mathbf{L}^\top = \mathbf{\Sigma}\) 가 된다. 이 방법은 MCMC, 몬테카를로 시뮬레이션, 가우시안 프로세스 샘플링의 핵심이다.


9 코드 예시

import numpy as np
from numpy.linalg import eig, cholesky, LinAlgError

def is_positive_definite(A, tol=1e-10):
    """Cholesky 분해로 양정치 판별 (실무 표준 방법)"""
    A = np.asarray(A, dtype=float)
    if not np.allclose(A, A.T, atol=tol):
        return False  # 대칭이 아니면 그 자체로 PD 아님
    try:
        cholesky(A)
        return True
    except LinAlgError:
        return False

# 다섯 가지 조건 모두 확인하는 함수
def check_all_conditions(A):
    A = np.asarray(A, dtype=float)
    n = A.shape[0]
    results = {}

    # 조건 1: 에너지 (랜덤 샘플링으로 근사)
    rng = np.random.default_rng(0)
    xs = rng.standard_normal((1000, n))
    energies = np.einsum('ij,jk,ik->i', xs, A, xs)
    results['energy_positive'] = bool(np.all(energies > 0))

    # 조건 2: 고유값
    eigvals = np.linalg.eigvalsh(A)  # 대칭이면 eigvalsh가 빠름
    results['all_eigvals_positive'] = bool(np.all(eigvals > 0))

    # 조건 3: 피벗 (LU 분해 대각)
    # LDL^T: numpy에는 없으므로 scipy 사용
    from scipy.linalg import ldl
    L, D, perm = ldl(A)
    pivots = np.diag(D)
    results['all_pivots_positive'] = bool(np.all(pivots > 0))

    # 조건 4: 선행 주부분 행렬식
    minors = [np.linalg.det(A[:k, :k]) for k in range(1, n + 1)]
    results['all_leading_minors_positive'] = bool(np.all(np.array(minors) > 0))

    # 조건 5: 촐레스키 성공
    try:
        cholesky(A)
        results['cholesky_exists'] = True
    except LinAlgError:
        results['cholesky_exists'] = False

    return results, eigvals, pivots, minors

# 양정치 행렬 테스트
A_pd = np.array([[4, 1, 1],
                 [1, 3, 0],
                 [1, 0, 2]], dtype=float)

res, ev, pv, mn = check_all_conditions(A_pd)
print("양정치 판별 결과:", res)
print("고유값:", ev)
print("피벗:", pv)
print("선행 주부분 행렬식:", mn)

# 부정치 행렬 테스트
A_indef = np.array([[1, 2],
                    [2, 1]], dtype=float)
res2, *_ = check_all_conditions(A_indef)
print("\n부정치 판별 결과:", res2)
# 이차형식 시각화: 다섯 가지 분류
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x1 = np.linspace(-3, 3, 60)
x2 = np.linspace(-3, 3, 60)
X1, X2 = np.meshgrid(x1, x2)

cases = {
    'Positive Definite': X1**2 + X2**2,
    'Positive Semi-Definite': (X1 + X2)**2,
    'Indefinite (Saddle)': X1**2 - X2**2,
    'Negative Definite': -(X1**2 + X2**2),
}

fig = plt.figure(figsize=(16, 4))
for i, (title, Z) in enumerate(cases.items(), 1):
    ax = fig.add_subplot(1, 4, i, projection='3d')
    ax.plot_surface(X1, X2, Z, alpha=0.85, cmap='viridis')
    ax.set_title(title)
    ax.set_xlabel('x1'); ax.set_ylabel('x2')
plt.tight_layout()
plt.show()
# 촐레스키로 다변수 정규분포 샘플링
mu = np.array([1.0, 3.0, 2.0])
Sigma = np.array([[4.0, -2.0, 1.0],
                  [-2.0, 3.0, -1.0],
                  [1.0, -1.0, 2.0]])

L = cholesky(Sigma)  # Sigma = L @ L.T

rng = np.random.default_rng(42)
Z = rng.standard_normal((3, 5000))
Y = L @ Z + mu[:, None]

print("목표 평균:", mu)
print("표본 평균:", Y.mean(axis=1))
print("\n목표 공분산:\n", Sigma)
print("\n표본 공분산:\n", np.cov(Y))
library(Matrix)

# 양정치 판별 함수 — 5가지 조건 모두 체크
check_pd <- function(A, tol = 1e-10) {
    stopifnot(isSymmetric(A, tol = tol))
    n <- nrow(A)

    # 조건 2: 고유값
    eig <- eigen(A, symmetric = TRUE, only.values = TRUE)$values

    # 조건 4: 선행 주부분 행렬식
    minors <- sapply(1:n, function(k) det(A[1:k, 1:k, drop = FALSE]))

    # 조건 5: 촐레스키 성공 여부
    chol_ok <- tryCatch({
        chol(A); TRUE
    }, error = function(e) FALSE)

    list(
        eigenvalues = eig,
        all_eigvals_positive = all(eig > tol),
        leading_minors = minors,
        all_minors_positive = all(minors > tol),
        cholesky_exists = chol_ok
    )
}

# 양정치 예시
A_pd <- matrix(c(4, 1, 1,
                 1, 3, 0,
                 1, 0, 2), nrow = 3, byrow = TRUE)
check_pd(A_pd)

# 다섯 가지 이차형식 곡면 시각화
library(lattice)
grid <- expand.grid(x1 = seq(-3, 3, 0.1), x2 = seq(-3, 3, 0.1))

grid$pd  <- with(grid, x1^2 + x2^2)
grid$psd <- with(grid, (x1 + x2)^2)
grid$ind <- with(grid, x1^2 - x2^2)
grid$nd  <- with(grid, -(x1^2 + x2^2))

wireframe(pd ~ x1 * x2, grid, main = "Positive Definite")
wireframe(ind ~ x1 * x2, grid, main = "Indefinite (Saddle)")
# 촐레스키 분해로 다변수 정규분포 샘플링
set.seed(42)
Sigma <- matrix(c(4, -2, 1, -2, 3, -1, 1, -1, 2), nrow = 3)
mu <- c(1, 3, 2)

L <- t(chol(Sigma))   # R의 chol()은 upper triangular을 반환, 전치 필요
Z <- matrix(rnorm(3 * 5000), nrow = 3)
Y <- L %*% Z + mu

cat("목표 평균:", mu, "\n")
cat("표본 평균:", rowMeans(Y), "\n\n")
cat("목표 공분산:\n"); print(Sigma)
cat("\n표본 공분산:\n"); print(cov(t(Y)))

10 응용: 머신러닝과 통계에서의 양정치

10.1 다변수 정규분포

\(n\) 차원 정규분포의 확률밀도함수는:

\[ f(\mathbf{x}) = \frac{1}{(2\pi)^{n/2} |\mathbf{\Sigma}|^{1/2}} \exp\left[-\frac{1}{2}(\mathbf{x} - \boldsymbol{\mu})^\top \mathbf{\Sigma}^{-1} (\mathbf{x} - \boldsymbol{\mu})\right] \]

지수부의 \((\mathbf{x} - \boldsymbol{\mu})^\top \mathbf{\Sigma}^{-1} (\mathbf{x} - \boldsymbol{\mu})\) 는 이차형식이고, 마할라노비스 거리 제곱이라 불린다. \(\mathbf{\Sigma}\) 가 양정치여야 \(\mathbf{\Sigma}^{-1}\) 도 양정치이고, 그래야 지수가 음수로 내려가 밀도가 정상적으로 정의된다. 공분산 행렬이 양반정치(즉, 일부 고유값이 0)가 되면 분포는 저차원 부분공간에 “납작하게” 붙어버린다 — 이것이 degenerate 분포이다.

10.2 PCA와 공분산 대각화

PCA는 공분산 행렬 \(\mathbf{C} = \frac{1}{n-1}\mathbf{X}^\top \mathbf{X}\) (중심화된 데이터)의 고유값 분해이다.

\[ \mathbf{C} = \mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^\top \]

\(\mathbf{X}\) 의 열(특징)이 독립이면 \(\mathbf{C}\) 는 양정치이고, 모든 고유값 \(\lambda_i > 0\) 이다. \(\lambda_i\)\(i\) 번째 주성분 방향의 분산이고, 큰 순서대로 정렬한다. “분산을 최대화하는 방향 찾기” = 이차형식 \(\mathbf{v}^\top \mathbf{C}\mathbf{v}\)\(\|\mathbf{v}\| = 1\) 제약 하에서 최대화 = 가장 큰 고유값 방향이라는 흐름이 모두 양정치 구조에서 나온다.

10.3 커널 방법과 Mercer 조건

커널 방법(SVM, 가우시안 프로세스)의 핵심은 커널 함수 \(k(\mathbf{x}, \mathbf{x}')\) 이다. 데이터 집합 \(\{\mathbf{x}_1, \dots, \mathbf{x}_N\}\) 에 대해 커널 행렬 \(\mathbf{K}_{ij} = k(\mathbf{x}_i, \mathbf{x}_j)\) 를 만드는데, 이것이 양반정치여야 한다 (Mercer 조건).

왜인가? 커널의 의미는 “어떤 특징 공간에서의 내적”이다. \(k(\mathbf{x}, \mathbf{x}') = \phi(\mathbf{x})^\top \phi(\mathbf{x}')\) 라고 쓸 수 있다면 \(\mathbf{K}\)\(\phi\) 값들의 그람 행렬이고, 앞서 본 대로 그람 행렬은 항상 양반정치이다. 역으로, 양반정치 커널 행렬이 나오지 않는 커널 함수는 “진짜 내적”을 만들지 못하고, SVM·GP의 이론적 보장이 깨진다.

RBF 커널 \(k(\mathbf{x}, \mathbf{x}') = \exp(-\gamma \|\mathbf{x} - \mathbf{x}'\|^2)\), 다항 커널 \((\mathbf{x}^\top \mathbf{x}' + c)^d\) 등은 모두 Mercer 조건을 만족한다 (증명은 함수해석학적으로 상당히 깊은 결과이다).

10.4 가우시안 프로세스 회귀

GP에서 예측 분포는 다음 공분산을 가진다:

\[ \mathbf{K}_{*|*} = \mathbf{K}_{**} - \mathbf{K}_{*X}(\mathbf{K}_{XX} + \sigma^2 \mathbf{I})^{-1} \mathbf{K}_{X*} \]

핵심은 \((\mathbf{K}_{XX} + \sigma^2 \mathbf{I})^{-1}\) 의 계산이다. \(\mathbf{K}_{XX}\) 는 양반정치, \(\sigma^2 \mathbf{I}\) 를 더하면 양정치가 되므로 촐레스키 분해 \(\mathbf{K}_{XX} + \sigma^2 \mathbf{I} = \mathbf{L}\mathbf{L}^\top\) 으로 안정적으로 역행렬을 계산할 수 있다. 이것이 GP 구현의 성능/안정성 핵심이다.

10.5 리지 회귀와 정규화

리지 회귀 해 \(\hat{\mathbf{w}} = (\mathbf{X}^\top \mathbf{X} + \lambda \mathbf{I})^{-1}\mathbf{X}^\top \mathbf{y}\) 에서 \(\lambda > 0\)\(\mathbf{X}^\top \mathbf{X}\) 가 양반정치일 때도 역행렬이 존재하도록 만드는 양정치화(positive definitization) 장치이다. 이 관점에서 리지 페널티는 “수치적 안정성 세금”이다 — 편의(bias)를 감수하고 분산을 줄인다.


11 양반정치와 부정치의 확장

Strang Ch.6.5는 주로 양정치를 다루지만, 양반정치(PSD)와 부정치도 실무에서 중요하다.

11.1 양반정치 (Positive Semi-Definite)

정의: \(\mathbf{x}^\top \mathbf{A}\mathbf{x} \geq 0\) for all \(\mathbf{x}\).

조건 내용
고유값 모두 \(\lambda_i \geq 0\), 일부는 0일 수 있음
행렬식 \(|\mathbf{A}| \geq 0\), 일부 선행 주부분은 0 가능
촐레스키 \(\mathbf{L}\) 존재하나 일부 대각 \(=0\) (pivoting 필요)
에너지 영공간 방향으로는 \(=0\)

공분산 행렬은 기본적으로 양반정치이다. 데이터가 선형 종속 관계를 가질 때만 “완전 양정치”가 깨지고, 그 종속 방향이 영공간이 된다. PCA에서 분산 \(=0\) 인 PC가 바로 이 영공간이다 — 완전히 상수인 특징(불필요한 특징).

11.2 부정치 (Indefinite)

양수·음수 방향이 모두 존재하는 경우. 안장점에서 나오는 헤시안이 전형적인 예이다. 최적화에서 부정치 헤시안은 탈출해야 할 상태이다. 현대 딥러닝에서는 SGD의 노이즈가 자연스럽게 안장점을 빠져나오는 역할을 한다.

11.3 부호에 따른 행렬 분류 요약

분류 고유값 기하학 전형적 등장
양정치 모두 \(>0\) 밥그릇 극소, 공분산(독립), 커널
양반정치 모두 \(\geq 0\) 평탄한 밥그릇 공분산, 그람 행렬
부정치 혼합 안장 안장점, saddle 헤시안
음반정치 모두 \(\leq 0\) 평탄한 뒤집힌 밥그릇 극대 근처
음정치 모두 \(<0\) 뒤집힌 밥그릇 극대

12 수치적 주의사항

이론과 실무 사이에는 부동소수점이라는 간극이 존재한다.

12.1 Ill-Conditioned 양정치 행렬

이론적으로 양정치인 행렬도 조건수(condition number) \(\kappa(\mathbf{A}) = \lambda_{\max}/\lambda_{\min}\) 가 매우 크면 수치적으로 “거의 특이”하다. 예를 들어 \(\lambda_{\max} = 10^{10}, \lambda_{\min} = 10^{-10}\) 이면 조건수는 \(10^{20}\), 부동소수점 정밀도(\(10^{-16}\))의 한계를 넘는다. 이때 고유값이 이론적으로 양수지만 계산상 미세한 음수로 나올 수 있다.

12.2 실무의 대응

  1. 미세 정규화: \(\mathbf{A} + \epsilon \mathbf{I}\) (\(\epsilon \sim 10^{-6}\)) 로 강제 양정치화. GP 공분산 구현의 “jitter”가 이것이다.
  2. Cholesky 시도 후 실패 시 증가: 처음 \(\epsilon\) 을 실패하면 10배씩 키운다.
  3. 대칭화: 수치 오차로 \(\mathbf{A} \neq \mathbf{A}^\top\) 이 되면 \((\mathbf{A} + \mathbf{A}^\top)/2\) 로 강제 대칭화.
  4. 고유값 클리핑: 이론상 PSD인데 음수 고유값이 나오면 0으로 자른다 (\(\max(\lambda_i, 0)\)).

12.3 양정치 판별의 실무 표준

Python에서 양정치 판별의 표준 관용구:

def is_pd(A):
    try:
        np.linalg.cholesky(A)
        return True
    except np.linalg.LinAlgError:
        return False

고유값 계산보다 수십 배 빠르고 수치적으로도 안정적이다.


13 요약

개념 핵심 내용
정의 대칭 행렬 \(\mathbf{A}\) 에 대해 \(\mathbf{x}^\top \mathbf{A}\mathbf{x} > 0\) for all \(\mathbf{x} \neq \mathbf{0}\)
에너지 해석 스프링의 탄성 에너지, 통계의 분산, 최적화의 곡률 — 모두 같은 수학
5가지 동치 에너지 \(>0\), 고유값 \(>0\), 피벗 \(>0\), 선행 주부분 행렬식 \(>0\), \(\mathbf{A} = \mathbf{R}^\top \mathbf{R}\)
이차형식 기하 \(\mathbf{x}^\top \mathbf{A}\mathbf{x} = c\) 는 타원체, 주축은 고유벡터, 반지름은 \(1/\sqrt{\lambda_i}\)
곡면 형태 밥그릇(양정치) / 안장(부정치) / 뒤집힌 밥그릇(음정치)
완전제곱식 피벗이 정확히 제곱항의 계수 — 대수와 기하의 만남
헤시안 판정 극솟값 \(\Leftrightarrow\) 헤시안 양정치, 안장점 \(\Leftrightarrow\) 헤시안 부정치
\(\mathbf{A}^\top \mathbf{A}\) 항상 PSD, 독립 열이면 PD \(\Rightarrow\) 최소제곱법의 유일해 보장
촐레스키 분해 \(\mathbf{A} = \mathbf{L}\mathbf{L}^\top\), LU의 절반 비용, PD 판별의 실무 표준
다변수 정규분포 \(\mathbf{\Sigma}\) PD \(\Leftrightarrow\) non-degenerate 분포, 샘플링에 Cholesky 활용
커널 방법 Mercer 조건 = 커널 행렬 PSD, 그람 행렬로서의 양정치

14 관련 주제

선행 지식

후속 주제

  • Ch.6 §6.7 — 특이값 분해(SVD): \(\mathbf{A}^\top \mathbf{A}\) 의 양정치성이 SVD의 출발점

관련 개념

다른 카테고리 연결

  • 다변수 정규분포 — Statistics 카테고리
  • 주성분 분석 (PCA) — Machine Learning 카테고리
  • 가우시안 프로세스 회귀 — Machine Learning 카테고리
  • Newton’s Method와 이차 수렴 — Optimization 카테고리

Subscribe

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