수학/Gilbert Strang Linear Algebra

15. Projections onto Subspaces

공부중인학생 2022. 3. 19. 02:21

 

 

이번 강의는 굉장히 중요한 내용입니다.

투영에 관한 강의인데 바로 b벡터를 a벡터에 투영해보겠습니다.

 

 

 

다음과 같이 다른 선상에 존재하는 두 벡터가 존재할 때 투영하는 방법에 대해서 알아보겠습니다. 우선 a선상에서 b벡터와 가장 가까운 점을 찾습니다. (이 점을 P라고 부릅니다.)

 

 

 

 

그리고 그 점과 b벡터를 연결하면 b에서 내려진 수선의 발과 a가 이루는 각도는 직교가 됩니다.

 

 

 

 

수선의 발을 e라고 했을 때 e=bp가 됩니다. 벡터 p는 a벡터에 스칼라곱을 한 형태입니다.

 

- p=xa x는 임의의 상수

 

모든 핵심은 수선의 발 e와 a벡터가 이루는 각도가 수직이라는 것입니다.

aT(bxa)=0

aT(e)=0

 

- a와 e는 수직입니다.

 

 

우선 첫 번째 방정식을 풀어주겠습니다.

 

aT(bxa)=0

aTbxaTa=0

 

xaTa=aTb

x=aTbaTa

 

 

분모, 분자가 내적으로 만들어진 것이니 결과값도 상수값입니다.

 

p=xa이니

 

p=aaTbaTa

p=aaTaTab

 

 

만약 b벡터를 두 배로 늘리면 어떻게 될까요? p벡터도 두 배로 늘어나게 됩니다.

- 투영이 두 배로 멀리 감

a를 두 배로 늘리면 어떻게 될까요?

- 투영은 그대로 있습니다.

 

 

즉 b에 어떠한 변환을 시켜 벡터 a로 이동하는 것인데 이때의 변환을 투영행렬과의 곱으로 표현합니다.

 

P=aaTaTa, 투영을 시켜주는 매개체

 

p=Pb, 투영된 벡터 

 

[2435]A[26]=2[23]+6[35]=[2236]

 

행렬과 벡터를 곱하면 다음과 같이 벡터의 원소들이 행렬의 column에 곱해져서 더해지는 즉 column vector의 선형조합으로 표현되게 됩니다.

 

- 행렬에 벡터를 곱하면 그 행렬의 column space에 들어가게 된다, 투영행렬에 벡터를 곱하면 a벡터가 지나가는 선상으로 벡터가 들어가게 된다.

 

- 벡터 b를 두 번 투영시키면 어떻게 될까? 이 경우에는 첫 번째와 변함이 없다. 

P2=P로 표현이 된다.

 

- 투영행렬은 aaT 처럼 column vector × row vector이므로 대칭행렬이며 rank가 1인 행렬이다.

 

 

 

왜 투영(projection)을 할까요?

 

Ax=b에 대한 솔루션이 없을 때, b가 A의 span에 존재하지 않을 경우 근사한 값을 찾기 위해서입니다.

- b와 A의 span에서 가장 가까운 점을 찾고 수선의 발을 내려 근사하는 것!

 

 

아래 사진과 같이 Ax=p로 푸는 것입니다.

 

 

 

여기서 p는 평면에 존재하는 벡터 a1,a2의 선형조합으로 표현할 수 있습니다.

p=x1a1+x2a2

 

이렇게 근사를 했을 때 우리의 목표는 근사된 값과 실제 값 b의 오류를 최대한 줄이는 것입니다.

오류를 e라고 표현했을 때

 

오류 벡터 e와 투영을 원하는 공간이 수직이라면 오류 값이 최소가 됩니다.

- 가장 가까운 거리에 존재하는 경우

 

  • Ax=b, x는 실제값 b를 찾아주는 벡터이고 x^은 투영된 값 p를 찾아주는 벡터!

 

Ax^=p

AT(bAx^)=0

AT(bp)=0

ATe=0

 

- 투영 공간에 존재하는 행렬과 내적 해서 0이 된다면 수직! (가장 오차가 적은 부분!)

- 이렇게 구한 e는 ATe=0를 만족시키니 AT의 null space에 존재합니다.

 

 

 

정리해보자면, 투영된 p를 찾아주는 벡터 x^

 

ATAx^=ATb

x^=(ATA)1ATb

 

p=Ax^=A(ATA)1ATb, (투영된 값)

P=A(ATA)1AT, (투영행렬)

 

 

식을 조금 전개하면 정리를 더할 수 있을 거 같으니 전개를 해보자!

 

P=A(ATA)1AT=AA1(AT)1AT=I

 

단위행렬이 나오게 되는데 이 매번 그런 것이 아니라 행렬 A가 square matrix이고 가역행렬일 때만 가능한 것입니다.

대부분의 문제 같이 방정식이 미지수보다 많은 rectangular matrix인 경우에는 성립되지 않습니다.

 

PT=P,P2 조건에도 만족하는지 알아보겠습니다.

 

  1. PT=(A(ATA)1AT)T=ATT(ATATT)1AT=A(ATA)1AT
  2. P2=A(ATA)1[ATA(ATA)1]AT=A(ATA)1AT

 

- 1번의 경우 (AT)1=(A1)T

 

 

 

예시

 

 

다음과 같이 우리의 직선상에 데이터가 존재하지 않을 때 직선과 데이터 간의 거리가 error가 됩니다.

우리 직선의 가설은 b=C+Dt입니다.

 

- 데이터는 (1, 1), (2, 2), (3, 2)입니다.

 

우리는 직선이 최대한 3개의 데이터와 가깝게 지나가는 것을 원하기 때문에 적절한 C와 D값을 찾아야 합니다.

이제 데이터의 t값과 b값을 대입해보면

 

C+D=1

C+2D=2

C+3D=2

 

이렇게 3개의 방정식을 얻을 수 있습니다. 행렬로 표현해보겠습니다.

 

 

Ax=b와 같은 식을 얻었는데 b가 A의 span에 존재하지 않는다면 우리가 위에서 구한 식으로 간단하게 풀 수 있습니다.

 

- ATAx^=ATb 양변에 AT만 곱하여 문제를 해결!