본문 바로가기
ML/ML-수학, 확률과 통계

선형대수(Linear algebra)-행렬, 행렬의 곱, 성질(2)

by lucian 2021. 6. 3.

* 이 공부노트는 프로그래머스 인공지능 데브코스 강창성 교수님의 강의를 바탕으로 제작되었습니다.

* 이번엔 진짜 이해하기 힘들 것을 알아가면서 정리해보자(지친다ㅜㅜ).

 


치역(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

 

행벡터의 의미와 벡터의 내적 - 공돌이의 수학정리노트

 

angeloyeo.github.io

 

 


행렬식 - 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$인 경우)

 

댓글