見出し画像

機械学習への道 数学編2

行列式のメモ

行列同士の演算
行列かけるベクトルは、ベクトルを線形変換することを意味した。
行列同士をかけることは、線形変換をした後さらに線形変換することを意味する。
右から左に変換するので、右の行列の1列(1回目の単位ベクトルの変換)を左の行列に変換していく。
2次元の行列式は、行列ないのベクトルによって構成される面積である。
三次元の場合は、単位ベクトルの場合正方形の体積と考えられる。
行列式の結果がマイナスになるのは、線形変換時空間がひっくり返っているからである。
ひっくり返る時空間は一度なくなり0になった後、先ほどとは反対方向に面積が拡大されている。

線形変換の定義

Numpyなしで演算を行うための関数を定義し、実際にコードで演算を行った。
ようやくリスト内包記表を2回繰り返すとどうなるか理解した。
外側のfor文は、内側のfor文によって得られた結果を繰り返し処理している。
現在の知識から判断すると、線形変換はおそらく線形代数の中で一番重要な概念。
並行移動 ≠ 線形変換
各座標の要素を2乗する変換は線形変換ではない。歪んでいる。
線形変換の定義:
ベクトル変換をT、sを実数、任意のベクトルをu、vとする。
線形変換は以下の式が成り立つ。
$$ T(u) + T(v) = T(u + v) $$
$$ T(s * u) = s * T(u) $$
ある2次元のベクトルを2 * 2の行列で線形変換することは、ベクトルと行列の各行の内積を順に求めることと同じであるみなせる。
行列と行列の乗算:
線形変換したものをさらに変換している。
ベクトルが書いていない状態は、基底ベクトルに対してどのような線形変換をこれから行うのかということを意味している。
恒等行列(単位行列):
行列の各列に基底ベクトルを持つ
よって変換後もベクトルは変化しない

正方形の形をしてないベクトルの意味は何?

一番の疑問:
行=列ではない行列は一体何を意味しているのか
列: 入力ベクトル(の数)。入力空間。入力される基底ベクトルの数。
行: 行の数は出力空間の次元を表している。または基底ベクトルの変換後に行き着く座標
よって2つ目の行列の列(入力される基底ベクトル)は、1つ目の行列の行(入力するベクトルの次元)と等しくならないといけない。
次元を圧縮した際に原点に押しつぶされるベクトルを”Null Space”(行列のカーネル)と言う
行列は関数。ベクトルを入力として受け取り、線形変換して出力する。

ベクトル空間

ベクトルをクラスで定義した。ベクトル空間の数学的定義をコードで表現した。
ベクトル空間には、座標を持たない0ベクトルも含まれる。0ベクトルは0次元上に必ず一つしかない。
またスカラーは1次元のベクトルである。
関数もベクトルのようだ。
関数fは全ての点における座標の値を引数として取るので、無限次元のベクトル空間である。
行列は数字の並びであり、関数でもある。
15次元の座標のベクトル空間 = 5 * 3行列のベクトル空間
数学的な理由ではなく、直感的に説明すると、5 * 3行れつも5個の要素をもつベクトルが3つ並んでいるので15次元のベクトルとして考えられるから。
つまり行列も数字の並びであるから、ベクトルとして考えられる。

今後の予定

またもや延長をする。期限は7/19までに変更した。
理由は、数学の基礎を疎かにして先に進むことは、土台がしっかりしない状態で機械学習を学ぶことになるからである。
しかし、いつまでも「勉強」をし続けて実践しないことも避けたい。

この記事が気に入ったらサポートをしてみませんか?