인공지능을 위해 필요한 선형대수 내용을 간단하게 정리해보고자 한다.
4년간 배운 내용과 다른 블로그, 유튜브 등 여러 곳에서 조금씩 참고하여 정리했다.
전체적인 흐름은 유명한 '3Blue1Brown' 유튜브 채널의 선형대수 부분을 따랐다.
벡터 합, 벡터와 스칼라 곱, 행렬 합, 행렬 곱 등 기초적인 내용은 제외하고, 중요하면서도 외워둬야 할 것들 위주로 정리할 것이다.
목차
7. Change of Basis
이제까지 xy좌표계(standard coordinate)에서의 기저 벡터 \(\hat{i}\), \(\hat{j}\), (또는 3차원인 경우 \(\hat{k}\)까지) 들을 기준으로 여러 개념을 살펴보았다.
하지만 벡터공간 내에서는 다른 기저 벡터의 집합을 사용하여 같은 벡터를 나타낼 수 있다.
2차원에서 새로운 좌표계의 기준인 새로운 기저가 \(\mathbf{b_1} \), \(\mathbf{b_2}\)이고,
각각의 기저는 xy좌표계 기준에서 다음과 같이 표현된다고 가정하자.
\(\mathbf{b_1} = [2 \quad 1]^T, \; \mathbf{b_2} = [-1 \quad 1]^T \)
하지만 새로운 좌표계 기준에서는 다음과 같이 표현될 것이다.
\(\mathbf{b_1} = [1 \quad 0]^T, \; \mathbf{b_2} = [0 \quad 1]^T \)
이와 같이, 서로 같은 벡터를 표현하고 있지만 system, basis에 따라 표현이 달라진다.
(단, 원점은 모든 좌표계에서 동일하다.)
그렇다면, 서로 다른 좌표계를 해석할 수 있는 방법을 알아보자.
1) 선형 변환과 change of basis
앞선 예시에서 주어진 새로운 기저벡터 \(\mathbf{b_1}\), \(\mathbf{b_2}\)로 어떤 벡터 \(\mathbf{v}\)를 표현했을 때, 다음과 같이 표현되었다고 해보자.
\(\mathbf{v} = [-1 \quad 2]^T\)
이를 xy좌표계에 나타내기 위해서는 다음과 같이 계산해야 한다.
\(\mathbf{v} = -1 \mathbf{b_1} + 2 \mathbf{b_2} = [-4 \quad 1] \)
이는 곧 행렬과 벡터의 곱으로 해석해볼 수 있다.
\(\mathbf{v} = \begin{bmatrix} 2 & -1 \\ 1 & 1 \end{bmatrix} \begin{bmatrix} -1 \\ 2 \end{bmatrix} = -1 \begin{bmatrix} 2 \\ 1 \end{bmatrix} + 2 \begin{bmatrix} -1 \\ 1 \end{bmatrix} = \begin{bmatrix} -4 \\ 1 \end{bmatrix} \)
이를 선형변환 관점에서 본다면, 새로운 좌표계의 기저 벡터를 나타내는 열을 갖는 행렬을 선형 변환 행렬로 둘 수 있다.
이 선형 변환 행렬에 의해 기존 기저 \(\hat{i}\), \(\hat{j}\)는 새로운 기저 \(\mathbf{b_1}\), \(\mathbf{b_2}\)로 바뀐다.
하지만, 반대로 기존(xy) 좌표계에서 나타낸 벡터를 새로운 좌표계의 기저로 어떻게 나타내야 할까?
단순히 생각해서, 변환이 반대이므로 위의 선형 변환 행렬에 inverse를 취한다. 이 역행렬은 기저 \(\mathbf{b_1}\), \(\mathbf{b_2}\)를 \(\hat{i}\), \(\hat{j}\)로 변환해주는 행렬이다.
따라서, 예를 들어 xy 좌표계 상의 벡터 \(\mathbf{w} = [3 \quad 2]^T\)를 새로운 기저벡터로 표현하고싶다고 한다면,
\({\begin{bmatrix} 2 & -1 \\ 1 & 1 \end{bmatrix}}^{-1} \begin{bmatrix} 3 \\ 2 \end{bmatrix} = \begin{bmatrix} 1/3 & 1/3 \\ -1/3 & 2/3 \end{bmatrix} \begin{bmatrix} 3 \\ 2 \end{bmatrix} = \begin{bmatrix} 5/3 \\ 1/3 \end{bmatrix} \)와 같이 구할 수 있다.
2) 선형 변환된 벡터의 표현
그렇다면 기존 좌표계에서의 선형 변환 행렬은 새로운 좌표계에서 어떤 행렬로 나타나게 될까?
선형 변환 행렬의 각각의 열벡터는 기저벡터가 어떻게 변화하는지만 나타낼 뿐이다. 따라서 새로운 좌표계에서 새로운 기저벡터가 어떻게 변환될지는 같은 선형 변환 행렬을 사용할 수가 없다.
새로운 좌표계에서 표현된 벡터 \([-1 \quad 2]^T\)를 생각해보자.
먼저, 기저 행렬의 변환을 이용하여 xy 좌표계에서 어떻게 표현되는지 위에서 알아보았다.
\(\begin{bmatrix} 2 & -1 \\ 1 & 1 \end{bmatrix} \begin{bmatrix} -1 \\ 2 \end{bmatrix} \)
그리고, 여기에 xy 좌표계에서의 선형 변환 행렬(예를 들어 반시계방향 90도 회전 행렬인 \( \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \))을 왼쪽에 곱해주자.
\( \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} 2 & -1 \\ 1 & 1 \end{bmatrix} \begin{bmatrix} -1 \\ 2 \end{bmatrix} \)
이는 xy 좌표계 기준에서 해당 벡터가 선형 변환에 의해 어떤 벡터가 되는지 알려준다.
마지막으로, 기저를 변환해주는 행렬의 역행렬을 왼쪽에 곱하여 변환된 벡터가 새로운 좌표계에서 어떻게 표현되는지 알 수 있다.
\(\begin{bmatrix} 2 & -1 \\ 1 & 1 \end{bmatrix}^{-1} \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} 2 & -1 \\ 1 & 1 \end{bmatrix} \begin{bmatrix} -1 \\ 2 \end{bmatrix} \)
이와 같이 새로운 좌표계 기준의 선형 변환된 벡터를 새로운 좌표계 기준으로 나타낼 수 있다.
이를 정리하면, xy좌표계 기준 선형 변환 행렬 \(M\)와 기저 변환 행렬 \(A\)에 대해, 새로운 좌표계에서의 선형변환 행렬은 아래와 같다.
\(A^{-1}MA\)
8. Eigenvectors and Eigenvalues
면접 질문에서 가장 많이 등장하는 개념 중 하나이다.
직관적인 의미가 와닿지 않아서 계산 방법만 알아두고 넘어가곤 했는데, 이번 기회에 개념을 확실히 잡아보자.
먼저, Linear Transformation, Determinants, Change of basis에 대한 기하학적 의미를 잘 파악하고 있어야 하므로, 이전 포스팅을 참고해보자.
https://jjuke-brain.tistory.com/90
https://jjuke-brain.tistory.com/91
1) 고유벡터, 고유값
먼저, 특정 벡터의 span을 떠올려보자.
대부분 벡터는 선형 변환에 의해 자신의 span에서 벗어날 것이다.
하지만 어떤 특별한 벡터는 선형 변환 행렬에 의해 기저가 변환되어도 span에 남아있는 경우가 있다.
이렇게 span을 유지하는 특별한 성질을 갖는 벡터들을 'Eigenvector' 라 한다.
그리고, span 상에서 각각의 eigenvector가 몇 배 scaling 되는지를 나타내는 스칼라 값을 'Eigenvalue'라 한다.
3차원에서의 eigenvector는 회전축의 개념이다.
수식으로는 아래와 같이 나타낼 수 있다.
\(A \mathbf{v} = \lambda \mathbf{v} \)
여기서 \(A\)는 변환 matrix, \(\mathbf{v}\)는 고유벡터(eigenvector), \(\lambda\)는 고유값(eigenvalue)인 상수이다.
위 수식을 그대로 해석하자면, 고유벡터 \(\mathbf{v}\)를 선형 변환환 결과가 임의의 상수 \(\lambda\)로 스케일링한 결과와 같다는 의미가 된다. (결국 같은 말이다.)
이를 계산하기 위해서는 우변을 좌변으로 넘기고, identity matrix를 사용해 행렬 벡터 곱셈 형태로 정리해주면 된다.
\((A- \lambda I) \mathbf{v} = 0 \)
여기서 \(\mathbf{v}\)가 영벡터인 경우는 자명한 해(trivial solution)이므로, nonzero solution을 구하면 그것이 바로 행렬 \(A\)에 대한 eigenvector이다.
이전 포스팅에서 영벡터가 아닌 벡터를 영벡터(낮은 차원)로 만드는 방법은 해당 행렬, 즉 \((A- \lambda I)\)의 Determinant = 0인 경우이다.
따라서 \(det(A- \lambda I ) = 0 \)을 만족하는 \(\lambda\) 값(eigenvalue)을 먼저 구하고, 각각의 값에 해당하는 영벡터가 아닌 벡터(eigenvector)를 구할 수 있다.
2) 고유 기저 (Eigenbasis)
만약, 고유벡터가 기저라면 어떻게 되는지 알아보자.
모든 대각행렬(Diagnoal Matrix)들은 모든 기저벡터들이 고유벡터, 대각선의 값들이 고유값이다.
이들은 선형변환을 여러번 진행해도 단순히 x축, y축으로의 scaling만 해주기 때문에 계산이 간편하다.
선형변환 \(M = \begin{bmatrix} 3 & 1 \\ 0 & 2 \end{bmatrix} \)가 있다고 해보자.
위 행렬의 고유벡터는 \([1 \quad 0]^T, [-1 \quad 1]^T\)이다.
이제, eigenvector를 basis로 사용하기 위한(기저를 변환하는) 변환 행렬은 \(A = \begin{bmatrix} 1 & -1 \\ 0 & 1 \end{bmatrix} \)이다.
여기서 \(A^{-1} M A \)행렬은 소유벡터를 기저로 갖는 좌표계의 변환 행렬이다.
그리고 이를 계산해보면 \(\begin{bmatrix} 3 & 0 \\ 0 & 2 \end{bmatrix}\)로, 대각 행렬이 나온다.
이를 통해 기저 벡터가 변활될 때 scaling만 진행하는(대각 행렬이므로) 좌표계에서 작업을 할 수 있게 된다.
이와 같이, 기저벡터이기도 한 고유벡터의 쌍을 'Eigenbasis'라 한다.
만약 xy좌표계에서 변환행렬 \(M\)에 의한 변환을 100번 진행해야 한다면,
Eigenbasis로 바꾼 후 (변환 행렬이 대각 행렬이 되므로)에 100제곱을 간단히 진행하고, 다시 원래의 좌표계로 되돌리는 것이 훨씬 쉬울 것이다.
이와 같은 방법으로 복잡한 행렬의 계산을 간단하게 진행할 수 있으며, 이렇게 특성벡터를 사용하여 Diagonalization(대각화)하는 과정을 Eigendecomposition이라 한다.
예제를 한 번 풀어보자.
행렬 \(A = \begin{bmatrix} 0 & 1 \\ 1 & 1 \end{bmatrix} \)에 대해
어떤 자연수 n에 대해 \(A^n\)의 계산을 쉽게 하는 방법을 생각해보자.
고유벡터를 구해보면 \(\mathbf{v_1} = \begin{bmatrix} 2 \\ 1 + \sqrt{5} \end{bmatrix} \), \(\mathbf{v_2} = \begin{bmatrix} 2 \\ 1 - \sqrt{5} \end{bmatrix} \)이다.
행렬 \(T = \begin{bmatrix}2 & 2 \\ 1 + \sqrt{5} & 1 - \sqrt{5} \end{bmatrix} \)에 대해
\(T^{-1} A T = \begin{bmatrix} \frac{1+\sqrt{5}}{2} & 0 \\ 0 & \frac{1-\sqrt{5}}{2} \end{bmatrix}\)
따라서 \(A^n = T \begin{bmatrix} \frac{1+\sqrt{5}}{2} & 0 \\ 0 & \frac{1-\sqrt{5}}{2} \end{bmatrix}^n T^{-1} = T \begin{bmatrix} \frac{1+\sqrt{5}}{2}^n & 0 \\ 0 & \frac{1-\sqrt{5}}{2}^n \end{bmatrix} T^{-1} \)
과 같이 쉽게 구할 수 있다.
최근댓글