수학/인공지능을 위한 선형대수

14. Gram - Schmidt Orthogonalization

공부중인학생 2021. 11. 18. 23:36

이번 강의에서는 임의의 행렬을 직교 기저(Orthogonal basis)를 가지는 행렬로 변환하는 그람 - 슈미트 직교화에 대해 배워보겠습니다. feature를 수직으로 바꿔주는 방법입니다.

 

Gram - Schmidt Orthogonalization

 

 

[360][122] 두 벡터가 존재하는데 이 벡터의 내적은 3+12+0=15 내적이 0이 아니니 두 벡터는 수직이 아닌 상태입니다. 

 

그럼 그람 - 슈미트 직교화를 통해서 두 벡터를 수직으로 바꿔주겠습니다.

 

다음과 같이 두 벡터는 서로 수직하지 안습니다.

 

우선 두 벡터를 길이가 1인 벡터로 만듭니다.

- v_1 = [360]

 

- v_2 = [122]

 

- u_1 = [3456450] 이건 v1에 방향을 가지며 길이가 1인 벡터

 
이제 수직이 되게 하는 성분만 남기면 됩니다.
 
 
u1에 orthogonal projection을 합니다. v2u1에 projection한 성분을 v2에서 빼게 된다면
 

 

다음과 같이 초록색 성분만 남게 됩니다. 이렇게 빼야되는 Orthogonal prjection 벡터를 찾으려면 우선 길이가 1인 벡터 u1과 내적 해주면 됩니다. 내적을 하면 1545가 나오게 됩니다. 그다음 방향성을 추가해주기 위해서 길이와 u1 벡터를 곱하면 됩니다.

 

 

[112]1545[34560]

 

다음과 같이 그 값이 projection vector가 되고 이 둘을 빼면 됩니다.

 

- 내적은 orthogonal projection 하여 길이를 구하고 거기다 방향성을 곱한 다음 그 값을 빼주면 해당 성분을 잃고 수직이 됩니다.

 

14545

29045

 

그러면 [0,0,2]T이 됩니다. 마지막으로 이 벡터의 길이를 1이 되게 만들어주면

 

 

다음과 같이 이전 벡터 (v_1, v_2)와 span은 같지만 길이가 1인 벡터가 만들어지게 됩니다. 이 벡터는 orthonormal 합니다. 3번째 벡터가 온다면 u1, u2 projection 해서 똑같이 나온 벡터들을 3번째 벡터에 빼주면 이전에 있던 벡터들의 차원에 속하지 않는 수직 된 성분이 나오게 됩니다.

 

 

다음은 이렇게 orthonormal해진 벡터를 다시 original 벡터로 바꿔보는 것입니다. orthonormal 해진 벡터를 증강 행렬 처럼 만들어주고 진행을 합니다.

 

 

첫 번째 벡터를 찾을 때 첫 번째 벡터에 45 곱할 경우 원래 벡터를 다 찾게 됩니다. 두 번째 벡터는 쓸 필요가 없으니 0으로 둡니다.

 

 

그리고 두 번째 벡터를 찾기 위해서 첫 번째 벡터에 1545를 곱해주고 마지막 성분이 2이기 때문에 2를 곱해줘서 구합니다.

 

여기까지 서로 수직이 아닌 벡터들끼리 그람 - 슈미트 직교화를 통해서 수직인 벡터로 만들어주는 과정을 가졌습니다. 이전 강의에서 말했듯이 서로 연관될수록 작은 노이즈에도 민감하게 반응하기 때문에 다음과 같이 만들어서 사용합니다.

'수학 > 인공지능을 위한 선형대수' 카테고리의 다른 글

16. 영공간과 직교여공간  (0) 2021.11.26
15. 고유벡터와 고유값  (0) 2021.11.21
13. Orthogonal Projection 2  (1) 2021.11.17
12. Orthogonal Projection 1  (0) 2021.11.13
11. 정규 방정식(Normal equation)  (0) 2021.11.10