[boostcamp-ai-tech][AI-Math] 2. 행렬

whatSup CheatSheet·2022년 1월 18일
0

AI-Math

목록 보기
2/9
post-thumbnail
post-custom-banner

행렬이 뭔가요?

  • 목차
    • 행렬이란
    • 행렬을 이해하는 방법1. 벡터의 여러 점
    • 행렬을 이해하는 방법2. 차원이동을 위한 연산자
    • 역행렬과 유사역행렬

행렬이란

  • 행렬(matrix)는 벡터를 원소로 가지는 2차원 배열
  • 행렬의 특정 행(열)을 고정하면 행(열) 벡터라 부름.

    행렬 X = (xijx_{ij})

  • 전치행렬(transpose matrix) : 행과 열의 인덱스가 바뀐 행렬

    전치행렬 XT=(xji)X^T = (x_{ji})

행렬을 이해하는 방법 1. 벡터가 공간에서 한 점을 의미하면, 행렬은 여러 점을 의미함

  • 행렬끼리 같은 모양을 가지면 덧셈, 뺄셈, 성분곱을 할 수 있음(벡터와 동일)
  • 스칼라 곱도 벡터와 차이가 없음.
  • 행렬곱셈(matrix multiplication)은 i번째 행벡터와 j번째 열벡터 사이의 내적을 성분으로 가지는 행렬을 계산
    • X의 열의 개수와 Y의 행의 개수가 같아야 계산이 가능
    • XY = (xikyky\sum x_{ik}y_{ky})
    • XY != YX
    • numpy에선 @ 연산자 !
  • 행렬의 내적
    • 넘파이의 np.inner는 i번째 행벡터와 j번째 행벡터 사이의 내적을 성분으로 가지는 행렬을 계산
  • X, Y의 열의 개수가 같아야 계산 가능
  • XYTXY^T = (xikyjk\sum x_{ik}y_{jk})

행렬을 이해하는 방법 2. 행렬은 벡터공간에서 사용되는 연산자(operator)이다.

  • 행렬곱을 통해 벡터를 다른 차원의 공간으로 보낼 수 있다.
  • 행렬곱을 통해 패턴을 추출할 수 있고, 데이터를 압축할 수 있음.
    • 벡터 x를 벡터 z차원으로 보내기 위한 A 연산자
    • 모든 선형변환(linear transform)은 행렬곱으로 계산할 수 있음.

역행렬

  • 어떤 행렬 A의 연산을 거꾸로 되돌리는 행렬을 역행렬(inverse matrix)라고 부름(A1)A^{-1}).
  • 역행렬은 다음의 경우에만 계산할 수 있다.
    1. 행과 열 숫자가 같고 (n = m)
    2. 행렬식(determinant)이 0이 아닌 경우
  • np.linalg.inv

유사역행렬

  • 만일 역행렬을 계산할 수 없다면 유사역행렬(pseudo-inverse) 또는 무어-펜로즈(Moore-Penrose) 역행렬 A+A^+를 사용한다.

    차원에 주목 !

역행렬에는 순서가 상관없지만, 유사역행렬에서는 순서가 중요함(행, 열의 개수)

  • np.linalg.pinv

응용1. 연립방정식

  • 연립방적식의 해 구하기
    • 변수의 개수가 식의 개수보다 많으면 해가 무수히 많음. 이때, 해 중 하나를 유사역행렬을 통해 구할 수 있음
    • Ax=bAx = b
      -> x=x = A+bA^+b
      -> x=x = AT(AAT)1A^T (AA^T)^{-1} bb

응용2. 선형회귀 분석

  • 선형회귀식 찾기
    • XXβ\beta = yy -> 😵
      • 선형회귀분석은 연립방정식과 달리 행이 더 크므로 방정식을 푸는건 불가능
    • XXβ\beta = y^\hat{y} \approx yy -> 😁
      -> β\beta = X+yX^+y
      -> β\beta = (XTX)1XTy(X^TX)^{-1}X^Ty
      • 이처럼, Moore-Penrose 역행렬을 이용하면 y에 근접하는 y^\hat{y}을 찾을 수 있음(L2L_2-노름을 최소화하는 계수 β\beta)
profile
AI Engineer : Lv 0
post-custom-banner

0개의 댓글