Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 페이징
- GIT
- 처음 만나는 AI 수학 with Python
- 네트워크 설정
- 이터레이터
- 스프링 시큐리티
- 코드로배우는스프링웹프로젝트
- 코드로배우는스프링부트웹프로젝트
- resttemplate
- 자바편
- iterator
- 알파회계
- 티스토리 쿠키 삭제
- Kernighan의 C언어 프로그래밍
- 목록처리
- /etc/network/interfaces
- 구멍가게코딩단
- 처음 만나는 AI수학 with Python
- 리눅스
- 선형대수
- ㅒ
- baeldung
- d
- 자료구조와 함께 배우는 알고리즘 입문
- 자료구조와함께배우는알고리즘입문
- network configuration
- 서버설정
- 친절한SQL튜닝
- 데비안
- 스프링부트핵심가이드
Archives
- Today
- Total
bright jazz music
선형대수 : 6. 놈 (노름, norm) 본문
놈 (노름, 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/
'Math > 선형대수' 카테고리의 다른 글
선형대수 : 7. 행렬의 요소별 곱(아다마르 곱) (0) | 2022.07.26 |
---|---|
선형대수 : 7. 행렬의 곱 (0) | 2022.07.25 |
선형대수 : 5. 내적(스칼라 곱,dot product, scarla product) (0) | 2022.07.23 |
선형대수 : 4. 텐서(Tensor) (0) | 2022.07.22 |
선형대수 : 3. 행렬 (0) | 2022.07.22 |
Comments