인공지능 및 기계 학습에서 행렬(matrix)은 데이터를 처리하고 표현하는 중요한 도구입니다. 행렬은 수를 직사각형 형태로 배열한 것으로, 데이터를 수학적으로 다루기 위해 필수적입니다. 행렬을 사용하면 대규모 데이터를 효율적으로 관리하고 계산할 수 있습니다.
예시:
우리가 이미 익숙한 데이터 테이블을 생각해봅시다.
학생들의 수학 및 영어 성적을 나타내는 데이터가 있다고 가정할 때, 이를 행렬로 표현할 수 있습니다.
A=⎣⎢⎡907888859276⎦⎥⎤
여기서 행은 학생, 열은 과목(수학과 영어)을 나타냅니다. 이처럼 행렬은 2차원 데이터를 매우 간단하게 표현할 수 있습니다.
행렬을 다룰 때 중요한 개념으로 행렬의 곱셈, 역행렬, 전치 행렬 등이 있으며, 이는 인공지능 모델을 구현할 때 필수적인 기초 연산입니다.
1.1. 행렬의 곱셈(Matrix Multiplication)
행렬의 곱셈은 두 행렬을 곱하는 연산입니다. 두 행렬을 곱하려면 첫 번째 행렬의 열의 개수가 두 번째 행렬의 행의 개수와 같아야 합니다. 곱셈 결과로 나온 행렬의 i-번째 행과 j-번째 열의 값은 첫 번째 행렬의 i-번째 행과 두 번째 행렬의 j-번째 열에 있는 원소들의 곱을 모두 더한 값입니다.
기저(Basis)는 벡터 공간을 구성하는 기본적인 벡터들의 집합을 의미합니다. 벡터 공간에 있는 모든 벡터는 이 기저 벡터들의 선형 결합(즉, 적절한 배수로 더한 것)으로 표현될 수 있습니다. 기저는 공간의 구조를 결정하는 중요한 개념이며, 기저 벡터들은 선형 독립(linearly independent)이어야 합니다.
기저의 조건:
선형 독립성: 기저를 구성하는 벡터들은 서로 선형 결합으로 표현될 수 없어야 합니다. 즉, 하나의 기저 벡터는 다른 기저 벡터들의 조합으로 만들어지지 않습니다.
벡터 공간의 생성(Span): 기저 벡터들을 선형 결합하여 해당 벡터 공간의 모든 벡터를 표현할 수 있어야 합니다.
예시로 이해해봅시다:
2차원 평면에서 가장 기본적인 기저는 e1=[10]와 e2=[01]입니다.
이 두 벡터는 2차원 공간에서 선형 독립적이고, 이 두 벡터를 적절히 조합하면 2차원 공간의 모든 벡터를 만들 수 있습니다.
v=ae1+be2=a[10]+b[01]=[ab]
즉, e1과 e2는 2차원 벡터 공간의 표준 기저(Standard Basis)입니다.
기저의 중요성:
기저는 차원 축소, 고유값 분해, 데이터 변환 등의 다양한 분야에서 중요한 역할을 합니다.
예를 들어, 고유벡터(Eigenvector)는 특정 행렬에서의 고유한 변환 성질을 반영하는 새로운 기저로 사용할 수 있습니다. 이처럼 기저는 우리가 공간을 이해하고 변환하는 데 기본적인 틀을 제공해줍니다.
4. 대각화(Diagonalization)
대각화는 행렬을 그 행렬의 고유벡터(eigenvector)로 구성된 새로운 기저(basis)에서 표현하여, 대각행렬(diagonal matrix)로 변환하는 과정입니다.
대각행렬은 매우 간단한 형태로, 대각선 상에 고윳값들이 배치되고 나머지 원소는 모두 0인 행렬입니다.
이 변환은 행렬의 특성을 더 명확하게 드러내고, 계산을 효율적으로 할 수 있게 해주는 중요한 기법입니다.
대각화를 수학적으로 표현하면 다음과 같습니다:
A=PDP−1
여기서,
A는 대각화하려는 원래의 행렬입니다.
P는 행렬 A의 고유벡터들로 구성된 행렬입니다. P의 각 열은 고유벡터로 이루어져 있습니다.
D는 행렬 A의 고윳값들이 대각선에 배열된 대각행렬입니다.
P−1는 행렬 P의 역행렬입니다.
이 관계식은 행렬 A가 고유벡터들로 구성된 새로운 기저에서 대각행렬로 표현될 수 있음을 나타냅니다. 즉, 고유벡터들을 기준으로 원래의 행렬을 변환하면, 단순한 대각행렬로 바뀌어 더 직관적으로 해석할 수 있습니다.
대각화를 직관적으로 설명하면, 복잡한 변환을 단순한 형태로 바꾸는 과정입니다.
예를 들어, 행렬 A는 원래 벡터에 복잡한 방식으로 작용하여 방향과 크기를 변화시킬 수 있습니다. 하지만 이 행렬을 고유벡터들의 기저로 변환하면, 행렬 A는 대각행렬로 바뀌어 고유벡터 방향으로만 크기를 조정하게 됩니다.
즉, 대각행렬은 각 고유벡터의 방향을 유지하면서 크기만을 변화시키는 변환을 의미합니다.
그 외에도 아래와 같은 장점들이 존재합니다:
계산의 단순화: 대각행렬은 대각선에 위치한 요소들 외에는 모두 0이기 때문에 행렬의 여러 연산, 특히 거듭제곱 같은 복잡한 계산이 매우 간단해집니다.
An=PDnP−1(∵PP−1=I)
여기서 Dn은 대각행렬의 대각선 요소들만 각각 거듭제곱하면 됩니다.
행렬의 내재된 성질 파악: 행렬을 대각화하면, 고유벡터와 고윳값을 통해 행렬이 데이터에 미치는 변환 효과를 더 직관적으로 파악할 수 있습니다. 이는 차원 축소, 데이터 분석에서 중요한 역할을 합니다.
예시로 대각화를 해봅시다. 행렬 A=[4213]가 주어졌다고 가정합시다.
이 행렬의 고윳값과 고유벡터를 구하면:
고윳값: λ1=5,λ2=2
고유벡터: v1=[12],v2=[−11]
이 고유벡터들로 구성된 행렬 P는:
P=[12−11]
참고로 P의 Inverse(역함수)는:
P−1=[1/3−2/31/31/3]
그리고 고윳값을 대각선에 배치한 대각행렬 D는:
D=[5002]
이제 대각화된 형태로 표현하면, 다음과 같은 관계식을 얻습니다.
A=PDP−1
A=[12−11][5002][1/3−2/31/31/3]
5. 닮은 행렬(Similar Matrices)
행렬 A와 B가 닮았다는 것은 다음과 같은 관계식을 만족한다는 의미입니다:
A=PBP−1
닮은 행렬은 동일한 고유 성질을 가지며, 같은 고윳값을 공유합니다.
따라서 닮은 행렬은 행렬식과 대각합이 동일합니다.
💡 행렬식(Determinant): 행렬의 고윳값들의 곱과 동일합니다. 즉, 행렬의 모든 고윳값을 곱한 값이 그 행렬의 행렬식이 됩니다.
💡 대각합(Trace): 행렬의 고윳값들의 합과 동일합니다. 즉, 행렬의 모든 고윳값을 더한 값이 그 행렬의 대각합입니다.
예시:
행렬 A=[4213]와 대각행렬 B=[5002]는 닮은 행렬로, 동일한 고윳값을 가집니다.
(예시 1)
2x2 직교 행렬 Q=[21−212121]와 QT=[2121−2121]에 대하여
QTQ를 계산하면 단위행렬 I가 나오는 것을 확인할 수 있습니다.
직교 대각화의 특징
대칭 행렬만 직교 대각화 가능:
대칭 행렬은 항상 직교 대각화가 가능합니다. 즉, 모든 실수 대칭 행렬은 직교 행렬을 사용하여 대각화할 수 있습니다.
직교 행렬 사용:
직교 대각화에서는 고유벡터들로 이루어진 직교 행렬Q를 사용합니다. 이 행렬은 열벡터들이 서로 직교하고, 각각의 길이가 1인 단위 벡터로 이루어져 있습니다.
대각행렬의 고윳값:
대각화된 행렬 D의 대각선에는 원래 행렬 A의 고윳값들이 배치됩니다.
고유벡터들의 직교성:
대칭 행렬의 고유벡터들은 서로 직교(orthogonal)합니다. 이는 직교 대각화가 가능하게 하는 중요한 성질입니다.
7. 특이값 분해 (SVD)
Singular Value Decomposition(SVD, 특이값 분해)는 행행렬을 세 개의 행렬(좌측 특이벡터, 특이값, 우측 특이벡터)의 곱으로 분해하는 강력한 방법입니다. 모든 행렬에 대해 SVD가 가능하다는 점에서 고유값 분해보다 더 일반적인 기법으로, 차원 축소, 추천 시스템, 이미지 압축 등 다양한 분야에 활용됩니다.
SVD는 다음과 같이 표현됩니다:
A=UΣVT
U는 A의 열 벡터들의 직교 행렬로, 좌측 특이벡터(left singular vector)를 포함합니다.
Σ는 대각행렬로, 대각선 요소가 행렬 A의 특이값(singular values)입니다.
VT는 A의 우측 특이벡터(right singular vector)로 이루어진 행렬입니다.
SVD 분해의 과정
행렬 ATA와 AAT 구하기
SVD 분해를 하기 위해, 먼저 행렬 A의 전치 행렬(transpose)를 사용하여 ATA와 AAT를 계산합니다. 이 두 행렬은 각각 우측 특이벡터와 좌측 특이벡터를 구하는 데 사용됩니다.
고윳값과 고유벡터는 행렬의 중요한 특성을 나타내며, 이를 활용해 대각화와 닮은 행렬 등을 이해할 수 있습니다. 더 나아가 SVD는 모든 행렬에 대해 적용 가능한 분해 방법으로, 데이터 분석, 차원 축소, 이미지 처리 등 인공지능과 데이터 과학 분야에서 널리 사용됩니다. 이 모든 개념들은 복잡한 행렬 연산을 단순화하고, 데이터를 효율적으로 처리하는 데 매우 중요한 역할을 합니다.
이번 시간에는 딥러닝에서 가장 많이 사용되는 선형대수 개념들을 정리해보았습니다. 오랜만에 수식이 많이 들어간 논문들을 읽으려니까 저도 좀 정리가 필요할거 같더라고요...🤗
선형대수학 기초부터 다시 공부하고 좋은 글 잘읽었습니다..!! 도움이 많이 되었어요:)