[2주차]인공지능 수학 - 20211215(1)

김동영·2021년 12월 15일
0

좌표계에서의 벡터

벡터 v =(v1,v2,,vn)= (v_1, v_2, \dots, v_n)

벡터의 길이 : v=v12+v22++vn2||v|| = \sqrt{v_1^2 + v_2^2 + \dots + v_n^2}

벡터의 방향 : 벡터를 벡터의 길이로 나눈 것

1vv{1 \over ||v||}v

내적

두 벡터 u와 v에 대한 내적(inner product 혹은 dot product)는 다음과 같이 정의된다.

  • 좌표계 없이 표현할 경우
    두 n 벡터의 길이와 두 벡터 간의 사이각 θ\theta를 통해 다음과 같이 정의된다.
uv=uvcosθu \cdot v = ||u||||v||cos\theta
  • 좌표계에서 표현할 경우
    u=(u1,u2,,un),v=(v1,v2,,vn)u = (u_1, u_2, \dots, u_n), v = (v_1, v_2, \dots, v_n)의 좌표값을 통해 다음과 같이 정의된다.
    uv=u1v1+u2v2++unvnu \cdot v = u_1v_1 +u_2v_2 + \dots + u_nv_n

직교

두 벡터 u, v간 내적이 0이면 두 벡터는 직교(orthogonal)이다.

uv=0uvu \cdot v = 0 \Longleftrightarrow u \perp v
  • 직교 한다는 것의 물리적 의미는 uvu \perp v일 때, u 방향으로의 전진은 v 방향에서 전혀 측정되지 않는다는 것이다. 반대도 마찬가지 (각 방향으로서의 전진에 서로 관계가 없다고 이해하면 될듯)

투영


두 벡터 u, a가 있을 때 벡터 u를 a 위에 투영한 벡터를 projauproj_au라고 하고, 다음과 같이 계산한다.

  1. projauproj_au = 길이 * 방향일 때, 길이와 방향을 각각 구한다.
  2. projauproj_au(빨간색 화살표)의 길이는 ucosθ||u||cos\theta이다.
  3. 이 때, 앞서 ua=uacosθu⋅a=∣∣u∣∣∣∣a∣∣cosθ이기 때문에, ucosθ=uaa||u||cos\theta = {u \cdot a \over ||a||} 이다.
  1. 또한 projauproj_au의 방향은 a의 방향과 같다.
  2. 따라서 투영된 벡터 projauproj_au는 다음과 같다.
    projau=(uaa)(1aa)=(uaa2)aproj_au = ({u \cdot a \over ||a|| })({1 \over ||a||}||a||) = ({u \cdot a \over ||a||^2})a
  3. 이를 다르게 말하면 u의 기저 벡터 a에 대한 좌표값이라고 할 수 있다.

보완

이 때, 벡터 u를 a 위에 투영하고 남은 보완 벡터(complement vector)는 uprojauu-proj_au이다.(파란색 화살표)

그리고 투영된 벡터와 보완 벡터는 서로 직교한다.

projau=(uprojau)u=projau+(uprojau)proj_au = \perp (u-proj_au) \\ u = proj_au + (u-proj_au)
  • 두 벡터 u, a가 있을 때, 투영과 보완의 개념을 이용해 직교분할 할 수 있다.

직교 행렬과 선형 시스템

  • 행렬을 좌표계로 볼때, 행렬은 각 열벡터가 기저를 이루는 좌표계이다.
  • 직교 : 내적의 합이 0 일때
  • 직교 행렬 : 주어진 행렬의 모든 열 벡터가 서로 직교하는 것
  • 정규직교행렬 : 주어진 행렬이 직교행렬이고 모든 열벡터의 크기가 1인것

선형 시스템 Ax = b에서 행렬 A가 직교행렬이면, 해 x는 역행렬 A1A^{-1}의 계산 없이 다음과 같이 구할 수 있다.

  • x의 i번째 요소는 투영으로 계산할 수 있다. 즉 벡터 b를 행렬 A의 각 열벡터 aia_i에 투영한 연산 proj aib_{a_i}b로부터 xi=baiai2x_i={b \cdot a_i \over ||a_i||^2} 임을 계산할 수 있다.
  • x 의 i번째 요소와 j번째 요소의 계산은 독립적이다. 즉 x의 계산은 병렬 처리 가능하다.

선형 시스템 Ax = b에서 행렬 A가 직교행렬이면, 해 x는 역행렬 A1A^{-1}의 계산 없이 다음과 같이 구할 수 있다.

  • x의 i번째 요소는 내적으로 계산할 수 있다. 즉 벡터 b를 행렬 A의 각 열벡터 aia_i에 투영한 연산 proj aib_{a_i}b로부터 xi=baix_i=b \cdot a_i 임을 계산할 수 있다.
  • x 의 i번째 요소와 j번째 요소의 계산은 독립적이다. 즉 x의 계산은 병렬 처리 가능하다.

QR 분해

행렬 Q를 다음 두 행렬의 곱으로 나누는 행렬분해

  • Q : orthogonal matrix(정규직교행렬)
  • R : upper triangular matrix(상삼각행렬)

Ax = b 문제를 QR 분해시키면
Ax=b=(QR)x=Q(Rx)=Qy=bAx = b \\ = (QR)x = Q(Rx) \\ = Qy = b

QR 분해는 그람-슈미트 과정(Gram-Schmidt process)을 행렬로 코드화한 것인데 의미적으로

  • Q : 행렬 A에서 정규직교성을 추출한 행렬
  • R : 행렬 A에서 정규직교성을 추출한 후 남은(residual) 상삼각행렬

을 의미한다.

QR 분해의 장점

  • 빠른 계산 : 선형 시스템 Ax=b의 해를 구할 때, Q를 이용한 부분의 병렬 처리가 가능하기 때문에 계산 속도의 이점(R은 불가능)

  • b가 자주 업데이트 된다고 해도, 분해를 해둔 상태에서는 실시간으로 해를 구할 수 있음

  • 선형 시스템을 QR 분해를 통해 다음 두 단계로 해결할 수 있게 된다.

  1. Qy=b의 형태에서 내적을 통해 y(Rx)를 구한다.
  2. Rx=y에서 후방대치법을 통해 x를 구한다.

QR 분해 vs LU 분해

  • LU 분해 : 선형시스템을 풀 때 병렬처리 불가능, L, U가 각각 반씩 빈 구조를 가지고 있어 메모리 사용량이 적음
  • QR 분해 : Q에 대한 병렬처리가 가능해서 속도의 이점, Q가 꽉 찬 구조를 가지고 있어 메모리 사용량이 많음

특이값 분해(Singular Value Decomposition, SVD)

QR, LU 분해는 정방 행렬(nxn) 분해이고,
특이값 분해는 n x m 행렬 분해이다.

특이값 분해는 세 행렬의 곱으로 분해한다.

U : m차원 회전행렬 (정규직교행렬)
D : n차원 확대축소 (확대축소 크기에 따른 정렬 형태)
V : n차원 회전행렬 (정규직교행렬)

UDV의 각 열벡터는 순서대로 행렬 A의 열벡터가 어떤 방향으로 강한 응집성을 보이는지 분석한 것이다.

UDV의 열벡터를 순서대로 p개 취한다면 강한 응집성을 가진 p개의 방향으로 수선의 발을 내린 A의 근사치 A'를 구성할 수 있다.

주성분 분석(Principal Component Analysis, PCA)

데이터의 공분산행렬에 대한 직교분해를 하는 것

n개의 데이터가 있을 때, 각 데이터의 외적으로 행렬을 구성하고 이를 합한 것의 평균이 공분산 행렬이다.

수식으로 표현하면 다음과 같다.

데이터에서 응집성이 강한 축으로 차원축소를 진행해서 표현하고 분석하는데 이용된다.

profile
오래 공부하는 사람

0개의 댓글