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의 핵심은 양정치성을 판별하는 다섯 가지 동치 조건이다. 이들은 서로 전혀 다른 각도에서 양정치를 바라보는데, 모두 같은 것을 말한다는 점이 놀랍다.
대칭 행렬 \(\mathbf{A}\) 에 대해 다음 다섯 조건은 모두 동치이다.
- 에너지 조건: \(\mathbf{x}^\top \mathbf{A}\mathbf{x} > 0\) for all \(\mathbf{x} \neq \mathbf{0}\)
- 고유값 조건: 모든 고유값 \(\lambda_i > 0\)
- 피벗 조건: 가우스 소거법의 모든 피벗 \(d_i > 0\)
- 선행 주부분 행렬식 조건: 모든 \(k \times k\) 선행 주부분 행렬식 \(|\mathbf{A}_k| > 0\)
- 분해 조건: 독립 열을 가진 행렬 \(\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\) 이 동치이다.
피벗과 고유값은 일반적으로 다른 값이지만, 같은 부호 패턴을 가진다 (실베스터 관성 법칙, 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의 결과이기도 하다.
하지만 조심할 점이 있다. 선행 주부분 행렬식만 본다. 임의의 주부분 행렬식이 아니다.
- 선행 주부분 행렬식: 왼쪽 위 \(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) 한계에 해당한다.
이차형식 \(\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\) 그 방향은 타원이 길다 (에너지가 천천히 증가)
데이터의 공분산 행렬 \(\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\) | 엄격한 국소 극대 |
밥그릇 위의 한 점에서 어느 방향으로 움직여도 위로 올라간다 — 이것이 극솟점이다. 안장점에서는 한 방향으로는 올라가고 다른 방향으로는 내려간다. 헤시안의 고유값이 모두 양수이면 모든 방향에서 곡률이 위로 볼록이므로 밥그릇(극소)이고, 부호가 섞여 있으면 안장이다.
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}\) 는 항상 양반정치
이 정리는 선형대수에서 가장 자주 쓰이는 결과 중 하나이다.
임의의 \(m \times n\) 실수 행렬 \(\mathbf{A}\) 에 대해:
- \(\mathbf{A}^\top \mathbf{A}\) 는 항상 대칭이고 양반정치(PSD)이다.
- \(\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}\) 를 가진 다변수 정규분포에서 표본을 생성하려면:
- 촐레스키 분해 \(\mathbf{\Sigma} = \mathbf{L}\mathbf{L}^\top\)
- \(\mathbf{z} \sim \mathcal{N}(\mathbf{0}, \mathbf{I})\) 생성 (표준 정규, 쉬움)
- \(\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 실무의 대응
- 미세 정규화: \(\mathbf{A} + \epsilon \mathbf{I}\) (\(\epsilon \sim 10^{-6}\)) 로 강제 양정치화. GP 공분산 구현의 “jitter”가 이것이다.
- Cholesky 시도 후 실패 시 증가: 처음 \(\epsilon\) 을 실패하면 10배씩 키운다.
- 대칭화: 수치 오차로 \(\mathbf{A} \neq \mathbf{A}^\top\) 이 되면 \((\mathbf{A} + \mathbf{A}^\top)/2\) 로 강제 대칭화.
- 고유값 클리핑: 이론상 PSD인데 음수 고유값이 나오면 0으로 자른다 (\(\max(\lambda_i, 0)\)).
12.3 양정치 판별의 실무 표준
Python에서 양정치 판별의 표준 관용구:
고유값 계산보다 수십 배 빠르고 수치적으로도 안정적이다.
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.4 — 대칭 행렬 — 스펙트럼 정리 \(\mathbf{A} = \mathbf{Q}\mathbf{\Lambda}\mathbf{Q}^\top\)
- Ch.6 §6.1 — 고유값 개요 — 고유값의 정의와 의미
- Ch.6 §6.2 — 행렬의 대각화 — \(\mathbf{A} = \mathbf{S}\mathbf{\Lambda}\mathbf{S}^{-1}\)
- Ch.4 §4.3 — 최소제곱 근사 — 정규방정식 \(\mathbf{A}^\top \mathbf{A}\mathbf{x} = \mathbf{A}^\top \mathbf{b}\)
- Ch.5 §5.1 — 행렬식의 성질 — 선행 주부분 행렬식
후속 주제
- Ch.6 §6.7 — 특이값 분해(SVD): \(\mathbf{A}^\top \mathbf{A}\) 의 양정치성이 SVD의 출발점
관련 개념
- Special Matrices — 카탈로그 — 공분산 행렬, 중심 행렬
다른 카테고리 연결
- 다변수 정규분포 — Statistics 카테고리
- 주성분 분석 (PCA) — Machine Learning 카테고리
- 가우시안 프로세스 회귀 — Machine Learning 카테고리
- Newton’s Method와 이차 수렴 — Optimization 카테고리