행렬곱

olxtar·2024년 1월 23일
post-thumbnail

Comment :

추천시스템 어쩌구,,, 특이값 분해(Singular Value Decomposition, SVD) 저쩌구를 이해하려다가 여기까지 옴. (SVD까지 필요한 개념들이) 제일 깔끔하게 잘 정리된 공돌이의 수학정리노트를 학습함.
Reference : 행렬 곱에 대한 또다른 시각 - 공돌이의 수학정리노트(Angelo's Math Notes)




[+] 행렬 TeX 문법 : $\begin{bmatrix} 0 & 1 \\ 2 & 3 \end{bmatrix}$ \rightarrow [0123]\begin{bmatrix} 0 & 1 \\ 2 & 3 \end{bmatrix}



일반적인 행렬곱

행렬(간의) 곱에 대해서는 그냥 외웠다는것이 기억난다. 앞쪽에 있는 행렬의 행과 뒷쪽에 있는 행렬의 열을 내적하여 각 인덱스에 맞게 넣어둔 행렬이 행렬곱의 결과물이다. 정도로 알고 있었다.

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

[1234][abcd]=[1a+2c1b+2d3a+4c3b+4d]\begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \begin{bmatrix} a & b \\ c & d \end{bmatrix} = \begin{bmatrix} 1 \cdot a + 2 \cdot c & 1 \cdot b + 2 \cdot d \\ 3 \cdot a + 4 \cdot c & 3 \cdot b + 4 \cdot d \end{bmatrix}

🔰 즉, 좌측 행렬의 차원의 인덱스를 m,km, k / 우측 행렬의 차원의 인덱스를 k,nk, n이라 하였을때
두 행렬 간의 곱으로 나타나는 행렬의 mmnn열의 값은 \rightarrow 좌측행렬의 mm 행과 우측 행렬의 nn 열의 내적값이다.
위 수식처럼 2x2행렬 두개의 행렬곱의 경우,
행렬곱 결과인 행렬의 1행1열 값은 = 좌측행렬 1행과 우측행렬 1열의 내적값
행렬곱 결과인 행렬의 1행2열 값은 = 좌측행렬 1행과 우측행렬 2열의 내적값
행렬곱 결과인 행렬의 2행1열 값은 = 좌측행렬 2행과 우측행렬 1열의 내적값
행렬곱 결과인 행렬의 2행2열 값은 = 좌측행렬 2행과 우측행렬 2열의 내적값
뭐 어찌보면, 행렬곱을 할때 좌측행렬의 열 차원과 우측행렬의 행 차원이 동일해야 이처럼 곱이 가능한 부분이기도 하다






열벡터의 선형 결합

다른 관점에서의 행렬곱을 이해하는 방법은 열벡터의 선형결합 관점으로 보는 것이다.

이번에는 행렬간 곱이아닌(..?) 행렬과 벡터의 곱을 생각해보자


[1234][ac]=[1a+2c3a+4c]\begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \begin{bmatrix} a \\ c \end{bmatrix} = \begin{bmatrix} 1 \cdot a + 2 \cdot c \\ 3 \cdot a + 4 \cdot c \end{bmatrix}

이를 조금 다르게 보면 다음과 같다. (두 열벡터의 선형결합)

[1234][ac]=a[13]+c[24]\begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \begin{bmatrix} a \\ c \end{bmatrix} = a \cdot \begin{bmatrix} 1 \\ 3 \end{bmatrix} + c \cdot \begin{bmatrix} 2 \\ 4 \end{bmatrix}

a, c라는 상수값과 열벡터 (1,3), (2,4)간의 곱은 벡터의 상수배
그리고 그 두개의 합이 바로 벡터의 합


다시 말해 행렬과 벡터의 곱은 행렬을 구성하고 있는 두 열벡터의 선형결합을 다른 방식으로 표현한 것이라고 할 수 있다.



1) 열공간을 기반한 해석

✅ 벡터의 선형결합 = 벡터 공간의 생성
\rightarrow 벡터의 기본 연산(상수배, 덧셈)

벡터 간 선형결합(Linear Combination) 중 상수배와 벡터간의 (한꺼번에) 보자.

c1[10]+c2[01]c_1 \begin{bmatrix} 1 \\ 0 \end{bmatrix} + c_2 \begin{bmatrix} 0 \\ 1 \end{bmatrix}

위 수식은 아래와 같이 해석할 수 있다. \rightarrow 두 벡터 [10]\begin{bmatrix} 1 \\ 0 \end{bmatrix}[01]\begin{bmatrix} 0 \\ 1 \end{bmatrix} 로부터 생성된 벡터 공간


자 그러면 (행렬과 벡터간의 곱을 두 열벡터의 선형결합으로 보는 관점에 이어서...)
행렬과 벡터간의 곱을 벡터공간, 즉 열공간(Column Space) 관점에서 다시 봐보자


Ax=bA \vec{x} = \vec{b}

[1234][xy]=[35]\begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} 3 \\ 5 \end{bmatrix}

x[13]+y[24]=[35]x \begin{bmatrix} 1 \\ 3 \end{bmatrix} + y \begin{bmatrix} 2 \\ 4 \end{bmatrix} = \begin{bmatrix} 3 \\ 5 \end{bmatrix}

이는

"[13]\begin{bmatrix} 1 \\ 3 \end{bmatrix} (열)벡터와 [24]\begin{bmatrix} 2 \\ 4 \end{bmatrix} (열)벡터로부터 생성된 벡터공간 내에 [35]\begin{bmatrix} 3 \\ 5 \end{bmatrix}라는 벡터가 존재할 수 있는가?

만약 존재한다면, [13]\begin{bmatrix} 1 \\ 3 \end{bmatrix} (열)벡터와 [24]\begin{bmatrix} 2 \\ 4 \end{bmatrix} (열)벡터를 x,yx, y를 통해 어떻게 조합해야 [35]\begin{bmatrix} 3 \\ 5 \end{bmatrix} 벡터를 구할 수 있을까?"

라는 관점으로 해석할 수 있다.

2) 선형 변환을 기반한 해석

위처럼 행렬과 벡터의 곱이 열벡터의 선형결합이라는 해석이 우리에게 주는 또 다른 관점은 행렬과 벡터의 곱을 기저 벡터의 변형을 통한 벡터의 선형 변환으로의 해석이다. 집중하여 아래의 수식과 이미지를 봐보자.


먼저 아래와 같은 행렬 AA가 있고

A=[2311]A = \begin{bmatrix} 2 & -3 \\ 1 & 1 \end{bmatrix}

(행렬 AA를 이용하여) 벡터 x\vec{x}

x=[11]\vec{x} = \begin{bmatrix} 1 \\ 1 \end{bmatrix}

변환시키면

Ax=[2311][11]A \vec{x} = \begin{bmatrix} 2 & -3 \\ 1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 1 \end{bmatrix}
Ax=[21+(3)111+11]A \vec{x} = \begin{bmatrix} 2 \cdot 1 + (-3) \cdot 1 \\ 1 \cdot 1 + 1 \cdot 1 \end{bmatrix}
=[12]= \begin{bmatrix} -1 \\ 2 \end{bmatrix}

자 원래있었던 변환 이전 벡터 x=[11]\vec{x} = \begin{bmatrix} 1 \\ 1 \end{bmatrix} 는 위와 같다.

이 벡터 x\vec{x}를 행렬 A=[2311]A = \begin{bmatrix} 2 & -3 \\ 1 & 1 \end{bmatrix} 을 통해 선형 변환 (아직 선형변환이라는 말이 와닿지 않아도 된다. 아래 그림과 설명을 보며 느껴보자) 해주면 아래와 같이 된다.

앞서 하였던 선형변환의 결과 벡터는 [12]\begin{bmatrix} -1 \\ 2 \end{bmatrix}이었다. 이 결과 벡터를 b\vec{b}라고 해보자.
위 그림에서 (뒤에있는 회색 격자의) 일반적인? 벡터공간으로 보면 빨간색 점인 벡터 b\vec{b}는 (-1,2)라는 지점에 잘찍혀있다.


자 이번에는 위 그림에서 (뒤에있는 회색 격자는 무시하고) 사선으로 그려져있는 파란색 격자를 보자. 좀 뭉개져? 눕혀져? 있지만 빨간색 점인 벡터는 파란색 격자기준, (1,1)이라는 지점에 있다.




뭔가 신기하면서도 와닿지가 않는데... 아래의 수식을 통해 정리해보자. 아직은 어려우니 2개의 열벡터가 존재하는 행렬로만 생각해보자ㅠ

먼저 2x2, 즉 두개의 열벡터로 이루어져있는 행렬 AA가 있고, 벡터 x\vec{x}가 존재할때 (이 벡터의 기저벡터는 일반적인 x축 y축 단위벡터?)

Ax=bA \vec{x} = \vec{b}

라고 하고 x\vec{x} 의 원래의 기저 벡터를 i^,j^\hat{i}, \hat{j}

i^=[10],    j^=[01]\hat{i} = \begin{bmatrix} 1 \\ 0 \end{bmatrix}, \space \space \space \space \hat{j} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}

선형변환에 의하여 새롭게 변형된 기저벡터(=행렬A의 두 열벡터)inew^,jnew^\hat{i_{new}}, \hat{j_{new}}라고 하였을때

inew^=[A0,0A1,0],    jnew^=[A0,1A1,1]\hat{i_{new}} = \begin{bmatrix} A_{0,0} \\ A_{1,0} \end{bmatrix}, \space \space \space \space \hat{j_{new}} = \begin{bmatrix} A_{0,1} \\ A_{1,1} \end{bmatrix}

선형변환의 결과물인, 즉 행렬과 벡터간의 곱의 결과물인 b\vec{b}는 새로운 기저벡터 inew^,jnew^\hat{i_{new}}, \hat{j_{new}}에 대한 x\vec{x}의 표현이다(?)

profile
예술과 기술

0개의 댓글