데이터는 머신러닝의 필수 요소이다. 머신러닝에서는 일반적으로 행렬을 이용하여 데이터를 표현한다. 본 포스트와 다음 포스트에 걸쳐 머신러닝에 이용되는 행렬과 선형대수의 여러 개념에 대해 알아본다.
Vector
벡터에 대한 더 엄밀한 정의는 다음 포스트에서 설명합니다.
스칼라(Scalar)는 크기만을 가지는 단일 값이다. 벡터(Vector)는 스칼라들의 집합으로, 크기와 방향을 모두 가진다. 벡터는 다음과 같이 표기된다.
a=(xy)b=(xy)
a와 같이 원소를 행 방향으로 나열하면 행 벡터(Row Vector), b와 같이 열 방향으로 나타내면 열 벡터(Column Vector)라고 한다. 일반적으로 머신러닝에서는 특별한 언급이 없으면 벡터 표기는 열벡터를 나타낸다.
Matrix
행렬(Matrix)는 행과 열로 구성된 스칼라의 순서 있는 배열이며, 다음과 같이 표현된다.
A=⎝⎜⎛acebdf⎠⎟⎞
행렬은 벡터의 배열로도 볼 수 있다. 즉, 행렬 A는 행벡터(ab),(cd),(ef)의 집합으로도 볼 수 있고 열백터⎝⎜⎛ace⎠⎟⎞,⎝⎜⎛bdf⎠⎟⎞의 집합으로도 볼 수 있다. 행렬을 구성하는 각 스칼라값을 행렬 원소(element)라고 한다. i행 j열의 원소는 aij와 같이 표현할 수 있다. 행렬의 크기는 행 수와 열 수로 나타내는데, 행렬 A의 경우 3개의 행과 2개의 열로 구성되므로 3×2행렬이라고 표기한다.
Tensor
방향을 가지지 않는 0차원 값을 스칼라, 행 또는 열의 1차원 값을 벡터, 행과 열 2차원으로 구성된 값을 행렬이라고 한다는 것을 앞서 학습하였다. 이를 일반화하여 n차원으로 구성된 배열을 텐서(Tensor)라고 한다. 스칼라, 벡터, 행렬을 각각 0차원, 1차원, 2차원 텐서라고 부르기도 한다. 텐서는 머신러닝 라이브러리인 Tensorflow의 유래가 되기도 한다.
Diagonal Matrix & Identity Matrix
대각 행렬(Diagonal Matrix)란 행렬의 대각 원소 이외의 모든 성분이 0인 행렬을 의미하며, 단위 행렬(Identify Matrix)이란 주대각선의 원소가 모두 1인 대각 행렬을 의미한다. 대각 행렬은 행과 열의 크기가 같은 정사각행렬(Square Matrix)에서만 정의된다. 주로 대각 행렬은 D, 단위 행렬은 I로 표현된다.
Transpose
행렬의 전치(Transpose)는 기존 행렬의 행과 열을 바꾸는 연산을 의미한다. 예를 들어, 다음과 같은 행렬을 생각하자.
A=⎝⎜⎛135246⎠⎟⎞
이 행렬을 전치하면 다음과 같다. 전치 행렬은 T로 표현한다.
AT=(123456)
Operations of Matrix
덧셈과 뺄셈
행렬의 덧셈과 뺄셈은 크기가 같은 행렬들에서만 정의되며, 동일한 위치의 원소끼리 더하거나 빼서 동일한 크기의 행렬을 결과값으로 만드는 연산이다. 연산 과정이 매우 간단하고 직관적이므로 본 포스트에서는 자세히 설명하지 않는다.
스칼라곱
스칼라×행렬 꼴의 곱셈은 모든 행렬 원소에 곱하려는 스칼라를 곱하여 결과를 구할 수 있다. 이 역시 연산 과정이 매우 간단하고 직관적이므로 자세히 설명하지 않는다.
행렬 원소곱
행렬 원소곱은 차원이 동일한 두 행렬의 동일 위치 원소를 서로 곱하는 방법이며, 기호로 ⊙과 같이 나타낸다.
행렬곱
행렬곱은 행렬 간 서로 곱하는 것을 의미한다. 행렬곱은 앞 행렬의 열 크기와 뒷 행렬의 행 크기가 일치해야 계산 가능하다. 행렬곱은 기호 없이 두 행렬을 나열함으로써 나타낸다. 행렬곱은 앞에 위치하는 행과 뒤에 뒤치하는 열의 원소를 각각 곱한 후 더하는 것과 같다. 간단한 예시를 통해 이해해 보자.
행렬식(Determinant)은 행렬의 특성을 하나의 숫자로 표현하는 방법의 하나이다. 좀 더 자세히 알아보기 위해 다음과 같은 3×3 행렬을 생각하자.
A=⎝⎜⎛a11a21a31a12a22a32a13a23a33⎠⎟⎞
이 행렬의 기본곱(Elementary Product)는 다음과 같이 정의된다.
a1−a2−a3−
빈 자리(-)에는 {1,2,3}의 순열(Permutation)이 들어간다. 다음과 같은 6종류의 permutation이 있다.
(1,2,3)(2,3,1)(3,1,2)(1,3,2)(2,1,3)(3,2,1)
이때, 큰 수가 작은 수를 선행하는 것을 전도(Inversion)이라고 하고, Inversion이 짝수 번 일어난 permutation을 even(짝), inversion이 홀수 번 일어난 permutation을 odd(홀)이라고 정의한다. 위 예시에서 윗줄의 permutation이 모두 even이고, 아랫줄의 permutation이 모두 even이다.
이제 이것을 일반화해 보자. n×n행렬 A의 elementary product는 다음과 같다.
a1j1a2j2a3j3⋯anjn
이때 {j1,j2,⋯,jn}은 {1,2⋯,n}의 permutation이다. 이제 이 elementary product에 (j1,j2,⋯,jn)가 even이면 +를, odd면 −를 붙인다. 이를 부호가 붙은 기본곱(Signed Elementary Product)라고 한다.
행렬의 Signed Elementary Product를 모두 더한 것을 행렬식(Determinant)라고 하고, determinant는 det(A) 또는 ∣A∣와 같이 나타내며 다음과 같이 표현된다.
det(A)=∑±a1j1a2j2a3j3⋯anjn
행렬식의 절대값은 해당 행렬이 단위 공간을 얼마나 늘이거나 줄였는지를 나타낸다. 예를 들어, 만약 행렬식의 값이 1이라면 해당 행렬이 단위 공간과 부피가 같다는 것을 표현하고, 행렬식이 0이라면 해당 행렬이 나타내는 부피가 0임을 의미한다.
Minor Determinant
제 (i,j)소행렬식(Minor Determinant of Entry aij)이란 n×n행렬 A의 i행과 j열을 제거하고 만든 부분행렬의 행렬식으로, Mij와 같이 표현한다. 이를 식으로 표현하면 다음과 같다.
Confactor Matrix & Adjoint Matrix
여인수(Confactor)는 다음과 같이 정의된다.
Cij=(−1)i+jMij
여인수로 이루어진 행렬을 여인수 행렬(Confactor Matrix)이라고 한다. 여인수 행렬은 다음과 같이 표현된다.
즉, 동일한 위치의 스칼라를 모두 곱하여 더하여 내적을 구할 수 있다. 내적은 다른 연산과는 달리 벡터를 연산하여 스칼라를 결과값으로 내어 놓는다. 내적은 정사영(projection)의 개념을 이용하여 좀 더 자세히 설명할 수 있지만, 본 포스트에서는 그 결과만을 설명한다. 두 벡터가 이루는 각의 크기를 θ라고 할 때,
u⋅v=∣∣u∣∣∣∣v∣∣cosθ
이다. 이때 ∣∣u∣∣은 벡터의 길이 또는 노름(Norm)을 나타내고, 다음과 같이 정의된다.
∣∣u∣∣=u12+u22+⋯+un2
Linear Transformation
정의역(Domain) A의 각 원소를 f가 치역(Codomain) B의 단 하나의 원소에 대응시킬 때 이 f를 함수(Function)이라고 함을 기억하자. a∈A가 b∈B에 대응될 때, b=f(a)라고 하고 b가 a의 상(image)이라고 표현한다. 대부분의 잘 알려진 함수의 경우, A,B가 실수 집합이고, 이 경우 f는 real-valued function of a real variable이라고 불린다(적절한 번역어를 찾지 못하였기 때문에 영어로만 기술한다. 적절한 번역어가 있는 경우 댓글로 추천받아 이후 반영하도록 하겠다.).
정의역과 치역은 다차원일 수 있는데, 이때 n차원 실수 집합을 Rn과 같이 표현한다. 만약 어떤 함수의 정의역이 Rn이고, 치역이 Rm이라면 이 함수는 Rn에서 Rm으로의 사영(Map) 또는 변환(Transformation)이라고 부른다. 또 m=n일 경우 이 변환 f:Rn→Rn는 Rn의 연산자(Operator)라고 한다. f1,f2,⋯,fm이 n개의 실수 변수들에 대한 실숫값 함수일 때,
정리가 잘 된 글이네요. 도움이 됐습니다.