Loading [MathJax]/jax/output/CommonHTML/jax.js

[선형대수학] 벡터와 행렬의 연산 - 내적과 내적의 활용

벡터와 행렬의 연산 - 내적과 내적의 활용 (가중합/코사인유사도/직교/이차형식) 관련 내용을 정리합니다.

내적 : 벡터-벡터 곱셈

Inner product / Dot product 내적은 벡터간의 곱을 의미한다.

vu=vu=iuivi
xTy=[x1x2xN][y1y2yN]=x1y1++xNyN=Ni=1xiyi

  • 내적 연산을 위해서는 2가지 조건을 만족해야한다.
    1. 두 벡터의 차원(길이)가 같아야 한다.
    2. 앞의 벡터가 행벡터이고 뒤의 벡터가 열벡터여야 한다.
  • 두 벡터의 내적을 요소별 곱셈 후 합을 수행해서도 구할 수 있다. ( 2. tf.reduce_sum코드 참고 )

tf.tensordot/tf.reduce_sum

## 1. tf.tensordot : Dot Products
y = tf.ones(4, dtype=tf.float32) 
x, y, tf.tensordot(x, y, axes=1) 
(<tf.Tensor: shape=(4,), dtype=float32, numpy=array([0., 1., 2., 3.], dtype=float32)>, 
<tf.Tensor: shape=(4,), dtype=float32, numpy=array([1., 1., 1., 1.], dtype=float32)>, 
<tf.Tensor: shape=(), dtype=float32, numpy=6.0>) 

## 2. tf.reduce_sum : elementwise multiplication and then a sum
tf.reduce_sum(x* y)  
<tf.Tensor: shape=(), dtype=float32, numpy=6.0>

내적의 활용

벡터의 내적은 유용하게 사용되는데, 그 예시들을 살펴보자.

1. 가중합/가중평균

하나의 벡터에 대한 가중합을 벡터의 내적으로 표현해보자.

가중합

weighted sum 가중합은 x벡터와 w가중치 벡터 (Rd) 가중치가 반영된 x벡터 값의 합이다.
w1x1++wNxN=Ni=1wixi

가중평균

weighted average 가중평균은 di=1wi=1 가중치 총 합이 1인 경우의 가중합을 의미한다.

가중합과 가중평균을 xw 내적으로 표현하면 다음과 같다.

Ni=1wixi=[w1w2wN][x1x2xN]=wTx=[x1x2xN][w1w2wN]=xTw

여러 개의 벡터에 대한 가중합 계산

여러 벡터 x1,,xM에 대해서 가중합을 동시에 계산하는 식을 벡터의 내적으로 표현해보자. (선형 회귀 모형에서 사용되는 수식)

ˆy=Xw ˆy=[ˆy1ˆy2ˆyM]

=[w1x1,1+w2x1,2++wNx1,Nw1x2,1+w2x2,2++wNx2,Nw1xM,1+w2xM,2++wNxM,N]

=[x1,1x1,2x1,Nx2,1x2,2x2,NxM,1xM,2xM,N][w1w2wN]

=[xT1xT2xTM][w1w2wN]

2. 코사인 유사도

Cosine Similarity 코사인 유사도를 통해 두 벡터의 유사도를 측정할 수 있다.
cos(θ)=abab

  • 1cos(θ)1
    • cos(θ)=1 : 두 벡터 동일한 방향
    • cos(θ)=1 : 두 벡터 정반대 방향
    • cos(θ)=0 : 두 벡터가 직교 orthogonal
  • 고차원의 벡터들의 원소의 랜덤 표본 평균이 0인 경우, 코사인 유사도 또한 0 에 가깝다.

3. 직교

xTy=0 : 두 벡터x,yRn 내적이 0이면, 두 벡터는 Orthogonal 직교한다.

  • 직교 또한 고차원에 대한 expansion of perpendicular 수직확장으로 볼 수 있다.
  • x1,x2,,xn n-차원의 벡터로 가정하면, x1,x2,,xn의 선형결합을 c1x1+c2x2++cnxn로 표현할 수 있다. (c1x1+c2x2++cnxn : 스칼라)
  • UTU=I=UUT
  • 두 벡터 g,h는 직교이다.
    gh=(232)(421)=24+(3)(2)+(2)1=862=0

4. 이차형식

벡터의 이차형식 Quadratic form어떤 벡터와 정방행렬이 (행벡터 × 정방행렬 × 열벡터) 형식으로 된 것을 의미한다.

xTAx=[x1x2xN][a1,1a1,2a1,Na2,1a2,2a2,NaN,1aN,2aN,N][x1x2xN]=Ni=1Nj=1ai,jxixj

i=1,,N,j=1,,N에 대해 가능한 모든 i,j쌍의 조합에 해당하는 원소 xi,xj를 가중치 ai,j 와 곱한 값인 ai,jxixj 총합이 된다.


Source&Reference: 김도형의 데이터사이언스 스쿨


Powered by Yiting & Majiang