機械学習への道 数学編
線形代数の基本
線形代数は機械学習だけでなく、コンピュータグラフィックスなど他の分野でも応用されている。
まずは基本を振り返った。
学習中のメモ
単位行列(対角要素が全て1、それ以外は0)は、複数の単位ベクトルを表しているのではないか。
単位行列をかけてもベクトルが変換されない理由の説明がつく。なぜなら単位ベクトルに行列をかけても変化しないからだ。
複数のベクトルで構成されるデータは、行列としてまとめて表現できれば便利そう。
ある2点を結んだ線分は、2点間にある全ての点の集合であるから、matplotlibでたくさんの点をプロットすることで線を表現できているのか。
ベクトルの足し算は、tip-to-tail加算ともいう。
理由は、ベクトルの足し算を幾何学的に表現すると、1つのベクトルの矢印の終点に他のベクトルの始点が来て最終的な計算結果を表現できるから。
ベクトルの距離(大きさ)は三角関数の定理を用いることで求められる。
数直線の掛け算と同様の性質を持つ。
$$ v + v + v + v = 4v $$
掛け算は、繰り返して足し算をすること。
scalar倍するともいう。
scaling 拡大・縮小している。
-1をかけることは、平面上では同じ長さで、逆向きのベクトルに変換することを意味する。
$$ v - w = v + (-w) $$
ベクトルvに対するベクトルwを引くことは、vと-wの足し算であるとみなせる。
また結果は、wに対するvの位置のようになる。
wからvの変移とも言われている。
三角関数
ベクトルを勉強していたら、いつの間にか三角関数を勉強していた。
高校生の時は三角関数という名前をなんとも思わなかった。しかし今になって気づいた。
三角関数は入力(角度)を受け取って値を返す「関数」であると。
ベクトルと三角関数は深い関係にある。
なぜなら三角関数で出てくる極座標(斜辺の長さ、角度)でも一意のベクトルをを特定できるからだ。
三角関数の性質を知っていれば、これから便利だと感じるかもしれない。
寄り道(微分積分)
少しベクトルから離れて、微分積分の復習をした。
高3から久しぶりの対面。
合成関数と逆関数の意味を初めて理解できて、感動した。
特に逆関数。元の関数の入力と出力を入れ替えられるもの。今までは求める公式について納得が行かなかったので、すっきりした。
損失関数を最小化することで、モデルの精度を高めることを知った。
少し機械学習についての、おぼろげなイメージを得た気がする。
3次元のベクトル
3次元では座標は3つになる。
ベクトルの長さと角度で任意のベクトルを特定するためには、3次元では2つの角度を知る必要がある。
行列かける行列の意味:単位ベクトルを線形変換したものを、再度線形変換する。つまり求まる結果は最終的な変換結果である。変換する順番が異なると変換結果は同じにならないので、行列をかける順番の意味はある。
$$ M2M1 ≠ M1M2 $$
ちなみに右から左に線形変換をしていく。合成関数と同じである。
外積
2つのベクトルを入力として受け取り、1つのベクトルを出力する。
2次元では外積は存在しない。なぜなら、外積の結果は入力された2つのベクトルが存在する平面上の外にあるから。つまり入力ベクトルに対し、外積は垂直。
外積は右手の法則に従う。
外戚は入力ベクトルで決まる面積と等しい。よって二つの入力ベクトル間の角度が90度に最大になる。
2つの入力ベクトルがどれだけ垂直であるかわかる。
コンピュータグラフィックスでは、空間に浮かんでいる多角形が3次元空間上にいる人から見えるかどうか判断することに使える。
3次元の図形を2次元で表現するには、3次元のどの方向から物体を見ているか決める必要がある。
例えば(1, 0, 0)と(0, 1, 0)を視点として選択する場合、3次元のベクトルをxとyの平面上に投影するイメージになる。
物体の陰影は、光源の向きと、面に対して垂直なベクトル(外積)がどれだけ一致しているかを内積で測り決定する。
この記事が気に入ったらサポートをしてみませんか?