AIまいもこ

~理系大学生がAIで面白いことをやってみたい!!~

ベクトル・行列を含む微分の計算方法まとめてみた

f:id:AI_maimoko:20210901233312p:plain

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

Target
  • ベクトルで微分する方法がわからない
  • ヤコブ行列(ヤコビアン

    まず準備としてヤコビ(Jacobi)行列の定義を確認します。ヤコビ行列はヤコビアン(Jacobian)とも呼ばれる微分係数を多変数関数へ一般化したものです。
    2変数のC^1級関数y_{1}(x_1,x_2)y_{2}(x_1,x_2)を用いて、2次元ベクトル \boldsymbol{y}(x_1,x_2)

     \boldsymbol{y}(x_1,x_2)= \begin{bmatrix} y_{1}(x_1,x_2)\\y_{2}(x_1,x_2)\end{bmatrix}
    としておきます。
    y_{1}(x_1,x_2)y_{2}(x_1,x_2)をそれぞれ全微分すると、
    \begin{align}
\Delta y_{1}&=\frac{\partial y_1}{\partial x_1}\Delta x_1 +\frac{\partial y_1}{\partial x_2}\Delta x_2\\
\Delta y_{2}&=\frac{\partial y_2}{\partial x_1}\Delta x_1 +\frac{\partial y_2}{\partial x_2}\Delta x_2
\end{align}
    となります。これらをまとめて表記すると以下のように書くことができます。
     \begin{bmatrix} \Delta y_{1}\\\Delta y_{2}\end{bmatrix}= \begin{bmatrix} \frac{\partial y_1}{\partial x_1} &\frac{\partial y_1}{\partial x_2}\\ \frac{\partial y_2}{\partial x_1}&\frac{\partial y_2}{\partial x_2}\end{bmatrix} \begin{bmatrix} \Delta x_{1}\\\Delta x_{2}\end{bmatrix}
    ここに出てくる
    \begin{bmatrix} \frac{\partial y_1}{\partial x_1} &\frac{\partial y_1}{\partial x_2}\\ \frac{\partial y_2}{\partial x_1}&\frac{\partial y_2}{\partial x_2}\end{bmatrix}
    がヤコビ行列となります。

    これを一般化すると,
    n変数のC^1級関数y_{1}(x_1,\cdots,x_n),\cdots,y_{m}(x_1,\cdots,x_n)を用いて、
    m次元のベクトル \boldsymbol{y}(x_1,\cdots,x_n)
     \boldsymbol{y}(x_1,\cdots,x_n)= \begin{bmatrix} y_{1}(x_1,\cdots,x_n)\\ \vdots \\y_{m}(x_1,\cdots,x_n)\end{bmatrix}
    とした時、 \boldsymbol{y}(x_1,\cdots,x_n)の各要素を全微分すると,
     \begin{bmatrix} \Delta y_{1}\\ \vdots \\ \Delta y_{m}\end{bmatrix}= \begin{bmatrix} \frac{\partial y_1}{\partial x_1} &\cdots&\frac{\partial y_1}{\partial x_n}\\ \vdots&\ddots&\vdots \\ \frac{\partial y_m}{\partial x_1}&\cdots&\frac{\partial y_m}{\partial x_n}\end{bmatrix} \begin{bmatrix} \Delta x_{1}\\ \vdots \\ \Delta x_{n}\end{bmatrix}
    となります。
    よって,この場合のヤコビ行列は以下のようになります。
    \begin{bmatrix} \frac{\partial y_1}{\partial x_1} &\cdots&\frac{\partial y_1}{\partial x_n}\\ \vdots&\ddots&\vdots \\ \frac{\partial y_m}{\partial x_1}&\cdots&\frac{\partial y_m}{\partial x_n}\end{bmatrix}
    それでは具体例をみていきましょう。
    例)2次元ベクトル\begin{bmatrix} r\cos \theta \\ r \sin \theta \end{bmatrix}のヤコビ行列を求めよ。

    \begin{bmatrix} \frac{\partial ( r\cos \theta)}{\partial r} &\frac{\partial  (r\cos \theta)}{\partial \theta}\\ \frac{\partial (r \sin \theta)}{\partial r}&\frac{\partial (r \sin \theta)}{\partial \theta}\end{bmatrix}=\begin{bmatrix} \cos \theta & -r\sin \theta \\  \sin \theta & r \cos \theta\end{bmatrix}

    ベクトルと微分

    それではベクトルを含んだ微分の一般式をみていきましょう。以下の3種類に分けて説明していきます。

  • ベクトルをスカラー微分
  • スカラーをベクトルで微分
  • ベクトルをベクトルで微分
  • ここではx,yスカラー値、\boldsymbol{x}=\begin{bmatrix}x_1\\ \vdots \\ x_n \end{bmatrix}\boldsymbol{y}=\begin{bmatrix}y_1\\ \vdots \\ y_m \end{bmatrix}をそれぞれn,m次元のベクトルとして扱います。

    ベクトルをスカラー微分

    m次元ベクトル\boldsymbol{y}スカラーx微分すると次のようになります。

    \frac{d \boldsymbol{y}}{dx}=\begin{bmatrix} \frac{d y_1}{dx}\\ \vdots \\ \frac{d y_m}{dx} \end{bmatrix}
    それでは具体例をみていきましょう。
    例)3次元ベクトル\boldsymbol{y}=\begin{bmatrix} x^{3} \\ 2x^{2} \\ 1 \end{bmatrix}x微分せよ。

    \frac{d \boldsymbol{y}}{dx}=\begin{bmatrix} \frac{dx^{3}}{dx} \\ \frac{d(2x^{2})}{dx} \\ \frac{d(1)}{dx} \end{bmatrix}=\begin{bmatrix} 3x^{2}  \\4x\\0\end{bmatrix}

    スカラーをベクトルで微分

    スカラーyn次元ベクトル\boldsymbol{x}微分すると次のようになります。

    \frac{d y}{d \boldsymbol{x}}=\begin{bmatrix} \frac{\partial  y}{\partial x_1}\\ \vdots \\ \frac{\partial y}{\partial x_n} \end{bmatrix}
    それでは具体例をみていきましょう。
    例)y=2x_{1}+x_{2}-x_{3} \boldsymbol{x}=\begin{bmatrix} x_{1} \\ x_{2} \\ x_{3} \end{bmatrix}微分せよ。

    \frac{d y}{d \boldsymbol{x}}=\begin{bmatrix} \frac{\partial(2x_{1}+x_{2}-x_{3})}{\partial x_{1}} \\ \frac{\partial (2x_{1}+x_{2}-x_{3})}{\partial x_{2}} \\ \frac{\partial (2x_{1}+x_{2}-x_{3})}{\partial x_{3}} \end{bmatrix}=\begin{bmatrix} 2 \\1\\-1\end{bmatrix}

    ベクトルをベクトルで微分

    m次元ベクトル\boldsymbol{y}n次元ベクトル\boldsymbol{x}微分すると次のようになります。

    \frac{d \boldsymbol{y}}{d \boldsymbol{x}}=\begin{bmatrix} \frac{\partial y_1}{\partial x_1} &\cdots&\frac{\partial y_1}{\partial x_n}\\ \vdots&\ddots&\vdots \\ \frac{\partial y_m}{\partial x_1}&\cdots&\frac{\partial y_m}{\partial x_n}\end{bmatrix}

    これはお気づきの通りヤコビ行列となります。ベクトル同士の微分の方法を忘れてしまった場合はヤコビ行列の定義を思い出すとよいと思います。イメージとしては、\Delta \boldsymbol{y}=\frac{d \boldsymbol{y}}{d \boldsymbol{x}} \Delta \boldsymbol{x}が成り立つ\frac{d \boldsymbol{y}}{d \boldsymbol{x}}を、\boldsymbol{y}の全微分から考えるです。

    行列と微分

    続いて行列を含んだ微分の一般式をみていきましょう。以下の2種類に分けて説明していきます。

  • 行列をスカラー微分
  • スカラーを行列で微分
  • ここではx,yスカラー値、\boldsymbol{X}=\begin{bmatrix}x_{11} & \cdots & x_{1n_{x}} \\ \vdots&\ddots&\vdots \\ x_{m_{x}1} & \cdots & x_{m_{x}n_{x}} \end{bmatrix}m_{x}\times n_{x}の行列、\boldsymbol{Y}=\begin{bmatrix}y_{11} & \cdots & y_{1n_{y}} \\ \vdots&\ddots&\vdots \\ y_{m_{y}1} & \cdots & y_{m_{y}n_{y}} \end{bmatrix}m_{y}\times n_{y}の行列として扱います。

    行列をスカラー微分

    m_{y}\times n_{y}の行列\boldsymbol{Y}スカラーx微分すると次のようになります。

    \frac{d \boldsymbol{Y}}{dx}=\begin{bmatrix} \frac{dy_{11}}{dx} & \cdots &\frac{ dy_{1n_{y}}}{dx} \\ \vdots&\ddots&\vdots \\ \frac{dy_{m_{y}1}}{dx} & \cdots & \frac{dy_{m_{y}n_{y}}}{dx} \end{bmatrix}
    それでは具体例をみていきましょう。
    例)2\times3の行列\boldsymbol{Y}=\begin{bmatrix} x^{3} & x^{2}&x \\ 4x^{4}&2x^{2} & 1 \end{bmatrix}x微分せよ。

    \frac{d \boldsymbol{Y}}{dx}=\begin{bmatrix} \frac{dx^{3}}{dx} & \frac{dx^{2}}{dx}&\frac{dx}{dx} \\ \frac{d(4x^{4})}{dx}&\frac{d(2x^{2})}{dx} & \frac{d(1)}{dx} \end{bmatrix}=\begin{bmatrix} 3x^{2} & 2x&1 \\ 16x^{3}&4x & 0 \end{bmatrix}

    スカラーを行列で微分

    スカラーym_{x}\times n_{x}の行列\boldsymbol{X}微分すると次のようになります。

    \frac{dy}{d \boldsymbol{X}}=\begin{bmatrix} \frac{\partial y}{\partial x_{11}} & \cdots &\frac{\partial y}{\partial y_{1n_{x}}} \\ \vdots&\ddots&\vdots \\ \frac{\partial y}{\partial x_{m_{x}1}} & \cdots & \frac{\partial y}{\partial x_{m_{x}n_{x}}} \end{bmatrix}
    それでは具体例をみていきましょう。
    例)y=4x_{1}^{2}-6x_{1}x_{2}2\times2の行列\boldsymbol{X}=\begin{bmatrix} x_{1} & x_{2}\\ 2x_{1}&x_{3} \end{bmatrix}微分せよ。

    \frac{dy}{d \boldsymbol{X}}=\begin{bmatrix} \frac{\partial (4x_{1}^{2}-6x_{1}x_{2})}{\partial x_{1}} & \frac{\partial (4x_{1}^{2}-6x_{1}x_{2})}{\partial x_{2}}\\ \frac{\partial (4x_{1}^{2}-6x_{1}x_{2})}{\partial (2x_{1})}&\frac{\partial (4x_{1}^{2}-6x_{1}x_{2})}{\partial x_{3}} \end{bmatrix}=\begin{bmatrix} 8x_{1}-6x_{2} & -6x_{1}\\ 4x_{1}-3x_{2}&0 \end{bmatrix}

    次くるプログラミング言語Juliaとは

    f:id:AI_maimoko:20210824164445p:plain

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

    Target
  • Juliaって何?
  • Pythonとは違うプログラミング言語が勉強したい
  • 今後はやりそうなプログラミング言語を先取りしたい!
  • Juliaとは

    Juliaは2012年に公表されたとても新しいプログラミング言語です。人工知能やデータサイエンスの分野でPythonの牙城を崩しうる存在として注目を集めています。開発者はマサチューセッツ工科大学(MIT)のAlan Edelman教授を含めた4人の名前が挙げられています 。Juliaのコンセプトは次のように述べられています。「オープンソースで、”C”言語のように処理が速く、"Ruby"のようにダイナミクスで、"Lisp"のように真のマクロを持ち,"MATLAB"のように数値解析が得意で、"Python"のように汎用性があり、"R"のように統計に関する処理が得意で、"Perl"のように自然に文字列の処理ができ、"シェルスクリプト"のようにプログラム同士をくっつけることができ、"Hadoop"のような分散コンピューティングもできる言語」いままで用いられてきたプログラミング言語や技術のいいところばかり寄せ集めた言語ですね。開発者たちもJuliaブログWhy We Created Juliaの中で「私たちは欲張りだから」Juliaを作ろうと思ったと書いているので、自他ともに認める良いとこ取り言語になっているわけです。

    Juliaの特徴

    それではJuliaの具体的な特徴をみていきましょう。

    メリット

    処理が高速

    Juliaの特徴といわれるとまず一番に挙げられる項目です。Python競技プログラミングなどの計算時間を短くする必要のある場面ではC++やCに比べて、計算の高速化の工夫を必要としたり、そもそも物理的に難しい場合も挙げられるほど処理時間に難があります。一方で、JuliaはC以上の計算パフォーマンスを持ち、もちろんPythonよりも処理が格段に速くなっています。

    可読性が高い

    Pythonにも挙げられることですが、Juliaの構文はとてもシンプルです。個人的に、数式のかけ算記号の*が省略可能なところはJuliaの構文面の特徴の中でもかなりお気に入りです。手書き数式の流れでプログラミングでも、よく「2(x-1)」と書いてしまいエラー!と言われたことがある人も多いんじゃないでしょうか。Juliaではこの手書き形式のかけ算でも問題なく正しい処理をしてくれます。

    他言語用のライブラリ・機能を利用可能

    Julia自体のライブラリはまだまだ少ないですが、PythonやCのライブラリを使用することができます。またAnaconda上のJupyter NotebookやJupyter LabでもJuliaを実行することができます。

    デメリット

    情報の少なさ

    デメリットはJuliaに関する情報の少なさです。公表されてからまだ年月が浅く、日本でのユーザー数もまだまだ少ないので、本屋にもJuliaの専門書は数えるほどしか並べられていません。ネット上での日本語の記事もかなり少ないです。そのためエラーに一人で長時間苦しむといったことが考えられます。
    "Juliaの公式ホームページ"には英語ですが、たくさんの解説記事が掲載されているので、わからなくなったら公式ホームページを見てみましょう。

    Summary
  • Juliaは良いとこ取りの新しい言語
  • 処理が速くて、構文も簡単
  • ユーザー数が少なく、日本語の解説も少ない
  • ノルムの計算方法まとめてみた

    f:id:AI_maimoko:20210816230453p:plain

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

    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ノルムでは以下のような頂点が軸上にある正方形の等高線が描かれます。
    f:id:AI_maimoko:20210816170158p:plain
    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ノルムでは以下のような原点中心の円形の等高線が描かれます。
    f:id:AI_maimoko:20210816170204p:plain
    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ノルムでは以下のような各辺の中点が軸上にある正方形の等高線が描かれます。
    f:id:AI_maimoko:20210816170418p:plain
    L\inftyとL\inftyノルムの等高線。
    pによる等高線の変化
    またここでpによって等高線がどのように変化するのかを整理しましょう。以下の図にp=1,1.5,2,10,\inftyそれぞれで\| \boldsymbol{x} \|_{p} =1となる2次元ベクトル\boldsymbol{x}がどのような点にあるのかをしましました。
    f:id:AI_maimoko:20210816213734p:plain
    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ノルムでは斉次性は常には成り立たない
  • 参考文献
    ・スパースモデリング 基礎から動的システムへの応用:永原正章
    ・スパース性に基づく機械学習:冨岡亮太

    人工知能(AI)と機械学習って何がちがうの?

    f:id:AI_maimoko:20210812164023p:plain

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

    Target
  • 人工知能機械学習って同じなの?
  • そもそも人工知能って何?
  • これから人工知能について学びたい!
  • 人工知能とは

    人工知能と聞いて皆さんは何を思い浮かべるでしょうか?SFに出てくる、何でも自ら判断して行動するドラえもんのようなロボットを想像する人もいるかもしれません。実際にこのようなものは人工知能の一種ではあります。しかしそれだけが人工知能ではありません。それでは、初めに人工知能という言葉についてみていきましょう。

    人工知能の定義

    人工知能(Artificial Intelligence:AI)という言葉は、1956年の夏にアメリカで開催されたダートマス会議で初めて登場しました。人工知能の定義は明確には定められておらず、人により多少のばらつきがありますが、広辞苑では以下のように述べられています。

    推論・判断などの知的な機能を人工的に実現するための研究。また、これらの機能を備えたコンピューター‐システム。1956年に、アメリカのマッカーシー(J. McCarthy1927〜)が命名。知識を蓄積するデータベース部、集めた知識から結論をひきだす推論部が不可欠である。データベースを自動的に構築したり誤った知識を訂正したりする学習機能を持つものもある。

    -広辞苑第六版

    与えられたプログラムを従順に実行していくだけのシステムとは異なり、自ら判断を行うシステムが人工知能と呼ばれています。つまり何でも判断ができなくても、何かしら判断ができれば人工知能に含まれるのです。

    強いAIと弱いAI

    ここで何でも判断できるAIと限られたものだけ判断できるAIは同じ扱いなのかという疑問が生まれてきます。この2つのAIは哲学者のジョン-サールによりそれぞれ「強いAI」と「弱いAI」というグループに分類されています。

    強いAI

    強いAIは汎用人工知能(Artificial General Intelligence:AGI)とも呼ばれ、上で述べている何でも判断できるAIに当てはまります。このAIは生物(特に人間)の知能を再現した、ある意味心を持った人工知能であり、ドラえもんターミネーターといった例に挙げられます。例からお気づきの方も多いと思いますが、強いAIはまだ実現できていません。「強いAI」という言葉を生み出したジョン-サールは強いAIは実現不可能だと述べました。しかし現在多くの研究者がこの強いAIの実現を目標に研究をしているおり、実現される日もそう遠くはないかもしれません。

    弱いAI

    弱いAIは特化型人工知能(applied AI、narrow AI)とも呼ばれ、上で述べている限られたものだけ判断できるAIに当てはまります。画像処理や文章の処理、ゲームの人工知能などが分類され、具体的には自動運転のシステムや将棋ソフトウェアのPonanzaなどが挙げられます。残念ながらPepper君も心を持って人と接しているとは到底言えず、弱いAIに分類されます。私たちの生活の多くの場面でAIが取り入れられています。つまり、それだけたくさんの種類の弱いAIが存在しているということになります。

    人工知能機械学習の違い

    人工知能についてだいたいわかったところで本題に入りましょう。
    人工知能と同時に機械学習という言葉も使われることが多く、同じものなの?と思っている人も多いでしょう、私もその一人でした。
    結論から述べると機械学習人工知能の分野の一つになります。
    人工知能には様々な分野があります。

    分野 内容
    機械学習 データを用いた学習を行うことによりアルゴリズムが自動で改変されます。
    遺伝的アルゴリズム データを生物の遺伝子にみたてたもの。適応度の高いデータ同士を交差させたり、突然変異を起こすことで最適なものを探します。
    群知能 データを生物の群れにみたてたもの。簡単なアルゴリズムを持つデータを複数集めることで複雑な振る舞いを実現します。

    上の表は人工知能の種類の一部で他にもファジィ制御エキスパートシステムなどがあります。人工知能といっても偏に同じものではなく、様々な分類、種類に分けられています。

    Summary
  • 人工知能は自ら推論、判断を行うシステム
  • 人工知能には強いAIと弱いAIという分類がある
  • 機械学習人工知能の一分野