4.4. Orthonormal Bases and Gram-Schmidt

1. 핵심 주제

이번 강의는 다음을 다룬다.

  1. 직교기저와 정규직교기저
  2. 직교행렬
  3. 정규직교기저를 사용하면 투영과 최소제곱 계산이 왜 쉬워지는지
  4. 일반 독립 벡터들을 정규직교 벡터들로 바꾸는 그람-슈미트 과정
  5. 그람-슈미트 과정을 행렬 언어로 표현한 QR 분해

2. 직교기저와 정규직교기저

벡터들이 서로 직교한다는 것은 서로 다른 두 벡터의 내적이 0이라는 뜻이다.

벡터들을 다음과 같이 두자.

q1,q2,,qnq_1, q_2, \dots, q_n

여기서 문자 qq를 쓰는 이유는, 일반 벡터가 아니라 직교성을 가진 벡터를 나타내기 위해서이다.

서로 다른 두 벡터 qiq_i, qjq_j에 대해 다음이 성립하면 이들은 직교한다.

qiTqj=0(ij)q_i^T q_j = 0 \quad (i \neq j)

하지만 벡터는 자기 자신과 직교하지 않는다.

자기 자신과의 내적은 길이의 제곱이다.

qiTqi=qi2q_i^T q_i = \|q_i\|^2

여기서 각 벡터의 길이를 1로 만들면 다음이 된다.

qiTqi=1q_i^T q_i = 1

즉, 서로 다른 벡터끼리는 내적이 0이고, 자기 자신과의 내적은 1이다.

이를 한 번에 쓰면 다음과 같다.

qiTqj={1i=j0ijq_i^T q_j = \begin{cases} 1 & i = j \\ 0 & i \neq j \end{cases}

이런 벡터들의 집합을 정규직교 집합이라고 한다.

  • 직교: 서로 수직이다.
  • 정규화: 길이가 1이다.
  • 정규직교: 서로 수직이고, 각 벡터의 길이가 1이다.

따라서 정규직교기저는 다음 조건을 만족하는 기저이다.

  1. 모든 벡터가 서로 직교한다.
  2. 모든 벡터의 길이가 1이다.
  3. 벡터들이 어떤 공간을 생성하는 기저이다.

3. 정규직교 벡터를 행렬로 모으기

정규직교 벡터들을 행렬의 열벡터로 모은다.

Q=[q1q2qn]Q = \begin{bmatrix} | & | & & | \\ q_1 & q_2 & \cdots & q_n \\ | & | & & | \end{bmatrix}

이제 QTQQ^TQ를 계산해보자.

QTQ^T의 행들은 다음과 같다.

QT=[q1Tq2TqnT]Q^T = \begin{bmatrix} q_1^T \\ q_2^T \\ \vdots \\ q_n^T \end{bmatrix}

따라서 QTQQ^TQ는 모든 열벡터들 사이의 내적을 모은 행렬이다.

QTQ=[q1Tq1q1Tq2q1Tqnq2Tq1q2Tq2q2TqnqnTq1qnTq2qnTqn]Q^TQ = \begin{bmatrix} q_1^T q_1 & q_1^T q_2 & \cdots & q_1^T q_n \\ q_2^T q_1 & q_2^T q_2 & \cdots & q_2^T q_n \\ \vdots & \vdots & \ddots & \vdots \\ q_n^T q_1 & q_n^T q_2 & \cdots & q_n^T q_n \end{bmatrix}

정규직교 벡터들이므로 대각성분은 1이고, 나머지는 0이다.

따라서 다음이 성립한다.

QTQ=IQ^TQ = I

이것이 정규직교 열벡터를 가진 행렬의 핵심 성질이다.


4. QTQ=IQ^TQ = I의 의미

일반 행렬 AA에 대해 ATAA^TA는 열벡터들 사이의 모든 내적을 모은 행렬이다.

하지만 QQ의 열벡터들이 정규직교이면 내적들이 매우 단순해진다.

  • 같은 벡터끼리의 내적은 1
  • 다른 벡터끼리의 내적은 0

그래서 다음이 된다.

QTQ=IQ^TQ = I

즉, 정규직교 벡터를 열로 가진 행렬은 계산을 극도로 단순하게 만든다.

수치선형대수에서 정규직교 벡터가 중요한 이유도 여기에 있다.

정규직교 벡터들은 길이가 1이기 때문에 계산 과정에서 값이 지나치게 커지거나 작아지는 문제가 줄어든다.


5. 직교행렬

행렬 QQ가 정사각행렬이고, 열벡터들이 정규직교이면 QQ를 직교행렬이라고 부른다.

정확히는 다음 조건이다.

QTQ=IQ^TQ = I

그리고 QQ가 정사각행렬이면 다음도 성립한다.

QT=Q1Q^T = Q^{-1}

왜냐하면 역행렬은 곱했을 때 항등행렬을 만드는 행렬이기 때문이다.

QTQ=IQ^TQ = I

따라서 QTQ^TQQ의 왼쪽 역행렬이다.

정사각행렬에서는 이것이 역행렬이 되므로 다음이 된다.

Q1=QTQ^{-1} = Q^T

즉, 직교행렬은 역행렬을 구할 필요가 없다.

그냥 전치하면 역행렬이 된다.


6. 예제 1: 순열행렬

다음 행렬을 보자.

Q=[001100010]Q = \begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix}

이 행렬의 열벡터는 각각 다음과 같다.

q1=[010],q2=[001],q3=[100]q_1 = \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix}, \quad q_2 = \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix}, \quad q_3 = \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}

각 열벡터의 길이는 1이다.

또 서로 다른 열벡터끼리 내적하면 0이다.

예를 들어,

q1Tq2=[010][001]=0q_1^Tq_2 = \begin{bmatrix} 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix} = 0 q1Tq3=[010][100]=0q_1^Tq_3 = \begin{bmatrix} 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} = 0 q2Tq3=[001][100]=0q_2^Tq_3 = \begin{bmatrix} 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix} = 0

따라서 이 행렬은 직교행렬이다.

또한 다음이 성립한다.

QTQ=IQ^TQ = I

순열행렬은 직교행렬의 가장 쉬운 예이다.

왜냐하면 각 열에 1이 하나씩만 있고, 그 위치가 서로 다르기 때문이다.


7. 예제 2: 회전행렬 형태의 직교행렬

다음 행렬을 보자.

Q=[cosθsinθsinθcosθ]Q = \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix}

첫 번째 열벡터는 다음과 같다.

q1=[cosθsinθ]q_1 = \begin{bmatrix} \cos \theta \\ \sin \theta \end{bmatrix}

두 번째 열벡터는 다음과 같다.

q2=[sinθcosθ]q_2 = \begin{bmatrix} -\sin \theta \\ \cos \theta \end{bmatrix}

먼저 각 벡터의 길이를 확인한다.

q1Tq1=cos2θ+sin2θ=1q_1^Tq_1 = \cos^2 \theta + \sin^2 \theta = 1 q2Tq2=(sinθ)2+cos2θ=sin2θ+cos2θ=1q_2^Tq_2 = (-\sin \theta)^2 + \cos^2 \theta = \sin^2 \theta + \cos^2 \theta = 1

두 벡터의 내적은 다음과 같다.

q1Tq2=cosθ(sinθ)+sinθ(cosθ)q_1^Tq_2 = \cos\theta(-\sin\theta) + \sin\theta(\cos\theta) =cosθsinθ+sinθcosθ=0= -\cos\theta\sin\theta + \sin\theta\cos\theta = 0

따라서 이 행렬은 직교행렬이다.

이 행렬은 평면에서의 회전행렬로 볼 수 있다.


8. 예제 3: 정규화가 필요한 행렬

다음 행렬을 보자.

[1111]\begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix}

이 행렬의 두 열벡터는 다음과 같다.

a1=[11],a2=[11]a_1 = \begin{bmatrix} 1 \\ 1 \end{bmatrix}, \quad a_2 = \begin{bmatrix} 1 \\ -1 \end{bmatrix}

두 벡터의 내적은 다음과 같다.

a1Ta2=[11][11]=11=0a_1^Ta_2 = \begin{bmatrix} 1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ -1 \end{bmatrix} = 1 - 1 = 0

따라서 두 벡터는 직교한다.

하지만 길이는 1이 아니다.

a12=12+12=2\|a_1\|^2 = 1^2 + 1^2 = 2 a1=2\|a_1\| = \sqrt{2}

마찬가지로,

a2=2\|a_2\| = \sqrt{2}

따라서 각 열벡터를 2\sqrt{2}로 나누어야 정규직교 벡터가 된다.

그래서 직교행렬은 다음과 같다.

Q=12[1111]Q = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix}

이제 각 열벡터의 길이는 1이고, 서로 직교한다.

따라서 QTQ=IQ^TQ = I이다.


9. 예제 4: 하다마드 행렬 형태

다음 행렬을 보자.

H=[1111111111111111]H = \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 \end{bmatrix}

이 행렬의 열벡터들은 성분이 모두 11 또는 1-1이다.

서로 다른 열벡터들의 내적을 보면, +1+1이 나오는 항과 1-1이 나오는 항이 서로 상쇄되어 0이 된다.

예를 들어 첫 번째 열과 두 번째 열의 내적은 다음과 같다.

[1111]T[1111]=11+11=0\begin{bmatrix} 1 \\ 1 \\ 1 \\ 1 \end{bmatrix}^T \begin{bmatrix} 1 \\ -1 \\ 1 \\ -1 \end{bmatrix} = 1 - 1 + 1 - 1 = 0

첫 번째 열의 길이는 다음과 같다.

12+12+12+12=4=2\sqrt{1^2 + 1^2 + 1^2 + 1^2} = \sqrt{4} = 2

따라서 각 열벡터를 길이 1로 만들려면 전체 행렬에 12\frac{1}{2}를 곱하면 된다.

Q=12[1111111111111111]Q = \frac{1}{2} \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 \end{bmatrix}

그러면 QQ는 직교행렬이 된다.

이런 종류의 행렬은 하다마드 행렬이라고 부른다.

하다마드 행렬은 성분이 111-1로만 이루어져 있고, 열벡터들이 서로 직교하는 행렬이다.

강의에서는 크기 22, 44, 1616, 6464 등에서는 이런 행렬을 만들 수 있지만, 어떤 크기에서 항상 가능한지는 완전히 알려져 있지 않다고 설명한다.

예를 들어 5×55 \times 5 크기의 하다마드 행렬은 존재할 수 없다고 언급한다.


10. 직사각형 행렬도 정규직교 열벡터를 가질 수 있다

직교행렬이라는 말은 보통 정사각행렬에만 사용한다.

하지만 정사각행렬이 아니더라도 열벡터들이 정규직교일 수 있다.

예를 들어 다음 행렬을 보자.

Q=13[122122]Q = \frac{1}{3} \begin{bmatrix} 1 & -2 \\ 2 & -1 \\ 2 & 2 \end{bmatrix}

첫 번째 열벡터는 다음과 같다.

q1=13[122]q_1 = \frac{1}{3} \begin{bmatrix} 1 \\ 2 \\ 2 \end{bmatrix}

두 번째 열벡터는 다음과 같다.

q2=13[212]q_2 = \frac{1}{3} \begin{bmatrix} -2 \\ -1 \\ 2 \end{bmatrix}

먼저 정규화 전의 첫 번째 벡터 길이를 보자.

[122]=12+22+22=1+4+4=3\left\| \begin{bmatrix} 1 \\ 2 \\ 2 \end{bmatrix} \right\| = \sqrt{1^2 + 2^2 + 2^2} = \sqrt{1 + 4 + 4} = 3

두 번째 벡터도 길이가 3이다.

[212]=(2)2+(1)2+22=4+1+4=3\left\| \begin{bmatrix} -2 \\ -1 \\ 2 \end{bmatrix} \right\| = \sqrt{(-2)^2 + (-1)^2 + 2^2} = \sqrt{4 + 1 + 4} = 3

두 벡터의 내적은 다음과 같다.

1(2)+2(1)+2(2)=22+4=01(-2) + 2(-1) + 2(2) = -2 - 2 + 4 = 0

따라서 13\frac{1}{3}을 곱한 두 열벡터는 정규직교이다.

이 행렬은 3×23 \times 2 행렬이다.

정사각행렬은 아니므로 보통 직교행렬이라고 부르지는 않는다.

하지만 열벡터들은 정규직교이므로 다음은 성립한다.

QTQ=I2Q^TQ = I_2

주의할 점은, 이 경우 QQTQQ^TI3I_3가 아니다.

QQ가 정사각행렬이 아니기 때문이다.


11. 정규직교 열벡터가 있을 때 투영행렬

일반적으로 행렬 AA의 열공간으로의 투영행렬은 다음과 같다.

P=A(ATA)1ATP = A(A^TA)^{-1}A^T

이제 AA 대신 정규직교 열벡터를 가진 행렬 QQ를 사용한다고 하자.

그러면 투영행렬은 다음과 같다.

P=Q(QTQ)1QTP = Q(Q^TQ)^{-1}Q^T

그런데 정규직교 열벡터에 대해 다음이 성립한다.

QTQ=IQ^TQ = I

따라서,

(QTQ)1=I1=I(Q^TQ)^{-1} = I^{-1} = I

그래서 투영행렬은 매우 단순해진다.

P=QQTP = QQ^T

즉, 정규직교기저를 사용하면 투영행렬에서 역행렬 계산이 사라진다.


12. QQ가 정사각행렬일 때의 투영

만약 QQ가 정사각행렬이고 열벡터들이 정규직교이면, 열벡터들이 전체 공간의 기저가 된다.

예를 들어 n×nn \times n 행렬 QQ의 열벡터들이 독립이면, 그 열공간은 전체 Rn\mathbb{R}^n이다.

따라서 전체 공간으로의 투영은 아무것도 바꾸지 않는다.

즉, 투영행렬은 항등행렬이다.

P=IP = I

그리고 정사각 직교행렬에서는 다음이 성립한다.

QQT=IQQ^T = I QTQ=IQ^TQ = I

따라서 정사각 직교행렬의 경우,

P=QQT=IP = QQ^T = I

이다.


13. 투영행렬의 두 가지 성질

투영행렬 PP는 중요한 두 가지 성질을 가진다.

13.1 대칭성

투영행렬은 대칭행렬이다.

PT=PP^T = P

정규직교 열벡터를 가진 QQ에 대해 P=QQTP = QQ^T라고 하면,

PT=(QQT)TP^T = (QQ^T)^T

전치의 성질에 의해 순서가 바뀐다.

(QQT)T=(QT)TQT(QQ^T)^T = (Q^T)^T Q^T =QQT= QQ^T

따라서,

PT=PP^T = P

이다.


13.2 멱등성

투영행렬은 두 번 적용해도 한 번 적용한 것과 같다.

P2=PP^2 = P

정규직교 열벡터를 가진 QQ에 대해 P=QQTP = QQ^T이면,

P2=(QQT)(QQT)P^2 = (QQ^T)(QQ^T) =Q(QTQ)QT= Q(Q^TQ)Q^T

그런데,

QTQ=IQ^TQ = I

이므로,

P2=QIQTP^2 = QIQ^T =QQT= QQ^T =P= P

따라서 QQTQQ^T는 투영행렬의 성질을 만족한다.


14. 정규직교기저와 정규방정식

일반적인 최소제곱 문제에서 정규방정식은 다음과 같다.

ATAx^=ATbA^TA\hat{x} = A^Tb

그런데 AA의 열벡터들이 정규직교라면 AA 대신 QQ라고 쓸 수 있다.

그러면 정규방정식은 다음과 같다.

QTQx^=QTbQ^TQ\hat{x} = Q^Tb

하지만 정규직교 열벡터에 대해 다음이 성립한다.

QTQ=IQ^TQ = I

따라서,

Ix^=QTbI\hat{x} = Q^Tb

즉,

x^=QTb\hat{x} = Q^Tb

이다.

이 식은 매우 중요하다.

일반적인 경우에는 ATAA^TA를 계산하고, 역행렬 또는 연립방정식 풀이를 통해 x^\hat{x}를 구해야 한다.

하지만 정규직교기저를 쓰면 해는 단순히 내적들의 모음이 된다.


15. 정규직교기저에서 좌표는 내적이다

x^=QTb\hat{x} = Q^Tb

라고 하자.

QQ의 열벡터가 q1,q2,,qnq_1, q_2, \dots, q_n이면,

QT=[q1Tq2TqnT]Q^T = \begin{bmatrix} q_1^T \\ q_2^T \\ \vdots \\ q_n^T \end{bmatrix}

따라서,

x^=[q1Tbq2TbqnTb]\hat{x} = \begin{bmatrix} q_1^T b \\ q_2^T b \\ \vdots \\ q_n^T b \end{bmatrix}

즉, bb를 정규직교기저 방향으로 분해할 때 각 성분은 단순히 bb와 해당 기저벡터의 내적이다.

ii번째 성분은 다음과 같다.

x^i=qiTb\hat{x}_i = q_i^Tb

이것이 정규직교기저의 가장 강력한 장점이다.


16. 그람-슈미트 과정의 목적

이제 문제는 다음과 같다.

처음부터 정규직교기저가 주어지면 계산이 매우 쉽다.

하지만 실제로는 보통 독립 벡터들만 주어진다.

예를 들어 다음과 같은 독립 벡터들이 주어진다고 하자.

a,ba, b

이 벡터들은 서로 직교하지 않을 수 있다.

그람-슈미트 과정은 이런 독립 벡터들을 정규직교 벡터들로 바꾸는 절차이다.

즉, 입력은 일반 독립 벡터들이고,

a,b,c,a, b, c, \dots

출력은 정규직교 벡터들이다.

q1,q2,q3,q_1, q_2, q_3, \dots

핵심 아이디어는 다음과 같다.

  1. 첫 번째 벡터 방향은 그대로 사용한다.
  2. 두 번째 벡터에서 첫 번째 벡터 방향 성분을 제거한다.
  3. 세 번째 벡터에서 첫 번째, 두 번째 방향 성분을 제거한다.
  4. 이렇게 얻은 직교 벡터들을 마지막에 길이 1로 정규화한다.

17. 두 벡터에 대한 그람-슈미트

두 독립 벡터 aa, bb가 있다고 하자.

목표는 직교 벡터 AA, BB를 만드는 것이다.

첫 번째 벡터는 그대로 둔다.

A=aA = a

두 번째 벡터 bbAA 방향 성분을 제거해야 한다.

bbAA 방향으로 투영한 벡터는 다음과 같다.

projAb=ATbATAA\text{proj}_A b = \frac{A^Tb}{A^TA}A

따라서 bb에서 이 투영 성분을 빼면 AA에 수직인 성분만 남는다.

B=bATbATAAB = b - \frac{A^Tb}{A^TA}A

BBAA와 직교한다.

즉,

ATB=0A^TB = 0

이다.


18. 왜 BBAA와 직교하는가

정의에 의해,

B=bATbATAAB = b - \frac{A^Tb}{A^TA}A

양쪽에 ATA^T를 곱한다.

ATB=AT(bATbATAA)A^TB = A^T \left( b - \frac{A^Tb}{A^TA}A \right)

분배하면,

ATB=ATbATbATAATAA^TB = A^Tb - \frac{A^Tb}{A^TA}A^TA

오른쪽 두 번째 항에서 ATAA^TA가 약분된다.

ATB=ATbATbA^TB = A^Tb - A^Tb

따라서,

ATB=0A^TB = 0

이다.

즉, BBAA와 직교한다.

이것이 그람-슈미트의 핵심이다.

bb에서 AA 방향의 성분을 빼면, AA에 수직인 오차 성분만 남는다.

이때 BB는 앞에서 투영 단원에서 본 오차벡터 ee와 같은 역할을 한다.


19. 정규화 단계

그람-슈미트 과정에서 먼저 직교 벡터 AA, BB를 만든다.

그 다음 이 벡터들을 길이로 나누어 단위벡터로 만든다.

q1=AAq_1 = \frac{A}{\|A\|} q2=BBq_2 = \frac{B}{\|B\|}

이렇게 하면 q1q_1, q2q_2는 정규직교 벡터가 된다.

즉,

q1Tq1=1q_1^Tq_1 = 1 q2Tq2=1q_2^Tq_2 = 1 q1Tq2=0q_1^Tq_2 = 0

이다.


20. 세 벡터에 대한 그람-슈미트

세 독립 벡터 aa, bb, cc가 있다고 하자.

목표는 직교 벡터 AA, BB, CC를 만드는 것이다.

첫 번째 벡터는 그대로 둔다.

A=aA = a

두 번째 벡터는 AA 방향 성분을 제거한다.

B=bATbATAAB = b - \frac{A^Tb}{A^TA}A

세 번째 벡터 cc에서는 이미 만든 두 방향 AA, BB의 성분을 모두 제거해야 한다.

C=cATcATAABTcBTBBC = c - \frac{A^Tc}{A^TA}A - \frac{B^Tc}{B^TB}B

이렇게 하면 CCAA와도 직교하고, BB와도 직교한다.

즉,

ATC=0A^TC = 0 BTC=0B^TC = 0

이다.

마지막으로 정규화한다.

q1=AAq_1 = \frac{A}{\|A\|} q2=BBq_2 = \frac{B}{\|B\|} q3=CCq_3 = \frac{C}{\|C\|}

그러면 q1q_1, q2q_2, q3q_3는 정규직교 벡터가 된다.


21. 그람-슈미트 일반형

독립 벡터들이 다음과 같이 주어졌다고 하자.

a1,a2,,ana_1, a_2, \dots, a_n

그람-슈미트 과정은 다음과 같이 진행된다.

첫 번째 직교 벡터는 다음과 같다.

A1=a1A_1 = a_1

두 번째 직교 벡터는 첫 번째 방향 성분을 제거한다.

A2=a2A1Ta2A1TA1A1A_2 = a_2 - \frac{A_1^Ta_2}{A_1^TA_1}A_1

세 번째 직교 벡터는 첫 번째와 두 번째 방향 성분을 제거한다.

A3=a3A1Ta3A1TA1A1A2Ta3A2TA2A2A_3 = a_3 - \frac{A_1^Ta_3}{A_1^TA_1}A_1 - \frac{A_2^Ta_3}{A_2^TA_2}A_2

일반적으로,

Ak=akj=1k1AjTakAjTAjAjA_k = a_k - \sum_{j=1}^{k-1} \frac{A_j^Ta_k}{A_j^TA_j}A_j

이다.

그리고 정규화하면,

qk=AkAkq_k = \frac{A_k}{\|A_k\|}

이다.


22. 수치 예제: 두 벡터의 그람-슈미트

강의에서 사용한 예제는 다음 두 벡터이다.

a=[111],b=[102]a = \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix}, \quad b = \begin{bmatrix} 1 \\ 0 \\ 2 \end{bmatrix}

이 두 벡터는 직교하지 않는다.

내적을 계산하면,

aTb=[111][102]=1+0+2=3a^Tb = \begin{bmatrix} 1 & 1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 2 \end{bmatrix} = 1 + 0 + 2 = 3

따라서 직교가 아니다.


23. 첫 번째 직교 벡터 구하기

첫 번째 벡터는 그대로 둔다.

A=a=[111]A = a = \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix}

24. 두 번째 직교 벡터 구하기

공식은 다음과 같다.

B=bATbATAAB = b - \frac{A^Tb}{A^TA}A

여기서 A=aA = a이다.

먼저 ATbA^Tb를 계산한다.

ATb=[111][102]=3A^Tb = \begin{bmatrix} 1 & 1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 2 \end{bmatrix} = 3

다음으로 ATAA^TA를 계산한다.

ATA=[111][111]=1+1+1=3A^TA = \begin{bmatrix} 1 & 1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} = 1 + 1 + 1 = 3

따라서 계수는 다음과 같다.

ATbATA=33=1\frac{A^Tb}{A^TA} = \frac{3}{3} = 1

그러므로,

B=b1AB = b - 1A =[102][111]= \begin{bmatrix} 1 \\ 0 \\ 2 \end{bmatrix} - \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} =[011]= \begin{bmatrix} 0 \\ -1 \\ 1 \end{bmatrix}

따라서 두 번째 직교 벡터는 다음과 같다.

B=[011]B = \begin{bmatrix} 0 \\ -1 \\ 1 \end{bmatrix}

25. 직교성 확인

이제 AABB가 직교하는지 확인한다.

ATB=[111][011]A^TB = \begin{bmatrix} 1 & 1 & 1 \end{bmatrix} \begin{bmatrix} 0 \\ -1 \\ 1 \end{bmatrix} =01+1=0= 0 - 1 + 1 = 0

따라서 AABB는 직교한다.


26. 정규화하기

이제 AABB를 단위벡터로 만든다.

먼저 AA의 길이는 다음과 같다.

A=12+12+12=3\|A\| = \sqrt{1^2 + 1^2 + 1^2} = \sqrt{3}

따라서,

q1=AA=13[111]q_1 = \frac{A}{\|A\|} = \frac{1}{\sqrt{3}} \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix}

다음으로 BB의 길이는 다음과 같다.

B=02+(1)2+12=2\|B\| = \sqrt{0^2 + (-1)^2 + 1^2} = \sqrt{2}

따라서,

q2=BB=12[011]q_2 = \frac{B}{\|B\|} = \frac{1}{\sqrt{2}} \begin{bmatrix} 0 \\ -1 \\ 1 \end{bmatrix}

그러므로 그람-슈미트로 얻은 정규직교 행렬 QQ는 다음과 같다.

Q=[13013121312]Q = \begin{bmatrix} \frac{1}{\sqrt{3}} & 0 \\ \frac{1}{\sqrt{3}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{3}} & \frac{1}{\sqrt{2}} \end{bmatrix}

또는 열벡터 형태로 쓰면,

Q=[q1q2]Q = \begin{bmatrix} | & | \\ q_1 & q_2 \\ | & | \end{bmatrix}

이다.


27. 원래 행렬과 새 행렬의 열공간 관계

처음 주어진 두 벡터를 열로 가진 행렬을 다음과 같이 두자.

Aoriginal=[111012]A_{\text{original}} = \begin{bmatrix} 1 & 1 \\ 1 & 0 \\ 1 & 2 \end{bmatrix}

그람-슈미트로 얻은 행렬은 다음과 같다.

Q=[13013121312]Q = \begin{bmatrix} \frac{1}{\sqrt{3}} & 0 \\ \frac{1}{\sqrt{3}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{3}} & \frac{1}{\sqrt{2}} \end{bmatrix}

이 두 행렬의 열공간은 같다.

즉,

C(Aoriginal)=C(Q)C(A_{\text{original}}) = C(Q)

이다.

왜냐하면 그람-슈미트 과정에서 새 벡터들은 원래 벡터들의 선형결합으로 만들어졌기 때문이다.

예를 들어,

B=bAB = b - A

였으므로 BBaabb의 선형결합이다.

A=aA = a이다.

따라서 새로 만든 벡터 AA, BB는 원래 벡터 aa, bb가 만드는 평면 안에 있다.

반대로 원래 벡터들도 새 벡터들의 선형결합으로 표현할 수 있다.

따라서 열공간은 변하지 않는다.

그람-슈미트는 공간을 바꾸는 것이 아니라, 같은 공간 안에서 더 좋은 기저를 만드는 과정이다.


28. 그람-슈미트의 의미

그람-슈미트 과정은 다음과 같이 이해할 수 있다.

처음 주어진 벡터들은 어떤 부분공간의 기저이다.

하지만 그 기저는 계산하기에 좋지 않을 수 있다.

왜냐하면 벡터들이 서로 기울어져 있고, 길이도 제각각이기 때문이다.

그람-슈미트는 같은 부분공간을 생성하면서도 다음 성질을 가진 새 기저를 만든다.

  1. 서로 직교한다.
  2. 길이가 1이다.
  3. 따라서 투영, 최소제곱, 좌표 계산이 쉬워진다.

즉, 그람-슈미트는 일반 기저를 정규직교기저로 바꾸는 과정이다.


29. QR 분해

소거법을 행렬 언어로 표현하면 LU 분해가 된다.

A=LUA = LU

마찬가지로 그람-슈미트 과정을 행렬 언어로 표현하면 QR 분해가 된다.

A=QRA = QR

여기서,

  • AA는 원래 독립 열벡터들을 가진 행렬이다.
  • QQ는 정규직교 열벡터들을 가진 행렬이다.
  • RR은 상삼각행렬이다.

즉, 그람-슈미트는 행렬 AA를 정규직교 행렬 QQ와 상삼각행렬 RR의 곱으로 표현하는 과정이다.


30. 왜 RR은 상삼각행렬인가

AAQQ의 열공간은 같다.

따라서 AA의 각 열벡터는 QQ의 열벡터들의 선형결합으로 표현될 수 있다.

즉,

A=QRA = QR

이다.

여기서 RR의 성분들은 QQ의 열벡터들과 AA의 열벡터 사이의 내적에서 나온다.

두 열벡터만 있는 경우를 생각하자.

A=[a1a2]A = \begin{bmatrix} | & | \\ a_1 & a_2 \\ | & | \end{bmatrix} Q=[q1q2]Q = \begin{bmatrix} | & | \\ q_1 & q_2 \\ | & | \end{bmatrix}

그러면 A=QRA = QR에서 RR은 대략 다음과 같은 형태를 가진다.

R=[q1Ta1q1Ta2q2Ta1q2Ta2]R = \begin{bmatrix} q_1^Ta_1 & q_1^Ta_2 \\ q_2^Ta_1 & q_2^Ta_2 \end{bmatrix}

그런데 그람-슈미트 과정에서 q2q_2는 첫 번째 원래 벡터 a1a_1에 수직이 되도록 만들어졌다.

따라서,

q2Ta1=0q_2^Ta_1 = 0

그래서 RR은 다음과 같은 상삼각행렬이 된다.

R=[q1Ta1q1Ta20q2Ta2]R = \begin{bmatrix} q_1^Ta_1 & q_1^Ta_2 \\ 0 & q_2^Ta_2 \end{bmatrix}

일반적인 경우에도 같은 원리가 적용된다.

뒤에 만들어진 qjq_j는 앞선 원래 벡터들의 방향 성분을 제거해서 만들어졌기 때문에, 앞선 열벡터들과 직교한다.

따라서 RR의 아래쪽 성분들이 0이 되고, RR은 상삼각행렬이 된다.


31. 강의 예제를 QR 분해 관점에서 보기

원래 행렬은 다음과 같다.

A=[111012]A = \begin{bmatrix} 1 & 1 \\ 1 & 0 \\ 1 & 2 \end{bmatrix}

그람-슈미트로 얻은 QQ는 다음과 같다.

Q=[13013121312]Q = \begin{bmatrix} \frac{1}{\sqrt{3}} & 0 \\ \frac{1}{\sqrt{3}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{3}} & \frac{1}{\sqrt{2}} \end{bmatrix}

QQ의 열벡터들은 정규직교이므로,

QTQ=IQ^TQ = I

A=QRA = QR에서 양쪽에 QTQ^T를 곱하면,

QTA=QTQRQ^TA = Q^TQR QTA=IRQ^TA = IR

따라서,

R=QTAR = Q^TA

이제 RR을 계산한다.

먼저,

q1=13[111]q_1 = \frac{1}{\sqrt{3}} \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} q2=12[011]q_2 = \frac{1}{\sqrt{2}} \begin{bmatrix} 0 \\ -1 \\ 1 \end{bmatrix}

그리고,

a1=[111],a2=[102]a_1 = \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix}, \quad a_2 = \begin{bmatrix} 1 \\ 0 \\ 2 \end{bmatrix}

RR의 각 성분은 다음과 같다.

r11=q1Ta1r_{11} = q_1^Ta_1 =13[111][111]= \frac{1}{\sqrt{3}} \begin{bmatrix} 1 & 1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} =33=3= \frac{3}{\sqrt{3}} = \sqrt{3}

다음으로,

r12=q1Ta2r_{12} = q_1^Ta_2 =13[111][102]= \frac{1}{\sqrt{3}} \begin{bmatrix} 1 & 1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 2 \end{bmatrix} =33=3= \frac{3}{\sqrt{3}} = \sqrt{3}

다음으로,

r21=q2Ta1r_{21} = q_2^Ta_1 =12[011][111]= \frac{1}{\sqrt{2}} \begin{bmatrix} 0 & -1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} =01+12=0= \frac{0 - 1 + 1}{\sqrt{2}} = 0

마지막으로,

r22=q2Ta2r_{22} = q_2^Ta_2 =12[011][102]= \frac{1}{\sqrt{2}} \begin{bmatrix} 0 & -1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 2 \end{bmatrix} =0+0+22=2= \frac{0 + 0 + 2}{\sqrt{2}} = \sqrt{2}

따라서,

R=[3302]R = \begin{bmatrix} \sqrt{3} & \sqrt{3} \\ 0 & \sqrt{2} \end{bmatrix}

결국 QR 분해는 다음과 같다.

A=QRA = QR [111012]=[13013121312][3302]\begin{bmatrix} 1 & 1 \\ 1 & 0 \\ 1 & 2 \end{bmatrix} = \begin{bmatrix} \frac{1}{\sqrt{3}} & 0 \\ \frac{1}{\sqrt{3}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{3}} & \frac{1}{\sqrt{2}} \end{bmatrix} \begin{bmatrix} \sqrt{3} & \sqrt{3} \\ 0 & \sqrt{2} \end{bmatrix}

확인해보자.

첫 번째 열은,

3q1+0q2=313[111]=[111]\sqrt{3}q_1 + 0q_2 = \sqrt{3} \cdot \frac{1}{\sqrt{3}} \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} = \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix}

두 번째 열은,

3q1+2q2\sqrt{3}q_1 + \sqrt{2}q_2 =313[111]+212[011]= \sqrt{3} \cdot \frac{1}{\sqrt{3}} \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} + \sqrt{2} \cdot \frac{1}{\sqrt{2}} \begin{bmatrix} 0 \\ -1 \\ 1 \end{bmatrix} =[111]+[011]= \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} + \begin{bmatrix} 0 \\ -1 \\ 1 \end{bmatrix} =[102]= \begin{bmatrix} 1 \\ 0 \\ 2 \end{bmatrix}

따라서 실제로 A=QRA = QR이 성립한다.


32. 전체 흐름 요약

이번 강의의 핵심 흐름은 다음과 같다.

32.1 정규직교 열벡터

열벡터들이 정규직교이면,

QTQ=IQ^TQ = I

이다.


32.2 직교행렬

QQ가 정사각행렬이고 정규직교 열벡터를 가지면 직교행렬이다.

이때,

Q1=QTQ^{-1} = Q^T

이다.


32.3 정규직교기저에서 투영

일반 투영행렬은 다음과 같다.

P=A(ATA)1ATP = A(A^TA)^{-1}A^T

하지만 정규직교기저 QQ를 쓰면,

P=QQTP = QQ^T

이다.


32.4 정규직교기저에서 최소제곱

일반 정규방정식은 다음과 같다.

ATAx^=ATbA^TA\hat{x} = A^Tb

하지만 정규직교기저 QQ를 쓰면,

x^=QTb\hat{x} = Q^Tb

이다.

각 성분은 다음과 같다.

x^i=qiTb\hat{x}_i = q_i^Tb

즉, 좌표는 단순히 내적이다.


32.5 그람-슈미트

그람-슈미트는 일반 독립 벡터들을 정규직교 벡터들로 바꾸는 과정이다.

두 벡터의 경우,

A=aA = a B=bATbATAAB = b - \frac{A^Tb}{A^TA}A

그리고,

q1=AAq_1 = \frac{A}{\|A\|} q2=BBq_2 = \frac{B}{\|B\|}

이다.


32.6 QR 분해

그람-슈미트 과정을 행렬로 표현하면 다음과 같다.

A=QRA = QR

여기서,

  • QQ는 정규직교 열벡터를 가진 행렬이다.
  • RR은 상삼각행렬이다.
  • AAQQ는 같은 열공간을 가진다.

33. 직관 정리

정규직교기저는 좌표계를 가장 깔끔하게 정리한 것이다.

일반 기저에서는 벡터들이 서로 기울어져 있기 때문에 좌표를 구하려면 연립방정식을 풀어야 한다.

하지만 정규직교기저에서는 각 방향이 서로 완전히 독립적이다.

그래서 한 방향의 성분을 구할 때 단순히 그 방향과 내적하면 된다.

성분=qiTb\text{성분} = q_i^Tb

그람-슈미트는 기울어진 기저를 같은 공간 안에서 직각 기저로 바꾸는 과정이다.

QR 분해는 그 과정을 행렬 방정식으로 표현한 것이다.

A=QRA = QR

즉, AA의 복잡한 열벡터 구조를 정규직교 구조 QQ와 상삼각 구조 RR로 분해하는 것이다.


34. 꼭 기억해야 할 공식

QTQ=IQ^TQ = I Q1=QTif Q is squareQ^{-1} = Q^T \quad \text{if } Q \text{ is square} P=A(ATA)1ATP = A(A^TA)^{-1}A^T P=QQTif columns of Q are orthonormalP = QQ^T \quad \text{if columns of } Q \text{ are orthonormal} ATAx^=ATbA^TA\hat{x} = A^Tb x^=QTbif columns of Q are orthonormal\hat{x} = Q^Tb \quad \text{if columns of } Q \text{ are orthonormal} B=bATbATAAB = b - \frac{A^Tb}{A^TA}A qi=AiAiq_i = \frac{A_i}{\|A_i\|} A=QRA = QR

35. 요약

정규직교기저를 쓰면 투영과 최소제곱 계산이 단순한 내적 계산으로 바뀌며, 그람-슈미트 과정은 일반 독립 벡터들을 이런 정규직교기저로 바꾸고, 그 결과를 행렬로 표현한 것이 QR 분해이다.