L2 Norm과 Unit Vector 알아보기 : Numpy, TensorFlow, PyTorch의 Norm 연산과 Unit Vector

2024. 7. 15. 07:03·Machine Learning Math/Linear Algebra
반응형

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)

 

이 코드를 실행해보면 다음과 같은 결과가 나온다. 

L2 Norm과 단위 벡터

 

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)

 

이 코드를 실행해보면 다음과 같은 결과가 나온다.

 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Machine Learning Math > Linear Algebra' 카테고리의 다른 글

Tensor 사칙 연산, 아다마르 곱셈(Hadamard Product) 한 번에 정리하기: Numpy, TensorFlow, PyTorch에서의 사용법 정리  (0) 2024.07.18
기저 벡터(Basis Vector)와 직교 벡터(Orthogonal Vector)  (1) 2024.07.17
L1 Norm, L2 Norm, Squared L2 Norm, Infinity Norm 한 번에 정리하기 : Numpy, TensorFlow, PyTorch 에서 사용하기  (0) 2024.07.16
벡터 전치(Vector Transposition) 알아보기: Tensorflow, Pytorch, Numpy  (0) 2024.07.14
머신러닝에서의 Tensor란 무엇인가? Numpy, TensorFlow, Pytorch의 Tensor 알아보기  (0) 2024.07.13


'Machine Learning Math/Linear Algebra' 카테고리의 다른 글
  • 기저 벡터(Basis Vector)와 직교 벡터(Orthogonal Vector)
  • L1 Norm, L2 Norm, Squared L2 Norm, Infinity Norm 한 번에 정리하기 : Numpy, TensorFlow, PyTorch 에서 사용하기
  • 벡터 전치(Vector Transposition) 알아보기: Tensorflow, Pytorch, Numpy
  • 머신러닝에서의 Tensor란 무엇인가? Numpy, TensorFlow, Pytorch의 Tensor 알아보기
심플코드
심플코드
프로그래밍을 어렵지 않게 풀어서 설명하는 기술 블로그
    반응형
  • 심플코드
    심플코드
    심플코드
  • 전체
    오늘
    어제
    • 분류 전체보기 (96)
      • 안드로이드를 위한 Coroutines (2)
      • Unit Testing (19)
      • GitHub Actions (0)
      • 공식 문서 번역 (35)
        • Coroutines 공식 문서 (35)
      • 알고리즘 (7)
        • Kotlin 자료구조 (0)
        • 알고리즘 (7)
        • Kotlin으로 구현하는 자료구조 (0)
      • 코딩 테스트 (0)
      • Deep Learning (0)
      • Machine Learning Math (17)
        • Linear Algebra (17)
      • ML (0)
      • Docker (15)
      • Kubernetes (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 코틀린 코루틴의 정석 책 출간 소식
  • 인기 글

  • 태그

    Coroutines
    도커
    코루틴 채널
    unit testing
    pytorch
    Coroutines Channel
    junit
    numpy
    컨테이너
    mockito
    코루틴 Flow
    Docker
    코루틴
    Kotlin
    unit test
    Coroutines Flow
    Coroutines Context
    TensorFlow
    coroutine
    Machine Learning
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
심플코드
L2 Norm과 Unit Vector 알아보기 : Numpy, TensorFlow, PyTorch의 Norm 연산과 Unit Vector
상단으로

티스토리툴바