7月22日に「なぜ線形代数は難しいのか」のブログを公開した後、線形代数の応用例が少ないことに気がついた。線形代数の応用例をいくつか挙げておけば、そこから線形代数の土台となるような基礎部分を抽出することは容易だろう。しかも、基礎部分はシンプルであって、説明にはわずかな言葉と数学用語で事足りるはずである。
応用例を挙げる前に、基礎部分の概略を確認しておこう。
n次元ベクトル空間において、互いに直交するn個の座標軸の各々に沿って定義され、単位とみなされるベクトルeiは、基底ベクトルといわれる。n個の基底ベクトルe1,e2,...,ei,...,enは、互いに一次独立であるとされる。ベクトルeiにスカラーの係数aiを掛けたaieiもまたベクトルであり、eiの一次結合であって、eiと一次従属であるという。
n次元ベクトル空間上の任意のベクトルVは、e1,e2,...,enの一次結合、
V=a1e1+a2e2+...+anen
で一意的に表される。すなわち、一次従属なn個のベクトルを重ね合わせたベクトルVは、n個の基底ベクトルと一次従属の関係になる。
ここで、n個の係数の順序対(a1,a2,...,an)に対して、これらを要素とする係数ベクトルa:(a1,a2,...,an)を対応させることができる。n個の基底ベクトルが一次独立であるため、n個の係数もまた一次独立なベクトル要素である。係数ベクトルaの要素を(a1e1,a2e2,...,anen)と表示してもよいが、その場合にはVはスカラーとなり、基底ベクトルの独立性はなくなる。ベクトルの要素は、スカラーであってもベクトルであってもよいのである。
以下、3つの応用例を挙げる。これらの応用例は、このIT時代にあってよく使われる統計学、人工知能および画像処理技術の分野から選んだ。
(1)7月22日に挙げた重回帰分析の例をここで再録する。重回帰分析では、データ表のデータ間の関係性を表現するのに最適な重回帰式を当てはめる。この式を
y=a0+a1x1+a2x2+...+anxn
とすると、これは定数項a0と回帰係数a1,a2,...,anとから成る未知数を求めることに帰着する。
独立変数(x1,x2,...,xn)は、(x1e1,x2e2,...,xnen)のことであるから、互いに一次独立と考えてよい。すなわち、独立変数の順序対(x1,x2,...,xn)は座標系をつくるとともに、基底をつくるのである。そうすると、係数ベクトルa:(a1,a2,...,an)の要素もまた互いに一次独立であるとともに、ベクトルaはn次元ベクトル空間上の一つの座標点に対応するのである。
従属変数yのa0を除く部分は、係数ベクトルa:(a1e1,a2e2,...,anen)と独立変数を表すベクトルx:(x1e1,x2e2,...,xnen)の内積a・xの形になっている。この形式を用いてyを書くと、
y=a・x+a0
と表現できる。
(2)人工知能の数学的モデルとして、ニューラルネットワークが使われる。ニューラルネットワークは、複数のユニットが階層状に接続されるように構成されたネットワークである。
ユニットに複数の入力x1,x2,...,xnがあるとき、トータルの入力zは、重みwを用いて式
z=w1x1+w2x2+...+wnxn+b
で与えられる。そうすると、人工知能の計算とは、定数bと重みw1,w2,...,wnとから成る未知数を求めることに帰着する。各階層は一般に複数のユニットからの出力を入力するので、重みwも階層的になり、その全体は膨大な数となる。
入力変数を表すベクトルxは、x:(x1e1,x2e2,...,xnen)と表すことができ、重みベクトルwは、w:(w1e1,w2e2,...,wnen)と表せるので、上記トータル入力zは、
z=w・x+b
と表現できる。
ニューラルネットワークのコスト関数fの未知数wiとbは、階層化しているが、単純化して書けばベクトル(w1,w2,...,wn,b)の要素を変数とする関数f(w1,w2,...,wn,b)とみることができる。このベクトルの要素は互いに一次独立であるから、fを各変数で偏微分したものの順序対はまたベクトルであり、その要素は一次独立である。偏微分記号をdで表現するなら、(df/dw1,df/dw2,...,df/dwn,df/db)を要素とするベクトルである。なおこのベクトルの各要素を関数fの勾配と呼ぶ。
また、同様の論法でベクトル(w1,w2,...,wn,b)の各変数を微小に変化させた順序対を(dw1,dw2,...,dwn,db)と書くとする(デルタ記号をdで代用する)と、これもまたベクトルであり、その要素は互いに一次独立である。このベクトルは変位ベクトルと呼ばれる。
関数fの各変数に微小な変化を与えたときの関数fの変化をdfと書くとすれば、dfは、勾配ベクトルと変位ベクトルの内積になっていることが確かめられる。
人工知能の技法として、勾配降下法が知られている。この技法では、関数fに変位ベクトルで表す変位を加える。関数fが最も減少するのは次の関係を満たすときである。
変位ベクトル=-c×勾配ベクトル
cは正の小さな定数である。この条件は、両ベクトルの内積が最小になる条件を表現している。
(3)ディスプレイ上に表示される画像は格子状に配置した画素と呼ぶ点の集まりであり、各画素に濃淡を指定する数値が対応し、それに応じて画面が光っている。濃淡値として、画像の濃淡やカラー成分を指定することができる。
画面がn×n画素で構成されるものとする。各画素にn^2次元ベクトル空間上の基底ベクトルeijを対応させる。eijは、(i,j)画素のみが1で、残りの画素がすべて0であるという意味付けを行うことができる。この基底ベクトルは、大きさが1の単位ベクトルに対応するものとみなしてよい。
たとえば(i,j)画素の濃淡値がfijである全体画像fはベクトルであり、各基底画像fijeijの重ね合わせであるから、
f=f00e00+f01e01+...+fijeij+...fn-1,n-1en-1,n-1
と書ける。これは、fijを要素とする行列をFと書き、基底ベクトルeijを要素とする順序対のベクトルをeと書くと、f=Feとも書ける。
上記例では、(i,j)画素のみが1であるようなeijをもつ基底画像の例を挙げたが、各基底画像は互いに独立しているのであるから、同一内容でさえなければどのような内容の画像を基底として意味付けしても自由である。
例えば画素の値が+1と-1のパターンから成るような画像を基底として定義してもよい。あるいは、三角関数を利用する基底としてもよい。画面上の画素を一次元的に並べた画素の位置をxとすると、基底関数ak(x)は例えばsin関数というわけである。
三角関数の一つを対応させた画像を基底ベクトルとみなすことになると、単位ベクトルの大きさが可変であることを意味し、難解にみえる。しかし、独立変数というものは、元々可変であることを前提にしていたのである。大きさが1の単位ベクトルekに三角関数ak(x)を掛けたak(x)ekを改めて基底ベクトルとみなし、ekと書くことにする。
特に、三角関数の基底は重要である。基底関数を周波数の低いものから順に並べ、通し番号をつけたものを{ek},k=1,2,...,n^2とすると、任意の画像fは、次のように基底の重ね合わせとして表せる。
f=c1e1+c2e2+...+ckek+...+cn^2en^2
これはckを要素とする係数ベクトルと基底ベクトルekを要素とするベクトルの内積に他ならない。
基底関数の系列{ek}が直交関数系と言われる由縁である。線形代数は、フーリエ解析にまでつながっていたのである。
一般に、n次元ベクトル空間において独立変数xkの順序対が基底をつくるならば、xkを変数とする基底関数の順序対もまた基底をつくる。
上記のように画像fを基底{ek}で展開した式は、画像圧縮など、画像処理の分野では重要であるが、その詳細説明は省略する。
以上述べたように、n次元ベクトル空間上の任意のベクトルを扱う線形代数には、基底ベクトルと一次独立という幾何学の概念が基盤になっていることが分かる。
デカルトの解析幾何学は、線形代数という分野にまで進展したのである。そこでは、もはやx-y座標系とか二次元ベクトルのような幾何学的なコンポーネントを取り扱う必要がなくなり、それに代わって解析学と代数式の計算が主役を演ずるのである。
参考文献
長谷川勝也著「ホントにわかる多変量解析」(共立出版)
涌井良幸など著「ディープラーニングがわかる数学入門」(技術評論社)
金谷健一著「インターネット時代の数学―重ね合せの原理と応用」(共立出版)