벡터와 행렬의 연산 - 내적과 내적의 활용 (가중합/코사인유사도/직교/이차형식) 관련 내용을 정리합니다.
내적 : 벡터-벡터 곱셈
Inner product / Dot product 내적은 벡터간의 곱을 의미한다.
v⋅u=v⊤u=∑iuivi
xTy=[x1x2⋯xN][y1y2⋮yN]=x1y1+⋯+xNyN=∑Ni=1xiyi
- 내적 연산을 위해서는 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인 경우의 가중합을 의미한다.
가중합과 가중평균을 x⊤w 내적으로 표현하면 다음과 같다.
N∑i=1wixi=[w1w2⋯wN][x1x2⋮xN]=wTx=[x1x2⋯xN][w1w2⋮wN]=xTw
여러 개의 벡터에 대한 가중합 계산
여러 벡터 x1,⋯,xM에 대해서 가중합을 동시에 계산하는 식을 벡터의 내적으로 표현해보자. (선형 회귀 모형에서 사용되는 수식)
ˆy=Xw→ ˆy=[ˆy1ˆy2⋮ˆyM]
=[w1x1,1+w2x1,2+⋯+wNx1,Nw1x2,1+w2x2,2+⋯+wNx2,N⋮w1xM,1+w2xM,2+⋯+wNxM,N]
=[x1,1x1,2⋯x1,Nx2,1x2,2⋯x2,N⋮⋮⋮⋮xM,1xM,2⋯xM,N][w1w2⋮wN]
=[xT1xT2⋮xTM][w1w2⋮wN]
2. 코사인 유사도
Cosine Similarity
코사인 유사도를 통해 두 벡터의 유사도를 측정할 수 있다.
cos(θ)=a⋅b∣a∣∣b∣
- −1≤cos(θ)≤1
- cos(θ)=1 : 두 벡터 동일한 방향
- cos(θ)=−1 : 두 벡터 정반대 방향
- cos(θ)=0 : 두 벡터가 직교
orthogonal
- 고차원의 벡터들의 원소의 랜덤 표본 평균이 0인 경우, 코사인 유사도 또한 0 에 가깝다.
3. 직교
xTy=0 : 두 벡터x,y∈Rn 내적이 0이면, 두 벡터는 Orthogonal
직교한다.
- 직교 또한 고차원에 대한
expansion of perpendicular
수직확장으로 볼 수 있다. - x1,x2,…,xn n-차원의 벡터로 가정하면, x1,x2,…,xn의 선형결합을 c1x1+c2x2+…+cnxn로 표현할 수 있다. (c1x1+c2x2+…+cnxn : 스칼라)
- UTU=I=UUT
- 두 벡터 g,h는 직교이다.
g⋅h=(23−2)∗(4−21)=2∗4+(3)∗(−2)+(−2)∗1=8−6−2=0
4. 이차형식
벡터의 이차형식 Quadratic form
은 어떤 벡터와 정방행렬이 (행벡터 × 정방행렬 × 열벡터) 형식으로 된 것을 의미한다.
xTAx=[x1x2⋯xN][a1,1a1,2⋯a1,Na2,1a2,2⋯a2,N⋮⋮⋱⋮aN,1aN,2⋯aN,N][x1x2⋮xN]=∑Ni=1∑Nj=1ai,jxixj
⇒ i=1,…,N,j=1,…,N에 대해 가능한 모든 i,j쌍의 조합에 해당하는 원소 xi,xj를 가중치 ai,j 와 곱한 값인 ai,jxixj 총합이 된다.
Source&Reference: 김도형의 데이터사이언스 스쿨
'Statistics > Mathematics for ds' 카테고리의 다른 글
[선형대수학] 행렬미분 (Matrix Calculus) (1) | 2021.11.12 |
---|---|
[선형대수학] Notation for LinearAlgebra (0) | 2021.11.12 |
[선형대수학] 선형연립방정식과 역행렬 (0) | 2021.11.09 |
[선형대수학] 고유분해 - 고유값, 고유벡터 (0) | 2021.11.09 |
[선형대수학] 벡터와 행렬의 성질 - 놈, 대각합, 행렬식 (0) | 2021.11.02 |