본문 바로가기
딥러닝/선형대수

norms

by be-favorite 2020. 4. 10.

❗️블로그 옮김:  https://www.taemobang.com

 

방태모

안녕하세요, 제 블로그에 오신 것을 환영합니다. 통계학을 전공으로 학부, 석사를 졸업했습니다. 현재는 가천대 길병원 G-ABC에서 Data Science를 하고있습니다. 통계학, 시계열, 통계적학습과 기계

www.taemobang.com

 

머신러닝에서 벡터들의 크기를 측정하는 함수를 "norm"이라고 한다. 형식적으로는 $l_p$ norm은 다음과 같이 주어진다.

$\left \| \boldsymbol{x} \right \|_p = \left ( \sum_i \left |x_i  \right |^p \right )^{\frac{1}{p}} ~\textrm{for}~p\in \mathbb{R},~p\geq 1$

그럼 이제 많이쓰이는 몇가지 norm에 대해서 알아보자.

 

(1) $l_2$ norm

$p = 2$인 경우이며, "Euclidean norm"이라고 알려져있다. 원점으로부터 점 $\boldsymbol{x}$의 유클리드 거리(Euclidean distance)를 계산한것과 같다. $l^2$ norm은 머신러닝에서 매우 빈번하게 쓰이고, 간단하게 아래첨자기호 2는 뺀체로 $\left \| x \right \|$로 나타내기도 한다. 간단하게 $\boldsymbol{x}^T \boldsymbol{x}$로 계산되는 제곱(squared) $l^2$ norm을 사용해 벡터의 길이를 측정하는것 또한 흔히 쓰인다. 제곱 $l_2$ norm은 $l_2$ norm보다 계산적 그리고 수학적으로 훨씬 편하다. 예를 들면, 제곱 $l_2$ norm에서 $\boldsymbol{x}$의 각 성분에 해당하는 미분계수는 해당하는 $\boldsymbol{x}$의 각 성분에만 의존하는데, $l_2$ norm의 모든 미분계수는 전체 벡터에 의존한다.

 

그러나, 몇몇 머신러닝의 적용(application)에 있어서 성분들이 정확히 0인지 아니면 매우 작은 nonzero 값인지 식별해내는것은 중요하다. 그래서 많은 경우에 제곱 $l_2$ norm은 원점 근처에서 매우 느리게 증가한다는 이유로 바람직하지 않은 측도가 될 수 있다. 

 

(2) $l_1$ norm

앞서 성분들이 정확히 0인지 아니면 매우 작은 nonzero 값인지 식별해내는 것이 중요할 때가 있다고 했다. 이러한 경우에, 우리는 모든 위치에서 같은 비율로 증가(또는 감소)하는 함수에 눈이 끌릴 수 밖에 없으며, 이러한 수학적 특성을 가진 함수가 바로 $l_1$ norm이다($l_2$ norm의 경우 제곱항이 들어가므로 위치에따라 증감비율이 달라짐).

$\left \| \boldsymbol{x} \right \|_1 = \sum_i \left | x \right |_i$

$l_1$ norm은 머신러닝에서 0과 nonzero간의 차이가 중요할때 흔히 쓰인다. $\boldsymbol{x}$의 요소가 0에서 $\epsilon$만큼 이동할때마다, $l_1$ norm은 $\epsilon$씩 증가한다.

 

때때로 nonzero 성분의 개수를 세는것으로 벡터의 크기를 측정해야할때가 있다. 일부 사람들이 이 함수를 "$l_0$ norm"이라고 나타내는데, 이는 잘못된 용어표현이다. 벡터를 크기 $\alpha$만큼 scaling을 한다고해도 nonzero 성분들의 수는 변하지 않기때문에, 벡터의 nonzero 성분들의 개수는 norm[각주:1]이 아니다. $l_1$ norm이 벡터의 nonzero 성분들의 수에 대한 대체로서 종종 사용된다.

 

(3)$l_{\infty }$ norm(max norm)

max norm 이라고도 알려져있으며, 벡터에서 가장 큰 값을 가지는 성분의 절대값으로 나타난다.

$\left \| \boldsymbol{x}\right \|_{\infty} = \underset{i}{max}\left | x_i \right |$

 

(4) Frobenius norm(프로베니우스 놈)

딥러닝의 많은 부분에서 행렬의 크기 측정을 필요로 할 때가 있으며, 이때 쓰이는 것이 Frobenius norm이다. 생긴 모양은 벡터의 경우에서 $l_2$ norm과 동일하다.

$\left \| A \right \|_F = \sqrt{\sum_{i, j}A^2_{i,j} }$

 

마지막 번외로, 두 벡터간의 내적(스칼라곱, dot product)도 norms의 관점에서 다음과 같이 다시 쓰일 수 있다.

$\boldsymbol{x}^T \boldsymbol{y} = \left \| \boldsymbol{x} \right \|_2 \left \| \boldsymbol{y} \right \|_2cos\theta$

여기서 $\theta$는 모두 알다시피 두 벡터 사이의 각이다.

 

 

참고 도서
Goodfellow, Ian, Yoshua Bengio, and Aaron Courville. Deep Learning. The MIT Press, 2016


  1. norm 이란, 몇가지 성질을 만족하는 함수를 칭하며 $l_0$ norm이라고 칭하는 함수는 norm이라고 할 수 없음 [본문으로]

'딥러닝 > 선형대수' 카테고리의 다른 글

고윳값 분해  (0) 2020.04.10
특별한 종류의 행렬과 벡터  (0) 2020.04.10
선형방정식과 선형종속, span  (0) 2020.04.10
행렬과 벡터의 곱연산  (0) 2020.04.10
행렬의 전치와 브로드캐스팅  (0) 2020.04.10

댓글