안녕하세요, HELLO
오늘은 길버트 스트랭 (Gilbert Strang) 교수님의 선형대수학 강의인 "MIT 18.06 Linear Algebra, Spring 2005"에 대해서 정리하려고 합니다. 선형대수학 강의에 대한 정리와 더불어, 딥러닝을 위한 선형대수학 관점에서도 접근하여 강의를 이해하고 분석하려고 합니다.
"MIT 18.06 Linear Algebra, Spring 2005"의 5주차 "Transposes, Permutations, Spaces R^n"의 강의 내용입니다.
CHAPTER 1. 'Transpose'
CHAPTER 2. 'Permutation'
CHAPTER 3. 'Subspaces of R^n'
CHAPTER 1. 'Transpose'
□ Definition
선형대수학에서 행렬의 전치 (Transpose)는 행렬의 대각선 (Diagnoal)을 기준으로 뒤집는 (Flip) 것을 의미합니다. 이는 행렬 A의 행과 열을 뒤집어서 새로운 행렬을 만드는 방법이며, 대부분 A^T로 표기합니다.
In linear algebra, the transpose of a matrix is an operator which flips a matrix over its diagonal; that is, it switches the row and column indices of the matrix A by producing another matrix, often denoted by A^T (among other notations).
(출처: wikipedia, https://en.wikipedia.org/wiki/Transpose)
□ 대칭 행렬(Symmetric Matrix)
대칭 행렬(Symmetric Matrix)은 행렬이 가지고 있는 특성 때문에 다양한 곳에 응용됩니다. 선형대수학에서는 고윳값 (Eigenvalue), 고유벡터 (Eigenvector) 등 계산, 통계에서는 공분산 (Covariance) 등 계산, 머신러닝에서는 SVM에서 사용할 수 있습니다. 그리고 이러한 대칭행렬은 항상 전치행렬과 원래 행렬의 내적 곱을 통해 구할 수 있습니다.
대칭 행렬의 특성은 이름 그대로 대칭이라는 점입이다. 즉 전치(Transpose)를 해서 행렬을 뒤집어도 원래 행렬과 같은 특성을 가지는 점입니다.
행렬 A는 대칭 행렬입니다. 대각(diagonal) 원소는 diag(3, 2, 4)인데, 이 대각 원소를 기준으로 상삼각(Upper triangular)과 하삼각(Lower Triangular) 부분이 같은 것을 알 수 있습니다. 따라서 전치를 통해 행렬을 대각 원소를 중심축으로 뒤집어도 그 결과는 같으며 차원 또한 변함이 없습니다.
위의 R행렬과 R의 전치 행렬은 직사각형 형태이기에 대칭 행렬과는 맞지 않습니다. 하지만, 원본 행렬과 전치 행렬을 내적 곱함으로써 대칭 행렬을 구할 수 있습니다. R행렬을 R의 전치 행렬과 곱했더니 우측의 S행렬이 나왔습니다.
S행렬을 보면 대각 원소들을 기준으로 대칭인 것을 알 수 있습니다. 이렇듯 어떤 행렬을 자신의 전치 행렬과 곱한 결과가 대칭 행렬이 나오는 이유는 아래와 같습니다. 자신과 똑같은 행렬을 단지 뒤집어서 곱했기 때문에 똑같은 원소끼리의 곱이 반복될 수밖에 없습니다.
행렬 내적 곱의 곱셈 과정을 순차적으로 나열한 것이다. 이를 보면 두 번째 연산과 네 번째 연산이 같은 원소끼리의 곱이 반복됨을 알 수 있습니다. 이렇게 같은 원소끼리 반복되는 연산은 대각 원소를 제외한 모든 원소에서 발생합니다. 이를 바탕으로 아래의 정의를 얻을 수 있습니다.
어떤 임의의 행렬 A와 그의 전치 행렬(Transpose)을 곱하면 항상 대칭 행렬(Symmetric Matrix)을 얻는다.
위 정의를 수식으로 증명하자면 아래와 같습니다. 어떤 행렬이 대칭 행렬인지를 알기 위해선, 전치를 해봤을 때 원래의 행렬과 같으면 이 행렬이 대칭 행렬인지를 알 수 있습니다. 그리고 추가적으로 전치 행렬의 전치 행렬은 원래의 행렬입니다.
CHAPTER 2. 'Permutation'
□ Definition
In mathematics, particularly in matrix theory, a permutation matrix is a square binary matrix that has exactly one entry of 1 in each row and each column and 0s elsewhere. Each such matrix, say P, represents a permutation of m elements and, when used to multiply another matrix, say A, results in permuting the rows (when pre-multiplying, to form PA) or columns (when post-multiplying, to form AP) of the matrix A.
(출처 : Wikipedia, https://en.wikipedia.org/wiki/Permutation)
치환 행렬(Permutation matrix)은 행 교환(row exchange)을 수행하는 행렬입니다. 지금까지 강의 내용은 행렬의 소거를 하는 과정에서 행 교환이 필요 없는 경우를 가정하고 소거를 진행하였습니다. 하지만 항상 완벽한 행렬만 존재할 수는 없기 때문에 반드시 행 교환이 필요할 때가 있습니다. 바로 pivot이 0인 경우입니다. 소거 과정에서 pivot이 0이 되는 경우에 행 교환이 필요하며 이때 사용되는 행렬이 바로 치환 행렬이다. 이러한 치환은 한 번이 될 수도, 혹은 여러 번이 필요할 수도 있습니다. 그때마다 필요한 치환 행렬을 곱해서 행 교환을 해서 소거를 완료하는 것입니다.
A=LU Decomposition을 살펴보겠습니다. A=LU의 형태는 아래와 같습니다. 지금까지 가졌던 가정은 A는 행 교환이 필요 없는 완벽한 행렬이라는 점입니다. 따라서 P행렬도 필요 없었고, 여기서의 P행렬은 단위행렬이 될 것입니다. 행 교환이 필요 없기 때문에 단위행렬을 곱해서 행을 그대로 둔 채 소거를 해 나갔습니다.
여기서 P는 행 교환 연산을 수행하는 치환행렬이고, 위 식은 어떤 invertible A (역행렬 A)에도 적용이 된다. 대부분의 경우 행 교환이 필요하지 않는데, 가끔씩 행 교환이 필요한 경우 위와 같이 P행렬을 통해 행 교환 및 소거를 수행합니다.
치환 행렬 P는 단위행렬에서 각 행을 서로 교환한 조합입니다.
치환 행렬은 세 가지 속성이 있습니다.
첫 번째는 최대로 가질 수 있는 행 이동 횟수 (Execute the row exchanges)는 n! (n = row 숫자)입니다.
첫 번째는 모든 P행렬은 invertible 하다. 즉 역행렬이 존재합니다.
두 번째는 P행렬의 역행렬은 전치(Transpose) 행렬과 같습니다. 즉 아래 식을 만족합니다.
그리고 치환 행렬의 역행렬은 치환 행렬의 전치행렬과 동일하고, 치환 행렬과 치환 행렬의 전치행렬의 내적곱은 항등행렬입니다.
CHAPTER 3. 'Subspaces of R^n'
□ 벡터 공간 (Vector Spaces)
벡터 공간(Vector Space)은 벡터의 집합입니다. 단순한 집합이 아니라 똑같은 개수의 컴포넌트(x, y,...)로 정의할 수 있는 무수히 많은 벡터들의 집합인데, 벡터의 공간임을 인정받기 위해선 다음의 정의를 충족해야 합니다.
- 벡터 공간 내에 존재하는 임의의 벡터 v와 w는 그 둘을 더해도 (v+w) 그 결과가 반드시 같은 벡터 공간에 존재해야 한다.
- 벡터 공간 내에 존재하는 임의의 벡터 v에 임의의 상수 c를 곱해도 (cv) 그 결과가 반드시 같은 벡터 공간에 존재해야 한다.
- 벡터 공간 내에 존재하는 임의의 벡터 v, w와 임의의 상수 c, d에 대해 모든 경우의 cv+dw 조합(각 벡터에 임의의 상수를 곱한 뒤 더하는, 즉 선형 결합(Linear Combination))결과가 반드시 같은 벡터 공간에 존재해야 한다.
□ 부분 공간(Subspace)
앞에서 같은 공간상에 있는 벡터들은 동일한 공간에 존재하는 다른 벡터들의 선형 결합에 의해 정의될 수 있어야 한다고 했습니다. 즉, 어떤 벡터에 일정 상수값을 곱해 scale(길이)을 늘려주거나, 다른 벡터를 더해주었을 때 그 결과가 같은 공간에 존재해야 합니다. 아래의 벡터 공간이 성립하지 않는 경우의 예를 보겠습니다.
2차원 공간 전체 중에서 1/4의 영역인 1 사분면(x축 +방향, y축 +방향)만 취한다고 가정해 보겠습니다.
먼저 해당 공간 내의 다른 벡터와의 덧셈 연산에 대해서 살펴보겠습니다. 1 사분면 공간 내의 어떠한 벡터끼리 덧셈을 해도 그 결과가 1 사분면에 위치합니다.
1 사분면 내의 임의의 벡터 v1(Red)과 v2(Green)를 더했을 때, 결과 벡터(v1+v2)는 여전히 1 사분면에 위치해 있습니다.
여기서 v1과 v2는 1 사분면 공간 내의 원소들이기 때문에 무조건 x와 y컴포넌트가 양의 값을 가집니다. 따라서 이 공간 내의 어떤 벡터끼리 더해도 그 결과 벡터는 여전히 1 사분면에 위치합니다. 이러한 경우 1 사분면의 벡터 공간은 덧셈 연산에 대해 "닫혀있다(closure)"라고 합니다.
이번에는 선형 결합이라 함은 벡터끼리의 덧셈과, 각 벡터에 어떤 scale값을 곱해주는 곱셈연산이 있습니다. 이번엔 곱셈 연산이 성립하는지를 알아보겠습니다. 1 사분면 벡터들에 대해 임의의 스케일 값을 곱했을 때는 그 결과벡터는 1 사분면에 위치해 있지 않습니다.
1 사분면의 임의의 벡터 v에 임의의 상수 2를 곱해서 벡터의 길이를 늘였습니다. 이때 2v는 여전히 1 사분면에 위치해 있다. 그러나 문제는 그 스케일의 방향입니다. 즉 반대 부호인 -2를 곱했을 경우 이 결과 벡터인 -2v는 1 사분면을 벗어나게 됩니다. 따라서 1 사분면 공간의 벡터에 대해 곱셈 연산은 "닫혀있지 않다(not closure)"고 할 수 있습니다.
이 경우, 1 사분면을 벡터 공간이라고 정의할 수 없습니다, 이는 덧셈에는 닫혀있으나, 곱셈에는 닫혀있지 않기 때문이다.
□ Subspace (벡터 공간)
1 사분면은 분명히 2차원 공간 내에 존재합니다. 그러나 선형 결합에 대한 규칙이 성립하지 않기 때문에 벡터 공간, 혹은 부분 공간이라고 할 수 없습니다. 임의의 n차원 공간에 대해, n차원 공간에 포함되면서 n차원 벡터들에 대해 선형 결합 연산이 성립하는 작은 공간을 우리는 부분 공간(Subspace)라 정의합니다. 즉 부분 공간 안의 벡터들끼리는 안전하게 선형 결합 연산을 할 수 있습니다.
결국 이 부분 공간이라는 것은 크게는 n차원 공간에 포함이 되고, 부분 공간 내의 벡터들을 활용해 선형 결합 연산을 수행했을 때 그 결과 벡터가 여전히 부분 공간에 존재할 경우(정확하게는 n차원이 아닌 n차원 안의 부분 공간에 존재해야 함) 성립합니다.
아래의 부분 공간에 대한 예를 위에서와 마찬가지로 2차원 공간에서 설명해 보겠습니다.
위 그림에서 벡터 v가 2차원 공간의 어떤 부분 공간(subspace)에 위치해 있다고 가정해 보겠습니다. 위의 벡터 v 말고도 다른 벡터들이 부분 공간 안에 더 존재해야 니다. 다른 벡터라고 한다면 가령 임의의 상수를 곱한 벡터들이 될 수 있겠습니다. 그렇게 임의의 상수들을 더한 것들을 나열해 보면 아래와 같이 될 것입니다.
즉 이 부분공간에는 빨간색 벡터 v 말고도 주황색 벡터 2v, 보라색 벡터 3v, 초록색 벡터 -1/2v 등이 존재하며, 0을 곱한 영벡터(zero vector)도 있습니다. v에 0을 곱한 영벡터의 경우 [0 0]이 되는데 이러한 영벡터도 이 부분 공간의 원소에 포함됩니다. 이러한 수많은 벡터들을 나열한 것이 바로 직선 l이며, 2차원 공간에서 부분 공간은 직선(Line) l 이 됩니다.
곱셈 연산에 대한 성립은 확인을 했고, 이제 덧셈 연산에 대해 확인해 보면, 부분 공간인 직선 l에 존재하는 어떠한 벡터들끼리 더해도 같은 공간에 존재하므로, 따라서 이 직선은 R^2의 부분 공간이 맞습니다.
이때 R^2에 존재하는 모든 직선(line)은 전부 부분 공간(subspace)이 될 수 있을까란 의문점이 듭니다.
위의 직선을 실제 벡터들로 표현하면 아래 그림과 같이 됩니다.
위의 직선 l는 R^2의 부분 공간이 아닙니다. 결론부터 말하자면 R^2에 존재하는 직선이 부분 공간이 되기 위해선 반드시 원점인 zero vector를 지나가야 합니다. 왜냐하면 부분 공간이 되기 위해선 어떠한 수를 곱하거나, 같은 공간 내의 어떠한 벡터들을 더해도 그 결과가 부분 공간 내에 존재해야 합니다.
위 그림에서 빨간 벡터에 0을 곱했을 때, 그 결과가 점선으로 표현된 직선 l에 존재하지 않습니다. 혹은 주황색 벡터에 보라색 벡터를 더했을 때 그 결과가 직선 l에 존재하지 않습니다. 다른 어떠한 상수를 곱해도, 벡터를 더해도 결과는 마찬가지이며, 따라서 위의 직선은 R^2의 부분 공간이 아닙니다.
이를 바탕으로 한 가지 정의를 추론해 보면, 임의의 부분 공간(subspace)은 반드시 zero vector를 포함해야 하는 사실을 알 수 있습니다. 왜냐하면 어떠한 벡터도 영을 곱하면 zero vector가 되기 때문입니다.
그렇다면 2차원 평면인 R^2에서 가능한 부분 공간은 확인해 보겠습니다.
1번은 R^2 그 자체가 하나의 부분 공간이 될 수 있다는 뜻입니다.
2번은 임의의 직선(Line)인데, 원점을 반드시 지나는 경우입니다. 원점만 지난다면 어떠한 직선도 2차원 평면의 부분 공간이 될 수 있습니다.
마지막 3번은 전체 평면도, 특정 직선도 아닌 바로 영벡터(zero vector) 그 자체입니다. 한 점 공간(point space)입니다. 이 zero vector 자체가 부분 공간이 성립되는 이유는 부분 공간에 대한 모든 조건을 만족하기 때문입니다.
- R^2에 속해있다.
- 어떤 상수를 곱해도 zero vector이다.
- zero vector의 원소들인 zero vector들끼리 더해도 여전히 zero vector이다.
- 결론적으로 선형 결합을 진행해도 zero vector에 닫혀 있습니다.
이를 확장하면, 임의의 n차원인 R^n공간에서 zero vector 자체는 항상 Rn의 부분 공간이 됩니다.
그렇다면 1차원 높여서, 3차원 공간 R3의 부분 공간에 대해서도 살펴보겠습니다.
2차원 공간과 동일하게, 3차원 공간 그 자체, 원점을 지나는 평면, 원점을 지나는 직선, 그리고 영벡터 그 자체가 됩니다.
이를 N차원 공간인 R^N의 부분 공간으로 확장한다면 2차원 그리고 3차원 공간과 마찬가지로, N차원 공간 그 자체, N-1차원이 원점 (Origin)을 지나는 공간으로 구성될 것입니다.
□ 행렬의 부분 공간(Subspace of Matrix)
행렬 A로부터 부분 공간을 뽑아낼 수 있습니다. 바로 column 공간(column space)입니다. A의 column은 R3에서 정의될 수 있습니다. A의 부분 공간을 정의하기 위해선 column 요소끼리 더하고, 각 column에 임의의 상수를 곱해서 만들면 됩니다. 즉 A의 column원소끼리 정의할 수 있는 모든 선형 결합(Linear Combination)을 통해 A의 부분 공간을 정의할 수 있습니다.
- 임의의 행렬 A에서, 모든 column의 선형 결합(Linear Combination)은 부분 공간(subspace)을 형성합니다. 이를 column space라 부르고 C(A)로 씁니다.
아래 그림은 위의 행렬의 column에 대한 벡터들을 3차원 공간상에 표현한 것입니다.
두 column 벡터들에 임의의 상수를 곱하고 이를 더해서 선형 결합을 한 결과를 그려보도록 하겠습니다.
우선 10개의 임의의 선형 결합을 한 결과입니다.
100개의 임의의 선형 결합을 한 결과입니다.
500개의 임의의 선형 결합을 한 결과입니다.
이때 3차원 공간에서 column space가 2차원 밖에 되지 않았기에, 좌표 평면상에서 평면 (plane)으로 나타난 모습을 볼 수 있습니다.
결론적으로 행렬 A의 column들의 선형 결합을 통해 우리는 R^3의 부분 공간이 평면(plane)이라는 것을 눈으로 확인할 수 있었습니다. 부분 공간을 정의하기 위해선 임의의 행렬 A의 column원소들의 가능한 모든 선형 조합을 생각해 보면 됩니다.
CHAPTER 4. '딥러닝에서 대칭 행렬 (Symmetric Matrix) 사용 방안'
우리는 데이터 엔지니어링 측면에서 대칭 행렬의 특징을 SVM (Support Vector Machine)에서 생각해 볼 수 있습니다.
서포트 벡터 머신(SVM)은 분류 및 회귀 작업에 사용되는 지도 머신 러닝 알고리즘의 한 종류입니다. 서로 다른 클래스의 데이터 포인트 사이의 마진(거리)을 최대화하는 하이퍼플레인 (초평면, hyperplane)을 찾는 방식으로 작동합니다. 하이퍼플레인은 서포트 벡터라고 하는 데이터 포인트의 하위 집합에 의해 결정됩니다.
대칭 행렬은 SVM에서 중요한 역할을 하지만, 거리 최대화와 직접적인 관련이 없습니다. 대칭 행렬이 SVM에 작동하는 방식은 다음과 같습니다:
1. Kernel Trick: 많은 SVM 구현에서 데이터는 커널 함수라는 수학적 함수를 사용하여 고차원 공간에 매핑됩니다. 일반적인 커널 함수에는 선형, 다항식, 방사형 기저 함수(Radial Basis Function, RBF (해설 내용)) 커널이 포함됩니다. 이 함수는 데이터를 클래스를 구분하는 하이퍼플레인을 더 쉽게 찾을 수 있는 공간으로 변환하는 것입니다.
2. Gram Matrix: 커널 함수는 고차원 공간에서 데이터 포인트 간의 행렬 곱을 계산합니다. 이러한 행렬 곱은 그램 행렬 또는 커널 행렬이라고 하는 행렬로 구성됩니다. 이 행렬의 곱은 대칭입니다 (즉, 벡터 i와 벡터 j의 점의 곱은 벡터 j와 벡터 i의 곱과 동일합니다).
3. Dual Form Optimization: SVM은 라그랑주 승수(알파 값이라고도 함)에 대한 이차 함수를 최대화하는 이중 형태로 풀 수 있습니다. 이 이차함수에는 그램 행렬이 포함됩니다. 이 함수를 최대화하면 고차원 공간에서 지원 벡터와 최적의 쌍곡면을 찾을 수 있습니다.
따라서 그램 행렬의 대칭성은 수학적 특성이지만, 마진 거리 최대화와 직접적으로 일치하지는 않습니다. 대신, 대칭 행렬은 최대 마진을 함께 결정하는 최적의 하이퍼플레인과 지지 벡터를 찾는 데 사용되는 수학적 프레임워크의 일부입니다.
요약하면, 대칭 행렬은 최대 마진 하이퍼플레인을 찾는 데 수학적 변환과 이중 형태 최적화가 포함되기 때문에 SVM에 나타나지만, 대칭 행렬은 마진 거리 개념과 특별히 관련이 없습니다.
■ REFERENCE
YOUTUBE LECTURE : URL
BLOG : https://twlab.tistory.com/13
BLOG : https://twlab.tistory.com/15
■ 마무리
"MIT 18.06 Linear Algebra, Spring 2005"의 5주차 "Transposes, Permutations, Spaces R^n"에 대해서 정리해 봤습니다.
그럼 오늘 하루도 즐거운 나날 되길 기도하겠습니다
좋아요와 댓글 부탁드립니다 :)
감사합니다.
'STUDY > Linear Algebra' 카테고리의 다른 글
[MIT 18.06] Lecture 7: Solving Ax = 0: pivot variables, special solutions (0) | 2023.09.17 |
---|---|
[MIT 18.06] Lecture 6. Column Space and Null space (0) | 2023.09.02 |
[MIT 18.06] Lecture 4. Factorization into A = LU (2) | 2023.08.04 |
[MIT 18.06] Lecture 3. Multiplication and Inverse Matrices (0) | 2023.08.04 |
[MIT 18.06] Lecture 2. Elimination with Matrices (5) | 2023.07.29 |
댓글