[딥러닝 이해] 01 스칼라, 벡터, 행렬, 행렬의 곱, 역행렬
딥러닝을 공부하며 필요한 수학 / 딥러닝 모델들을 정리할 예정입니다.
학습하고 있는 내용이기에 오류가 있을 수 있습니다. 오류나 틀린 부분이 있을 경우 언제든지 댓글 혹은 메일로 남겨주세요 😄
Scarlars
- A scalar is a single number(Integers, real numbers, rational numbers)
- ex. 0.1,1,1.5
import numpy as np
x = np.array(1.5)
Vectors
-
Vector는 scalar의 1-D array임
-
여기서 R의 뜻은 실수이며, n은 Columns의 수
import numpy as np
x = np.array([1,2,3,4,5])
Matrix
-
matrix는 scalar의 2-D array임
import numpy as np
x = np.array([[1,2,3,4],[5,6,7,8,5],[13,14,15,16]])
Tensors
-
Tensors는 여러 차원을 가진 배열
-
데이터사이언스 분야에서 Matrix는 수학적 차원에서 2차원까지 표현할 수 있는데, 텐서는 3차원 이상의 데이터를 표현한것
-
주로 3차원 이상을 텐서라고 하지만, 1차원 벡터나 2차원 행렬도 텐서라고 표현함.
-
따라서 텐서는 0차원의 Scalar, 1차원의 Vector, 2차원의 matrix 혹은 그 이상의 차원을 모두 포함하는 개념이라고 생각하면 된다.( in any dimension)
-
실제로, 벡터= 1차원 텐서, 행렬 = 2차원 텐서라고 표현함
출처:https://wikidocs.net/52460
import numpy as np
x = np.array([[[1,2,3],[4,5,6],[7,8,9]],[[10,20,30],[40,50,60],[70,80,90]],
[[100,200,300],[400,500,600],[700,800,900]]])
Matrix Transpose
행렬은 전치행렬은 주대각선을 축으로 하는 반사 대칭을 가하여 얻는 행렬이다. Notation은 다음과 같음
전치행렬은 다음과 같은 성질을 갖는다.
Matrix Product
행렬의 곱은 두 행렬 A, B가 각각 m x n, n × r 행렬일 때,
행렬곱은 결합법칙과 분배법칙이 성립한다. 하지만 교환법칙은 대부분의 경우 성립하지 않는다. 하지만 두 벡터 사이의 내적(dot product)은 교환법칙이 성립한다.
그리고, 두 벡터의 내적은 Scalar이기 때문에, 자기 자신의 전치행렬과 같음.
Hadamard product
- 일반 행렬곱은 m x n과 n x p의 꼴의 두 행렬을 곱하지만, 아다마르 곱은 같은 크기의 두 행렬의 각 성분을 곱하는 연산임 (m x n 과 m x n 행렬)
3 x 3 아다마르 곱 예시
Systems of Equations
systems of equations를 만족하는 x는 3가지 경우가 나옴
1) 솔루션이 없을 수도 있음. 2) 솔루션이 많음 3) 단 하나의 솔루션이 있을 수 있음 -> Ax=b라고 할 때, A^-1(가역)이 존재할때 하나의 솔루션이 있음
Identity Matrix
대각 행렬이 1이고 나머지는 0일때, identiy Matrix라고 함
Matrix Inversion
역행렬은 어떤 행렬 A와 곱했을 때, Identiy Matrix가 나오게 하는 행렬을 행렬 A의 역행렬이라고 함
-
이러한 역행렬은 연립방정식의 해를 빠르게 구할 수 있도록 하여, 복잡한 행렬식을 계산해야하는 인공지능 컴퓨터 계산의 핵심 개념임
- 만약 역행렬이 존재하지 않는 행렬이면 “Singular”라고 함
- 행렬은 다음과 같은 상황에서 역행렬을 가지지 않는다.
- More rows than columns
- More columns than rows
- Redundant rows/columns(“linearly dependent”,”low rank)