Notebook長くなってきたので一旦切りました。数学的に特殊という言葉が適切なのか分かりませんが、主に行列の乗算において出現する名前がついている行列を少し紹介します。正方行列これは見た目でイメージがしやすいと思います。行と列の数が同じ行列のことを指します。行列の乗算においては、正方行列同士の乗算は要素数が変わらないという特徴をもちます。数学における「単位〇〇」というのは、その分野の基準とできるような値、「1」を表すことが多いです。行列においても、特に行列の乗算において、スカラーの「1」と同じ働きをするものを指しています。乗算後も乗算前と結果が変わらないということになります。視覚的には正方行列で、斜めに1が並んだような形の以下のようなものを指します。逆行列はある固有の行列を指すものではありません。ある行列Aが存在するとき、行列の乗算を行った結果が単位行列になるものを、Aの逆行列と言います。このとき行列Bは行列Aの逆行列ということができ一般には「A^-1」で表現されます。これはスカラーの逆数表現と同じことです。この逆行列の各要素を変数でおくことによって、行列の乗算から連立方程式により算出することも可能ですが、逆行列を求めるための公式が存在します。【公式】この公式、どこまで覚えておけばいいのかというのは分かりませんが、数学的な素養としては上記のような式をみたときに、逆行列が存在しない行列も存在するのだということは瞬時に察したいところです。逆行列のスカラー部分の分母が「ad-bc」となっているので、これが「0」になるパターンは発散するため、逆行列を求めることができない。存在しないということになります。Pythonではライブラリ「npy.linalg.inv」によって、逆行列を求めることができます。2×2ならまでしも要素数が大きくなってくると、自力で求めることが困難になってくるのでこれは必須ですね。matrix」となりました。実践的には必ず例外処理を行っておくべきところなのかもしれません。逆行列「ad-cd」の部分を行列式といい、以下のように表現されます。転置ベクトル回にもでてきた操作ですが、行列でも同じことができます。操作としては行と列を入れ替えるイメージでよいでしょう。数式上では「T」をつけて表現します。Pythonの実装においても、ベクトルの操作と同様に行列に対する「.T」によって操作を行います。やったような記憶が少しだけあります。以下のような連立方程式を題材とします。連立方程式の解き方は省略しますが、普通に解いて「x=3、y=-4」が求められます。これを行列を利用して解いてみます。上記の連立方程式を行列を用いて表現します。このような形で表現できるかというと、左辺を乗算した結果が以下になるためです。そのまま展開してしまうと普通の連立方程式になってしまうので、行列で解くときは行列の性質を用いて解きます。なにをやっているかと言うと、左辺の行列の逆行列を左から乗算することによって左辺の変数部分以外を単位行列とします。単位行列は変数を含む行列に乗算しても結果は変わらずです。右辺側で逆行列を求めて、それを乗算することによって連立方程式の解を求めることができます。右辺側の計算は面倒なので省略してしまいましたが、面倒なことはPythonに任せてみましょう。[-4.]]見事求められていますね。逆行列で小数(分数)になっている部分もPythonなら何の苦もなく算出することができます。連立方程式の変数が2つならば普通に解いた方が早いですが、変数が増えてきたときに効果を発揮するとあります。Pythonにより求めることができるならばなおさらですね。以下、自分で作ったので解は分かっていて「x=2、y=-1、z=-5」ですが、解くのはめんどくさくなってくるところではないでしょうか。[-5.]]今回はわざわざ複数行に分けて実行していますが、これが一行で算出できるのはすごいですね。写像(変換)これは私にとって新しい概念です。ベクトルについては、比較的分かりやすく(矢印状で)図示することができましたが、行列についても同じく表現可能だそうです。ベクトルに対する行列は「ベクトルを別なベクトルに変換する規則」と捉えることができます。乗算操作などによって、元のベクトルを一定の規則で別のベクトルに変換できることから。このようにベクトルなどのグループからグループへ対応関係を与える規則を写像(変換)(タイトル回収)と言います。行列は線形写像(線形変換)と言われるそうです。pythonを少しいじってみましょう。(1,0)の点(ベクトル)を以下の行列にかけて写像してみます。適切な表現が分からなかったのでかなり無理やりな表現になっています。xとyがそれぞれ-2~2まで範囲の点(ベクトル)、つまりは25個のベクトルに対する写像を表現してみます。図的には少し見にくくなってしまいましたが、これによりベクトルに対して行列を乗算する(写像)ことによって、一定の規則に基づいてベクトルの変換が行われていることが図として確認できると思います。入力結果(x)×重み(W)=出力結果(y)と表現され、これはそのまま、線形写像ということができます。正方行列Aに対して、次の式を満たす列ベクトルが存在するとき、λ(ラムダ)を固有値、xを固有ベクトルと言います。※Eは単位行列このとき、以下のように式を変形でき、逆行列が存在するとき「x=0」となるため、固有ベクトルを持たないということになります。行列式が0となる以下の条件を満たしたときに固有ベクトルが存在すると言い換えることができます。固有ベクトルを実際に求めてみます。行列式を用いて、固有値λから求めます。この固有値に対して、それぞれ固有ベクトルxを求める流れとなります。固有ベクトルをx=(α、β)とすると以下のように進められます。この結果より、固有ベクトルは(1、-1)の定数倍と求めることができました。同様に「λ=1」の場合も求めると、(4、-1)の定数倍と求めることができます。なんで無理やり紹介したかと言うと、これが教師なし学習における主成分分析等に使われると聞いたからです。その4(行列)明けましておめでとうございます。その1(ベクトル)まとめるのが難しいところ。その3(スライシング、関数など)基本はその3までの予定です。回帰編(多次元モデル)【Docker】sudoなしでDockerコマンドを実行する月別アーカイブはてなブログをはじめよう!wantanBlogさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。