벡터란?
- Def) Vector
- 수학의 관점에서는 일반적으로 추상적인 벡터공간을 구성하는 원소
- 보통 크기와 방향성을 갖는 물리량을 나타내는데 사용, 방향이 없으면 스칼라!
- 4차원 이상으로 가면 방향성 표현이 모호해져 그냥 벡터공간에서 꺼내왔으면 벡터라고 표현
- 공간에서 한점을 나타내며 원점으로부터 상대적 위치를 표현한다.
- 수학적으로 표시할 때 열벡터(Column)가 기본이고 행(Row)벡터로 표현시 아래와 같이 트랜스포즈(Transpose)하여 사용한다.
$$X^T = [1, 2, 3]$$
- 파이썬에서는 Numpy를 사용해 벡터를 생성하는데 기본적으로 행벡터로 생성이된다.
벡터의 연산
- 벡터의 차원이 같으면 덧셈, 뺄셈, 성분곱(elementewise product)이 가능하다.
- 성분곱 : 해당 차원의 원소끼리 곱해진다. 파이썬에선 *를 이용해 계산한다.
x = np.array([1, 2, 3]) y = np.array([4, 5, 6]) # elementwise product x * y == [4, 10, 18]
Norm
- 벡터의 norm은 원점에서부터의 거리를 뜻한다.
- ||x||기호를 사용하여 표시한다.
- 다양한 종류의 norm이 존재하지만 L1, L2 norm만 다뤄보자!
- 정의는 아래와같다
$$L1 : ||X||_1 = \sum |x_i|$$
$$L2 : ||X||_2 = \sqrt{(\sum|x_i|^2)}$$
- 즉, L1은 각 성분의 변화량의 절대값의 합 L2는 유클리드 거리이다.
Q) 왜 굳이 다름 norm을 정의하쥐?
A) 종류에 따라 기하학적 성질이 달라지고 쓰임이 달라서!
- L1 : Robust 학습, Lasso 회귀에 주로 사용
- L2 : Laplace 근사, Ridge 회귀에 주로 사용
- 내적(inner product)를 통해 두 벡터사이의 유사도를 측정할 수 있다
행렬이란?
- Def) 행렬(Matrix)
- 1개 이상의 수나 식을 직사각형의 배열로 나타낸 것
- 행렬의 의미
- 벡터가 공간에서 한 점을 의미한다면 행렬은 점 여러개를 나타낸다(행 하나가 점 하나!)
- 또는 벡터를 다른 공간으로 mapping시키는 역할로 이해할 수 있다, 이를 통해 패턴 추출이나 데이터 압축이 가능하다(모든 선형변환은 행렬곱으로 계산 가능!)
- 행렬의 곱셈
- AB = C인 행렬을 생각해보자
- A벡터의 i번째 행백터와 B벡터의 j번째 열벡터의 내적을 계산한 것이 C벡터의 (i, j)의 성분이 된다
- 이러한 계산을 위해서는 A의 column의 수와 B의 row의 개수가 동일 해야하며, 계산 결과는 A의 row by B의 column 사이즈를 가진다.
- numpy의 np.inner은 i번째 행벡터와 j번째 행벡터 사이의 내적을 성분으로 하는 행렬의 계산으로 일반적으로 수학에서 얘기하는 내적과는 의미가 다르니 주의해야한다
- Def) 역행렬(Inverse matrix)
- n by n행렬 A에 대하여 AX = XA = I를 만족하는 행렬 X를 역행렬이라 한다. 즉, 주어진 행렬의 곱셈에 대한 역원이다 !
- 역행렬을 통하여 행렬곱을 통해 mapping시켰던걸 원래대로 돌릴 수 있다
- 역행렬은 행과 열 사이즈가 같아야하고 행렬식(Det)가 0이 아닌경우에만 계산이 가능하며 그 외에는 pseudo inverse를 사용한다.
$$A^+ = (A^TA)^{-1}A^T, if \;\; n\geq m$$
$$A^+ = A^T(A^TA)^{-1}, if \;\; n\leq m$$
# 아래와 같이 numpy 라이브러리를 사용해 역행렬 계산이 가능하다.
np.linalg.inv(x)
# pseudo inverse
np.linalog.pinv(x)
반응형
'⚡AI > ∃Mathematics' 카테고리의 다른 글
공분산과 상관계수 (0) | 2022.02.03 |
---|---|
딥러닝을 위한 통계학 맛보기 (0) | 2022.01.21 |
딥러닝을 위한 확률론 맛보기 (0) | 2022.01.21 |
딥러닝 학습방법(비선형모델 학습) (0) | 2022.01.20 |
경사하강법(Gradient Decent) (0) | 2022.01.19 |