선형대수학 필수 개념 정리
출처
https://mole-starseeker.tistory.com/79
[선형대수학] 그람-슈미트 과정 (Gram-Schmidt Process) 예제
기초 개념 정리
- 벡터(Vector): 크기와 방향을 가지는 수학적 개념으로, 여러 분야에서 활용됩니다.
- 행렬(Matrix): 숫자들을 직사각형 형태로 배열한 것으로, 여러 분야에서 활용됩니다.
- 벡터 공간(Vector space): 벡터의 집합이 일정한 조건을 만족할 때, 그 집합을 벡터 공간이라고 합니다.
- 벡터의 내적(Dot product): 두 벡터를 곱해서 하나의 스칼라 값을 얻어내는 연산으로, 벡터의 유사도를 측정할 때 사용됩니다.
- 행렬 곱셈(Matrix multiplication): 두 개의 행렬을 곱하는 연산으로, 선형 변환 등에 활용됩니다.
- 선형 연립방정식(System of linear equations): 여러 개의 선형 방정식이 함께 있는 것으로, 선형대수학의 중요한 개념입니다.
- 역행렬(Inverse matrix): 행렬의 곱셈에 대해 역원이 존재할 때, 그 역원을 역행렬이라고 합니다.
- 행렬식(Determinant): 정방행렬에 대해 대응하는 실수 값을 구하는 것으로, 선형 변환의 스케일을 측정할 때 사용됩니다.
- 고유값과 고유벡터(Eigenvalues and eigenvectors): 행렬을 곱했을 때, 벡터 방향이 변하지 않고 크기만 변하는 벡터를 고유벡터라 하고 그 때의 크기 변화를 고유값이라 합니다.
- 특이값 분해(Singular value decomposition): 임의의 행렬을 세 행렬의 곱으로 나타내는 방법으로, 여러 분야에서 활용됩니다.
- 고유분해(Eigendecomposition): 정방행렬을 고유벡터와 고유값으로 분해하는 방법으로, 여러 분야에서 활용됩니다.
- 대각화(Diagonalization): 정방행렬을 대각행렬로 변환하는 것으로, 여러 분야에서 활용됩니다.
- 랭크(Rank): 행렬 내의 선형 독립적인 열 벡터의 개수를 나타내는 값으로, 여러 분야에서 활용됩니다.
- 열공간(Column space): 행렬 내의 모든 열 벡터의 선형 조합으로 생성되는 벡터 공간을 의미합니다.
- 영공간(Null space): Ax=0인 모든 벡터 x의 집
- 고유값과 고유벡터: 정방행렬에서 어떤 벡터를 스칼라배하더라도 방향이 바뀌지 않는 벡터와 스칼라를 의미합니다.
- 특이값 분해(SVD): 임의의 행렬을 세 행렬의 곱으로 분해하는 방법입니다.
- QR 분해: 행렬을 직교행렬과 상삼각행렬의 곱으로 분해하는 방법입니다.
- LU 분해: 행렬을 하삼각행렬과 상삼각행렬의 곱으로 분해하는 방법입니다.
- 행렬식(Determinant): 정방행렬에 대한 대각선 성분의 곱과 대각선을 제외한 나머지 원소들의 곱의 차이입니다.
- 역행렬: 정방행렬 A에 대해, A와 곱해서 항등행렬이 되는 행렬을 의미합니다.
- 벡터공간: 일반적으로 벡터들의 집합으로 정의되며, 일부 조건을 만족하는 집합입니다.
- 벡터의 내적: 두 벡터 사이의 각도를 구하기 위한 연산입니다.
- 직교: 두 벡터의 내적이 0일 때, 두 벡터는 서로 직교한다고 합니다.
- 차원: 벡터공간에서 한 벡터의 성분 수를 말합니다.
- 공간(span): 벡터들의 선형조합으로 생성되는 집합입니다.
- 선형독립: 어떤 벡터가 다른 벡터의 선형조합으로 나타낼 수 없는 경우를 의미합니다.
- 행렬의 랭크: 행렬의 열 벡터 중에서 일부 벡터를 선형독립으로 선택했을 때, 생성되는 공간의 차원을 의미합니다.
- 행렬의 대각화: 정방행렬이 특정 대각행렬로 변환될 때를 의미합니다.
- 벡터의 크기: 원점과 벡터의 끝점 사이의 거리를 의미합니다.
- 노름(norm): 벡터의 크기를 계산하는 함수입니다.
- 유클리드 노름: 벡터의 크기를 계산하는 가장 일반적
필수 개념들
머신러닝(또는 딥러닝)에서 선형대수학의 의미
행렬과 벡터를 이용해 수많은 데이터를 한번에 묶어 계산을 쉽게 도와준다.
- 묶인 데이터의 고유 특징들을 알려줌으로써 겉으로 보기 힘든 다양한 특성을 알려줌.
- 벡터라는 것은 크기와 방향을 가진 물리량, 머신러닝에서는 데이터 샘플들을 각각의 특징 벡터로 나타낸다.
머신러닝(또는 딥러닝)에서 행렬이 어떻게 쓰이는가?
특징 벡터로 나타내어진 데이터 샘플들을 담아서,
- 데이터를 간결하게 표현하는데 쓰인다. (ex. 4개의 특징을 가진 붓꽃 샘플 150개 → (150, 4) 행렬)
- 신경망의 가중치나,
- 데이터의 상관관계를 나타내는 공분산 표현에도 쓰인다.
기저벡터(basis)
의 의미
어떤 벡터 공간을 구성하는 벡터들의 기본재료, 기준으로 벡터 공간을 구성하는 벡터들이 서로 선형 독립인 경우에 그 벡터들을 기저라고 한다.
- n차원에 존재하는 다른 모든 벡터들을 n개의 기저벡터에 적절한 스칼라 값을 곱함으로써 얻을 수 있음.
- 예시로 xy 좌표계, 즉 2차원의 모든 벡터들은 해당 좌표계의 기저벡터 (1,0), (0,1)로 표현할 수 있음
선형 결합(linear combination)
의 의미
n차원에 존재하는 n개의 기저벡터들을 스케일링하고 더하는 것.
- 스케일링(scaling)이란 단순히 벡터를 얼마나 잡고 늘릴지 혹은 줄일지 정하는 것.
벡터 공간
은 기저벡터들의 선형결합으로 이루어진 벡터들이 존재하는 공간.
span
의 의미
주어진 벡터들의 조합으로 나타낼 수 있는 결과 벡터들의 집합을 span이라고 한다.
벡터들의 선형 결합으로 벡터 공간의 벡터를 만드는 행위를 벡터들로 벡터 공간을 span한다고 한다.
선형 종속(linear dependent)
의 의미
n개의 벡터 중 어느 한 벡터라도 다른 벡터들의 선형 결합으로 표현이 된다면 이를 선형 종속이라고 한다. 이를 다른 말로 한다면, n개의 벡터 선형 결합에 쓰인 스케일링 팩터(factor)가 모두 0이 아닌데도 불구하고 선형 결합의 결과가 0으로 나타난다면, 이를 선형 종속이라고 할 수 있다.
선형 독립(linear independent)
의 의미
n개의 벡터 선형 결합에 쓰인 스케일링 팩터(factor)가 모두 0일때만 선형 결합의 결과가 0으로 나오는 경우를 선형 독립이라고 한다. 즉, n개의 벡터 중 어느 한 벡터라도 다른 벡터들로 표현할 수 없을 때를 선형 독립이라고 한다.
선형 변환(linear transformation)
의 의미
변환은 단지 함수를 다르게 부르는 말이라고 생각하자. 선형대수학 관점에서, 변환이란 특정 벡터를 다른 벡터로 바꾸는 그 무엇이다. 선형 변환이란, 선형 결합을 유지하면서 어떤 벡터를 다른 벡터로 바꾸는 함수다.
- 행렬을 통해 선형 변환을 수치적으로 설명하는 방법
- 두 기저 벡터가 어떻게 변하는지만 알면 된다. 나머지 벡터들은 기저벡터들로 구성 가능하기 때문이다.
- 즉, 선형 변환을 해주는 행렬의 첫번째 열은 첫번째 기저벡터의 종착점, 두번째 열은 두번째 기저벡터의 종착점이 된다.
- 행렬은 어떤 벡터를 선형 변환하는 과정을 보여주는 방법이며, 선형 변환의 결과에 따른 벡터는 해당 공식을 계산하면 된다.
즉, 행렬을 볼 때마다 공간의 어떤 변환이라는 생각을 갖자.
- 기저벡터가 선형 변환에 의해 어떻게 옮겨졌는지를 알면 그 선형 변환이 무엇인지 파악할 수 있다.
- 다시 말하면, 정사각 행렬은 기저벡터의 집합이라고 생각할 수 있다. 따라서 벡터에 행렬을 곱하는 건 수식적으로 그 벡터를 선형 변환하는 것과 같다.
행렬곱의 의미
두 행렬 A, B의 곱은 기하학적으로 한 변환을 적용하고 나서 다른 변환을 적용한 것과 같다. 즉, 행렬곱은 공간의 연속된 변환이다.
행렬곱이 한 변환을 적용한 후 다른 변환을 적용하는 것이라고 생각하면, 행렬의 결합법칙 증명도 쉽다.
(AB)C = A(BC) : 그냥 동일한 세 변환을 순서대로 적용하는 것과 같다.
행렬식(determinant)의 의미
어떤 벡터 공간 안에 있는 물체가, 공간 변환에 의해서 얼마나 확장되고 축소되는지 계산해보자.
즉, 특정 지역의 크기를 증가/감소시키는 factor 값을 측정해보자.
즉, 하나의 단위 정사각형의 면적이 어떻게 변하는지만 알면 공간 상 어떤 지역이 어떻게 변할 지 알 수 있게 된다.이 scaling factor는 선형변환에 의한 영역의 변화를 나타내는 factor로써, 행렬식(determinant)
로 부른다.
ex) det(A) = 3 : 행렬 A에 의해 특정 영역 크기가 3배만큼 증가,
det(B) = 0.5 : 행렬 B에 의해 특정 영역 크기가 1/2로 줄음
det(C) = 0 : 행렬 C에 의해 모든 공간이 찌부러져 한 직선 또는 0이 됨. 어느 영역이든 크기가 0이 됨. 역행렬에서 중요.
Ax = v를 푸는 것의 의미
행렬 A는 어떤 선형 변환을 나타낸다.
따라서 Ax = v를 푸는 것은 행렬 A에 의한 변환 이후 벡터 v가 되는 벡터 x가 있는지를 찾는 것.
이때 Ax = v를 푸는 시작점은 A가 공간을 축소시키는지 아닌지를 보는 것이다.
즉, det(A)가 0인지 아닌지를 확인한다.
-
det(A) != 0인 경우
: 이때 특정 벡터 v로 변할 수 있는 벡터 x는 항상 하나만 있음.
x에 공간 변환 A를 적용했더니 v가 되었다 = 공간 변환 A를 v에 반대로 적용하면 x를 찾을 수 있다.
→ 역행렬 A-1의 등장. 벡터 v에 역변환을 적용한다 = 방정식을 푼다.
따라서 det(A) != 0 ↔ 역행렬 有, Ax = v → x = A-1v
-
det(A) = 0의 경우
: A-1이 없다. 즉 뭉개진 차원을 다시 원래대로 돌릴 수 없다. 이는 다음에서 설명할, 한 행렬의 rank 갯수와도 연관이 있다.
### rank
란?
행렬로 인해 변환된 공간의 차원 수를 의미한다.
- 즉, 행렬 A에 의해 공간이 변환된다면, 그 행렬 A의 기저벡터 수를 의미
- nxn 행렬의 경우 최대 rank는 n인데, 즉, 기저 벡터들의 선형 결합으로 온전한 n차원 공간을 만든다는 의미로 이룰 full rank라고 하고, full rank일 경우 역행렬이 존재하며, 그러므로 행렬에 의해 변환된 공간을 다시 원래 차원의 공간으로 되돌릴 수 있게 된다.
- 만약 full rank가 아니라면, 즉 기저 벡터가 n개가 아니라면, 행렬 A에 의해 공간 변환이 수행되었을 때 n보다 작은 차원으로 공간이 수축한다는 뜻. 그러면 다시 원래 차원의 공간으로 되돌릴 수 없다는 것이므로 역행렬이 없다는 것. 그리고 이것은 결국 공간 변화 factor인 det(A)의 값도 0이라는 뜻이다.
Column space(열공간)
란?
행렬 A에 의한 공간 변환의 결과값, 즉 Av의 가능한 결과값들의 집합을 그 행렬의 column space라고 한다. 행렬에 의한 공간 변환 후 기저 벡터들의 선형 조합은 가능한 모든 결과 공간을 알려준다. 즉 column space란, 행렬의 열들의 확장 공간이다.
한편, rank의 정의는 어떤 행렬에 의해서 변환된 공간의 차원 수를 의미하므로,
column space의 구체적인 기저 벡터 각각은 가우스 소거법을 통해 축약된 행렬 A의 pivot column들이다. pivot column이란 어떤 행렬의 원소값이 처음으로 0이 아닌 것이 등장하는 열을 뜻한다.
column space는 Col(A), Im(A)로 쓸 수 있다. column space는 그것들의 기저 벡터를 x, y, z라고 하면, Col(A) = Im(A) = span{[x, y, z]}로 쓸 수 있다.
Null space(영공간)
또는 Kernel(커널)
이란?
-
full rank를 갖는 변환에서 원점으로 변하는 벡터는 영벡터 뿐이다.
-
행렬 A를 이루는 각각의 열벡터가 서로 선형 독립인 기저 벡터이기 때문이다.
-
그러나 full rank가 아니라면, 즉 변환 결과 원래보다 더 작은 차원으로 축소된다면 영벡터를 만들 수 있는 수많은 벡터 조합이 형성된다.
즉, 행렬 A를 이루는 각각의 열벡터가 서로 선형 종속일 때 원점으로 변하게 하는 벡터를 null space라 한다.
- 만약 3차원 공간이 “2차원 공간”으로 축소된다면, 즉 3x3 행렬의 rank가 2라면, 원점으로 이동하는 “1차원 공간(선)”의 수많은 벡터들이 존재한다. 만약 3차원 공간이 “1차원 공간”으로 축소된다면, 즉 3x3 행렬의 rank가 1이라면, 원점으로 이동하는 “2차원 공간(평면)”의 수많은 벡터들이 존재한다.
즉, 원점으로 이동하는 벡터들의 집합(벡터의 공간)을 그 행렬의 null space 또는 kernel이라고 한다.
- null space 안에 있는 모든 벡터를 원점으로 뭉겐다는 뜻.
- 수식적으로는 Ax = 0을 만족하는 벡터 x들로 span된 벡터 공간을 뜻한다.
- 만약 null space의 차원이 0이라면, null space안의 벡터는 영벡터 뿐이므로 Nul(A) = {0}이다. ø이 아니다.
rank-nullity theorm
이란?
nxn 행렬 A가 있을 때, dim(Col(A)) + dim(Nul(A)) = n
- full rank인 경우 dim(Nul(A)) = 0이 되며, rank 즉, dim(Col(A))의 최솟값은 1이다. null space를 설명할 때 큰따옴표로 표시한 차원들을 봐도 rank-nullity theorm을 이해할 수 있다.
ex) 만약 3차원 공간이 "2차원 공간"(*coulmn space*)으로 축소된다면, 즉 3x3 행렬의 rank가 2라면, 원점으로 이동하는 "1차원 공간(선)"(*null space*)의 수많은 벡터들이 존재한다.
고유값(eigenvalue)
과 고유벡터(eigenvector)
행렬에 의해 공간의 선형 변환이 일어날때 방향 변환 없이 크기만 바꾸는 벡터들을 고유벡터라 하고, 크기가 바뀌는 정도를 고유값이라고 한다.
Ax = λx를 만족하는 벡터 x가 고유벡터이며, λ는 고유값이다.
Ax = λx → (A-λI)x = 0
- 이때 고유벡터들은 서로 선형 독립이다. nxn 행렬 A의 각각의 고유벡터들은 n차원 공간의 기저가 될 수 있다.
- 고유벡터 x가 존재한다는 뜻은 곧 행렬 A-λI의 null space의 차원이 0이 아니며,
= 따라서 해당 행렬의 rank도 full rank가 아니다.
= 그렇기에 행렬 A-λI를 이루는 열벡터들은 서로 선형 종속이다.
= 또한 해당 행렬의 det(A-λI) 값이 0이며, 역행렬이 존재하지 않는다.
- (A-λI)x = 0의 해가 곧 고유벡터이므로, dim(Nul(A-λI))의 값이 곧 고유벡터 갯수다.
- 고유값이 λ인 고유벡터들로 span한 subspace를
고유 공간(eigen space)
라고 한다. - 고유값 λ들의 집합을
eigen spectrum
이라고 한다. - 행렬 A의 det(A)는 고유값들의 곱, tr(A), 즉 A의 대각 성분들의 합은 고유값들의 합으로 나타낼 수 있다.
고유값 분해 (Eigendecomposition)
행렬 A의 고유벡터를 열에 배치한 행렬 V와 행렬 A의 고유값 λ로 이루어진 대각 행렬 λ 사이의 관계
따라서 고유값 분해를 활용하면 이렇게 행렬의 n제곱 계산을 완화시킬 수 있다.
그리고 D = P-1AP와 같이 되는 것을 대각화(diagonalization)
이라고 하는데, nxn 행렬 A의 고유벡터는 n개가 나오고 고유값은 n개보다 작거나 같게 나올 때 행렬을 대각화할 수 있다.
이처럼 고유값은 n개보다 작아도 고유벡터는 n개가 될 수 있는데, 이를 non-defective 하다 하고 대각화 가능하다.
그러나 고유값이 n개보다 작은데 고유벡터도 n개보다 작으면 이를 defective 하다 하고 대각화는 불가능하다. 대각화가 불가능해지므로 결국 고유값 분해도 불가능해진다.
특이값 분해 (Singular Value Decomposition, SVD)
만약 행렬 A가 정사각 행렬이 아닌 mxn 행렬이면 특이값 분해를 한다. mxn 행렬 A = UΣV^T 에서
U = AA^T의 고유벡터를 열에 배치한 mxm 행렬
Σ = AA^T의 고유값의 제곱근, 즉 특이값을 대각 성분에 배치한 mxn 행렬
V = A^TA의 고유벡터를 열에 배치한 nxn 행렬
이다. 이렇듯 임의의 행렬을 특이값 분해할 수 있기에, 고유값 분해의 일반화 버전이라고 할 수 있다. 특이값 분해를 통해 행렬을 분해한다면, 그 결괏값을 활용해 PCA 등의 차원 축소 또는 이미지 복원 추천 시스템 등에도 이용된다.
mxn 행렬 A의 특이값 분해를 시각화하면 위와 같다. 그리고 우리는 Σ에 있는 행렬 A의 특이값 중 일부인 P개만 사용해서 A를 부분 복원할 수 있고, 이는 특이값 분해의 큰 장점 중 하나다.
행렬의 고유값 분해와 특이값 분해의 장점
특이값 분해는 고유값 분해의 일반화 버전이므로 그냥 고유값 분해를 생각하자.
행렬의 고유값과 고유벡터를 분석하면 행렬의 핵심 특징을 더욱 쉽게 알 수 있다. 만약 어떤 이미지를 나타내는 행렬의 고유값(or 특이값)과 고유벡터를 알고 있다면, 그 정보만을 활용해 이미지도 복원할 수 있다.
예를 들어, 만약 3x3 행렬을 고유값 분해해서 3개의 고유값이 나왔다고 하면, 가장 중요한 고유값 2개만 골라서 원 행렬의 차원을 축소시킬 수도 있고, 가장 중요한 고유값 2개로 데이터의 복원을 할 수도 있다.
고유값 분해나 특이값 분해 같은 행렬 분해는 주성분 분석(PCA)과 같은 차원 축소 기술에 쓰이고, 고유값 분해를 통해 n 제곱 계산을 완화함으로써, 행렬 계산이 많은 머신러닝과 딥러닝에서의 계산량을 대폭 줄여주고, 그에 따라 계산 시간 및 자원 사용량이 많이 줄어든다.
symmetric matrix (대칭 행렬)
정사각 nxn 행렬 A가 그것의 transpose 형태인 A^T와 같으면, 즉, A = A^T가 성립하면 A는 symmetric 행렬이다.
positive definite matrix (양의 정부호 행렬)
정사각 행렬 A가 symmetric일 때, 0이 아닌 모든 벡터 x에 대해 x^TAx > 0이면 A를 positive definite 행렬이다.
- x^TAx ≥ 0이면 A는 positive semidefinite 행렬이다.
- 만약 x^TAx < 0이면 A는 negative definite 행렬이다.
orthogonal matrix (직교 행렬)
A^TA = AA^T = I의 결과가 나오는 행렬을 orthogonal matrix라고 한다.
Gram-Schmidt Orthogonalization (그람-슈미드 과정)
어떤 벡터 공간 V의 기저 b_1, … , b_n에서 orthogonal basis(직교 기저) u_1, … , u_n을 찾는 과정이다. orthogonal한 기저를 강제로 찾는 과정이라고도 볼 수 있다.
- 당연히 원래 basis vector 수와 orthogonal basis vector의 갯수는 같다.
- orthonormal basis를 찾기 위해선 구해놓은 orthogonal basis들을 각각의 크기로 나누어주면 된다.