* 이 공부노트는 프로그래머스 인공지능 데브코스 강창성 교수님의 강의를 바탕으로 제작되었습니다.
* 이번엔 진짜 이해하기 힘들 것을 알아가면서 정리해보자(지친다ㅜㅜ).
치역(Range), 영공간(Nullspace)
벡터의 집합($\{x_1,x_2,\ldots,x_n\}$)에 대한 생성(span)
$$\mathrm{span}(\{x_1,x_2,\ldots,x_n\}) = \left\{ v : v = \sum_{i=1}^n\alpha_i x_i, \alpha_i \in \mathbb{R} \right\}$$
행렬의 치역 (range)
행렬 $A\in \mathbb{R}^{m\times n}$의 치역 $\mathcal{R}(A)$는 A의 모든 열들에 대한 생성(span)이다.
$$\mathcal{R}(A) = \{ v\in \mathbb{R}^m : v = Ax, x\in \mathbb{R}^n\}$$
이 부분을 해석하기 어려웠다. 그러나 나름 간단하다.
A라는 행렬이 있을 때, 행렬의 열 벡터가 치역(결과가 되는). 그 모든 결과값이 열공간이라 하고 치역이라 한다.
\begin{align*}
\begin{bmatrix}
1& 2\\
2 & 4\\
\end{bmatrix}
\begin{bmatrix}
a\\
c\\
\end{bmatrix}
= \begin{bmatrix}
a+2c\\
2a+4c\\
\end{bmatrix}
\end{align*}
여기서 결과 벡터가 치역이 된다. 이는 a와 c에 어떤 값을 넣어도 y=2x값의 선형값으로 바뀌기에 치역이라고 하며, 열공간이라 한다.(rank가 1이라 하나의 선으로 나왔을 뿐, rank가 2이상이면 공간이 될 것이라 생각한다.)
영공간 (nullspace)
행렬 $A\in \mathbb{R}^{m\times n}$의 영공간(nullspace) $\mathcal{N}(A)$는 $A$와 곱해졌을 때 0이 되는 모든 벡터들의 집합이다.
$$\mathcal{N}(A) = \{x\in \mathbb{R}^n : Ax = 0\}$$
중요한 성질: $$\{w : w = u + v, u\in \mathcal{R}(A^T), v \in \mathcal{N}(A)\} = \mathbb{R}^n ~\mathrm{and}~ \mathcal{R}(A^T) \cap \mathcal{N}(A) = \{0\}$$
$\mathcal{R}(A^T)$와 $\mathcal{N}(A)$를 직교여공간(orthogonal complements)라고 부르고 $\mathcal{R}(A^T) = \mathcal{N}(A)^\perp$라고 표시한다.
A행렬의 열벡터의 공간과 행백터의 공간을 그려준다.
A의 열벡터 [2,4] [1,2]
행벡터 [2,1] [4,2]
위의 공식처럼 $A\vec{x} = 0$ 와 같은 공간을 만들면, 예로 [-1,2]와 [1,-2]는 각각 0이 된다. 이를 기준으로 그려주면 행공간과 영공간이 서로 직교함을 볼 수 있다.
위의 개념을 이해하는데 공돌이의 수학정리노트가 짱이였다.... 나중에 보기 위해 링크를 걸어놓는다.
https://angeloyeo.github.io/2020/09/09/row_vector_and_inner_product.html
행렬식 - LA.det(A)
정방행렬 $A\in \mathbb{R}^{n\times n}$의 행렬식(determinant) $|A|$ (또는 $\det A$)는 다음과 같이 계산할 수 있다.
$|A| = A_{1,1}\times|A^{(1,1)}| - A_{1,2}\times|A^{(1,2)}| + A_{1,3}\times|A^{(1,3)}| - A_{1,4}\times|A^{(1,4)}| + \cdots ± A_{1,n}\times|A^{(1,n)}|$
where $A^{(i,j)}$ is the matrix $A$ without row $i$ and column $j$.
$A = \begin{bmatrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 0
\end{bmatrix}$
위 식을 사용하면 아래와 같이 전개된다.
\begin{align*}
|A| = 1 \times \left | \begin{bmatrix} 5 & 6 \\ 8 & 0 \end{bmatrix} \right |
- 2 \times \left | \begin{bmatrix} 4 & 6 \\ 7 & 0 \end{bmatrix} \right |
+ 3 \times \left | \begin{bmatrix} 4 & 5 \\ 7 & 8 \end{bmatrix} \right |
\end{align*}
이제 위의 $2 \times 2$ 행렬들의 행렬식을 계산하면 된다.
$\left | \begin{bmatrix} 5 & 6 \\ 8 & 0 \end{bmatrix} \right | = 5 \times 0 - 6 \times 8 = -48$
$\left | \begin{bmatrix} 4 & 6 \\ 7 & 0 \end{bmatrix} \right | = 4 \times 0 - 6 \times 7 = -42$
$\left | \begin{bmatrix} 4 & 5 \\ 7 & 8 \end{bmatrix} \right | = 4 \times 8 - 5 \times 7 = -3$
최종결과는 다음과 같다.
$|A| = 1 \times (-48) - 2 \times (-42) + 3 \times (-3) = 27$
행렬식의 기하학적 해석
행렬의 행벡터가 이루는 행벡터의 공간(집합 S라 치면) = 행렬식의 절대값과 부피가 일치함을 보인다.
(단 계수는 0~1사이)
다시 말해 행렬식의 절대값이 이 $S$의 부피(volume)과 일치함.
예를 들어, 행렬
$$A = \begin{bmatrix}
1 & 3 \\
3 & 2
\end{bmatrix}$$
의 행벡터들은
$$a_1 = \begin{bmatrix}
1\\
3
\end{bmatrix}
a_2 = \begin{bmatrix}
3\\
2
\end{bmatrix}$$
이다. $S$에 속한 점들을 2차원평면에 나타내면 다음과 같다.
평행사변형 $S$의 넓이는 7인데 이 값은 $A$의 행렬식 $|A|=-7$의 절대값과 일치함을 알 수 있다.
이차형식(Quadratic Forms)
정방행렬 $A\in \mathbb{R}^{n\times n}$와 벡터 $x\in \mathbb{R}^n$가 주어졌을 때, scalar값 $x^TAx$를 이차형식(quadratic form)이라고 부른다. ($(1\times n) (n\times n) (n\times 1) = scalar$)
식으로 표현하면,
$$x^TAx = \sum_{i=1}^n x_i(Ax)_i = \sum_{i=1}^n x_i \left(\sum_{j=1}^n A_{ij}x_j\right) = \sum_{i=1}^n\sum_{j=1}^n A_{ij}x_ix_j$$
다음이 성립됨을 확인할 수 있다.
$$x^TAx = (x^TAx)^T = x^TA^Tx = x^T\left(\frac{1}{2}A + \frac{1}{2}A^T\right)x$$
$$ x^TAx +x^TA^Tx = 2(x^TAx)$$
$$ \frac{1}{2}(x^TAx +x^TA^Tx)=x^TAx$$
$$x^T\left(\frac{1}{2}A + \frac{1}{2}A^T\right)x=x^TAx$$
따라서 이차형식에 나타나는 행렬은 대칭행렬로 가정하는 경우가 만다.
( $(\frac{1}{2}A + \frac{1}{2}A^T\)$=대칭행렬)
- 대칭행렬 $A$가 0이 아닌 모든 벡터 $x$에 대해서 $x^TAx \gt 0$을 만족할 때, 양의 정부호(positive definite)라고 부르고 $A\succ 0$(또는 단순히 $A \gt 0$)로 표시한다. 모든 양의 정부호 행렬들의 집합을 $\mathbb{S}_{++}^n$으로 표시한다.
- 대칭행렬 $A$가 0이 아닌 모든 벡터 $x$에 대해서 $x^TAx \ge 0$을 만족할 때, 양의 준정부호(positive sesmi-definite)라고 부르고 $A\succeq 0$(또는 단순히 $A \ge 0$)로 표시한다. 모든 양의 준정부호 행렬들의 집합을 $\mathbb{S}_{+}^n$으로 표시한다.
- 대칭행렬 $A$가 0이 아닌 모든 벡터 $x$에 대해서 $x^TAx \lt 0$을 만족할 때, 음의 정부호(negative definite)라고 부르고 $A\prec 0$(또는 단순히 $A \lt 0$)로 표시한다.
- 대칭행렬 $A$이 0이 아닌 모든 벡터 $x$에 대해서 $x^TAx \leq 0$을 만족할 때, 음의 준정부호(negative sesmi-definite)라고 부르고 $A\preceq 0$(또는 단순히 $A \leq 0$)로 표시한다.
- 대칭행렬 $A$가 양의 준정부호 또는 음의 준정부호도 아닌 경우, 부정부호(indefinite)라고 부른다. 이것은 $x_1^TAx_1 > 0, x_2^TAx_2 < 0$을 만족하는 $x_1, x_2\in \mathbb{R}^n$이 존재한다는 것을 의미한다.
Positive definite 그리고 negative definite 행렬은 full rank이며 따라서 invertible이다.
Gram matrix - ML을 하게되면 자주나오는 특별한 행렬
임의의 행렬 $A\in \mathbb{R}^{m\times n}$이 주어졌을 때 행렬 $G = A^TA$를 Gram matrix(transpose한 것과 곱해서 늘 대칭행렬)라고 부르고 항상 positive semi-definite이다. 만약 $m\ge n$이고 $A$가 full rank이면, $G$는 positive definite이다.
고유값 (Eigenvalues), 고유벡터 (Eigenvectors) - eigenvalues, eigenvectors = LA.eig(A)
정방행렬 $A\in \mathbb{R}^{n\times n}$이 주어졌을 때, $Ax = \lambda x, x\neq 0$
을 만족하는 $\lambda \in \mathbb{C}$를 $A$의 고유값(eigenvalue) 그리고 $x\in \mathbb{C}^n$을 연관된 고유벡터(eigenvector)라고 부른다.
$\mathbb{C}$ : 실수값이 아닌 complex num. 복소수($i^2=-1$)
A=np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 0]])
코드 : eigenvalues, eigenvectors = LA.eig(A)
eigenvalues, eigenvectors
결과 : (array([12.12289378, -0.38838384, -5.73450994]),
array([[-0.29982463, -0.74706733, -0.27625411],
[-0.70747178, 0.65820192, -0.38842554],
[-0.63999131, -0.09306254, 0.87909571]]))
코드 : np.matmul(A, eigenvectors[:, 0])
결과 : array([-3.63474211, -8.57660525, -7.75854663])
코드 : eigenvalues[0] * eigenvectors[:, 0]
결과 : array([-3.63474211, -8.57660525, -7.75854663])
행렬미분 (Matrix Calculus)
The Gradient
행렬 $A\in \mathbb{R}^{m\times n}$를 입력으로 받으면 미분한 행렬의 형태로 반환하는 함수이다.
$$
\nabla_Af(A)\in \mathbb{R}^{m\times n} = \begin{bmatrix}
\frac{\partial f(A)}{\partial A_{11}} & \frac{\partial f(A)}{\partial A_{12}} & \cdots & \frac{\partial f(A)}{\partial A_{1n}}\\
\frac{\partial f(A)}{\partial A_{21}} & \frac{\partial f(A)}{\partial A_{22}} & \cdots & \frac{\partial f(A)}{\partial A_{2n}}\\
\vdots & \vdots & \ddots & \vdots\\
\frac{\partial f(A)}{\partial A_{m1}} & \frac{\partial f(A)}{\partial A_{m2}} & \cdots & \frac{\partial f(A)}{\partial A_{mn}}
\end{bmatrix}
$$
다시 말해 이 gradient($\nabla_Af(A)$)에 행렬A가 들어오면 결과로 행렬이 나온다.
$$(\nabla_Af(A))_{ij} = \frac{\partial f(A)}{\partial A_{ij}}$$
그럼 벡터로 들어오면 어떻게 될까??
$$
\nabla_x f(x) =
\begin{bmatrix}
\frac{\partial f(x)}{\partial x_1}\\
\frac{\partial f(x)}{\partial x_2}\\
\vdots\\
\frac{\partial f(x)}{\partial x_n}
\end{bmatrix}
$$
이처럼 gradient($\nabla_xf(x)$)에 벡터x가 들어오면 결과로 벡터가 나온다.
중요한 공식들
$x, b\in \mathbb{R}^n$, $A\in \mathbb{S}^n$일 때 다음이 성립한다.
A는 대칭행렬이라 가정한다.
(굉장히 자주 쓰일 공식들이라고 막 알고 있어야 된다고 하셨음...)
1. $\nabla_x b^Tx = b$ : 대충 $bx \frac{\partial f(x)}{\partial x}=b$ 이런 느낌??
2. $\nabla_x x^TAx = 2Ax$ : 이건 이건가? $Ax^2 \frac{\partial f(x)}{\partial x}=2Ax$
3. $\nabla_x^2 x^TAx = 2A$ : $Ax^2 \frac{\partial f(x)}{\partial x}^2=2A$
4. $\nabla_A \log |A| = A^{-1}$ ($A\in\mathbb{S}_{++}^n$인 경우)
'ML > ML-수학, 확률과 통계' 카테고리의 다른 글
정규화(Normalization)와 표준화(Standardization)를 하는 이유 (0) | 2022.01.05 |
---|---|
평균, 분산, 표준편차의 이야기 (0) | 2022.01.04 |
확률분포(Probability Disstributions)- 이산확률분표(이항분포만) (0) | 2021.06.07 |
선형대수(Linear algebra)-행렬, 행렬의 곱, 성질(1) (0) | 2021.06.03 |
확률과 통계 - 베이즈 정리 (0) | 2021.06.02 |
댓글