Posts [프로그래머스 인공지능스쿨] Week2-2 인공지능 수학 : 미적분
Post
Cancel

[프로그래머스 인공지능스쿨] Week2-2 인공지능 수학 : 미적분

강의


LU분해

L : lower triangular matrix(하삼각행렬) U : upper triangular matrix(상삼각행렬)

\[A = L U\] \[\left[\begin{array}{rrr} *&*&*\\ *&*&*\\ *&*&* \end{array}\right] = \left[\begin{array}{rrr} *&0&0\\ *&*&0\\ *&*&* \end{array}\right] \left[\begin{array}{rrr} *&*&*\\ 0&*&*\\ 0&0&* \end{array}\right]\]

\(Ax = b\) 의 문제에서 \(A\)를 LU 분해하였다면,
다음과 같이 나타낼 수 있다.

\[Ax = b\] \[(LU)x = b\] \[L(Ux) = b\] \[Ly = b, (Ux = y)\]

LU 분해는 \(Ax = b\) 에서 \(A^{-1}\) 을 이용해 직접 해를 구하는 것보다 수치적으로 안정적이다.
\(b\) 가 자주 업데이트되는 경우, \(A\) 를 미리 LU 분해해두면 \(b\) 가 업데이트될 때마다 실시간으로 해를 구할 수 있다.

행렬 연산

  • 행렬 벡터

하나의 행이나 열을 가지는 특수한 행렬을 각각 행 벡터, 열 벡터라고 한다.

\[\left[\begin{array}{rrrr} 2&1&0&-3 \end{array}\right] , \left[\begin{array}{r} 2\\ 1\\ 0\\ \end{array}\right]\]
  • 스칼라(Scalar)

1 x 1 행렬

\[\left[\begin{array}{r} 2\\ \end{array}\right]\]
  • 전치 행렬(Transpose matrix)

\(A^{T}\) 는 \(A\) 의 행을 열로, \(A\) 의 열을 행으로 가지는 행렬이다.
즉, \((A^{T})_{ij} = (A)_{ij}\)

\[A = \left[\begin{array}{rr} 1&2\\ 3&4\\ 5&6 \end{array}\right]\] \[A^{T} = \left[\begin{array}{rrr} 1&3&5\\ 2&4&6 \end{array}\right]\]
  • 영 행렬(Zero matrix)

영 행렬은 모든 요소가 0으로 이루어져 있으며, \(O\) 으로 표기한다.
행렬합에 대한 항등원 역할을 한다.
행렬의 합은 각 행렬의 행과 열의 개수가 모두 같을 때만 성립한다.
\(A + O = O + A = A\)

  • 정방 행렬(Square matrix)

행과 열의 개수가 모두 n인 모양의 행렬을 n차 정방행렬 이라 한다.

  • 항등 행렬(Identity matrix)

주 대각선이 1이고 나머지 요소는 모두 0인 n차 정방행렬을 항등행렬 이라 한다.
항등행렬은 행렬곱에 대한 항등원 역할을 한다.

  • 행렬의 곱

a x b, c x d 행렬을 곱할 때, b = c 가 성립해야만 곱할 수 있으며, 결과는 a x d 행렬이 됨
일반적으로 행렬의 곱셈연산은 교환법칙이 성립하지 않음.(\(AB \neq BA\))
행렬의 곱은 병렬처리가 가능하다.

  • 텐서(Tensor)

텐서는 스칼라, 벡터, 행렬을 아우르는 개념이다.
숫자가 늘어설 수 있는 방향이 k개면 k-텐서로 부른다.

0-텐서: 스칼라 1-텐서: 벡터 2-텐서: 행렬

내가 이해하기로, k-텐서의 k는 데이터의 차원이랑 같은 의미다.
즉, 3차원이면 3-텐서다.

  • 분할 행렬(Partitioned matrix)

행렬을 조각 단위로 분할하여 생각해도 무방하다.
행렬은 부분행렬로 이루어진 직사각형 구조로 확장해서 생각할 수 있다.
예를들어 두 행렬의 곱 \(AB = C\) 를 아래와 같이 볼 수 있다.

\[AB = A \left[\begin{array}{rrrr} b_{1}&b_{2}& ... &b_{n}\\ \end{array}\right] = \left[\begin{array}{rrrr} Ab_{1}&Ab_{2}& ... &Ab_{n}\\ \end{array}\right] = C\]

혹은,

\[AB = \left[\begin{array}{r} a_{1}\\ a_{2}\\ ...\\ a_{m} \end{array}\right] B = \left[\begin{array}{r} a_{1}B\\ a_{2}B\\ ...\\ a_{m}B \end{array}\right] = C\]
  • 선형 조합(Linear combination)

Ax는 A의 열벡터에 대한 선형조합이다.
행렬을 구조적으로 바라보는 가장 효과적인 방법은 다음과 같다.
행렬은 열벡터의 리스트이다.

\[Ax = \left[\begin{array}{rrrr} a_{11}&a_{12}& ... &a_{1m}\\ a_{21}&a_{22}& ... &a_{2m}\\ ...&...& &...\\ a_{n1}&a_{n2}& ... &a_{nm} \end{array}\right] \left[\begin{array}{r} x_{1}\\ x_{2}\\ ...\\ x_{m} \end{array}\right] = \left[\begin{array}{rrrr} a_{1}&a_{2}& ... &a_{m} \end{array}\right] \left[\begin{array}{r} x_{1}\\ x_{2}\\ ...\\ x_{m} \end{array}\right] = x_{1}a_{1}+x_{2}a_{2}+...+x_{n}a_{n}\]

이처럼 벡터들에 대한 가중치 합을 특히 선형조합이라 부른다.

좌표계 변환(Change of basis)

  • 벡터의 표현

벡터는 크기와 방향을 가진 물리량으로 다음과 같이 표현된다.

1
2
3
4
5
6
7
8
1. 물리적 표현  
  벡터 v를 화살표로 표현한다.  
  v의 크기: 화살표의 길이  
  v의 방향: 화살표의 방향
2. 수학적 표현  
  벡터의 시작점을 원점에 맞추고 끝점의 위치를 벡터 v의 수학적 표현으로 정의한다.  
  v의 크기: 화살표의 길이를 계산  
  v의 방향: 화살표의 방향을 벡터로 표현  

다음과 같이 2-벡터 v가 있을 때, 이 벡터는 xy-평면 상에서는 원점 (0,0)에서 시작하여 (a,b)에서 끝나는 벡터를 의미한다.

\[v = \left[\begin{array}{r} a\\ b \end{array}\right] = \left[\begin{array}{rr} 1&0\\ 0&1 \end{array}\right] \left[\begin{array}{r} a\\ b \end{array}\right] = a \left[\begin{array}{r} 1\\ 0 \end{array}\right] + b \left[\begin{array}{r} 0\\ 1 \end{array}\right]\]

이 수식의 요소는 다음과 같다.

\[a \left[\begin{array}{r} 1\\ 0 \end{array}\right] : x-축으로 내린 수선의 발.\] \[b \left[\begin{array}{r} 0\\ 1 \end{array}\right] : y-축으로 내린 수선의 발.\] \[xy-좌표계: \left[\begin{array}{rr} 1&0\\ 0&1 \end{array}\right]\]

예를 들어, 2-벡터 벡터 v가 표준좌표계에서 (2,3)으로 표현된다고 하자.
벡터 (3,1)과 (1,2)를 기저벡터로 가지는 새로운 좌표계를 도입했을 때,
해당 벡터 v는 어떤 좌표값을 가질까?
이를 행렬로 표현하면 다음과 같다.

\[\left[\begin{array}{rr} 3&1\\ 1&-2 \end{array}\right] v = \left[\begin{array}{r} 2\\ 3 \end{array}\right]\]

선형함수(Linear function)

만약 함수 f가 아래 두가지 조건을 모두 만족하면 함수 f를 선형 함수라고 한다.

\(f(x+y) = f(x) + f(y)\)
\(f(cx) = cf(x)\) (단, c는 임의의 스칼라)

선형변환(Linear Transformation)

함수의 입,출력이 벡터인 함수를 변환(transformation)이라고 한다.
입, 출력벡터 n,m이 같은 경우, 해당 변환을 연산자(operator)라고 한다.

행렬 변환은 위의 선형 함수의 두 조건을 모두 만족하므로, 선형변환이다.
또한, 모든 선형반환은 행렬로 표현이 가능하다.
즉, 행렬은 선형변환의 구현체이다.

선형변환 코딩

  1. 구현하고자 하는 기능의 입, 출력이 벡터로 정의되는지 확인
  2. 구현하고자 하는 기능이 선형인지 확인
  3. 입력이 n-벡터이고, 출력이 m-벡터이면 m x n 표준행렬을 구성
This post is licensed under CC BY 4.0 by the author.