ノルム | 数学
ノルム( norm )は単一のベクトルに対して定義される 大きさ ですを表す数学的な指標です。
2次元ベクトル $\mathbf{x} = (x_1, x_2)$ における代表的なノルムである $L_2$ ノルムと $L_1$ ノルム についてまとめます。
$L_2$ ノルム(ユークリッドノルム)
通常、ベクトルの大きさと言う場合は、$L_2$ ノルムを指します。
原点から点 $(x_1, x_2)$ までの直線距離を表し次の式で定義されます。
特徴
3. $L_1$ ノルム(マンハッタンノルム)
各成分の絶対値の和で計算されるノルムです。
格子状の街路(マンハッタンの街並み)を直線ではなく道に沿って移動したときの距離に対応します。
$L_1$ ノルムは次の式で定義されます。
特徴
- 直線距離ではなく、軸に平行な移動距離の和となります
- 機械学習における $L_1$ 正則化(Lasso)では、不必要なパラメータの重みを正確に 0 にする(スパース性を高める)性質があります
2 ベクトル間の距離
2つのベクトル $\mathbf{x} = (x_1, x_2)$ と $\mathbf{y} = (y_1, y_2)$ の距離(差のノルム)は以下のように計算されます。
ユークリッド距離 ($L_2$)
\[\|\mathbf{x} - \mathbf{y}\|_2 = \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2}\]マンハッタン距離 ($L_1$)
\[\|\mathbf{x} - \mathbf{y}\|_1 = |x_1 - y_1| + |x_2 - y_2|\]まとめ比較表
| 項目 | $L_1$ ノルム | $L_2$ ノルム | ||||
|---|---|---|---|---|---|---|
| 名称 | マンハッタンノルム | ユークリッドノルム | ||||
| 計算式 | $ | x_1 | + | x_2 | $ | $\sqrt{x_1^2 + x_2^2}$ |
| 幾何学的意味 | 格子状の移動距離 | 原点からの直線距離 | ||||
| 単位円の形状 | ひし形(ダイヤ型) | 正円 |
フロベニウスノルム(行列のノルム)
行列 $W$ に対する $L_2$ ノルムはフロベニウスノルムと呼ばれ、全要素の 2 乗和の平方根で定義されます。
\[\|W\|_F = \sqrt{\sum_{i,j} w_{ij}^2}\]機械学習では、重み行列 $W$ の大きさを測る指標として $L_2$ 正則化(Weight Decay)などで使われます。
import numpy as np
# 1. 2x2のndarrayを定義
w = np.array([[1, 2],
[3, 4]])
# 2. 各要素を2乗する (Element-wise)
# 結果: [[1, 4], [9, 16]]
w_squared = w ** 2
# 3. 全要素を合計してスカラーにする
# 計算: 1 + 4 + 9 + 16 = 30
# √30
total_norm = np.sqrt(np.sum(w_squared)) # ≈ 5.477
total_norm = np.sum(w_squared)
print(f"元の配列 w:\n{w}")
print(f"2乗した配列 w**2:\n{w_squared}")
print(f"合計値 total_norm: {total_norm}")
print(f"型: {type(total_norm)}") # <class 'numpy.int64'> (スカラー)