AIまいもこ

~理系学生が人工知能を用いて面白いことをやってみたい!!~

ノルムの計算方法まとめてみた

この記事は、こんな人におすすめです。

Target
  • 教科書にノルムって出てきたけどいまいちわからない、、、
  • 正則化の時に出てくるけど、どんな意味だっけ?
  • ノルムとは

    大学の数学の授業になると、見慣れない記号が多く出てきますよね。\|・\|もそんな記号の一つじゃないでしょうか。良く知ってる絶対値記号|・|に似てるけど縦線多すぎ!、と思った人も多いでしょう。

    まずノルムについてざっくり説明をすると、ベクトル空間で「長さ」を与える関数です。
    絶対値が実数の「大きさ」を表していた記号なので、「ベクトル空間版絶対値」とイメージしてもそこまで間違ってはないと思います。
    それでは以下でノルムについて詳しく見ていきましょう。

    ノルムの定義

    ノルム(norm)の定義は次のように定められています。

    関数\|・\|が次の三つの条件を満たすとき、\|・\|をノルムと呼ぶ。
    [条件①](斉次性)
    任意の実数kd次元ベクトル \boldsymbol{x} に対して、
    \|k\boldsymbol{x}\| = |k|\cdot\| \boldsymbol{x} \|


    [条件②](正値性)
    d次元ベクトル \boldsymbol{x} と零ベクトル \boldsymbol{O} に対して、
    \| \boldsymbol{x} \| =0  \Leftrightarrow \boldsymbol{x}=\boldsymbol{O}


    [条件③](三角不等式)
    d次元ベクトル \boldsymbol{x},\boldsymbol{y} に対して、
    \| \boldsymbol{x}+\boldsymbol{y} \| \leq \| \boldsymbol{x} \|+\| \boldsymbol{y} \|


    定義だけ見ても詳しい計算はあまりわかりませんね。それもそのはずで、ノルムにはたくさんの種類があるのです。次にたくさんあるノルムの中でも良く使われるL1ノルム・L2ノルムの二種類をみていきましょう。
    もし、添え字の無い\|・\|のことだけ知りたい人はL2ノルムの項目をお読みください。

    よく使われるノルム:L1ノルム・L2ノルム

    それではL1ノルム・L2ノルムの二種類についてみていきます。ノルムの種類が明確に表記される時には\|・\|の右下に添え字がつけられます。

    L1ノルム

    L1ノルムは\|・\|_1と表され、ベクトルの要素の絶対値の総和で計算されます。
    式では次のように表されます。

    d次元ベクトル \boldsymbol{x} = (x_1, x_2, ..., x_d)とした時、
    \displaystyle \| \boldsymbol{x} \|_{1} =\sum_{i=1}^{d} |x_{i}|

    具体例をみていきましょう。
    例1)2次元ベクトル \boldsymbol{v} = (3,-4)のL1ノルムを求めよ。
    \| \boldsymbol{v} \|_{1} =|3|+|-4|=3+4=7

    例2)4次元ベクトル \boldsymbol{w} = (-2,0,-6,8)のL1ノルムを求めよ。
    \| \boldsymbol{w} \|_{1} =|-2|+|0|+|-6|+|8|=2+0+6+8=16

    L1ノルムの値はL1距離もしくはマンハッタン距離と呼ばれます。この値を変化させるとL1ノルムでは以下のような頂点が軸上にある正方形の等高線が描かれます。
    L1ノルムの等高線。

    L2ノルム

    L2ノルムは\|・\|_{2}と表され、ベクトルの要素の、絶対値の自乗の総和の平方根で計算されます。添え字の無い\|・\|もほとんどの場合、このL2ノルムを意味します。 式では次のように表されます。

    d次元ベクトル \boldsymbol{x} = (x_1, x_2, ..., x_d)とした時、
    \displaystyle \| \boldsymbol{x} \| _{2} = \sqrt{ \sum _{i=1}^{d} | x_{i} |^{2}}

    この式は2次元の場合、ピタゴラスの定理三平方の定理c^{2}=a^{2}+b^{2}と同等の式になります。 また、標準内積\displaystyle \langle \boldsymbol{x} , \boldsymbol{y} \rangle=\boldsymbol{x} \cdot \boldsymbol{y}を用いると \| \boldsymbol{x} \|_{2} =\sqrt{\langle\boldsymbol{x},\boldsymbol{x}\rangle}と表すこともできます。 具体例をみていきましょう。
    例1)2次元ベクトル \boldsymbol{v} = (3,-4)のL2ノルムを求めよ。
    \| \boldsymbol{v} \|_{2} =\sqrt{|3|^{2}+|-4|^{2}}=\sqrt{9+16}=5

    例2)4次元ベクトル \boldsymbol{w} = (-2,0,-6,8)のL2ノルムを求めよ。
    \begin{align}
             \|\boldsymbol{w} \|_{2} &=\sqrt{|-2|^{2}+|0|^{2}+|-6|^{2}+|8|^{2}} \\
                                                &=\sqrt{4+0+36+64}=2\sqrt{26}
             \end{align}

    L2ノルムの値はL2距離もしくはユークリッド距離と呼ばれ、私たちが直感的に理解している2点間の直線距離を表します。この値を変化させるとL2ノルムでは以下のような原点中心の円形の等高線が描かれます。
    L2ノルムの等高線。

    L1・L2以外のノルム:Lp・L∞・L0

    次にL1ノルム・L2ノルム以外のノルムについてみていきましょう。一般化されたノルムは1\leq p \lt \inftyを用いてLpノルムと表されます。また特有のL\inftyノルムとL0ノルムというものも存在します。

    Lpノルム

    上記でも述べたようにLpノルムは一般化されたノルムを表しています。p1\leq p \lt \inftyという制限がありますので注意してください。
    Lpノルムの計算はベクトルの要素の、絶対値のp乗の総和のp乗根で計算されます。式では次のように表されます。

    d次元ベクトル \boldsymbol{x} = (x_1, x_2, ..., x_d)とした時、
    \displaystyle \| \boldsymbol{x} \| _{p} = \sqrt[p]{ \sum _{i=1}^{d} | x_{i} |^{p}}

    具体例をみていきましょう。
    例1)2次元ベクトル \boldsymbol{\alpha} = (2,-2)のL3ノルムを求めよ。
    \| \boldsymbol{\alpha} \|_{3} =\sqrt[3]{|3|^{3}+|-3|^{3}}=\sqrt[3]{8+8}=2\sqrt[3]{2}

    例2)4次元ベクトル \boldsymbol{\beta} = (-1,0,0,1)のL100ノルムを求めよ。
    \begin{align}
             \|\boldsymbol{\beta} \|_{100} &=\sqrt[100]{|-1|^{100}+|0|^{100}+|0|^{100}+|1|^{100}} \\
                                                &=\sqrt[100]{1+0+0+1}=\sqrt[100]{2}
             \end{align}

    例3)2次元ベクトル \boldsymbol{\alpha} = (2,-2)のL1.5ノルムを求めよ。
    \| \boldsymbol{\alpha} \|_{1.5} =\sqrt[1.5]{|2|^{1.5}+|-2|^{1.5}}=\sqrt[1.5]{2\sqrt{2}+2\sqrt{2}}=\sqrt[1.5]{4\sqrt{2}}

    このようにpが1以上の実数であればそれに対応するLpノルムは計算できるので無数の種類のLpノルムが存在します。

    L∞ノルム

    L\inftyノルムは最大値ノルム一様ノルムとも呼ばれ、\|・\|_{\infty}と表されます。L\inftyノルムはLpノルムのp p\to \inftyとした極限の値で、ベクトルの要素の絶対値の中での最大値を表します。式では次のように表されます。

    d次元ベクトル \boldsymbol{x} =(x_1, x_2, ..., x_d)とした時、
    \displaystyle \| \boldsymbol{x} \|_{\infty} =\max_{i=1,2,...,d} |x_{i}|

    具体例をみていきましょう。
    例1)2次元ベクトル \boldsymbol{v} = (3,-4)のL\inftyノルムを求めよ。
    \| \boldsymbol{v} \|_{\infty} =\max(|3|,|-4|)=\max(3,4)=4

    例2)4次元ベクトル \boldsymbol{w} = (-2,0,-6,8)のL\inftyノルムを求めよ。
    \begin{align}
             \|\boldsymbol{w} \|_{\infty} &=\max(|-2|,|0|,|-6|,|8|) \\
                                                &=\max(2,0,6,8)=8
             \end{align}

    ノルムの値をを変化させるとL\inftyノルムでは以下のような各辺の中点が軸上にある正方形の等高線が描かれます。
    L\inftyとL\inftyノルムの等高線。
    pによる等高線の変化
    またここでpによって等高線がどのように変化するのかを整理しましょう。以下の図にp=1,1.5,2,10,\inftyそれぞれで\| \boldsymbol{x} \|_{p} =1となる2次元ベクトル\boldsymbol{x}がどのような点にあるのかをしましました。
    L\inftyノルムの比較。
    L1ノルムは頂点が軸上にある正方形で、L2ノルムは単位円になっています。L1.5ノルムはL1ノルムとL2ノルムの間で丸っぽい図形をしています。
    またL\inftyノルムは各辺の中点が軸上にある正方形になっており、L10ノルムはL2ノルムとL\inftyの間で角の丸まった正方形となっています。
    つまりpが大きくなるにつれて頂点が軸上にある正方形(p=1)→原点中心の円(p=2)→各辺の中点が軸上にある正方形( p\to \infty)というように徐々に変化していきます。

    L0ノルム

    L0ノルムは\|・\|_{0}と表され、ベクトルの要素のうちで0ではないものの個数を意味します。 式では次のように表されます。

    d次元ベクトル \boldsymbol{x} = (x_1, x_2, ..., x_d)とした時、
     \| \boldsymbol{x} \| _{0} =[{\rm supp} (\boldsymbol{x}) の要素数]

    上の式での{\rm supp} (\boldsymbol{x}) \boldsymbol{x} の非ゼロの集合を表しており、式では{\rm supp} (\boldsymbol{x})=\{x_{i} \mid i\in\{1,2,...,d\},x_{i}\neq0\} )と書かれます。
    具体例をみていきましょう。
    例1)2次元ベクトル \boldsymbol{\alpha} = (2,-2)のL0ノルムを求めよ。
    \| \boldsymbol{\alpha} \|_{0} =2

    例2)4次元ベクトル \boldsymbol{\beta} = (-1,0,0,1)のL100ノルムを求めよ。
    \|\boldsymbol{\beta} \|_{0} =2

    他のノルムに比べると0じゃないものを数えるだけなのでとても簡単ですね。しかしL0ノルムには一点注意しないといけないことがあります。 というのもL0ノルムは数学的なノルムの定義を満たしません。上のノルムの定義の条件①の斉次性について考えてみましょう。あるベクトル \boldsymbol{x}の非ゼロの個数と \boldsymbol{x}を0以外の実数倍したものの非ゼロの個数は同じになります。そのためL0ノルムでは斉次性が成立せず厳密にはノルムではありません。(条件②の正値性と条件③の三角不等式は成り立ちます。)
    例)4次元ベクトル \boldsymbol{\beta} = (-1,0,0,1)の時
    \| \boldsymbol{\beta} \|_{0} =2であり、
    2\| \boldsymbol{\beta} \|_{0} =2\cdot2=4となる
    また 2\boldsymbol{\beta} =2 (-1,0,0,1)=(-2,0,0,2)なので \| 2\boldsymbol{\beta} \|_{0} =2
    よって\| \boldsymbol{\beta} \|_{0} =\| 2\boldsymbol{\beta} \|_{0}\neq  2\| \boldsymbol{\beta} \|_{0} となり斉次性が成り立たない。

    このことからL0ノルムはノルムとは呼ばずL0擬ノルム濃度と呼ばれるともあります。

    Summary
  • ノルムにはLpノルムやL0ノルムなどたくさんの種類がある
  •  \| \boldsymbol{x} \| _{p} = \sqrt[p]{ \sum _{i=1}^{d} | x_{i} |^{p}}
  • pが大きくなるにつれて頂点が軸上にある正方形(p=1)→原点中心の円(p=2)→各辺の中点が軸上にある正方形( p\to \infty)と変化
  • L0ノルムでは斉次性は常には成り立たない
  • 参考文献
    ・スパースモデリング 基礎から動的システムへの応用:永原正章
    ・スパース性に基づく機械学習:冨岡亮太