머신 러닝
특이값 분해(Singular Value Decomposition)란 무엇인가? PyTorch, TensorFlow, Numpy 사용해 특이값 분해하기
특이값 분해란 무엇인가?특이값 분해(Singular Value Decomposition, SVD)란 $m x n$ 차원의 행렬을 대각화해 세 개의 행렬로 분해하는 방법이다. 고유값 분해와 비슷하지만, 고유값 분해는 정사각 행렬에만 사용 가능한 반면, 특이값 분해는 직사각 행렬일 때도 사용 가능해 활용도가 높다. 특이값 분해를 수식으로 표현하면 다음과 같다. $$\mathbf{X} = \mathbf{U} \mathbf{\Sigma} \mathbf{V}^T$$ 여기서 각 기호는 다음과 같다.$\mathbf{X}$ : $m \times n$ 행렬.$\mathbf{U}$ : $m \times m$ 정사각 행렬로, $\mathbf{X}$의 좌특이 벡터(Left Singular Vectors)로 구성돼 직교 행렬..
고유 벡터(Eigenvector)와 고유 값(Eigenvalue)이란 무엇인가? Numpy, TensorFlow, PyTorch로 고유 벡터 구해보기
고유 벡터와 고유값고유 벡터(Eigenvector)는 어떤 선형 변환을 해도 방향이 변하지 않는 벡터를 뜻한다. 즉, 선형 변환에 의해 크기만 변하고 방향은 그대로 유지되는 벡터이다. 고유 값(Eigenvalue)은 고유 벡터가 선형 변환에 의해 변할 때 어느 정도 변했는지 크기를 나타내는 스칼라 값이다. 즉, 선형 변환을 가했을 때, 벡터가 늘어나거나 줄어드는 정도를 뜻한다. 따라서 행렬 $\mathbf{A}$와 고유 벡터 $\mathbf{v}$와 고유 값 $\lambda$가 있다고 하면 다음과 같은 수식이 성립한다. $$\mathbf{A} \mathbf{v} = \lambda \mathbf{v}$$ 고유값과 고유 벡터 직접 구해보기이번에는 다음과 같은 행렬에 대한 고유 값과 고유 벡터를 구해보자. ..
대칭 행렬(Symmetric Matrix)와 단위 행렬(Identity Matrix) 한 번에 정리하기: Numpy, TensorFlow, PyTorch 사용해 단위 행렬 만들기
대칭 행렬대칭 행렬(Symmetric Matrix)은 전치 행렬((Tranposed Matrix)과 원래 행렬이 같은 행렬을 의미한다. 즉, 행렬 $X$가 대칭 행렬이라면 $X = X^T$가 성립한다. 행렬이 Transpose 되었을 때 동일하기 때문에, $x_{ij}$와 $x_{ji}$의 원소가 같다. 대칭 행렬은 다음과 같은 모양을 갖는다. $X = \begin{bmatrix}x_{11} & x_{12} & x_{13} \\x_{12} & x_{22} & x_{23} \\x_{13} & x_{23} & x_{33}\end{bmatrix}$ Identity Matrix (단위 행렬)단위 행렬은 대각선 원소가 모두 1이고, 나머지 원소는 모두 0인 정사각 행렬이다. 단위 행렬은 보통 $I$로 표기되며..
L2 Norm과 Unit Vector 알아보기 : Numpy, TensorFlow, PyTorch의 Norm 연산과 Unit Vector
Vector와 L2 NormVector는 크기와 방향을 표현하는 데이터이다. 예를 들어 $[3,4]$ 라는 Vector가 있다면 이 값은 $[0,0]$을 기준으로 가로 방향으로 3만큼 세로 방향으로 4만큼 이동한 것을 나타낸다. 이러한 Vector 값의 크기값만을 수치화 하기 위한 것이 바로 Norm이며, Norm에는 L1 Norm, L2 Norm, Maximum Norm 등의 종류가 있다. 하지만, 가장 많이 사용되는 Norm은 L2 Norm이며 L2 Norm은 다음과 같은 수식으로 표현된다. $\| \mathbf{x} \|_2 = \sqrt{\sum_{i=1}^{n} x_i^2}$ L2 Norm을 사용해 Vector의 크기 값만을 계산하는 것은 어렵지 않다. 단순히 각 인자를 제곱해 더한 후 마지막에..