(2) 선형대수학 기초 & 총 정리본 첫번째 목차 - 행렬과 벡터 연산
이전 포스팅 : https://brunch.co.kr/@jennyjang93/41
l 벡터 (Vectors)
l 벡터 덧셈 (Vector addition)
l 벡터 스칼라 곱 (Scalar multiplication of vectors)
l 벡터 내적 (Dot product)
l 벡터 외적 (Cross product)
벡터와 행렬은 가장 기초적인 부분이기도 하고, 내용도 꽤나 많기 때문에 여러 파트로 나눠서 진행하고자 합니다. 이번 포스팅에서는 벡터와 벡터 연산에 대해서 다루어볼게요 :)
사실 이 부분은 비교적 쉬운 개념이라서, 슬슬 읽기 좋은 부분일 것 같습니다.
선형대수학에서 벡터는 크기와 방향을 가진 양을 나타내는 개념입니다.
벡터는 화살표로 그려지며, 화살표의 시작점과 끝점 사이의 거리를 벡터의 크기로 정의합니다.
벡터와 벡터의 연산에는 벡터 덧셈, 벡터x스칼라 곱, 벡터 내적, 벡터 외적이 있습니다.
벡터 덧셈은 두 개 이상의 벡터를 합하는 연산입니다. 벡터 덧셈은 다음과 같이 정의됩니다.
두 개의 n-차원 벡터 u = [u1, u2, ..., un]과 v = [v1, v2, ..., vn]가 있을 때, 이들의 합인 w = u + v는 다음과 같이 정의됩니다.
w = u + v = [u1+v1, u2+v2, ..., un+vn]
[전제 조건] 여기서 u와 v는 같은 차원을 가지고 있어야 합니다. 벡터 덧셈은 각 요소들을 각각 더하는 연산이므로, 각 요소가 더해진 결과인 새로운 벡터 w도 같은 차원을 가집니다.
[예시]
예를 들어, 2-차원 벡터 [1, 3]과 [4, 2]를 더하면 [1+4, 3+2] = [5, 5]가 됩니다. 이는 좌표평면 상에서 원점에서부터 각각 (1, 3)과 (4, 2)만큼 떨어져 있는 두 점을 연결하는 벡터와 같습니다. 이 두 벡터를 더하면 원점에서부터 (5, 5)만큼 떨어져 있는 점을 지나는 새로운 벡터가 됩니다.
벡터 스칼라곱은 벡터와 스칼라(실수)를 곱한 결과를 말합니다. 벡터 스칼라곱은 다음과 같이 정의됩니다.
[공식]
n-차원 벡터 v = [v1, v2, ..., vn]와 실수 a가 있을 때, 이들의 스칼라곱인 w = a * v는 다음과 같이 정의됩니다.
w = a * v = [av1, av2, ..., a*vn]
여기서 a는 스칼라이고, v는 벡터입니다. 벡터 스칼라곱은 각 요소들에 스칼라 값을 곱해주는 연산입니다. 따라서 벡터 스칼라곱의 결과인 새로운 벡터 w도 같은 차원을 가집니다.
벡터 스칼라곱은 벡터의 크기를 조절하는 역할을 합니다.
만약 a가 양수이면 벡터의 방향은 유지되면서 크기가 커지고,
a가 음수이면 벡터의 방향이 반대가 되면서 크기가 작아집니다.
또한, a가 0이면 벡터의 크기가 0이 되므로, 벡터가 원점에 위치합니다.
[예시]
예를 들어, 2-차원 벡터 [1, 2]와 스칼라 값 2를 곱하면 [2, 4]가 됩니다. 이는 원래 벡터의 방향은 유지하면서 크기를 2배로 만든 벡터입니다. 스칼라 값이 음수인 경우, 예를 들어 -1을 곱하면 [-1, -2]가 됩니다. 이는 원래 벡터의 방향을 반대로 하면서 크기를 1배로 만든 벡터입니다.
벡터 내적은 두 벡터의 곱의 합을 구하는 연산으로, 두 벡터 사이의 각도와 크기 정보를 제공합니다. 벡터 내적은 다음과 같이 정의됩니다.
n-차원 벡터 u = [u1, u2, ..., un]와 v = [v1, v2, ..., vn]가 있을 때, 이들의 내적인 w = u ⋅ v는 다음과 같이 정의됩니다. (2개의 공식이 있음)
w = u ⋅ v = u1v1 + u2v2 + ... + un*vn
u · w = ||u|| ||w|| cosθ
여기서 ⋅ 기호는 내적을 나타냅니다. 두 벡터의 내적은 각 차원의 요소들을 곱한 후, 그 곱의 합을 구하는 것입니다. 벡터 내적은 두 벡터가 이루는 각도와 벡터의 크기 정보를 제공합니다.
두 벡터의 내적이 0이면 두 벡터는 수직이며, (직교 벡터)
내적이 양수인 경우 두 벡터는 같은 방향을 가리키고,
내적이 음수인 경우 두 벡터는 반대 방향을 가리킵니다.
예를 들어, 2-차원 벡터 [1, 2] ⋅ [3, 4] = (1 * 3) + (2 * 4) = 3 + 8 = 11 즉 내적은 11입니다.
벡터의 내적은 머신러닝에서 여러 가지 응용 분야에서 중요한 개념 중 하나입니다.
[백터의 내적이 머신러닝에서 어떻게 쓰일까?]
1. 유사도 측정
머신러닝에서는 유사도(similarity)를 측정하여 데이터 간의 관계를 파악하고, 분류(classification), 군집화(clustering), 추천(recommendation) 등에 활용합니다. 벡터의 내적은 두 벡터 간의 유사도를 측정하는 데에 사용됩니다. 내적 값이 클수록 두 벡터는 유사하다는 것을 의미합니다.
2. 회귀분석
회귀분석(regression analysis)에서는 입력 변수(input features)와 출력 변수(target variable) 간의 선형 관계를 모델링합니다. 벡터의 내적은 입력 변수와 가중치(weight) 간의 연산으로 이루어지며, 이를 통해 예측 모델을 학습할 수 있습니다.
3. 차원 축소
머신러닝에서는 고차원 데이터(high-dimensional data)를 저차원 공간(low-dimensional space)으로 축소하여 데이터를 시각화하거나 분석에 활용합니다. 벡터의 내적은 차원 축소 기법 중 하나인 주성분 분석(PCA, Principal Component Analysis)에서 사용됩니다.
4. 커널 기법
머신러닝에서는 커널 기법(kernel trick)을 사용하여 비선형 문제(non-linear problem)를 해결합니다. 커널 함수(kernel function)는 입력 데이터 간의 유사도를 측정하여, 비선형 문제를 선형 문제(linear problem)로 변환합니다. 이 때 커널 함수는 벡터의 내적 연산으로 계산됩니다.
벡터의 외적(cross product)은 두 개의 벡터를 이용하여 수직인 방향의 새로운 벡터를 생성하는 연산입니다. 벡터의 외적은 다음과 같이 정의됩니다.
두 벡터 a, b의 외적은 다음과 같이 정의됩니다.
|a × b| = |a| |b| sinθ
a × b = - b × a
a × b = c (c는 수직인 벡터)
여기서 |a × b|는 벡터 a와 b가 이루는 평면의 면적을 나타내며, θ는 벡터 a와 b가 이루는 각도입니다.
벡터의 외적 연산은 다음과 같은 특징을 가집니다.
벡터의 외적은 벡터의 크기가 아닌, 벡터의 방향을 계산합니다.
벡터의 외적 결과는 두 벡터가 이루는 평면에 수직인 방향을 가집니다.
벡터의 외적은 3차원 벡터에 대해서만 정의되며, 2차원 벡터에서는 적용되지 않습니다.
벡터의 내적과 외적은 둘 다 벡터 연산이지만 서로 다른 성질을 가지고 있습니다.
벡터의 내적은 두 벡터의 크기와 두 벡터가 이루는 각도에 따라 스칼라 값을 계산합니다. 따라서 결과값은 스칼라입니다.
벡터의 외적은 두 벡터의 크기와 두 벡터가 이루는 평면에서 수직인 벡터를 계산합니다. 따라서 결과값은 벡터입니다.
또한, 벡터의 내적과 외적은 연산이 가능한 차원의 수가 다릅니다. 내적은 두 벡터의 크기가 같은 n-차원 벡터에 대해 정의됩니다. 하지만 외적은 3-차원 벡터에 대해서만 정의되며, 2-차원 벡터에서는 적용되지 않습니다.
내적과 외적은 각각의 고유한 성질을 가지고 있으므로, 머신러닝이나 컴퓨터 비전 등 다양한 분야에서 벡터의 내적과 외적이 모두 활용됩니다.