Math/선형대수
선형대수 : 6. 놈 (노름, norm)
bright jazz music
2022. 7. 24. 21:26
놈 (노름, norm)
- 놈은 벡터의 크기(magnitude)를 나타내는 양이다.
- 인공지능에서는 L² 놈과 L¹ 이 자주 쓰인다.
- 놈의 종류에 따라 벡터의 크기(magnitude)는 다른 값이 된다.
- 놈은 인공지능의 정칙화에 쓰인다.
- 정칙화란 파라미터로 조절해서 필요 이상으로 네트워크 학습이 진행되는 것을 예방하는 것이다.
L² 놈
- L² 놈은 아래와 같이 표기한다.
L² 놈의 표기 | ![]() |
- L² 놈은 벡터의 각 요소(스칼라)를 제곱합 한 뒤, 제곱근을 구해 계산한다.
LaTeX | 수식 |
$\begin{align} ||\vec{x}||_{2} &= \sqrt{x_{1}^2 + x_{2}^2 + \cdots + x_{n}^2}\\ &= \sqrt{\sum_{k=1}^n x_{k}^2} \end{align}$ | ![]() |
L¹ 놈
- L¹ 놈은 아래와 같이 표기한다.
L¹ 놈 | ![]() |
- L² 놈은 벡터의 각 요소(스칼라)의 절대값을 더해서 계산한다
LaTeX | 수식 |
$\begin{align} ||\vec{x}||_{1} &= |x_{1}| + |x_{2}| + \cdots + |x_{n}| \\ &= \sum_{k}^n |x_{k}| \end{align}$ | ![]() |
일반화 된 놈
놈을 더욱 일반화 한 L^p 놈은 다음과 같이 나타낸다.
L² 놈에서 거듭제곱의 차수만 변경된 형태이다.
각 스칼라에 대해서 P승 한 뒤 총합을 구한다. 그 후 1/p승 한다. 즉, p제곱근을 구한다.
LaTeX | 수식 |
$\begin{align} L^p = ||\vec x||_p &= (x_{1}^p + x_{2}^p + \cdots + x_{n}^p)^\frac{1}{p} \\ &= (\sum_{k=1}^n x_{k}^p)^\frac{1}{p} \end{align}$ | ![]() |
이외에도 여러 가지 형태의 놈이 존재한다.
파이썬에서의 놈의 구현
- 놈은 Numpy의 linalg.norm() 함수를 사용해서 구할 수 있다.
- lianlg.norm()은 기본적으로 L² 값을 반환한다.
import numpy as np
a = np.array([1, 1, -1, -1]) #벡터
print("--- L2 norm ---")
print(np.linalg.norm(a)) #L2 norm #default
print("--- L1 norm ---")
print(np.linalg.norm(a, 1)) #L1 norm
print("--- L99 norm ---")
print(np.linalg.norm(a, 99)) #Lp norm test : 이게LP 놈이라고는 확언할 수 없다.
#값이 나오는지 확인하고 싶었을 뿐이다.
# --- L2 norm ---
# 2.0
# --- L1 norm ---
# 4.0
# --- L99 norm ---
# 1.0141014742071979
실습
주어진 벡터 a와 벡터 b의 내적을 구하라
벡터 a의 L2과 L1 놈을 구하라
import numpy as np
a = np.array([1, -2, 2]) #벡터 a
b = np.array([2, -2, 1]) #벡터 b
print("--- dot product ---")
print(np.dot(a, b)) #dot함수
print(np.sum(a * b)) #요소별 곱의 합
print("--- L2 norm ---")
print(np.linalg.norm(a)) #L2 norm
print("--- L1 norm ---")
print(np.linalg.norm(a, 1)) #L1 norm
------
LaTeX의 절대값 표기
LaTeX에서 절대값을 나타내는 방법은 여러 가지가 있다.
가장 쉬운 방법은 "|(=/vert)" 를 사용하는 것이다. 그러나 이 방법은 분수 나누기 분수처럼 높이가 높아졌을 때 문제가 있다.
$ | \frac{\frac{3}{4}}{\frac{1}{2}} | $ | ![]() |
$\vert \frac{\frac{3}{4}}{\frac{1}{2}} \vert$ |
수식에 맞춰 절대값 기호가 높아지지 않기 때문이다.
이를 해결하는 가장 쉬운 방법은 "\left |"와 "\right |"를 사용하는 것이다.
$\left| \frac{\frac{3}{4}}{\frac{1}{2}} \right|$ | ![]() |
이외에도 "\bigg" 또는 "\Bigg"을 사용하는 방법도 있다. 그러나 "\left |"와 "\right |"가 가장 편했다.
참고:https://latex-tutorial.com/absolute-value-symbol/