Home [BoostCamp AI Tech / Level 1 - AI Math] Day3 - Matrix
Post
Cancel

[BoostCamp AI Tech / Level 1 - AI Math] Day3 - Matrix

AI Math : Matrix


Matrix

\[\begin{aligned} \mathbf{X} = \begin{bmatrix} \mathbf{x}_1 \\ \mathbf{x}_2 \\ \mathbf{x}_3 \\ \vdots \\ \mathbf{x}_n \end{bmatrix} = \begin{bmatrix} x_{11} & x_{12} & ... & x_{1m} \\ x_{21} & x_{22} & ... & x_{2m} \\ \vdots & \vdots & x_{ij} & \vdots \\ x_{n1} & x_{n2} & ... & x_{nm} \end{bmatrix} = (x_{ij}) \end{aligned}\]
  • 벡터를 원소로 갖는 2차원 배열
  • 전치행렬 (Transpose)

    \[\mathbf{X}^\intercal = (x_{ji})\]
  • 행렬곱

    \[\begin{aligned} \mathbf{X}\mathbf{Y} = \left(\sum_{k}x_{ik}y_{kj} \right) \end{aligned}\]
    • 행렬곱은 @를 사용하면 연산가능
  • 행렬내적
    • 실제로 행렬 내적을 계산한 것은 $\text{tr}\left(\mathbf{X}\mathbf{Y}^\intercal\right)$의 결과이다.
    \[\begin{aligned} \mathbf{X}\mathbf{Y}^\intercal = \left(\sum_{k}x_{ik}y_{jk} \right) \end{aligned}\]
  • 행렬은 벡터공간에 사용되는 연산자와 같음
    • 특정 벡터공간에서 다른 벡터공간으로 변환해주는 역할을 함
    \[\begin{aligned} \begin{bmatrix} z_1 \\ z_2 \\ z_3 \\ \vdots \\ \mathbf{z}_n \end{bmatrix} = \begin{bmatrix} a_{11} & a_{12} & ... & a_{1m} \\ a_{21} & a_{22} & ... & a_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & ... & a_{nm} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ ... \\ \mathbf{x}_m \end{bmatrix} \\\\ \mathbf{Z} \quad\qquad\qquad\quad \mathbf{A} \quad\qquad\qquad \mathbf{X}\quad \end{aligned}\]
    • 행렬곱은 패턴추출, 데이터 압축과 같은 경우에 사용
  • 역행렬

    \[\mathbf{A}\mathbf{A}^{-1} = \mathbf{I} = \mathbf{A}^{-1}\mathbf{A}\]
    • determinant가 0이 아닌 경우에 가능
    • np.linalg.inv를 활용하여 계산가능
  • 역행렬 계산이 어려운 경우
    • 유사 역행렬을 활용하여 계산
    • 무어-펜로즈 역행렬 $\mathbf{A}^{+}$

      \[\begin{aligned} n \geq m \quad : \quad \mathbf{A}^{+} = (\mathbf{A}^\intercal\mathbf{A})^{-1}\mathbf{A}^\intercal \\ n \leq m \quad : \quad \mathbf{A}^{+} = \mathbf{A}^\intercal(\mathbf{A}\mathbf{A}^\intercal)^{-1} \end{aligned}\]
      • np.linalg.pinv를 활용하여 계산가능
  • 유사 역행렬 활용
    • 연립방정식의 해를 구하는 경우 활용 ($n \leq m$)
    \[\begin{aligned} a_{11}x_{1} + a_{12}x_{2} + ... + a_{1m}x_{m} = b_{1} \\ a_{11}x_{1} + a_{12}x_{2} + ... + a_{1m}x_{m} = b_{1} \\\\ \vdots \qquad\qquad\qquad\quad \\\\ a_{n1}x_{1} + a_{n2}x_{2} + ... + a_{nm}x_{m} = b_{n} \\ \end{aligned} \quad \rightarrow \quad \begin{matrix} \mathbf{A}\mathbf{x} &=& \mathbf{b} \\ \Rightarrow& \mathbf{x} &=& \mathbf{A}^{+}\mathbf{b} \\ & &=& \mathbf{A}^\intercal(\mathbf{A}\mathbf{A}^\intercal)^{-1}\mathbf{b} \end{matrix}\]
    • 선형회귀식을 찾을 수 있음 ($n \geq m$) : 방정식을 푸는 것은 불가능함
    \[\begin{aligned} \begin{bmatrix} - & \mathbf{x}_{1} & - \\ - & \mathbf{x}_{2} & - \\ & \vdots & \\ - & \mathbf{x}_{n} & - \end{bmatrix} \end{aligned} \begin{aligned} \begin{bmatrix} \mathbf{\beta_1} \\ \mathbf{\beta_2} \\ \vdots\\ \mathbf{\beta_m} \end{bmatrix} \end{aligned} = \begin{aligned} \begin{bmatrix} \mathbf{y_1} \\ \mathbf{y_2} \\ \vdots\\ \mathbf{y_m} \end{bmatrix} \end{aligned} \quad\quad \begin{aligned} \mathbf{X}\beta = \hat{\mathbf{y}} \approx \mathbf{y}\quad\quad\quad\quad\quad\quad \\ \begin{matrix} \Rightarrow & \beta &=& \mathbf{X}^{+}\mathbf{y} \\ &&=& \left(\mathbf{X}^\intercal\mathbf{X} \right)^{-1}\mathbf{X}^\intercal\mathbf{y} \end{matrix} \end{aligned}\]
This post is licensed under CC BY 4.0 by the author.

[BoostCamp AI Tech / Level 1 - Python/PyTorch] Day3 - Numpy

[BoostCamp AI Tech / Level 1 - AI Math] Day3 - 경사하강법 (순한맛)

Comments powered by Disqus.