딥러닝을 위한 Norm
기계학습 자료에서 간혹 Norm과 관련된 수식이나 표기법을 나오면 당황스러울 때가 있습니다. 선형대수에 익숙하지 않다면 Norm이 이상하게 보일 수 있습니다. 본 문서에서는 인공신공망과 기계학습 일고리즘에서 사용되는 Norm을 이해하는 것을 목표로 최소한도의 Norm 개념을 정리합니다.
일반적으로 딥러닝에서 네트워크의 Overfitting(과적합) 문제를 해결하는 방법으로 다음과 같은 3가지 방법을 제시합니다.
- 더 많은 데이터를 사용할 것
- Cross Validation
- Regularization
더 이상 학습 데이터를 추가할 수 없거나 학습 데이터를 늘려도 과적합 문제가 해결되지 않을 때에는 3번 Regularization을 사용해야 합니다. Regularization에서는 Lose 함수를 다음과 같이 변형하여 사용합니다.
위 수식은 기존 Cost 함수에 L2 Regularization을 위한 새로운 항을 추가한 변형된 형태의 Cost 함수입니다.
여기서 Weight의 Regularization을 위해서 Weight의 L2 Norm을 새로운 항으로 추가하고 있습니다. 딥러닝의 Regularization, kNN 알고리즘, kmean 알고리즘 등에서 L1 Norm/L2 Norm을 사용합니다.
Norm
Norm은 벡터의 길이 혹은 크기를 측정하는 방법(함수)입니다. Norm이 측정한 벡터의 크기는 원점에서 벡터 좌표까지의 거리 혹은 Magnitude라고 합니다.
- p는 Lorm의 차수를 의미합니다. p가 1이면 L1 Norm이고 p가 2이면 L2 Norm입니다.
- n은 대상 벡터의 요소 수입니다.
Norm은 각 요소별로 요소 절대값을 p번 곱한 값의 합을 p 제곱근한 값입니다.
주로 사용되는 Norm은 L1 Norm과 L2 Norm, Maxium norm입니다. 이 3 가지 Norm에 대하여 살펴보겠습니다.
L1 Norm
L1 Norm은 p가 1인 norm입니다. L1 Norm 공식은 다음과 같습니다.
L1 Norm을 Taxicab Norm 혹은 맨허튼 노름(Manhattan norm) 이라고도 합니다. L1 norm은 벡터의 요소에 대한 절댓값의 합입니다. 요소의 값 변화를 정확하게 파악할 수 있습니다.
벡터 x의 L1 Norm은 다음과 같이 계산됩니다.
L1 Norm은 다음과 같은 영역에서 사용됩니다.
- L1 Regularization
- Computer Vision
L2 Norm
L2 Norm은 p가 2인 Norm입니다. L2 Norm은 n 차원 좌표평면(유클리드 공간)에서의 벡터의 크기를 계산하기 때문에 유클리드 노름(Euclidean norm)이라고도 합니다. L2 Norm 공식은 다음과 같습니다.
추가로 L2 Norm 공식은 다음과 같이 표현할 수 있습니다.
피타고라스 정리는 2차원 좌표 평면상의 최단 거리를 계산하는 L2 Norm입니다.
다음 벡터 x의 L2 Norm은 다음과 같이 계산됩니다.
L1 Norm은 다음과 같은 영역에서 사용됩니다.
- L2 Regularization
- kNN 알고리즘
- kmean 알고리즘
Maximum Norm(상한 노름)
L-infinity Norm이라고 부르는 것 같습니다.
상한 노름은 p 값을 무한대로 보냈을 때의 Norm입니다. 벡터 성분의 최댓값을 구합니다.
L1 Norm은 각 요소 절댓값 크기의 합이고 L2 Norm은 해당 차원의 좌표평면에서 원점에서 벡터 좌표까지의 최단거리입니다.
좌표 공간에서 L1과 L2 Norm의 시각화
벡터가 있을 때, B 벡터의 L2 Norm이 1이라면 다음과 같이 표현할 수 있습니다.
이 L2 Norm이 가능한 벡터는 다음과 같이 표현할 수 있습니다. 즉 벡터 B는 <그림 1>의 빨간색 원에 위치하게 됩니다.
이러한 원을 “Unit Circle“이라고 합니다.
B 벡터의 L1 Norm도 1이라면 다음과 같이 표현할 수 있습니다.
이 L1 Norm이 가능한 벡터는 다음과 같이 표현할 수 있습니다.
즉 벡터 B는 <그림 2>의 빨간색 마름모 선 위에 위치하게 됩니다. 마름모 선은 인 벡터의 모음입니다.
일반적으로 가장 많이 사용되는 Norm은 L2 Norm입니다. 따라서 와 같은 차수가 생략된 표기는 L2 Norm을 의미합니다.
- np.linalg.norm(x, ord=None, axis=None, keepdims=False)
- x: vector
- ord: 차수(p)
- axis: 연산 방향(축)
- keepdims: 출력을 x와 동일한 차원(dim) 유지
"딥러닝을 위한 Norm, 노름", http://taewan.kim/post/norm, (2021.12.21)
'수학' 카테고리의 다른 글
프로그래머스 인공지능 데브코스 3기 3주차 Day1 (0) | 2021.12.21 |
---|