ノルム( norm )は単一のベクトルに対して定義される 大きさ ですを表す数学的な指標です。
2次元ベクトル $\mathbf{x} = (x_1, x_2)$ における代表的なノルムである $L_2$ ノルムと $L_1$ ノルム についてまとめます。

$L_2$ ノルム(ユークリッドノルム)

通常、ベクトルの大きさと言う場合は、$L_2$ ノルムを指します。
原点から点 $(x_1, x_2)$ までの直線距離を表し次の式で定義されます。

\[\|\mathbf{x}\|_2 = \sqrt{x_1^2 + x_2^2}\]

特徴

  • 三平方の定理(ピタゴラスの定理)に基づいた直感的な距離です
  • 機械学習などの最適化では、正則化($L_2$ 正則化 / Ridge)として利用されます

3. $L_1$ ノルム(マンハッタンノルム)

各成分の絶対値の和で計算されるノルムです。
格子状の街路(マンハッタンの街並み)を直線ではなく道に沿って移動したときの距離に対応します。
$L_1$ ノルムは次の式で定義されます。

\[\|\mathbf{x}\|_1 = |x_1| + |x_2|\]

特徴

  • 直線距離ではなく、軸に平行な移動距離の和となります
  • 機械学習における $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'> (スカラー)