인공지능을 위해 필요한 선형대수 내용을 간단하게 정리해보고자 한다.
4년간 배운 내용과 다른 블로그, 유튜브 등 여러 곳에서 조금씩 참고하여 정리했다.
전체적인 흐름은 유명한 '3Blue1Brown' 유튜브 채널의 선형대수 부분을 따랐다.
벡터 합, 벡터와 스칼라 곱, 행렬 합, 행렬 곱 등 기초적인 내용은 제외하고, 중요하면서도 외워둬야 할 것들 위주로 정리할 것이다.
목차
6. Dot Product, Cross Product
1) Dot Product
내적의 개념 보다는 이에 대한 기하학적 의미를 알아보고자 한다.
기본적으로, 내적의 결과는 scalar임을 알고 있을 것이다.
다음 두 벡터 \(\mathbf{v} = \begin{bmatrix} 4 \\ 1 \end{bmatrix}, \mathbf{w} = \begin{bmatrix} 2 \\ -1 \end{bmatrix} \)의 내적을 살펴보자.
계산은 다음과 같이 간단히 할 수 있다.
\( \mathbf{v} \cdot \mathbf{w} = \begin{bmatrix} 4 \\ 1 \end{bmatrix} \cdot \begin{bmatrix} 2 \\ -1 \end{bmatrix} = (4 \cdot 2) + (1 \cdot -1) = 7 \)
이를 기하학적으로 표현하면, 'w 벡터를 v벡터와 원점을 지나는 선 위로 projection(투영)하고, 투영된 w 벡터의 길이와 벡터 v 길이를 곱하는' 개념이다.
이를 두 벡터 사이의 각도 \(\theta\)로 나타내면 다음과 같다.
\(\mathbf{w} \cos(\theta) \cdot \mathbf{v} \)
만약 투영된 w 벡터와 v 벡터가 반대 방향을 가리킨다면, 결과값은 음수가 될 것이고, 한 벡터가 다른 벡터로 투영했을 때 영벡터가 되는 경우(즉, w 벡터와 v 벡터가 직교할 경우) 결과는 0이 될 것이다.
물론, 서로 반대로 투영한다고 해도 같은 결과를 갖는다.
선형 변환의 관점에서 볼 수도 있다.
기존 2차원 좌표의 \(\hat{i} = [1 \; 0]^T, \hat{j} = [0 \; 1]^T\)를 1차원 수선의 좌표 \(\hat{i} = [1], \hat{j} = [-2]\)로 선형 변환하는 1 × 2 행렬 \([1 \; -2 ]\)을 떠올려보자.
해당 행렬에 의해, \(\mathbf{v} = [4 \; 3]^T\) 벡터는 다음과 같이 변환된다.
\( \begin{bmatrix} 1 & -2 \end{bmatrix} \begin{bmatrix} 4 \\ 3 \end{bmatrix} = (1 \cdot 4) + (-2 \cdot 3) = -2 \)
이는 dot product의 계산 과정과 동일하다.
2) Cross Product
외적은 기본적으로 결과가 벡터이다.
그 크기는 기하학적으로 아래와 같이 두 벡터가 만드는 평행사변형의 넓이이다.
그런데, \( \mathbf{w} \times \mathbf{v} \)는 양수, \( \mathbf{v} \times \mathbf{w} \)는 음수이다.
간단히 3차원의 표준 기저벡터 기준으로 양수, 음수는 다음과 같이 판단한다.
\( \hat{i} \times \hat{j} = +\hat{k} \)
\( \hat{j} \times \hat{k} = + \hat{i} \)
\( \hat{k} \times \hat{i} = + \hat{j} \)
이는 엄지를 제외한 오른 손으로 \(\hat{i}\) 방향에서 \(\hat{j}\) 방향으로 감아 쥐었을 때, 엄지가 향하는 방향이 양수라는 규칙으로 쉽게 떠올릴 수 있다.
앞서 Determinant가 두 벡터가 이루는 넓이임을 설명했으므로, 부호만 잘 판별해준다면 외적의 값을 쉽게 알 수 있다.
하지만, 원래 외적의 정의는 3차원인 두 벡터를 결합하여 새로운 3차원 벡터를 만드는 것을 말한다.
3차원인 두 벡터가 만드는 평행사변형의 넓이를 크기로, 오른손 법칙에 따른 방향을 방향으로 하는 새로운 벡터가 바로 외적의 정의이다.
Determinant를 사용하여 3차원 벡터의 외적을 구할 수 있다.
아래와 같이 \(\hat{i}, \hat{j}, \hat{k}\)를 1열로, \(\mathbf{v}\)를 2열로, \(mathbf{w}\)를 3열로 갖는 3 × 3 행렬의 행렬식을 계산한다.
\( \mathbf{v} \times \mathbf{w} = det \left( \begin{bmatrix} \hat{i} & v_1 & w_1 \\ \hat{j} & v_2 & w_2 \\ \hat{k} & v_3 & w_3 \end{bmatrix} \right) \)
여기서, 1열에 기저 벡터들을 넣는다는 개념이 아니라, 계산 과정에서 scalar처럼 곱하여 계산을 진행하면 결과 값이 벡터가 나오게 된다.
\( \mathbf{v} \times \mathbf{w} = det \left( \begin{bmatrix} \hat{i} & v_1 & w_1 \\ \hat{j} & v_2 & w_2 \\ \hat{k} & v_3 & w_3 \end{bmatrix} \right) = \hat{i} (v_2 w_3 - v_3 w_2) - \hat{j} (v_1 w_3 - v_3 w_1) + \hat{k} (v_1 w_2 - v_2 w_1) \)
위와 같은 결과로 나온 벡터가 바로 \(\mathbf{v}, \mathbf{w}\)가 이루는 평행사변형의 면적을 크기로 갖고, 오른손 법칙에 따른 방향을 갖는 벡터이다.
최근댓글