벡터(Vector)란?
벡터(Vector)
x=⎣⎢⎡172⎦⎥⎤x⊤=[1,7,2]
왼쪽은 열벡터, 오른쪽은 행벡터를 뜻한다.
: 숫자를 원소로 가지는 리스트 (list) / 배열(array)을 의미한다.
[코드]
x = [1, 7, 2]
x = np.array([1, 7, 2])

벡터의 기본 연산
: 덧셈, 뺄셈, Hadamard 곱은 모두 두 벡터의 차원이 같을 때만 연산이 가능하다.
-
스칼라곱 (Scalar Multiplication)
: 벡터에 실수 𝛼를 곱하면
αx=α⎣⎢⎢⎢⎢⎡x1x2⋮xd⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡αx1αx2⋮αxd⎦⎥⎥⎥⎥⎤
길이가 ∣α∣배로 늘거나 줄어든다. 이때 α<0이면 방향이 반대가 된다.

-
벡터 덧셈 (Vector Addition)
벡터끼리의 덧셈은 각 성분을 같은 위치끼리 더하는 것을 의미한다.
두 벡터 a와 b가 다음과 같을 때:
a=⎣⎢⎢⎢⎢⎡a1a2⋮ad⎦⎥⎥⎥⎥⎤,b=⎣⎢⎢⎢⎢⎡b1b2⋮bd⎦⎥⎥⎥⎥⎤,a+b=⎣⎢⎢⎢⎢⎡a1+b1a2+b2⋮ad+bd⎦⎥⎥⎥⎥⎤
이때 덧셈 결과는 다음과 같이 각 성분끼리 더해진다
-
벡터 뺄셈 (Vector Subtraction)
벡터의 뺄셈도 성분별로 이루어지며 다음과 같이 표현된다:
a−b=⎣⎢⎢⎢⎢⎡a1−b1a2−b2⋮ad−bd⎦⎥⎥⎥⎥⎤
벡터 a에서 b를 뺀 결과는 두 벡터 사이의 방향과 거리를 나타낸다.
-
성분곱 (Hadamard Product)
Hadamard 곱, 또는 성분곱은 동일한 위치의 성분을 각각 곱하여 벡터로 반환한다:
a⊙b=⎣⎢⎢⎢⎢⎡a1⋅b1a2⋅b2⋮ad⋅bd⎦⎥⎥⎥⎥⎤
또는 NumPy에서처럼 다음처럼 쓰일 수 있다:
a∗b=⎣⎢⎢⎢⎢⎡a1⋅b1a2⋅b2⋮ad⋅bd⎦⎥⎥⎥⎥⎤
노름(norm)
: 벡터가 원점에서 얼마나 떨어져 있는지를 재는 거리 함수다.

L1-노름
: 각 성분의 변화량의 절대값
∣∣x∣∣1=Σi=1d∣xi∣
def l1_norm(x):
x_norm = np.abs(x)
x_norm = np.sum(x_norm)
return x_norm
L2-노름
: 피타고라스 정리 이용 , 유클리드 거리
∣∣x∣∣2=Σi=1d∣xi∣2
def l2_norm(x):
x_norm = x*x
x_norm = np.sum(x_norm)
x_norm = np.sqrt(x_norm)
return x_norm
def l2_norm(x):
return np.linalg.norm(x)
L2 노름을 활용한 각도 계산
: 두 벡터 x, y의 각도 θ를 구하려면 L2-노름을 이용해 코사인 법칙을 적용한다.
cosθ=2∥x∥2∥y∥2∥x∥22+∥y∥22−∥x−y∥22
위의 분자를 전개하면
∥x∥22+∥y∥22−∥x−y∥22=2⟨x,y⟩
따라서 최종적으로
cosθ=∥x∥2∥y∥2⟨x,y⟩
각도를 구하는 코드는 다음과 같다.
def angle(x, y):
v = np.inner(x, y) / (l2_norm(x) * l2_norm(y))
theta = np.arccos(v)
return theta
cf) 내적(Inner Product)과 정사영(Projection)의 의미
벡터 x와 y 사이의 내적(inner product)은 다음과 같은 기하학적 의미를 가진다:
<x,y>=∣∣x∣∣2∣∣y∣∣2cosθ
이 식은 벡터 간 유사도(similarity)를 나타내는 대표적인 수식으로,
벡터 x 벡터 y 방향으로 얼마나 같은 방향을 향하고 있는지를 수치로 보여준다.

[왼쪽]
벡터 x를 y 방향으로 정사영(Projection) 했을 때의 그림자는 다음과 같다:
Proj(x)=∣∣x∣∣cosθ (코사인 법칙)
이 값은 벡터x가 y 방향으로 얼마나 드리워졌는지(그림자 길이)를 뜻한다.
[오른쪽]
이제 이 정사영된 길이를 벡터 y의 크기만큼 다시 조정하면,
즉 ∣∣y∣∣2를 곱하면 내적이 된다:
<x,y>=∣y∣∣2⋅Proj(x)
즉, 내적은 "벡터 x의 그림자(정사영)를 y의 크기에 맞춰 조정한 값"으로 해석할 수 있다.
결국 내적은 두 벡터의 방향 유사도를 나타내고,
동시에 벡터 x가 y 방향으로 얼마나 포함되는지를 수치로 표현한다.
따라서 내적은 기하학적으로는 정사영의 길이 × 대상 벡터의 크기,
수학적으로는 벡터 간 유사도 척도로 이해할 수 있다.
위 내용은 (([부스트캠프 AI Tech 프리코스] 인공지능 기초 다지기 (2)) 1. 벡터가 뭐에요?) 강의 내용을 바탕으로 작성하였습니다.
더 자세한 내용은 강의를 통해 확인하시길 바랍니다.