ユークリッドノルム(L2ノルム)の基礎から応用まで:定義・性質・計算安定性と高次元の挙動

はじめに — 「ユークリッドノルム」とは何か

ユークリッドノルム(Euclidean norm)は、ユークリッド空間におけるベクトルの「長さ」を表す基本的な概念です。機械学習、最適化、信号処理、コンピュータビジョンなど、IT分野の多くの場面で頻繁に用いられます。数学的には2乗和の平方根として定義され、しばしば「L2ノルム」や単に「ノルム」「長さ」と呼ばれます。本稿では定義、性質、計算上の注意点、機械学習や最適化での利用例、次元が高くなるときの挙動などを詳しく解説します。

定義と基本性質

n次元実ベクトル x = (x1, x2, ..., xn) に対して、ユークリッドノルムは次のように定義されます。

||x||_2 = sqrt(x1^2 + x2^2 + ... + xn^2)

また、内積を <·,·> と表すと、ユークリッドノルムは ||x||_2 = sqrt(<x, x>) と書けます。以下は主な性質です。

  • 非負性: ||x||_2 >= 0、かつ ||x||_2 = 0x = 0
  • 正斉次性(スカラー倍): 任意の実数 α に対し ||α x||_2 = |α| · ||x||_2
  • 三角不等式: ||x + y||_2 ≤ ||x||_2 + ||y||_2
  • 内積誘導性: ユークリッドノルムは標準内積により誘導されるノルムであり、幾何学的な距離と直結する

ユークリッド距離との関係

2点 x, y の間のユークリッド距離は ||x - y||_2 で与えられ、これは日常的に使われる「直線距離(ユークリッド距離)」です。クラスタリング(k-means)や最近傍探索など、多くのアルゴリズムがこの距離を基準に動作します。

他のノルムとの比較(ノルムの同値性)

有限次元空間ではすべてのノルムは同値(equivalent)であり、特に以下のような有用な不等式が成り立ちます(x ∈ R^n)。

  • ||x||_∞ ≤ ||x||_2 ≤ sqrt(n) · ||x||_∞
  • ||x||_2 ≤ ||x||_1 ≤ sqrt(n) · ||x||_2

ここで ||x||_1 は要素の絶対値の和、||x||_∞ は要素の最大絶対値です。これらは、用途に応じてノルムを変えても極端に結果が変わらないことを示していますが、係数は次元 n に依存します。

微分と最適化での取り扱い

ユークリッドノルムは最適化で頻繁に現れます。注意すべきは微分(勾配)の取り扱いです。x ≠ 0 の場合、

∇_x ||x||_2 = x / ||x||_2

が成り立ちます。一方で、0 ベクトルでの勾配は定義されない(サブグラディエントは存在する)ため、実装や理論では特別扱いが必要なことがあります。最適化でよく使われるのはノルムの二乗 ||x||_2^2 で、これは滑らかで勾配が 2x と単純になるため計算が安定します。機械学習ではこの性質を利用して正則化(L2正則化、リッジ回帰)や重み減衰(weight decay)が行われます。

機械学習・データ解析における応用例

  • L2正則化(Ridge): 損失関数に λ ||w||_2^2 を追加することで過学習を抑制。解析的にも数値的にも扱いやすい。
  • クラスタリング(k-means): クラスタ中心との距離にユークリッド距離を用いることが一般的。
  • 主成分分析(PCA): 再構成誤差をユークリッドノルム(二乗和)で評価し、分散最大化と結びつける。
  • 最近傍探索(k-NN): 類似度の尺度としてユークリッド距離を使用。
  • 正規化(ベクトルの正規化): 特徴ベクトルを x / ||x||_2 にスケーリングして、長さの影響を除去する。

計算上の注意点(数値安定性)

定義式そのままに sqrt(sum xi^2) を計算すると、要素が大きすぎるとオーバーフロー、小さすぎるとアンダーフロー(ゼロに丸められる)がおきる可能性があります。実装上の工夫としては:

  • 要素の最大絶対値でスケーリングしてから計算する方法(スケーリング法)
  • 言語・ライブラリが提供する hypotnumpy.linalg.norm のような数値的に安定化された関数を使う
  • 累積誤差を減らすための Kahan の補正和などを検討する

多くの標準ライブラリは内部で安定化処理をしているため、可能であればそれらを利用するのが安全です。

高次元での振る舞い(次元の呪いと集中現象)

次元 n が増えると、ユークリッドノルムや距離に関する直観が崩れがちです。代表的な現象は「距離の集中(concentration of measure)」で、高次元ではランダムに取った点同士の距離がほぼ一定に集中します。これにより、距離を基準にしたアルゴリズム(最近傍検索やクラスタリングなど)の性能・意味合いが変化します。結果として、特徴量空間の次元が高い場合は次元削減や距離尺度の再検討(コサイン類似度やマンハッタン距離などの代替)が検討されます。

具体例と計算

簡単な例を示します。x = (3, 4) のユークリッドノルムは

||x||_2 = sqrt(3^2 + 4^2) = 5

3-4-5 の直角三角形の斜辺の長さと一致することから、幾何学的にも直感的です。より高次元の例として x = (1, -2, 2) ならば

||x||_2 = sqrt(1 + 4 + 4) = 3

実装メモ(ライブラリと関数)

  • NumPy: numpy.linalg.norm(x)(デフォルトで2-ノルム)
  • C/C++: hypot(多次元版を自前で実装するか、ライブラリを利用)
  • 多くの数値線形代数ライブラリ(BLAS/LAPACK系)や機械学習ライブラリには効率的・安定的なノルム計算関数がある

まとめ(実務上のポイント)

  • ユークリッドノルムはベクトルの長さ・距離の基本。多くのアルゴリズムで利用される。
  • 微分の扱い(特にゼロ点)や数値的なオーバーフロー/アンダーフローに注意する。
  • 高次元では距離の直観が崩れるため、必要に応じて次元削減や代替距離を検討する。
  • 実装では標準ライブラリの数値安定版(hypot、numpy.linalg.norm など)を使うのが安全で効率的。

参考文献