측정은 언제나 조금씩 틀립니다. 그래서 공학에서 만나는 연립방정식은 미지수보다 식이 훨씬 많고, 식끼리 서로 어긋나서 정확한 해가 없는 경우가 대부분입니다. 3장과 4장의 소거법은 여기서 멈춥니다. 이 장은 질문을 바꿉니다. "Ax = b를 만족하는 x"가 없다면, "Ax가 b에 가장 가까워지는 x"는 무엇인가? 답은 기하에 있습니다. 가장 가까운 점은 수직으로 내린 발, 곧 사영이고, 수직이라는 조건 하나가 풀 수 있는 새 방정식 ATAx^=ATb를 줍니다. 이것이 최소제곱법이며, 센서 검량선에서 GPS 수신기까지 데이터를 다루는 거의 모든 계산의 밑바닥에 있습니다.
직교 벡터와 직교 부분공간을 정의하고, 0이 아닌 직교 벡터들이 선형 독립임을 피타고라스 정리로 보인다.
직교 여공간 V⊥을 계산하고, 행공간 ⟂ 영공간, 열공간 ⟂ 좌영공간이라는 네 부분공간의 직교 관계를 설명한다.
부분공간으로의 사영에서 정규 방정식 ATAx^=ATb를 이끌고, 사영 행렬 P=A(ATA)−1AT를 손으로 계산한다.
최소제곱 직선·다항식을 맞추고, 잔차가 열공간에 수직임을 확인하며, 차수를 올릴 때 생기는 과적합을 실험으로 본다.
가중 최소제곱과 GPS의 선형화 위치 계산을 이해하고, ATA가 조건수를 제곱한다는 경고의 뜻을 안다.
이 수식이 없었다면스마트폰의 GPS 위치
GPS 수신기는 위성이 보낸 신호가 도착하기까지 걸린 시간을 재서 위성까지의 거리를 구합니다. 그런데 휴대폰의 시계는 위성의 원자시계만큼 정확하지 않습니다. 수신기 시계가 1마이크로초만 틀려도 빛은 그동안 약 300 m를 가므로, 잰 거리는 모두 같은 양만큼 틀립니다. 그래서 이 거리를 의사거리(pseudorange)라 부르고, 미지수는 위치 셋(x, y, z)에 시계 오차 하나를 더한 넷이 됩니다. 위성은 최소 네 개가 필요합니다.
실제 수신기는 보통 그보다 많은 위성을 봅니다. 식은 미지수보다 많고, 측정 잡음 때문에 모든 식을 동시에 만족하는 위치는 없습니다. 수신기는 "모든 식을 조금씩 덜 틀리게" 하는 위치, 곧 잔차 제곱합이 가장 작은 위치를 찾습니다. 거리 식은 비선형이므로 현재 추정 위치 근처에서 선형화한 뒤 최소제곱 문제를 풀고, 이를 몇 번 되풀이합니다. 이 장의 마지막 시뮬레이터에서 그 과정을 직접 돌려 봅니다.
식 > 미지수, 잡음→정확한 해 없음→수직 사영 = 최소제곱→AᵀAx̂ = Aᵀb
직교 벡터와 직교 부분공간
잡음을 신호에서 "깔끔하게" 떼어 낼 수 있을까
센서가 낸 값 b가 진짜 신호와 잡음의 합이라고 합시다. 진짜 신호가 어떤 공간(예: 느리게 변하는 신호들의 공간) 안에 있다는 것을 안다면, b를 "그 공간 안의 부분"과 "그 공간과 전혀 관계없는 부분"으로 나눌 수 있을까요? 그리고 그렇게 나눈 두 조각은 서로 간섭하지 않을까요? "관계없다"를 수학으로 정확히 말하는 것이 이 절의 일입니다.
1장에서 두 벡터의 내적이 0이면 둘이 수직이라는 것을 보았습니다. 이것을 정의로 삼습니다.
정의 8.1 (직교)Rn의 두 벡터 u,v가 uTv=u1v1+⋯+unvn=0이면 둘은 직교(orthogonal)한다고 하고 u⊥v로 쓴다. 영벡터는 모든 벡터와 직교한다.
직교가 왜 "간섭하지 않는다"는 뜻인지는 길이를 재 보면 드러납니다. ∥u+v∥2=(u+v)T(u+v)=∥u∥2+2uTv+∥v∥2이고, 가운데의 교차항이 바로 내적입니다. 직교하면 교차항이 사라져 에너지(제곱 길이)가 그냥 더해집니다.
정리 8.1 (피타고라스와 독립) ① u⊥v이면 ∥u+v∥2=∥u∥2+∥v∥2. ② 0이 아닌 벡터 v1,…,vk가 서로 직교하면 선형 독립이다.
증명. ①은 위의 전개에서 교차항이 0이 되는 것이다. ②는 c1v1+⋯+ckvk=0의 양변에 viT를 곱한다. 직교성 때문에 i번째 항만 남아 ci∥vi∥2=0이고, vi=0이므로 ci=0. 모든 i에 대해 그렇다. ∎
이제 벡터 하나가 아니라 공간 전체끼리의 직교를 생각합니다.
정의 8.2 (직교 부분공간) 부분공간 V,W⊆Rn에서 V의 모든 벡터가 W의 모든 벡터와 직교하면 V와 W는 직교 부분공간(orthogonal subspaces)이라 하고 V⊥W로 쓴다.
조건이 생각보다 강합니다. 방의 바닥과 벽은 "수직으로 만난다"고 말하지만 직교 부분공간이 아닙니다. 바닥과 벽이 만나는 모서리 직선 위의 벡터는 두 평면 모두에 들어 있고, 자기 자신과의 내적은 0이 아니기 때문입니다. 직교 부분공간은 영벡터 말고는 공통 원소가 없습니다(v∈V∩W이면 vTv=0이므로 v=0). 그래서 R3에서 두 평면은 결코 직교 부분공간이 될 수 없고, 직교하는 쌍은 "직선과 평면" 또는 "직선과 직선"입니다.
그림 8-1. 왼쪽: z축과 xy평면은 직교 부분공간이다. 차원도 1 + 2 = 3으로 공간을 정확히 나눈다. 오른쪽: 바닥과 벽은 서로 "수직으로 세워져" 있지만 모서리를 공유하므로 직교 부분공간이 아니다. 직교 부분공간의 교집합은 {0}뿐이다.
직교 여공간과 네 부분공간
Ax = 0의 해는 A의 어디와 수직일까
5장에서 영공간 N(A)을 "Ax=0의 해 전체"로 정의했습니다. 연립방정식으로 쓰면 A의 각 행과 x의 내적이 0이라는 뜻입니다. 그렇다면 영공간은 행들과, 나아가 행들이 만드는 공간 전체와 수직이어야 하지 않을까요?
그렇습니다. 그리고 이 관찰은 "수직인 것 전부"라는 개념으로 정리됩니다.
정의 8.3 (직교 여공간) 부분공간 V⊆Rn의 직교 여공간(orthogonal complement)V⊥("V 퍼프")는 V의 모든 벡터와 직교하는 벡터 전체의 집합이다. V⊥={w∈Rn:vTw=0for allv∈V}. V⊥은 부분공간이고, dimV+dimV⊥=n, (V⊥)⊥=V이다.
정리 8.2 (선형대수의 기본 정리, 직교 부분)m×n 행렬 A에 대해
N(A)=C(AT)⊥(in Rn),N(AT)=C(A)⊥(in Rm).
증명.Ax=0은 "모든 행 ri에 대해 riTx=0"과 같다. 행들에 수직이면 행들의 모든 선형 결합, 곧 행공간 C(AT) 전체에 수직이고, 거꾸로 행공간 전체에 수직이면 특히 각 행에 수직이다. 따라서 N(A)는 정확히 행공간에 수직인 벡터 전체다. 두 번째 식은 첫 번째 식을 AT에 적용한 것이다. ∎
계수가 r이면 행공간과 영공간의 차원은 r과 n−r이고, 열공간과 좌영공간의 차원은 r과 m−r입니다(6장). 직교 여공간이므로 차원이 정확히 맞아떨어집니다. 그 결과 Rn의 모든 벡터는 하나뿐인 방법으로 "행공간 조각 + 영공간 조각"으로 나뉩니다.
영공간 조각은 A를 지나면 사라진다. A가 실제로 "보는" 것은 행공간 조각뿐이고, 행공간에서 열공간으로 가는 이 대응은 일대일이다.
그림 8-2. 선형대수의 큰 그림. 입력 공간 ℝⁿ은 행공간과 영공간으로, 출력 공간 ℝᵐ은 열공간과 좌영공간으로 직각을 이루며 나뉜다. A는 영공간을 0으로 보내고, 행공간을 열공간으로 일대일로 옮긴다. 이 장의 최소제곱은 b가 열공간 밖으로 삐져나와 좌영공간 성분을 가질 때의 이야기다.
예제 8.1 직교 여공간 구하기
R3에서 V=span{(1,1,0),(0,1,1)}의 직교 여공간을 구하라.
두 벡터를 행으로 쌓은 A=[101101]를 만들면 V=C(AT)이고, 정리 8.2에 의해 V⊥=N(A)이다.
Ax=0: 둘째 식에서 x2=−x3, 첫째 식에서 x1=−x2=x3. 자유 변수 x3=t.
아래 시뮬레이터에서 R3의 직선과 그 직교 여공간(평면)을 돌려 봅니다. 직선의 방향을 바꾸면 평면이 함께 돌아 언제나 직각을 유지하고, 임의의 벡터 x가 두 조각으로 나뉩니다.
SIMULATOR
ℝ³에서 직선과 그 직교 여공간
방향을 바꾸면 V⊥가 따라 돈다
V로 볼 것
dim V + dim V⊥—
x의 V 조각—
x의 V⊥ 조각—
두 조각의 내적—
VV⊥x
해볼 것: ① 고도를 85°로 올리면 V는 거의 z축, V⊥는 거의 xy평면이 됩니다(그림 8-1). ② '평면 V'로 바꾸면 이름만 바뀌고 그림은 그대로입니다. (V⊥)⊥ = V이기 때문입니다. ③ 방향을 어떻게 바꿔도 두 조각의 내적은 0이고 두 조각의 합은 언제나 x입니다. 모델: 정사영으로 그린 3차원 그림이며, 평면은 원점 근처의 정사각형 조각만 그립니다.
2×2 행렬로 네 부분공간을 모두 한 번에 볼 수도 있습니다. 계수가 1인 행렬을 고르면 행공간과 영공간이 입력 평면에서 수직인 두 직선이 되고, 열공간과 좌영공간이 출력 평면에서 수직인 두 직선이 됩니다.
SIMULATOR
2×2 행렬의 네 부분공간
입력 ℝ²: x를 끌어 보세요
출력 ℝ²: Ax
행렬 A
계수 r—
x = xᵣ + xₙ—
Ax 와 Axᵣ—
xᵣ · xₙ—
행공간 C(Aᵀ) · 열공간 C(A)영공간 N(A) · 좌영공간 N(Aᵀ)
해볼 것: ① x를 영공간 직선 위로 끌면 Ax가 원점에 붙습니다. ② x를 어디로 끌든 Ax는 열공간 직선을 벗어나지 못하고, Ax와 Axᵣ는 언제나 같은 점입니다. ③ '계수 1, 대칭'에서는 행공간과 열공간이 같은 직선입니다(A = Aᵀ). '계수 2'에서는 행공간이 평면 전체, 영공간은 {0}입니다. 모델: 2×2 행렬만 다루며, |det| < 10⁻⁹이면 계수 1 이하로 봅니다.
직선으로의 사영
바람 중 활주로 방향 성분은 얼마인가
활주로 방향을 a, 지금 부는 바람을 b라 합시다. 조종사는 바람 중 활주로를 따라 부는 성분(맞바람·뒷바람)과 활주로를 가로지르는 성분(옆바람)을 따로 알고 싶어 합니다. b를 a의 직선 위의 점 p와 나머지로 나누되, 나머지가 "직선과 관계없도록" 나누려면 p를 어디에 잡아야 할까요?
직선 위의 점은 p=x^a 꼴입니다. 나머지를 오차(error)e=b−p라 하면, 조건은 e⊥a 하나입니다.
aT(b−x^a)=0⟹x^=aTaaTb,p=aTaaTba
분모 aTa=∥a∥2이 있어 a를 몇 배 해도 p는 바뀌지 않는다. 사영은 벡터 a가 아니라 직선에 대한 것이다.
이 p를 b의 a 방향 사영(projection)이라 합니다. 1장에서 "그림자"로 처음 본 그 벡터입니다. 이 점이 특별한 이유는 직선 위에서 b에 가장 가까운 점이기 때문입니다. 직선 위의 다른 점 q를 잡으면 b−q=e+(p−q)이고 두 조각이 직교하므로, 피타고라스에 의해 ∥b−q∥2=∥e∥2+∥p−q∥2≥∥e∥2입니다.
그림 8-3. b를 a의 직선으로 사영한 p는 수선의 발이다. 오차 e는 직선과 직각이고, 직선 위의 다른 점 q까지의 거리는 피타고라스 정리에 의해 언제나 ‖e‖보다 길다. "가장 가까운 점 = 수직으로 내린 점"이 이 장 전체의 원리다.
p를 b에 행렬을 곱한 것으로 쓸 수 있습니다. 스칼라 x^는 앞으로 옮겨도 되므로 p=ax^=aaTaaTb=aTaaaTb입니다.
정리 8.3 (직선 사영 행렬)a=0일 때 a의 직선으로 사영하는 행렬은
P=aTaaaT
이다. P는 열 하나의 외적이므로 계수가 1이고, 열공간은 a의 직선, 영공간은 그 직교 여공간인 평면이다. 또 PT=P이고 P2=P이다. (P2=(aTa)2a(aTa)aT=P: 그림자의 그림자는 그림자 자신이다.)
P=91122244244. 대각합(trace)은 9/9=1로 계수와 같다. 사영 행렬의 대각합은 언제나 사영하는 공간의 차원이다.
SIMULATOR
수선의 발 찾기: b를 a의 직선으로
a, b, 노란 q를 끌어 보세요
x̂ = aᵀb / aᵀa—
‖e‖ 와 ‖b − q‖—
e · a—
P = aaᵀ / aᵀa—
q를 직선 위에서 움직여 b까지 거리가 가장 짧아지는 곳을 찾아보세요.
해볼 것: ① q를 움직이면 ‖b − q‖는 q가 p에 올 때 가장 작고, 그 값이 ‖e‖입니다. ② a를 길게 늘이거나 반대로 뒤집어도 p와 P는 그대로입니다. ③ 'P(Pb)'를 켜면 두 번째 사영이 첫 번째와 정확히 겹칩니다(P² = P). '(I − P)b'는 e와 같은 벡터를 원점에서 그린 것입니다. 모델: 평면 ℝ², 점은 0.1 단위로 맞춰집니다.
부분공간으로의 사영과 정규 방정식
직선이 아니라 평면에 그림자를 내리려면
측정값 b∈R3을 두 기준 벡터 a1,a2가 만드는 평면에 가장 가깝게 맞추고 싶습니다. 평면 위의 점은 x^1a1+x^2a2=Ax^ 꼴(A의 열이 a1,a2)입니다. 계수 두 개를 어떻게 정할까요? 직선일 때의 공식을 열마다 따로 쓰면 될까요? (a1,a2가 직교하지 않으면 안 됩니다.)
원리는 같습니다. 가장 가까운 점 p=Ax^에서 오차 e=b−Ax^는 평면 전체, 곧 모든 열에 수직이어야 합니다. 열마다 내적이 0이라는 조건 n개를 한 줄로 모으면 ATe=0입니다. 정리 8.2의 말로는 "오차는 좌영공간 N(AT)=C(A)⊥에 있다"입니다.
AT(b−Ax^)=0⟺ATAx^=ATb
이것이 정규 방정식(normal equations)이다. "normal"은 "수직"이라는 뜻이다. A가 m×n이면 ATA는 n×n 정사각 대칭 행렬이다.
정리 8.4 (AᵀA가 가역일 조건)ATA가 가역인 것은 A의 열들이 선형 독립인 것과 동치이다.
증명.ATA와 A의 영공간이 같음을 보이면 된다. Ax=0이면 당연히 ATAx=0. 거꾸로 ATAx=0이면 왼쪽에 xT를 곱해 xTATAx=∥Ax∥2=0, 따라서 Ax=0. 열이 독립이면 N(A)={0}이므로 정사각 행렬 ATA는 가역이다. ∎
열이 독립이면 x^=(ATA)−1ATb이고, p=Ax^에서 사영 행렬이 나옵니다.
정리 8.5 (사영 행렬) 열이 독립인 A의 열공간으로 사영하는 행렬은
P=A(ATA)−1AT
이다. P2=P, PT=P이고, I−P는 직교 여공간 N(AT)으로의 사영이다. 거꾸로 P2=P이고 PT=P인 행렬은 모두 자기 열공간으로의 직교 사영이다.
P2=A(ATA)−1IATA(ATA)−1AT=P. 주의: A가 정사각 가역이 아니면 (ATA)−1을 A−1(AT)−1로 쪼갤 수 없다. 쪼갤 수 있다면 P=I가 되는데, 이는 열공간이 공간 전체인 경우뿐이다.
예제 8.3 평면으로의 사영
A=111012, b=(6,0,0)일 때 x^, p, e, P를 구하라.
ATA=[3335], ATb=[60].
[3335]x^=[60]을 소거로 풀면 둘째 식에서 첫째 식을 빼 2x^2=−6, x^2=−3, x^1=5.
그림 8-4. b를 A의 열공간(여기서는 평면)으로 사영한다. 오차 e가 평면 위의 모든 벡터, 특히 두 열 a₁, a₂에 수직이라는 조건을 모으면 Aᵀ(b − Ax̂) = 0, 곧 정규 방정식이다.
SIMULATOR
ℝ³의 b를 평면 C(A)로 사영하기
b의 성분과 보는 각도를 바꿔 보세요
x̂ (정규 방정식의 해)—
p = Ax̂ / e = b − p—
e·a₁, e·a₂—
P = A(AᵀA)⁻¹Aᵀ—
—
해볼 것: ① 기본값이 예제 8.3입니다. x̂ = (5, −3), p = (5, 2, −1), e = (1, −2, 1)을 확인하세요. ② b를 평면 위의 점(예제 평면에서 b = (1, 2, 3))으로 옮기면 e = 0, p = b입니다. ③ '거의 평행한 두 열'에서는 P는 멀쩡하지만 x̂가 크게 흔들립니다. 평면은 잘 정해져도, 두 열로 그 점을 나타내는 계수는 불안정합니다(9장의 QR이 다루는 문제). 모델: 정사영 그림, 평면은 원점과 p 근처의 조각만 그립니다.
최소제곱: 풀 수 없는 방정식의 가장 좋은 답
측정 세 번, 미지수 둘
어떤 양이 시간에 따라 직선 y=C+Dt로 변한다고 믿고, t=0,1,2에서 y=6,0,0을 쟀습니다. 식은 C=6, C+D=0, C+2D=0 셋인데 미지수는 둘입니다. 세 점은 한 직선 위에 있지 않으니 이 연립방정식은 해가 없습니다. 소거를 하면 0=6 같은 모순이 나옵니다. 그래도 "가장 그럴듯한" 직선은 있어야 합니다.
행렬로 쓰면 Ax=b이고, A=111012, x=(C,D), b=(6,0,0)입니다. 예제 8.3과 똑같은 행렬입니다. 해가 없다는 것은 b가 열공간 밖에 있다는 뜻이고, "가장 그럴듯하다"를 "오차 벡터가 가장 짧다", 즉 잔차 제곱합 ∥Ax−b∥2이 가장 작다로 정하면 답은 이미 구했습니다. 열공간에서 b에 가장 가까운 점은 사영 p이고, 그 계수가 x^=(5,−3)입니다. 최선의 직선은 y=5−3t입니다.
정리 8.6 (최소제곱 해)x^가 ∥Ax−b∥2을 최소로 하는 것은 정규 방정식 ATAx^=ATb를 만족하는 것과 동치이다. A의 열이 독립이면 이 최소제곱 해(least-squares solution)는 하나뿐이다.
증명(기하). 임의의 x에 대해 b−Ax=(b−Ax^)+A(x^−x). 첫 항은 C(A)⊥에, 둘째 항은 C(A)에 있으므로 직교하고, ∥b−Ax∥2=∥b−Ax^∥2+∥A(x^−x)∥2≥∥b−Ax^∥2. 증명(미적분).E(x)=xTATAx−2xTATb+bTb의 기울기 2ATAx−2ATb를 0으로 놓아도 같은 식이 나온다. ∎
두 증명은 같은 사실을 다른 말로 합니다. 미적분은 "기울기가 0인 곳", 기하는 "오차가 수직인 곳"이라고 말하는데, 이차 함수 E의 기울기가 바로 −2ATe이기 때문입니다. 9장 최적화 관점에서는 E가 볼록한 그릇 모양이라 바닥이 하나뿐인 것이고, 그 바닥을 정규 방정식이 한 번에 찾습니다.
역사 한 토막 최소제곱법을 처음 출판한 사람은 르장드르(Adrien-Marie Legendre, 1805)입니다. 가우스(Carl Friedrich Gauss)는 1809년 책에서 자신이 1795년 무렵부터 이 방법을 써 왔다고 밝혔고, 1801년 시야에서 사라진 소행성 세레스의 위치를 예측할 때 이 방법을 썼다고 알려져 있습니다. 가우스는 나아가 측정 오차가 정규 분포를 따르면 최소제곱 해가 가장 그럴듯한 추정이 된다는 확률적 근거를 제시했습니다.
잔차 제곱인가, 다른 것인가
왜 오차의 제곱합일까요? 절댓값의 합(L1)이나 가장 큰 오차(L∞)를 줄일 수도 있습니다(1장의 노름). 제곱합을 고르는 이유는 셋입니다. 첫째, 미분해서 0으로 놓으면 선형 방정식이 나와 한 번에 풀립니다. 둘째, 기하적으로 피타고라스가 성립하는 유클리드 길이라 "수직"이라는 그림이 생깁니다. 셋째, 잡음이 독립인 정규 분포를 따르면 최소제곱 해가 최대 가능도 추정과 같습니다. 대신 큰 오차를 제곱해 크게 벌하므로 이상값에 약하다는 대가가 있습니다. 다음 절의 시뮬레이터에서 확인합니다.
가중 최소제곱
측정마다 믿을 만한 정도가 다르면 잔차마다 가중치 wi>0를 붙여 ∑wiei2을 최소로 합니다. 대각 행렬 W=diag(wi)를 쓰면
xmin(b−Ax)TW(b−Ax)⟹ATWAx^=ATWb
wi=1/σi2(측정 잡음 분산의 역수)로 두는 것이 표준이다. 잡음이 독립이고 평균이 0이면 이 선택이 선형 불편 추정량 가운데 분산이 가장 작은 추정을 준다. 이는 내적을 ⟨u,v⟩W=uTWv로 바꾼 공간에서의 직교 사영이다.
경고: AᵀA는 조건수를 제곱한다
정리 8.7 (정규 방정식의 조건수)A의 2-노름 조건수가 κ(A)=σmax/σmin이면 κ(ATA)=κ(A)2이다(14장의 특이값으로 증명된다). 배정밀도의 반올림 단위는 약 1.1×10−16이므로, κ(A)=108인 문제를 정규 방정식으로 풀면 κ(ATA)≈1016이 되어 유효 숫자가 거의 남지 않는다. 같은 문제를 A에 직접 작용하는 QR 분해(9장)로 풀면 오차는 대략 κ(A)에 비례해 훨씬 작다. 정규 방정식은 이론과 작은 문제에, 실제 수치 계산에는 QR이나 SVD를 쓴다.
직선 맞추기: 센서 검량선
온도 센서의 눈금 매기기
새 온도 센서의 출력 전압을 정확한 기준 온도계 옆에서 일곱 번 쟀습니다. 센서 출력이 온도에 대해 직선(y=C+Dt)이라고 보고, 이 직선을 검량선(calibration curve)으로 써서 이후 측정값을 온도로 바꾸려 합니다. 일곱 점은 잡음 때문에 한 직선 위에 있지 않습니다. 어떤 직선을 그어야 할까요?
데이터 (ti,yi), i=1,…,m에 대해 A의 첫 열은 모두 1, 둘째 열은 ti입니다. 정규 방정식의 성분을 쓰면 합만으로 이루어진 2×2 연립방정식이 됩니다.
첫째 식을 m으로 나누면 C^+D^tˉ=yˉ: 최소제곱 직선은 언제나 데이터의 무게중심 (tˉ,yˉ)를 지난다. 첫째 식은 또 ∑ei=0과 같다. 1로 이루어진 열이 e와 수직이기 때문이다.
그림 8-5. 세 점 (0, 6), (1, 0), (2, 0)에 맞춘 최소제곱 직선. 잔차 벡터 e = (1, −2, 1)은 예제 8.3의 오차 벡터와 같다. "점들에 가장 가까운 직선"(그림 공간 ℝ²)과 "열공간에 가장 가까운 점"(측정 공간 ℝ³)은 같은 계산의 두 그림이다.
직선 y=0.9t. 잔차 (0.1,0.2,−0.7,0.4), 합 0. ✓ 무게중심 (2.5,2.25)도 직선 위에 있다(0.9×2.5=2.25).
SIMULATOR
점을 끌며 맞추는 최소제곱 직선
데이터 점을 끌어 보세요
직선 y = C + Dt—
Σ wᵢeᵢ² (최소)—
AᵀWA—
AᵀWb—
—
해볼 것: ① 아무 점이나 끌면 직선이 곧바로 다시 맞춰집니다. 잔차(빨강·청록 막대)의 합은 가중치가 모두 1일 때 언제나 0입니다. ② '이상값 하나 만들기'를 누르면 한 점이 직선 전체를 끌어당깁니다. 제곱이 큰 오차를 크게 벌하기 때문입니다. ③ w₇을 0으로 내리면 마지막 점을 무시하고, 10으로 올리면 직선이 그 점을 거의 지나갑니다. 모델: 세로 방향 잔차(y 오차)만 고려합니다. t도 잡음이 있으면 '전체 최소제곱'(15장의 PCA와 같은 계산)을 씁니다.
다항식 맞추기와 과적합
곡선이 더 잘 맞으면 더 좋은 모델일까
데이터가 직선처럼 보이지 않으면 y=c0+c1t+c2t2+⋯+cdtd처럼 다항식을 맞출 수 있습니다. 차수 d를 올릴수록 잔차는 줄어들고, 점이 m개일 때 d=m−1이면 모든 점을 정확히 지나는 곡선이 생깁니다. 그러면 가장 높은 차수가 가장 좋은 모델일까요?
다항식도 계수에 대해서는 선형이므로 똑같이 최소제곱입니다. A의 j번째 열이 tij인 방데르몽드 행렬(Vandermonde matrix)을 만들고 정규 방정식을 풉니다. "선형" 최소제곱의 선형은 t가 아니라 미지수 cj에 대한 것입니다. 지수 함수 y=Cekt처럼 계수에 비선형인 모델은 로그를 취하거나(lny=lnC+kt) GPS처럼 반복 선형화로 다룹니다.
A=1⋮1t1tmt12tm2⋯⋯t1d⋮tmd,ATAc^=ATy
ti가 서로 다르고 d≤m−1이면 열이 독립이라 해가 하나뿐이다. d=m−1이면 A가 정사각 가역이 되어 잔차가 0인 보간 다항식이 된다.
잔차가 0이 된다고 좋은 것은 아닙니다. 데이터에는 진짜 법칙과 함께 잡음이 들어 있는데, 차수가 지나치게 높으면 곡선이 잡음까지 따라 휘어 새 데이터에서는 크게 틀립니다. 이것이 과적합(overfitting)입니다. 모델을 만들 때 쓴 데이터(훈련 데이터)의 오차는 차수와 함께 계속 줄지만, 쓰지 않은 데이터(시험 데이터)의 오차는 어느 차수에서 바닥을 찍고 다시 올라갑니다. 또 높은 차수에서는 방데르몽드 행렬의 열들(t9과 t10은 [−1, 1]에서 거의 같은 모양)이 거의 종속이 되어 ATA의 조건수가 폭발합니다. 정리 8.7의 경고가 실제로 나타나는 곳입니다.
SIMULATOR
차수를 올리면: 훈련 오차와 시험 오차
데이터와 맞춘 다항식
RMS 오차 대 차수 (로그 눈금)
훈련 RMS 오차 (12점)—
시험 RMS 오차 (60점)—
cond(AᵀA)—
판정—
해볼 것: ① 차수를 0부터 11까지 올려 보세요. 훈련 오차(실선)는 계속 내려가고, 차수 11에서는 12개 점을 모두 지나지만 시험 오차(점선)는 다시 올라갑니다. ② σ를 0으로 줄이면 높은 차수도 덜 위험해집니다. 과적합은 잡음을 외우는 현상입니다. ③ cond(AᵀA)가 10¹²을 넘어서면 정규 방정식의 해 자체도 반올림 오차로 흔들립니다. 모델: 진짜 법칙 y = 0.9 sin(2.6t) + 0.25t, t ∈ [−1, 1], 독립 정규 잡음. 계수는 정규 방정식을 부분 피벗팅 소거로 풀었습니다.
모델 고르기 실무에서는 데이터를 훈련용과 검증용으로 나누거나(교차 검증), 계수가 커지는 것에 벌점을 주는 정칙화(ridge regression)min∥Ax−b∥2+λ∥x∥2을 씁니다. 정칙화의 정규 방정식은 (ATA+λI)x^=ATb이고, λ>0이면 언제나 가역이며 조건수도 줄어듭니다. 회귀 계수의 신뢰 구간 같은 통계적 판단은 확률과 통계의 회귀 분석에서 다룹니다.
응용: GPS는 위치를 어떻게 계산하나
원 네 개가 한 점에서 만나지 않는다
위성 i의 위치 si는 위성이 보내는 궤도 정보로 압니다. 수신기는 신호 도착 시간에 광속을 곱해 의사거리 ρi를 얻습니다. 시계 오차가 없고 잡음도 없다면 위성마다 반지름 ρi인 구(2차원이면 원)를 그려 교점을 찾으면 됩니다. 실제로는 모든 ρi에 같은 시계 오차 b(거리 단위)가 더해지고 잡음도 섞여, 원들이 한 점에서 만나지 않습니다.
미지수를 z=(x,y,b)(2차원 예)로 두면 모델은 ρi≈fi(z)=∥si−(x,y)∥+b입니다. fi는 x,y에 대해 비선형이라 바로 최소제곱을 쓸 수 없습니다. 그래서 현재 추정값 zk 근처에서 1차 테일러 근사로 선형화합니다.
J의 각 행 앞쪽 두 성분은 위성에서 수신기로 향하는 단위 벡터다. 잔차 r=ρ−f(zk)에 대해 JΔ≈r을 최소제곱으로 풀어(JTJΔ=JTr) zk+1=zk+Δ로 고친다. 이 반복을 가우스–뉴턴 방법(Gauss–Newton method)이라 한다.
보통 몇 번 만에 수렴합니다. 위성이 미지수 수(3차원에서는 4)보다 많으면 잡음이 평균되어 정확도가 좋아지고, 위성들이 하늘 한쪽에 몰려 있으면 J의 행들이 비슷해져 JTJ가 특이 행렬에 가까워집니다. GPS 분야에서는 이 기하적 나쁨을 정밀도 저하율(DOP, dilution of precision)이라는 수치로 나타내는데, (JTJ)−1의 대각 원소에서 계산합니다.
그림 8-6. 수신기 시계가 늦으면 모든 의사거리가 같은 양 b만큼 길어져 원들이 진짜 위치를 감싸며 어긋난다. b를 미지수에 넣고 모든 원의 반지름에서 같은 양을 빼는 문제로 바꾸면, 위성이 미지수보다 많을 때 최소제곱으로 위치와 b를 함께 구한다.
SIMULATOR
2차원 GPS: 선형화와 최소제곱을 되풀이하기
위성(청록)과 진짜 위치(초록)를 끌 수 있다
쓰는 위성
반복 k—
추정 (x, y), b̂—
잔차 ‖ρ − f(z)‖—
진짜 위치와의 거리—
'한 단계'를 눌러 선형화–최소제곱 한 번을 실행하세요.
해볼 것: ① '한 단계'를 몇 번 누르면 추정점(노랑)이 3~5번 만에 진짜 위치 근처로 수렴하고, 점선 원(ρᵢ − b̂)이 거의 한 점에서 만납니다. ② 위성 3개만 쓰면 미지수와 식의 수가 같아 잔차가 0이 되지만, 잡음이 평균되지 않아 위치 오차는 보통 더 큽니다. ③ 위성들을 한쪽으로 몰아 놓으면 같은 잡음에서도 위치 오차가 커집니다(나쁜 기하, 높은 DOP). 모델: 평면 위의 장난감 문제, 단위는 임의의 거리 단위이며 광속·대기 지연·위성 시계 오차는 무시했습니다.
이 도구가 쓰이는 곳
"수직으로 내린 발이 가장 가깝다"는 원리와 정규 방정식은 데이터가 있는 곳 어디에나 있습니다.