Vector와 L2 Norm
Vector는 크기와 방향을 표현하는 데이터이다. 예를 들어 $[3,4]$ 라는 Vector가 있다면 이 값은 $[0,0]$을 기준으로 가로 방향으로 3만큼 세로 방향으로 4만큼 이동한 것을 나타낸다. 이러한 Vector 값의 크기값만을 수치화 하기 위한 것이 바로 Norm이며, Norm에는 L1 Norm, L2 Norm, Maximum Norm 등의 종류가 있다. 하지만, 가장 많이 사용되는 Norm은 L2 Norm이며 L2 Norm은 다음과 같은 수식으로 표현된다.
$\| \mathbf{x} \|_2 = \sqrt{\sum_{i=1}^{n} x_i^2}$
L2 Norm을 사용해 Vector의 크기 값만을 계산하는 것은 어렵지 않다. 단순히 각 인자를 제곱해 더한 후 마지막에 루트를 씌우면 된다. 예를 들어 앞서 본 $[3,4]$ 의 L2 Norm은 $(3^2+4^2)^{(1/2)}$ 이 돼 5가 된다.
L2 Norm과 Unit Vector
L2 Norm을 구하는 방법을 알았으면, 이제 Unit Vector을 알아볼 차례다. Unit Vector는 길이가 1인 벡터로, 원래 벡터와 같은 방향을 가지지만 크기만 1로 정규화된 벡터이다. 주어진 벡터 $\mathbf{x}$ 의 Unit Vector인 $\hat{\mathbf{x}}$ 는 다음과 같은 수식으로 표현된다.
$\hat{\mathbf{x}} = \frac{\mathbf{x}}{\| \mathbf{x} \|_2}$
예를 들어 $[3,4]$ 벡터의 단위 벡터를 구해보자. 먼저 L2 Norm을 계산하면 5가 되므로, 단위 벡터는 다음과 같다.
$\hat{\mathbf{v}} = \frac{[3, 4]}{5} = \left[ \frac{3}{5}, \frac{4}{5} \right]$
이제, Numpy, TensorFlow, PyTorch를 사용하여 L2 Norm과 Unit Vector를 계산하는 방법을 살펴보자.
Numpy 사용해 L2 Norm과 Unit Vector 구하기
Numpy에서 L2 norm을 구하기 위해서는 linalg(linear algebra)의 norm 함수를 사용하면 된다.
단위 벡터는 벡터값을 앞서 구한 L2 Norm 값으로 나누면 된다.
import numpy as np
# 벡터 정의
x = np.array([3, 4])
# L2 Norm
l2Norm = np.linalg.norm(x)
print("L2 Norm:", l2Norm)
# Unit Vector
unitVector = x / l2Norm
print("Unit Vector:", unitVector)
이 코드를 실행해보면 다음과 같은 결과가 나온다.
Tensorflow 사용해 L2 Norm과 Unit Vector 구하기
TensorFlow에서 L2 Norm을 구하기 위해서는 norm 함수를 사용해야 한다. Unit Vector는 이전과 마찬가지로 Vector 값을 L2 Norm값으로 나누면 된다.
import tensorflow as tf
# 벡터 정의
x = tf.constant([3.0, 4.0])
# L2 Norm
l2Norm = tf.norm(x)
print("L2 Norm:", l2Norm)
# Unit Vector
unitVector = x / l2Norm
print("Unit Vector:", unitVector)
그러면 다음과 같은 결과가 나오는 것을 볼 수 있다. 0차원 텐서로 L2 norm이 나오는 것을 볼 수 있다.
PyTorch 사용해 L2 Norm과 Unit Vector 구하기
PyTorch에서 L2 Norm을 구하기 위해서는 torch.norm 함수를 사용해야 한다. Unit Vector는 이전과 마찬가지로 Vector 값을 L2 Norm 값으로 나누면 된다.
import torch
# 벡터 정의
x = torch.tensor([3.0, 4.0])
# L2 Norm
l2Norm = torch.norm(x)
print("L2 Norm:", l2Norm)
# Unit Vector
unitVector = x / l2Norm
print("Unit Vector:", unitVector)
이 코드를 실행해보면 다음과 같은 결과가 나온다.