선형대수(Linear Algebra)는 수학의 한 분야이며, 공학 분야에서 많이 사용된다. 또한, 선형대수는 정수, 그래프, 논리 연산과 같은 구분되는 값을 가지는 대상을 연구하는 이산수학과 달리, 미적분학, 수치해석과 같이 연속적인 값을 다루는 분야와 같이 묶여 연속수학에 속한다.
기계 학습(Machine Learning)에서 사용되는 알고리즘을 이해하고 적용하기 위해서는 연속수학에 속하는 학문을 잘 알아야하며, 이번에는 선형대수에 대해서 다루어볼 것이다. 선형대수는 벡터 공간, 벡터, 선형 변환, 행렬 등을 연구하는 대수학의 한 분야이며, 선형대수에서 나오는 필수적인 주요 개념부터 차근차근 살펴보자. 목차는 다음과 같다.
변수 유형(Scalar, Vector, Matrix, Tensor)
1) 스칼라(Scalar)
스칼라는 크기만 존재하고 방향을 가지지 않은 물리량을 의미한다. 일반적으로 스칼라 변수를 사용할 때에는 해당 변수가 나타내는 수들의 유형도 같이 명시한다. e.g.
2) 벡터(Vector)
벡터는 크기와 방향이 모두 존재하는 값을 의미한다. 여러 개의 수를 특정한 순서로 나열한 값이며, 벡터 내에 있는 각 요소는 벡터 안에서의 색인(index)을 이용해 나타낼 수 있다. 벡터를 표현할 때에는 아래와 같은 방법으로 표현한다.
3) 행렬(Matrix)
행렬은 수들을 2차원으로 배열한 것을 의미한다. 벡터에서 하나의 요소를 표현하기 위해서는 하나의 index를 이용해 표현하여야 했지만, 행렬의 경우 두 개의 index를 통해 표현해야한다. 만약 행렬
4) 텐서(Tensor)
행렬은 2차원을 표현했지만, 텐서는 3차원의 배열을 표현할 때 사용한다.
지금까지 선형대수에서 사용되는 변수의 유형에 대해서 다루어보았다. 스칼라를 기준으로 점점 확장된다고 볼 수 있다. 모두 중요한 유형이지만 여기서는 행렬에 대해서만 다룰 것이다.
행렬(Matrix)
1) 행렬의 연산
- 전치(Transpose)
전치는 행렬을 다룰 때 많이 사용하는 연산 중 하나일 것이다. 전치를 하게되면 행렬의 행, 열이 서로 뒤바뀐 형태로 변환된다. 행렬
스칼라나 벡터에도 전치를 취할 수 있다. 벡터의 경우
- 곱셈(Product)
스칼라를 곱셈하는 것은 단순히 곱하는 것이기 때문에 넘어가고, 행렬과 벡터의 곱셈에 대해서 알아볼 것이다. 일단 먼저 행렬곱(matrix product)에 대해서 알아보자. 일단 행렬 간 곱셈을 하기 위해서는 행렬
여기서 주의해야할 것이 하나 있다. 행렬곱이라고 해서 두 행렬의 대응되는 요소들끼리 곱하는 것이 아니다. 대응 요소끼리 곱하는 것은 아다마르 곱(Hadamard product) 혹은 요소별 곱(element-wise product)이라 부른다. 벡터 간의 곱셈은 동일한 차원을 가져야지만 곱셈이 가능하다. 동일한 차원을 가지는 두 벡터
2) 역행렬(inverse matrix)
행렬의 역을 설명하기 위해서는 단위행렬(identity matrix)에 대해서 먼저 알아야 한다. 단위행렬은 어떤 벡터를 곱해도 원래의 벡터가 나오는 행렬의 대각 요소만 1의 값을 가지고 나머지 요소들은 0의 값을 가지는 행렬을 의미한다. 단위행렬은
행렬 (단 역행렬이 존재할 경우)
행렬
우리는 역행렬이 존재한다고 가정할 경우 위와 같은 수식이 성립한다고 언급했다. 그렇다면 역행렬이 존재하기 위해서는 어떠한 것이 성립해야할까? 역행렬
이런 종류의 연산을 일반화한 것을 선형결합(linear combination)이라고 부르며, 수식은 다음과 같다.
하지만
위 내용을 정리하자면 반드시 정방행렬(square matrix)이어야 하고, 모든 열이 선형독립이어야 한다. 정방행렬이지만 열 간 선형종속 관계인 행렬을 특이 행렬(singular matrix)라고 부른다.
그렇다고 특이 행렬이 아닌 정방행렬만 무조건 역행렬이 존재하는 것은 아니다. 특이 행렬이거나, 정방행렬이 아닌 행렬일때도 방정식을 푸는 것이 가능하지만, 역행렬을 이용한 해법으로 반드시 해를 구할 수 있다는 보장은 없다고 한다.
3) 대각행렬(diagonal matrix)
대각행렬은 주대각 성분만 0이 아닌 값을 가지고 나머지 요소들은 0인 값을 가지는 행렬을 의미한다. 행렬
4) 대칭행렬(symmetric matrix)
대칭행렬은 전치행렬이 곧 자신과 같은 행렬을 의미한다.
5) 직교행렬(orthogonal matrix)
직교행렬은 행들이 서로 정규직교(orthonormal)이고, 열들도 서로 정규직교인 정방행렬을 의미한다. 정규직교를 이해하기 위해서는 우선 직교라는 개념부터 짚고 넘어가자. 벡터
6) 정부호 행렬(positive definite matrix)
스칼라인 경우 3은 양수, -3은 음수로 부호를 부여할 수 있다. 그렇다면 행렬에도 부호를 부여할 수 있을까? 행렬의 내부 원소들은 음수를 가지기도, 양수를 가지기도 한다. 단순 무식하게 음수의 수, 양수의 수를 기반으로 행렬의 부호를 정하는 것이 아니라 수식에 따라 행렬의 부호를 정할 수 있다. square matrix
- positive definite matrix :
- positive semi-definite matrix :
- negative definite matrix :
- negative semi-definit matrix :
7) 행렬식(determinant)
square matrix
는 역행렬을 가진다. (not singular matrix) 는 full rank를 가진다. 는 모든 행이 linear independent하다. 는 모든 열이 linear independent하다. 는 양의 positive definite symmetric matrix이다. 의 eigen value의 값은 모두 0이 아니다.
2차원에서의 행렬식은 2개의 벡터가 이루는 평행사변형의 넒이를 의미하고, 3차원에서의 행렬식은 평행사각기둥의 부피에 해당한다. 또한, 행렬식이 0이라할 때 역행렬이 존재하지 않는다고 언급했다. 위 수식으로 살펴본다면 행렬식이 0일 경우
생성공간(span)
1) 선형결합(linear combination)
벡터 공간을 이해하기 위해서는 선형결합(linear combination)에 대해서 먼저 알아야 한다. 선형 결합이란 벡터

각 벡터들이 가지는
2) 정규직교(orthonormal)
여기서 우리는 조심해야할 부분이 있다. 만약
랭크(rank)
선형대수에서 랭크(rank)란 행렬들의 열들로 생성될 수 있는 벡터공간의 차원(dimension)을 의미한다. 이전 선형결합에서 우리는 두 벡터가 종속적이면 생성할 수 있는 차원은 하나라고 언급했다. 예를 들어 다음과 같은 행렬이 있다고 가저하자.
만약 첫 번째 column과 두 번째 column이 종속적이라면 위 행렬은 2차원의 벡터공간을 생성할 것이다. 다시 말해 선형독립인 2개의 열로 구성된 것을 행렬의 계수(rank)가 2라고 표현한다. 행렬의 계수가 1이면 직선이고, 계수가 2라면 평면, 계수가 3이라면 3차원 공간 전체를 벡터 공간으로 가지게 되며, 이를 통해 행렬의 벡터공간이 어떻게 생겼는지 알 수 있다. rank에는 Column rank와 Row rank가 존재한다. Column rank는 Column space의 차원을 의미하며, Row rank는 Row space의 차원을 의미한다. 위에서 우리는 full rank라는 것을 언급했었다. full rank란 해당 행렬이 가질 수 있는 최대 rank을 의미하며 수식은 다음과 같다.
rank의 이해를 돕기 위해 다음과 같은 예시를 생각해보자.
조금 더 상세한 개념은 여기를 참고하자.
고윳값, 고유벡터(eigen value, eigen vector)
정수 3717이 있다고 하면, 단순히 3717의 숫자를 보고는 어떤 수인지 파악하기가 어렵다 하지만 3717=3*3*7*59 로 표현한다면 여러 특성을 파악할 수 있을 것이다. 또한,
아래의 식을 만족하는 0이 아닌 벡터
여기서 고유 벡터는 서로 직교이며, 고유 벡터에 몇 배를 곱해도 여전히 고유 벡터이다. 그러나 고윳값은 여전히
그렇다면 고유 벡터는 몇 개까지 존재할까?
참고 문헌 : 이안 굿펠로, 요슈아 벤지오, 에런 쿠빌 : 심층 학습(Deep Learning) / 오일석 : 기계 학습
'Mathematics > Linear Algebra' 카테고리의 다른 글
[Linear Algebra] 고윳값 분해(eigen decomposition) (0) | 2022.03.05 |
---|---|
[Linear Algebra] 노름(norm) 이란? (0) | 2022.03.05 |
[Linear Algebra] SVD(Singular Value Decomposition) (0) | 2022.02.15 |
[Linear Algebra] 선형 변환 (0) | 2021.07.21 |
[Linear Algebra] 부분공간의 기저와 차원 (0) | 2021.07.20 |