サイトアイコン マサムネの部屋

線形空間(ベクトル空間)の解説

線形代数の世界

線形代数で一番最初に勉強する、線形空間(ベクトル空間)についての解説記事です。
線形代数が出来るうれしさを紹介した後、線形空間の定義、線形空間の例を紹介します。
機械学習だと、カーネル法や主成分分析が線形代数です。1
参考書は以下の本です。とても抽象的に書いてくれているので、この本で理解しておくと色んな分野で応用しやすいです。

オススメの参考書

一応、主成分分析を理解するのに必要な線形代数の知識を羅列しておきます。羅列したトピックについては、解説記事を書きます。

スポンサーリンク

Why 線形代数?

どこを見渡しても線形代数は大事だよと書いているし、先輩諸氏から聞く事でしょう。線形代数の枠組みに持ち込むと何が嬉しいか、少し紹介しようと思います。
線形代数は、線形空間と、その間の線形写像についての理論です。興味のある対象を線形代数の枠組みに持ち込むとは、その対象が線形空間である事を示したり、線形空間の元になっていることを示したり、線形写像になっていることを示したりすることからスタートします。
線形空間だと分かった時、線形空間の元だと分かった時、線形写像だと分かった時の、代表的な嬉しい事を挙げておきます。

線形空間だと分かった時

興味のある対象達が、線形空間だと分かったとしましょう。この時、以下のような事が分かります。

線形空間だと分かると、足し算と定数倍が出来るので、具体的に色々な計算が出来ます。計算が出来るというのは、数学の世界ではとてもレアな事で、とても嬉しい事です。
例えば、適当な言葉の集合を考えても、足し算は出来ません。例えば、以下の式を考えます。
$$\begin{eqnarray}
{\rm ごはん } + { \rm 美味しい } =?
\end{eqnarray}$$
\( + \)というのはどんな意味か分かりませんし、何となく言葉の持つ意味を合わせるのかなと思っても 人の感性によって答えはバラバラです。先ほど考えた言葉の集合が線形空間である事が分かったとすると、\(+ \)には明確な意味があり、誰が上の式を計算しても同じ答えが出るようになっているのです。2

線形空間の元だと分かった時

興味のある対象が、線形空間の元だと分かったとしましょう。この時、以下のような事が分かります。

線形空間の元だと分かった瞬間、沢山似たような対象を作る事が出来ます。また、内積が付属していれば、大きさを測ることが出来ます。さらに、代表的な一部分からの距離も測ることが出来ます。3内積を使って、関数が連続かどうか判断する事もあります。

線形写像だと分かった時

興味のある対象が、線形写像だと分かったとしましょう。この時、以下のような事が分かります 。この場合が一番うれしく自分で何かを作る時は、線形写像になるように作る事も珍しくありません。

線形写像は、結構特別な写像です。\(f(x) =x^2 \)とか、\(f(x,y)= xy \)とかは線形写像ではありません。この二つの例だけからも、かなり特別な写像である事が分かると思います。線形写像の良い所は、基底がどのように移りあうのか具体的に計算出来る事です。

線形空間(ベクトル空間)の定義

線形空間とは、一言でいえば係数による掛け算と、要素同士の足し算が出来る集合です。
係数に当たる集合はと呼ばれます。体の定義を書きます。4

集合\( K \)が(可換)体であるとは、\( + : K\times K \rightarrow K , * : K \times K \rightarrow K \)があって、以下の条件を満たすことです。ただし、\(+ (a, b) =a+b , *(a,b ) =a*b \)とします。 また、断らなければ、\(a,b, c \)は任意の\( K \)の元を表します。

  1. \( (a+b)+c=a+(b+c) \)が成り立つ。
  2. \( 0 \in K \) で、\( a+0 = 0+a = a\)を満たすものがただ一つ存在する。
  3. 任意の \( a \in K \) に対して、\( a+b=b+a =0\) となる \( b \in K \)がただ一つ存在する。
  4. a+b = b+a が成り立つ。
  5. \(a*(b*c) = (a*b)*c \)が成り立つ。
  6. 0でない\( K\) の元 \(1 \)で、\(1*a =a*1 =a \)をみたすものがただ一つ存在する。
  7. 0でない\( K \)の元\(a\)に対して \(a*b =b*a =1 \)となる\( b \in K \)がただ一つ存在する。
  8. \(a*b =b*a \)が成り立つ。
  9. \( a* (b+c ) =a*b + a*c \)と\( (a+b) *c = a*c +b*c \)が成り立つ。

1.や5.を結合法則と呼び、9.を分配法則と呼びます。4. ,8.は交換法則と呼ばれます。2.を体の零元と呼び、6. の1を単位元と呼びます。さらに、(3) の元をaの加法に対する逆元と呼び、\(-a \)で表します。7.の元はaの、積に関する逆元と呼び、\(\frac{1}{a} \) とか\(a^{-1} \)で表します。5

体の例としては、有理数全体の集合\( \mathbb{Q}\)や実数全体の集合\( \mathbb{R} \) 、複素数全体\( \mathbb{C} \), 整数全体を、素数pで割った余りが等しければ同じものとみなした集合\( \mathbb{Z}_p \)があります。一方で、整数全体\( \mathbb{Z} \) には積の逆元が無いので体にはなりません。 \( \mathbb{Z}_p \) が体になることを証明してみてください。以下の記事で大体の証明は書いているので素数の性質を使って細部を埋めてみてください。

カーネル法の為の線形代数
カーネル法でキーとなる概念は内積です。内積について解説しています。

線形空間の定義をしましょう。

集合\( V \)が体\( K \)上の線形空間(ベクトル空間)であるとは、スカラー倍\( + : V \times V \rightarrow V , * :K \times V \rightarrow V \)があって、以下の条件を満たすことです。ただし、\(+ (v, w) =v+w , *(a,v ) =a*v \)とします。 また、断らなければ、\(a,b,\)は任意の(\K\)の元を表し、 \(v,w,z \)は任意の(\V\)の元を表します。 さらに、\(K \)の中での積と、スカラー倍\( * :K \times V \rightarrow V \) は区別せずに書きます。

  1. \( (v+w)+z=v+(w+z) \)が成り立つ。
  2. \( 0 \in V \) で、\( v+0 = 0+v = v\)を満たすものがただ一つ存在する。
  3. 任意の \( v \in K \) に対して、\( v+w=w+v =0 \)となる \( w \in V \)がただ一つ存在する。
  4. \(v+w = w+v \) が成り立つ。
  5. \(a*(v+w) = (a*v + a*w \)が成り立つ。
  6. \( a*(b*v)) = (a*b)*v , (a+b)*v = a*v + b*v \)
  7. \(1*v=v \)が成り立つ。
  8. \(a*b =b*a \)が成り立つ。
  9. \( a* (b+c ) =a*b + a*c \)と\( (a+b) *c = a*c +b*c \)が成り立つ。

2.を線形空間の零元と呼びます。 (3) の元をvの逆元と呼び、\(-v \)で表します。 6
\( -v = (-1)* v\)となります。数学に慣れていない人は、右辺と左辺は意味が違う事を理解したうえで、証明してみてください。


とりあえず定義を書きましたが、このままでは良く分からないと思います。何個か例を挙げてみます。

線形空間(ベクトル空間)の例

線形空間の例を挙げます。

[部分線形空間]
線形空間\(V\) の部分集合 \(W \)が、\(V\)の演算で線形空間となる時、\(W \)を\(V\)の部分空間と呼びます。線形空間それ自身より、部分空間の方に興味があるというのは良くある話です。

[n次元ベクトル \( \mathbb{R} ^{n} \) ]
成分が実数であるn次元ベクトル全体は、\(\mathbb{R} \)上の線形空間です。
和は成分毎の和で、スカラー倍は、成分全体への積です。式で書くと以下のようになります。ただし、ベクトル\(\vec{x} \)の第\( i \) 成分 を\( x_i \)と書きます。
$$\begin{eqnarray}
\{\vec{x} +\vec{y} \} _{i} &=&x_{i} + y_{i} \\
\{ a\vec{x} \} _{i} &=& a x_{i}
\end{eqnarray}$$

[n次正方行列全体 \(M_n ( \mathbb{R} \) ]
成分が実数である\( n\times n \)行列全体は、\(\mathbb{R} \)上の線形空間です。
和は成分毎の和で、スカラー倍は、成分全体への積です。式で書くと以下のようになります。ただし、行列\(A\)の\( ( i,j ) \) 成分 を\(A_{ij} \)と書きます。
$$\begin{eqnarray}
\{A +B \} _{ij} &=&A_{ij} + B_{ij} \\
\{ xA \} _{ij} &=& xa_{ij}
\end{eqnarray}$$

[体への写像からなる線形空間7]
Xを集合として、\( K \)を体とします。
$$\begin{eqnarray}
K^{X} = \left\{ f: X \rightarrow K \right\}
\end{eqnarray}$$
とします。\( f,g \in K^{X} \) に対して、 \( h(x) = f(x) +g(x) \) で\( h:K \rightarrow X \) を定義し、\( h= f+g \) と置きます。 また、\( (af) (x) =a* f(x) \)で\(af : K \rightarrow X \)を定義します。この和とスカラー倍で\( K^{X} \)は線形空間になります。零元は任意の元 \(x \in X\) に対して、\( 0(x) =0 \) となる \( 0 :K\rightarrow X \)です。
\( K^{V} \) の部分空間が大事です。\(V^{\ast} = \{ f\in K^{V} | fは線形写像 \} \)の事を\(V\) の双対空間と呼びます。\(- ^{\ast} \)を線形空間に対して双対空間をとる写像だと思うと、\( V^{\ast \ast } \)が考えられます。有限次元では,\(V^{\ast \ast } \simeq V \)ですが、無限次元ではそうとは限りません。

[微分方程式の解からなる線形空間]
次の実数係数の微分方程式を考えましょう。
$$\begin{eqnarray}
\frac{d ^2} {dx^2} f(x) = -f(x)
\end{eqnarray}$$
解は\( \sin \) とか\( \cos \)ですね。
この方程式の解を\(f,g \)とします。このとき、\(h(x) =f(x) +g(x) , (af)(x) =a*f(x) \)で和とスカラー倍を定義すると、\(h \)も\( af \)も微分方程式を満たします。
解全体を\( V \)と置けば、上野和とスカラー倍で\( V \) は\( \mathbb{R} \)上の線形空間です。
今回考えた微分方程式の解は無限にありますが、全ての解は \( \sin \) と\( \cos \)の線形和で表すことが出来ます。これが後に解説する基底の考えにつながります。
一般に定数係数の線形常微分方程式なら解空間は線形空間です。

線形空間の例は沢山ありますが、とりあえず有用そうなものと良く目にするものを挙げました。全ての例が線形空間になっている事を確かめてみてください。
ある対象が線形空間だから~という議論の他にも、興味のある対象の一部が線形空間になっていることを仮定する事で、全体の構造を調べる、というような使い方もあります。8
機械学習で使うのは 大体\( \mathbb{R} ^{n} \) です。特徴量がm個で、データの数がN個のデータを並べると、\( N \times m \)行列が出来るので、それを線形写像だと思って色々やったりします。

まとめ

  1. カーネル法は線形代数と解析の合わせ技ですが。
  2. 機械学習の自然言語処理の分野では、word2vec という手法でそれっぽいことをします。それについての記事があります。
  3. マハラノビス距離と呼ばれます。
  4. あまり気にしなくて大丈夫です。
  5. 定義の中のただ一つ、という言葉は無くても、存在すればただ一つである事が証明できます。元気のある人は確かめてみてください。
  6. 定義の中のただ一つ、という言葉は無くても、存在すればただ一つである事が証明できます。元気のある人は確かめてみてください。
  7. カーネルを想定した例です。
  8. 説空間、ベクトル束、層などのワードで調べて見てください。