ブログ

微分方程式(differential equation)の基本事項まとめ②|初期条件・初期値問題

微分方程式(differential equation)は多くの応用先がありますが、統計学を学ぶにあたってもハザード関数から確率密度関数を導出する際などに用いられます。当記事では微分方程式を解く際に重要になる「初期条件・初期値問題」について取り扱いました。
作成にあたっては「チャート式シリーズ 大学教養 微分積分」の第$9$章「微分方程式」を主に参考にしました。

・数学まとめ
https://www.hello-statisticians.com/math_basic

初期条件・初期値問題

微分方程式の初期条件で与えられた値を初期値といい、初期値を代入して微分方程式の定数の具体的な値を計算する。このような問題を初期値問題という。

微分方程式における初期値問題の計算例

以下、「チャート式シリーズ 大学教養 微分積分」の例題の確認を行う。

基本例題$162$

・$[1]$
$$
\large
\begin{align}
y’ = xy^2
\end{align}
$$

上記の解の$\displaystyle y = -\frac{2}{x^2 + C}$に$x=1, y=-1$を代入すると下記が得られる。
$$
\large
\begin{align}
y &= -\frac{2}{x^2 + C} \\
-1 &= -\frac{2}{1^2 + C} \\
-1-C &= -2 \\
C &= -1+2 \\
&= 1
\end{align}
$$

よって$\displaystyle y = -\frac{2}{x^2 + 1}$が得られる。

・$[2]$
$$
\large
\begin{align}
xy’ + y = y^2
\end{align}
$$

上記の解の$\displaystyle y = \frac{1}{Cx+1}$に$\displaystyle x=1, y=\frac{3}{2}$を代入すると下記が得られる。
$$
\large
\begin{align}
y &= \frac{1}{Cx+1} \\
\frac{3}{2} &= \frac{1}{C+1} \\
3(1+C) &= 2 \\
3C &= -1 \\
C &= -\frac{1}{3}
\end{align}
$$

よって$\displaystyle y = \frac{1}{-x/3+1} = \frac{3}{3-x}$が得られる。

・$[3]$
$$
\large
\begin{align}
y’ = e^{x+y}
\end{align}
$$

上記の解の$y = -\log{(-(e^{x} + C))}$に$x=0, y=0$を代入すると下記が得られる。
$$
\large
\begin{align}
y &= -\log{(-(e^{x} + C))} \\
0 &= -\log{(-(e^{0} + C))} \\
\log{(-(1 + C))} &= 0 \\
-(1 + C) &= e^{0} \\
C &= – 1 – 1 \\
&= -2
\end{align}
$$

よって$\displaystyle y = -\log{(2-e^{x})}$が得られる。

基本例題$170$

【数式なし版】直感的に理解するTransformerの仕組みと処理の流れの概要

昨今のDeepLearningの研究を席巻するTransformerの解説は数式を用いたものが多く、なかなか理解が難しいかもしれません。そこで当記事では別途作成を行ったTransformerの解説コンテンツを元に数式を用いないでTransformerの仕組みと処理の流れの概要の取りまとめを行いました。

Introduction

Transformerの概要

TransformerはChatGPT・GPT-$4$など多くのLLMで用いられる主要な仕組みです。元々は$2017$年に機械翻訳の分野で考案された仕組みである一方で、その表現力の高さから現在では文書要約や対話などより難しいタスクへの適用が行われています。

Transformerの処理の全体図:Transformer論文より

Transformerの応用分野

Transformerは大変強力な処理の仕組みであり、様々な応用先があります。NLP分野のみならず画像認識(ViT; Vision Transformerなど)や強化学習、時系列処理などでも用いられることがあります。

より詳しい理解にあたって

当記事では大まかな理解を重視しましたので詳細の解説は行いませんでした。より詳しい理解にあたっては下記などを参照ください。

【Udemy版】直感的に理解するTransformer(統計の森作成)
・【pdf版】直感的に理解するTransformerの仕組み(統計の森作成)

前提知識

Word$2$vec

Word$2$vecは単語(token)をベクトルで表したものです。ベクトルはプログラミング言語における配列と同様で、複数の数字を保持した$1$つの箱をイメージすると良いです。なのでWord$2$vecは『一つ一つの単語が複数の数字を持つ』と理解すれば良いです。

たとえば「本屋に行った。統計の教科書を買った。」から主要な単語を抜き出した「本屋、行く、統計、教科書、買う」はそれぞれ下記のようにベクトル表記することが可能です。

上図の緑の枠が「本屋」に対応するベクトルです。上図では「本屋」という単語を表すにあたって、「場所・書籍・商品」という三つの特徴を持つということを$1$で表しました。同様に「講義・動詞」という二つの特徴を持たないことを$0$で表しました。

このようにWord$2$vecでは単語をベクトルで変換することで意味を持たせることが可能です。Word$2$vecを用いる際は基本的に予め学習させて表を作成しておき、「本屋」であれば「$(1,1,1,0,0)$」というように単に辞書を調べるように取得します。

Word$2$vecを用いた単語のベクトル変換:基本的には検索と同様のイメージで理解できる

厳密には「場所・書籍・商品・講義・動詞」のようにWord$2$vecの要素がそれぞれ明確な意味を持つわけではありませんが、同様な解釈は可能なので基本的にはこのような理解で十分だと思います。

ニューラルネットワーク・深層学習

深層学習(DeepLearning)は大規模なニューラルネットワークで、回帰による予測と基本的には同様な演算の仕組みに基づいて計算が行われます。

回帰分析:水色のサンプルを元に赤の直線を得る

上図は回帰分析の図で、たとえば$x$には「部屋の広さ」、$y$には「家賃」などが設定され、「部屋の広さ」から「家賃」を予測できるように直線を得ます。ここで回帰分析とシンプルなニューラルネットワークであるMLP(Multi Layer Perceptron)の対応は下図のように表されます。

回帰分析とMLP(Multi Layer Perceptron)の対応

上図の対応を元にMLPは回帰における計算を複数回繰り返したものであると認識しておくと良いです。中間層(隠れ層)の値を制御するにあたって活性化関数が用いられることも有名なので合わせて抑えておくと良いと思います。また、深層学習(Deep Learning)は大規模なニューラルネットワークのことを指します。

ニューラルネットワークの構造的仮定の活用①:CNN

MLPの入力層と出力層:入力層$\to$中間層の計算に用いるパラメータの数は「入力層の次元$\times$出力層の次元」で計算できるので、上記では$2 \times 3 = 6$個のパラメータが必要

上図のようなMLP(Multi Layer Perceptron)形式のニューラルネットワークは入力する数字の数(次元ということが多いです)が増えると取り扱いが難しくなります。たとえばピクセルサイズが$500 \times 500$のカラー画像の場合、入力層の次元は下記のようになります。
$$
\large
\begin{align}
500 \times 500 \times 3 = 750{,}000
\end{align}
$$

もし中間層の次元が入力層の次元と同じ$750{,}000$である場合、この計算に必要なパラメータの数は$750{,}000$の$2$乗になるので下記のように計算できます。
$$
\large
\begin{align}
750{,}000^{2} = 562{,}500{,}000{,}000
\end{align}
$$

上記は$5{,}600$億に対応し、昨今注目を集めるPaLMの$5{,}400$億と同様な数字になります。このようにMLPをそのまま適用すると$1$層の計算だけで計算量が大変大きくなります。

この解決にあたっては「入力の特徴を活用する」ということが原則用いられます。たとえば画像であれば「近傍のピクセルのRGB値に近いRGB値を持つ」、言語であれば「近傍の単語によって用いられる単語が決まる」などです。

画像の拡大例:線と背景の境界であってもそれぞれのピクセルは似通った色(RGB値)を持つ

上図は画像を拡大したものですが、拡大を行いピクセル単位に着目することで、それぞれのRGB値は近傍の値に概ね近い値を持つことが確認できます。このことを「高い相関を持つ」ということもあります。「相関」は統計学に出てくる「相関係数」と同じ意味です。

画像の場合はこのように「近傍のピクセルと似たようなRGB値を持つ」という特徴を元に畳み込みニューラルネットワーク(CNN)という手法を用いることが多いです。

ニューラルネットワークの構造的仮定②:RNN

画像ではCNNが用いられることが多い一方で、「時系列処理・信号処理・言語処理」などの数字や記号の列を取り扱う場合はリカレントニューラルネットワーク(RNN)という仕組みが従来的にはよく用いられてきました。

RNNの処理概要:中間層(隠れ層)の値を次の中間層に作用させる、基本的には数値を加算すると理解しておけば良い

入門書などではRNNの改良の一つであるLSTMが紹介されることが多いですが、TransformerによるパラダイムシフトによってLSTMはRNNの一種であると括ることが多くなったことも合わせて抑えておくと良いです。

ニューラルネットワークの構造的仮定③:グラフニューラルネットワーク

主なニューラルネットワークの構成の例にはCNNとRNNが挙げられることが多い一方で、近年ではグラフニューラルネットワーク(GNN)が注目を集めることも多くなりました。GNNはRNNの発展形であると見なすこともできるなど、大変強力な手法です。

グラフニューラルネットワークを理解するにあたっては、下図で取り扱った「グラフ」と「隣接行列」の対応を抑えておくと良いです。

グラフと隣接行列:左がグラフ、右が隣接行列に対応。たとえばグラフで$1$と$2$の点が連結していることを隣接行列では$1$行$2$列と$2$行$1$列の成分が$1$であることで表す。

グラフは点と線を用いて物事の関連性を表す考え方です。駅の路線図やフローチャートのように複雑な物事を簡易的に表すにあたってよく用いられます。グラフニューラルネットワークの解説は抽象的になりがちなので以下具体的な例を元に確認します。

緑の枠で囲った領域はそれぞれニューラルネットワークの中間層(隠れ層)に対応する、ここでは箱が$5$つあるので$5$次元の中間層を図示したものであると理解すればよい。左がRNN、右がグラフニューラルネットワークを表す。

上図はWord$2$vecで確認した「本屋、行く、統計、教科書、買う」の「RNN」と「類似度に基づくGNN」の参照構造です。RNNでは入力の順番に基づいて隠れ層の作用が行われる一方で、GNNではそれ以外の参照構造に基づいて隠れ層同士の相互作用の演算を行うことが可能です。

GNNは参照構造をグラフで与えることで計算を行うことができるので、処理の自由度が非常に大きくなります。たとえば時系列順にグラフを与える場合、GNNはRNNに一致します。

このように自由度の高い処理が実現できるグラフニューラルネットワーク(GNN)を元に単語の類似度に基づいてグラフを構築することで処理を定義したのがTransformerです。Transformerについては詳しくは次節で取り扱います。

なぜRNNでは十分なパフォマンスが出なかったのか

Transformerが出てくる以前は「時系列問題・言語処理」などを取り扱うニューラルネットワークにRNNやRNNを改良したLSTMの使用が検討されることが多かった一方で、入力が$20$〜$50$以上になるとうまく取り扱えないという問題がありました。

上記の問題は「入力を$1$つずつ処理し、中間層(隠れ層)を次の入力に作用させる」RNNの構造に起因します。直感的には「伝言ゲーム」や「都市伝説」のように「伝達処理」を$10$回、$20$回と繰り返すうちに最初の方の情報が消失すると解釈すると良いです。

たとえば一回あたりに$90$%の伝達効率だとする場合、伝達処理を$20$回行うと$0.9^{20}$を元に約$12.2$%、$50$回行うと$0.9^{50}$を元に約$0.5$%が得られます。計算の詳細は流しても良いので、「$90$%で伝達できる場合も回数が多くなると情報が消失する」だけ確実に抑えておきましょう。

Transformerの処理の流れ

Attention

Transformerのベースになった主要な処理の$1$つがAttentionです。Attentionは「中間層(隠れ層)の重み付け和」を計算することで「伝言ゲーム」のように情報が消失するRNNの問題の解決を行う手法です。

RNNとAttentionの図解:Attentionでは全ての中間層の重み付け和を元に出力層の計算を行う、実線は重み付け和を表す。

RNNでは入力する系列(記号列・単語列をまとめて系列といいます)に対し順々に処理を行いましたが、Attentionでは重み付け和を計算することで情報の消失を抑えることができます。これにより系列が長い場合も処理が可能になります。

オリジナルのTransformerではデフォルトで$512$までの長さの系列を取り扱うことが可能になるように実装されることも合わせて抑えておくと良いと思います。

self Attention

Attentionを用いる上で用意する必要があるのが「重み付け和」を計算するときの「重み」です。この値はどのように計算するのが良いでしょうか。「外部から与える」というのも可能である一方で、ニューラルネットワークの構成が大変複雑になるなど課題もありました。

この解決にあたって用いられるのがself Attentionという考え方です。self Attentionでは「入力データから中間層(隠れ層)を得る一方で、隠れ層の値に基づいてAttentionの重みの計算」も行います。

self Attentionでは隠れ層のベクトルの値に基づいてAttention計算に用いる重みの計算を行う

「入力に基づいてどのように重みを計算すると良いか」については様々な手法が考案されましたが、その中で「最もシンプルかつ強力な手法」がTransformerで用いられるDot Product Attentionです。

Dot Product Attention

Dot Product Attentionはself Attentionを実現する一つの手法であり、「単語」などの類似度に基づいてAttentionの重みの計算を行います。ここでDot Productは内積を意味し、大まかにはベクトルの類似度を計算することに対応します。

ベクトルを図で理解する場合、「向き」と「大きさ」を持った「矢印」であると見ることができますが、「内積」はこの「矢印」の類似度を計算する方法です。

$3$つのベクトルの例

たとえば上図のような$3$つのベクトルがある場合、「左と真ん中」は直交するので類似度は$0$、「左と右」、「真ん中と右」は少なからず同じ向きを向くので「$0$より大きい類似度」が得られればベクトルの類似度を計算したことになります。

内積では同じ位置の要素の掛け算を行い、それぞれの要素ごとに和を計算することでベクトルの類似度を計算します。図の例では具体的に下記のような計算を行います。
・左のベクトルと真ん中のベクトルの内積
$$
\large
\begin{align}
1 \times 0 + 0 \times 1 = 0
\end{align}
$$

・左のベクトルと右のベクトルの内積
$$
\large
\begin{align}
1 \times 0.7 + 0 \times 0.7 = 0.7
\end{align}
$$

・真ん中のベクトルと右のベクトルの内積
$$
\large
\begin{align}
0 \times 0.7 + 1 \times 0.7 = 0.7
\end{align}
$$

上記のような計算により、ベクトルの類似度を計算することができます。ここでは単純化にあたってベクトルの要素が$2$つかつ大きさが概ね等しい場合を取り扱いましたが、Transformerでも概ね同じようなイメージで理解することができます。

赤で囲った「統計」と「教科書」は同じ場所が$1$であることが多く類似度が高く(内積が大きい値で)計算される。同様に青で囲った「本屋」と「教科書」も同じ場所が$1$であることが多く類似度が高く計算される。

上記に基づいて類似度の高い単語を線で結ぶことで下図のようなグラフを得ることができます。

Attentionとグラフニューラルネットワーク

$2017$年のTransformerの論文では「RNNを用いないでAttentionのみを用いた」などと記載されており、多くのTransformerの解説コンテンツはこの記載に基づいてAttentionの解説に注力しがちです。

一方で、入門書ではMLP・CNN・RNNを学ぶことが多く、Transformerの解説で唐突にAttentionが出てくることで理解が難しいというのも起こりがちだと思います。実際問題、Attentionはどのように理解すると良いのでしょうか。

上記については「RNN」$\longrightarrow$「GNN(グラフニューラルネットワーク)」$\longrightarrow$「Attention・Transformer」の順に拡張したと解釈すると理解しやすいと思います。

上図は前節では取り扱ったRNNとグラフニューラルネットワークの対応を表すのに用いましたが、右のグラフニューラルネットワークにおける線は前項の「Dot Product Attention」で計算した結果に基づきます。

ここまでの内容を元に、「Transformerは類似度計算に基づいてグラフを構築したグラフニューラルネットワークである」と解釈できます。同時に「Attention処理はグラフニューラルネットワークにおける処理プロセスの$1$つである」と解釈することもできます。

「Attention・Transformer」と「グラフニューラルネットワーク」の対応は上図のように表すことができます。詳細については下記で取り扱ったので省略しますが、Attentionはグラフニューラルネットワークの処理プロセスの$1$つと見なせることは抑えておくと良いです。

Inductive biasとTransformer

当記事ではCNN、RNN、GNNなど、様々なニューラルネットワークを紹介しましたが、これらを理解する上でInductive biasという用語を抑えておくと良いです。

Inductive biasは「ニューラルネットワークを構築する際に設定する構造的仮定」のことを指します。具体的には「画像」は「ピクセルの値が近傍のピクセルと相関する」、「時系列問題」は「近い時点の入力が相関する」などが対応します。

同様にオリジナルのTransformerが取り組んだ「機械翻訳」では、「近い語順同士で相関する」と同時に「似た意味の単語が相関する」ということが起こり得ます。RNNではこの単語の意味まで取り扱えていなかった一方で、Transformerでは取り扱えるようになったというのがブレークスルーが生じた一因になったと解釈できます。また、Transformerでは「近い語順」を取り扱うにあたって、「Positional Encoding」という仕組みを用いることも合わせて抑えておくと良いです。このようにニューラルネットワークを構築する際には「問題の特性」をうまくニューラルネットワークの構造に反映させることが重要になります。

まとめ

Q&A

・グラフが唐突に出てきて難しい
当記事で出てきた「グラフ」は「グラフ理論」という分野の一部です。グラフ理論を詳しく学ぶと難しい一方で、当記事で出てきたレベルでは「グラフ」と「隣接行列」の対応を具体例を元に抑えておくだけで十分です。「行列」と「図」の対応を何度も確認することで理解できるのではないかと思います。

・Transformerが強力な理由
Attentionという仕組みに基づいて位置的には離れているが意味的に重要な関連性を取り扱うことができるようになったことが大きいと解釈できます。

・元論文を読むのに必要な数学レベル
Transformerの元論文を読むにあたっては「行列」について抑えている必要があります。「行列」を無理なく習得するにあたっては高校数学+線形代数の基本は抑えておくのが良いと思います。

さらなる学習にあたって

Udemyで解説コンテンツを作成いたしましたので、下記などを元に確認すると良いと思います。多少難しい内容も含まれますが、映像での解説なので理解しやすいのではないかと思います。

部分分数分解(partial fraction decomposition)の解法まとめ

部分分数分解(partial fraction decomposition)は積分を行う際などによく用いられる演算です。通分による分数の計算の逆演算であると解釈することもできます。当記事では部分分数分解のフォーマルな解法と簡単な式の暗算のやり方について取りまとめを行いました。

・数学まとめ
https://www.hello-statisticians.com/math_basic

部分分数分解

概要

部分分数分解は分母が積の形で表される分数を分解する一連の流れを表す。部分分数分解では具体的には下記のような計算を行う。
$$
\large
\begin{align}
\frac{1}{(x+1)(x+2)} = \frac{1}{x+1} – \frac{1}{x+2}
\end{align}
$$

上記のように部分分数分解は通分による計算の逆演算であると解釈することもできる。

簡易的な解法

$\displaystyle \frac{1}{(x+s)(x+t)}, \, s \neq t$のような分数の場合、下記のように部分分数分解を行うことができる。
$$
\large
\begin{align}
\frac{1}{(x+s)(x+t)} = \frac{1}{t-s} \left[ \frac{1}{x+s} – \frac{1}{x+t} \right]
\end{align}
$$

たとえば$\displaystyle \frac{1}{(x-1)(x+2)}$は下記のように部分分数分解を行える。
$$
\large
\begin{align}
\frac{1}{(x-1)(x+2)} &= \frac{1}{2-(-1)} \left[ \frac{1}{x+1} – \frac{1}{x+2} \right] \\
&= \frac{1}{3} \left[ \frac{1}{x+1} – \frac{1}{x+2} \right]
\end{align}
$$

フォーマルな解法

前項の解法は分母が$2$つの要素の式である場合は概ね有効である一方で、$\displaystyle \frac{1}{x(x+1)(x+2)}$のように$3$つの要素の分解の場合などに用いるフォーマルな解法も抑えておくと良い。
$$
\large
\begin{align}
\frac{1}{x(x+1)(x+2)} = \frac{a}{x} + \frac{b}{x+1} + \frac{c}{x+2} \quad (1)
\end{align}
$$

フォーマルに部分分数分解を行う場合は$(1)$式のように分解を行うことができると仮定し、両辺の対応から$a, b, c$の値を得る。$(1)$式の右辺は下記のように変形できる。
$$
\large
\begin{align}
\frac{a}{x} + \frac{b}{x+1} + \frac{c}{x+2} &= \frac{a(x+1)(x+2)}{x(x+1)(x+2)} + \frac{bx(x+2)}{x(x+1)(x+2)} + \frac{cx(x+1)}{x(x+1)(x+2)} \\
&= \frac{(a+b+c)x^{2} + (3a+2b+c)x + 2a}{x(x+1)(x+2)}
\end{align}
$$

上記と$(1)$式より下記のような連立方程式が得られる。
$$
\large
\begin{align}
a+b+c &= 0 \\
3a+2b+c &= 0 \\
2a &= 2
\end{align}
$$

上記より、$a=1, b=-2, c=1$が得られるので、下記のような部分分数分解が得られる。
$$
\large
\begin{align}
\frac{2}{x(x+1)(x+2)} = \frac{1}{x} – \frac{2}{x+1} + \frac{1}{x+2}
\end{align}
$$

部分分数分解の応用例

定積分の計算

部分分数分解は主に積分を計算する際によく用いられる。たとえば下記のように定積分を計算できる。
$$
\large
\begin{align}
\int_{0}^{1} \frac{1}{(x+1)(x+2)} dx &= \int_{1}^{2} \left[ \frac{1}{x+1} – \frac{1}{x+2} \right] dx \\
&= \left[ \log{|x+1|} – \log{|x+2|} \right]_{0}^{1} \\
&= (\log{2} – \log{3})-(\log{1} – \log{2}) = 2\log{2} – \log{3}
\end{align}
$$

活性化関数(activation function)のグラフの図示

DeepLearningの順伝播の計算では隠れ層におけるそれぞれのニューロンでなんらかの判断が行われるように非線形関数である活性化関数(activation function)を用います。当記事では活性化関数のいくつかの例の数式の確認とグラフの図示を行いました。

・用語/公式解説
https://www.hello-statisticians.com/explain-terms

活性化関数

活性化関数の概要

活性化関数の数式

・シグモイド関数
$$
\large
\begin{align}
y = \frac{1}{1+e^{-x}} = \frac{e^{x}}{e^{x}+1}
\end{align}
$$

・ソフトサイン関数
$$
\large
\begin{align}
y = \frac{1}{1+e^{-x}} = \frac{x}{1+|x|}
\end{align}
$$

・ソフトプラス関数
$$
\large
\begin{align}
y = \log{(1+e^{x})}
\end{align}
$$

・ReLU(ランプ関数)
$$
\large
\begin{align}
y = \max{(0,x)}
\end{align}
$$

・双曲線正接関数
$$
\large
\begin{align}
y = \tanh{x} = \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}
\end{align}
$$

活性化関数のグラフ

シグモイド関数

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_theme()

x = np.arange(-5., 5.01, 0.01)
y_1 = 1./(1.+np.e**(-x))

plt.plot(x, y_1)
plt.show()

・実行結果

ソフトサイン関数

y_2 = x/(1+np.abs(x))

plt.plot(x, y_2)
plt.show()

・実行結果

ソフトプラス関数

y_3 = np.log(1+np.e**x)

plt.plot(x, y_3)
plt.show()

・実行結果

ReLU(ランプ関数)

x_ = np.zeros([x.shape[0],2])
x_[:,1] = x
y_4 = np.max(x_, axis=1)

plt.plot(x, y_4)
plt.show()

・実行結果

双曲線正接関数(hyperbolic tangent function)

y_5 = (np.e**x - np.e**(-x)) / (np.e**x + np.e**(-x))

plt.plot(x, y_5)
plt.show()

・実行結果

グラフまとめ

plt.plot(x, y_1, label="sigmoid")
plt.plot(x, y_2, label="softsign")
plt.plot(x, y_3, label="softplus")
plt.plot(x, y_4, label="ReLU")
plt.plot(x, y_5, label="tanh")

plt.legend()
plt.show()

・実行結果

行列の簡約階段形(reduced echelon form)と行列の階数(rank)

行列の簡約階段形(reduced echelon form)は一通りに決まるので行列の階数(rank)の同様に一通りに決定されます。当記事では行列の簡約階段化に基づく行列の階数の判定の手順と「チャート式 線形代数」の演習問題を元に具体例を取りまとめました。
作成にあたっては「チャート式シリーズ 大学教養 線形代数」の第$2.3$節「連立$1$次方程式とその解」を主に参考にしました。

・数学まとめ
https://www.hello-statisticians.com/math_basic

行列の階数

行列$A$の簡約階段形の階段の段の個数を行列$A$の階数(rank)といい、$\mathrm{rank}{A}$のように表記する。

具体例の確認

以下、「チャート式シリーズ 大学教養 線形代数」の例題の確認を行う。

基本例題$031$

・$[1]$
$$
\large
\begin{align}
\left( \begin{array}{cccc} 0 & 1 & 2 & 3 \\ 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \\ 0 & 1 & 2 & 3 \end{array} \right)
\end{align}
$$

上記の行列は下記のように簡約階段化できる。
$$
\large
\begin{align}
\left( \begin{array}{cccc} 0 & 1 & 2 & 3 \\ 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \\ 0 & 1 & 2 & 3 \end{array} \right) & \longrightarrow \left( \begin{array}{cccc} 1 & 1 & 1 & 1 \\ 0 & 1 & 2 & 3 \\ 1 & 1 & 1 & 1 \\ 0 & 1 & 2 & 3 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{cccc} 1 & 1 & 1 & 1 \\ 0 & 1 & 2 & 3 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{cccc} 1 & 0 & -1 & -2 \\ 0 & 1 & 2 & 3 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{array} \right)
\end{align}
$$

上記より行列の階数(rank)は$2$である。

・$[2]$
$$
\large
\begin{align}
\left( \begin{array}{ccc} 1 & 2 & 1 \\ 2 & 2 & 2 \\ 1 & 0 & 1 \end{array} \right)
\end{align}
$$

上記の行列は下記のように簡約階段化できる。
$$
\large
\begin{align}
\left( \begin{array}{ccc} 1 & 2 & 1 \\ 2 & 2 & 2 \\ 1 & 0 & 1 \end{array} \right) & \longrightarrow \left( \begin{array}{ccc} 1 & 2 & 1 \\ 0 & -2 & 0 \\ 0 & -2 & 0 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & 2 & 1 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & 0 & 1 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{array} \right)
\end{align}
$$

上記より行列の階数(rank)は$2$である。

基本例題$032$

重要例題$012$

連立方程式(simultaneous equation)が解を持つ条件

基本的な連立方程式(simultaneous equation)は中学数学などで取り扱いますが、線形代数では行列などを用いて連立方程式を表し高度な議論を行います。当記事では線形代数におけるトピックを取り扱うにあたって、連立方程式が解を持つ条件について取りまとめました。
作成にあたっては「チャート式シリーズ 大学教養 線形代数」の第$2.3$節「連立$1$次方程式とその解」を主に参考にしました。

・数学まとめ
https://www.hello-statisticians.com/math_basic

連立方程式が解を持つ条件と解の自由度

$$
\large
\begin{align}
A \mathbf{x} &= \mathbf{b} \\
A & \in \mathbb{R}^{m \times n}, \mathbf{x} \in \mathbb{R}^{n}, \mathbf{b} \in \mathbb{R}^{n}
\end{align}
$$

上記のような連立方程式$A \mathbf{x} = \mathbf{b}$を定義するとき、下記がそれぞれ成立する。
$[1] \,$ $\mathrm{rank}{A}=\mathrm{rank}{(A \, | \, \mathbf{b})} \, \iff \,$連立$1$次方程式が解を持つ
$[2] \,$ $[1]$が成立するとき、連立$1$次方程式の解の自由度は$n – \mathrm{rank}{A}$である

具体例の確認

以下、「チャート式シリーズ 大学教養 線形代数」の例題の確認を行う。

基本例題$035$

・$[1]$
$$
\large
\begin{align}
2x – 5y + 3z &= 7 \\
x – 3y + 2z &= 1 \\
4x – 5y + z &= 18
\end{align}
$$

上記は$\displaystyle \left( \begin{array}{ccc} 2 & -5 & \\ 1 & -3 & 2 \\ 4 & -5 & 1 \end{array} \right) \left( \begin{array}{c} x \\ y \\ z \end{array} \right) = \left( \begin{array}{c} 7 \\ 1 \\ 18 \end{array} \right)$のように行列表記することができ、この拡大係数行列の$\displaystyle \left( \begin{array}{ccc} 2 & -5 & 3 \\ 1 & -3 & 2 \\ 4 & -5 & 1 \end{array} \, \middle| \, \begin{array}{c} 7 \\ 1 \\ 18 \end{array} \right)$は下記のように簡約階段化できる。
$$
\large
\begin{align}
\left( \begin{array}{ccc} 2 & -5 & 3 \\ 1 & -3 & 2 \\ 4 & -5 & 1 \end{array} \, \middle| \, \begin{array}{c} 7 \\ 1 \\ 18 \end{array} \right) & \longrightarrow \left( \begin{array}{ccc} 1 & -3 & 2 \\ 2 & -5 & 3 \\ 4 & -5 & 1 \end{array} \, \middle| \, \begin{array}{c} 1 \\ 7 \\ 18 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & -3 & 2 \\ 0 & 1 & -1 \\ 0 & 7 & -7 \end{array} \, \middle| \, \begin{array}{c} 1 \\ 5 \\ 14 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & -3 & 2 \\ 0 & 1 & -1 \\ 0 & 0 & 0 \end{array} \, \middle| \, \begin{array}{c} 1 \\ 5 \\ 9 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & -3 & 2 \\ 0 & 1 & -1 \\ 0 & 0 & 0 \end{array} \, \middle| \, \begin{array}{c} 1 \\ 5 \\ 1 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & -3 & 2 \\ 0 & 1 & -1 \\ 0 & 0 & 0 \end{array} \, \middle| \, \begin{array}{c} 0 \\ 0 \\ 1 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & 0 & -1 \\ 0 & 1 & -1 \\ 0 & 0 & 0 \end{array} \, \middle| \, \begin{array}{c} 0 \\ 0 \\ 1 \end{array} \right)
\end{align}
$$

上記より与えられた連立方程式は$x-z=0, y-z=0, 0=1$と同値であるが、$0 \neq 1$であるので連立$1$次方程式は解を持たない。

基本例題$036$

基本例題$037$

拡大係数行列を用いた連立方程式(simultaneous equation)の解法と解の自由度

基本的な連立方程式(simultaneous equation)は中学数学などで取り扱いますが、線形代数では行列などを用いて連立方程式を表し高度な議論を行います。当記事では線形代数におけるトピックを取り扱うにあたって、拡大係数行列を用いた連立方程式の解法と解の自由度を取りまとめました。
作成にあたっては「チャート式シリーズ 大学教養 線形代数」の第$2.3$節「連立$1$次方程式とその解」を主に参考にしました。

・数学まとめ
https://www.hello-statisticians.com/math_basic

連立方程式の解法と解の自由度

拡大係数行列

行列を用いて表した連立$1$次方程式$A\mathbf{x}=\mathbf{b}$で係数行列$A$と定数項ベクトル$\mathbf{b}$を並べてできる行列$(A \, | \, \mathbf{b})$を拡大係数行列という。詳しくは下記で取り扱った。

拡大係数行列を用いた連立方程式の解法

拡大係数行列$(A \, | \, \mathbf{b})$の行基本変形を行うことで連立方程式の解を得ることができる。詳しくは下記で取り扱った。

連立方程式の解の自由度

連立$1$次方程式の全ての解を表すにあたって必要な任意定数の個数を解の自由度という。

具体例の確認

以下、「チャート式シリーズ 大学教養 線形代数」の例題の確認を行う。

基本例題$033$

$$
\large
\begin{align}
2x+5y-z+5u &= 8 \\
-x-3y+z-2u+2v &= -4 \\
-3y+3z+7u+4v &= 4 \\
x+2y+3u+2v &= 4
\end{align}
$$

基本例題$034$

・$[1]$
$$
\large
\begin{align}
x+2y-z &= 3 \\
2x+4y-3z &= 5
\end{align}
$$

上記の連立$1$次方程式は$\displaystyle \left( \begin{array}{ccc} 1 & 2 & -1 \\ 2 & 4 & -3 \end{array} \right) \left( \begin{array}{c} x \\ y \\ z \end{array} \right) = \left( \begin{array}{c} 3 \\ 5 \end{array} \right)$のように行列表記することができる。この拡大係数行列の$\displaystyle \left( \begin{array}{ccc} 1 & 2 & -1 \\ 2 & 4 & -3 \end{array} \, \middle| \, \begin{array}{c} 3 \\ 5 \end{array} \right)$は下記のように簡約階段化を行うことができる。
$$
\large
\begin{align}
\left( \begin{array}{ccc} 1 & 2 & -1 \\ 2 & 4 & -3 \end{array} \, \middle| \, \begin{array}{c} 3 \\ 5 \end{array} \right) & \longrightarrow \left( \begin{array}{ccc} 1 & 2 & -1 \\ 0 & 0 & -1 \end{array} \, \middle| \, \begin{array}{c} 3 \\ -1 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & 2 & -1 \\ 0 & 0 & 1 \end{array} \, \middle| \, \begin{array}{c} 3 \\ 1 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & 2 & 0 \\ 0 & 0 & 1 \end{array} \, \middle| \, \begin{array}{c} 4 \\ 1 \end{array} \right)
\end{align}
$$

上記より連立方程式の解は任意定数$c$を用いて$x=4-2c, y=c, z=1$のように表される。また、このときの解の自由度は$1$である。

・$[2]$
$$
\large
\begin{align}
x+y-z &= 6 \\
2x+4y+6z &= -2 \\
-3x-2y+z &= 5
\end{align}
$$

上記の連立$1$次方程式は$\displaystyle \left( \begin{array}{ccc} 1 & 1 & -1 \\ 2 & 4 & 6 \\ -3 & -2 & 1 \end{array} \right) \left( \begin{array}{c} x \\ y \\ z \end{array} \right) = \left( \begin{array}{c} 6 \\ -2 \\ 5 \end{array} \right)$のように行列表記することができる。この拡大係数行列の$\displaystyle \left( \begin{array}{ccc} 1 & 1 & -1 \\ 2 & 4 & 6 \\ -3 & -2 & 1 \end{array} \, \middle| \, \begin{array}{c} 6 \\ -2 \\ 5 \end{array} \right)$は下記のように簡約階段化を行うことができる。
$$
\large
\begin{align}
\left( \begin{array}{ccc} 1 & 1 & -1 \\ 2 & 4 & 6 \\ -3 & -2 & 1 \end{array} \, \middle| \, \begin{array}{c} 6 \\ -2 \\ 5 \end{array} \right) & \longrightarrow \left( \begin{array}{ccc} 1 & 1 & -1 \\ 0 & 2 & 8 \\ 0 & 1 & -2 \end{array} \, \middle| \, \begin{array}{c} 6 \\ -14 \\ 23 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & 1 & -1 \\ 0 & 1 & 4 \\ 0 & 1 & -2 \end{array} \, \middle| \, \begin{array}{c} 6 \\ -7 \\ 23 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & 0 & -5 \\ 0 & 1 & 4 \\ 0 & 0 & -6 \end{array} \, \middle| \, \begin{array}{c} 13 \\ -7 \\ 30 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & 0 & -5 \\ 0 & 1 & 4 \\ 0 & 0 & 1 \end{array} \, \middle| \, \begin{array}{c} 13 \\ -7 \\ -5 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \, \middle| \, \begin{array}{c} -12 \\ 13 \\ -5 \end{array} \right)
\end{align}
$$

上記より連立方程式の解は$x=-12, y=13, z=-5$のように表される。また、このときの解の自由度は$0$である。

【上級】データサイエンス 数学ストラテジスト 公式問題集 解答例まとめ Q.51〜60

「データサイエンス 数学ストラテジスト 上級」はデータサイエンスの基盤である、確率・統計、線形代数、微積分、機械学習、プログラミングなどを取り扱う資格試験です。当記事では「日本数学検定協会」作成の「公式問題集」の演習問題$51$〜$60$の解答例を取り扱いました。

・数学検定まとめ
https://www.hello-statisticians.com/math_certificate

演習問題

Q.51

$C$が識別クラス、$D$が観測データのとき$P(C|D)$は事後確率、$P(C)$は事前確率、$P(D|C)$は尤度にそれぞれ対応する。よって$(1)$が正しい。

Q.52

$$
\large
\begin{align}
w_{1} x_{1} + w_{2} x_{2} + w_{0} = 0
\end{align}
$$

上記に平行するベクトルは$w_{1} x_{1} = -w_{2}x_{2}$が成立する必要があるので$\displaystyle \left( \begin{array}{c} w_{2} \ -w_{1} \end{array} \right)$である。

$\displaystyle \left( \begin{array}{c} w_{2} \\ -w_{1} \end{array} \right)$に直行するベクトルは$\displaystyle k \left( \begin{array}{c} w_{1} \\ w_{2} \end{array} \right)$なので、単位ベクトルは下記のように得られる。
$$
\large
\begin{align}
\pm \frac{1}{\sqrt{w_{1}^{2} + w_{2}^{2}}} \left( \begin{array}{c} w_{1} \\ w_{2} \end{array} \right)
\end{align}
$$

よって$(5)$が正しい。

Q.53

類似度は下記のような計算を行うことで得られる。

import numpy as np

x = np.array([[20., 6., 3., 15.], [25., 15., 15., 6.], [35., 20., 13., 8.], [18., 7., 7., 10.], [27., 12., 5., 13]])
y = np.array([23., 10., 8., 7.])

for i in range(x.shape[0]):
    print(np.sqrt(np.sum((y-x[i,:])**2)))

・実行結果

10.677078252
8.88819441732
16.4316767252
6.63324958071
8.0622577483

上記より$(4)$が正しい。

Q.54

シグモイド関数は下記のように図示することができる。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_theme()

x = np.arange(-5., 5.01, 0.01)
y = 1./(1.+np.e**(-x))

plt.plot(x, y)
plt.show()

・実行結果

図よりCがシグモイド関数に一致するので$(3)$が正しい。

・解説
シグモイド関数を$\displaystyle f(x)=\frac{1}{1+e^{-x}}$のように表すと、下記が成立します。
$$
\large
\begin{align}
f(0) &= \frac{1}{1+e^{-0}} \\
&= \frac{1}{1+1} = \frac{1}{2} \\
\lim_{x \to \infty} f(x) &= \frac{1}{1+0} \\
&= 1 \\
\lim_{x \to -\infty} f(x) &= 0
\end{align}
$$

上記よりCを選ぶことができます。検定試験などではPythonを用いることができないので、グラフの形状を抑えていない場合はこのように具体的な値を元に関数を選択すると良いです。

Q.55

重回帰分析では精度の確認に「自由度調整済み決定係数」を用いるので$(2)$の$69.4$%が正しい。

Q.56

相関係数に基づく類似度は下記のような計算を行うことで得られる。

import numpy as np

x = np.array([2., 3., 5., 4., 5.])
y = np.array([3., 2., 4., 4., 5.])

r = np.sum((x-np.mean(x))*(y-np.mean(y)))/np.sqrt(np.sum((x-np.mean(x))**2)*np.sum((y-np.mean(y))**2))

print("r: {:.3f}".format(r))

・実行結果

r: 0.774

上記より$(1)$が正しい。

Q.57

$h_1, h_2, h_3, y_3$はそれぞれ下記のように計算できる。
$$
\large
\begin{align}
h_1 &= \left( \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} \right) \left( \begin{array}{c} 2 \\ 3 \end{array} \right) + \left( \begin{array}{cc} 0 & 1 \\ -1 & 0 \end{array} \right) \left( \begin{array}{c} 0 \\ 0 \end{array} \right) \\
&= \left( \begin{array}{c} 2 \\ 3 \end{array} \right) \\
h_2 &= \left( \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} \right) \left( \begin{array}{c} 1 \\ 0 \end{array} \right) + \left( \begin{array}{cc} 0 & 1 \\ -1 & 0 \end{array} \right) \left( \begin{array}{c} 2 \\ 3 \end{array} \right) \\
&= \left( \begin{array}{c} 1 \\ 0 \end{array} \right) + \left( \begin{array}{c} 3 \\ -2 \end{array} \right) = \left( \begin{array}{c} 4 \\ -2 \end{array} \right) \\
h_3 &= \left( \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} \right) \left( \begin{array}{c} -1 \\ 1 \end{array} \right) + \left( \begin{array}{cc} 0 & 1 \\ -1 & 0 \end{array} \right) \left( \begin{array}{c} 4 \\ -2 \end{array} \right) \\
&= \left( \begin{array}{c} -1 \\ 1 \end{array} \right) + \left( \begin{array}{c} -2 \\ -4 \end{array} \right) = \left( \begin{array}{c} -3 \\ -3 \end{array} \right) \\
y_3 &= \left( \begin{array}{cc} -1 & 1 \\ 0 & 1 \end{array} \right) \left( \begin{array}{c} -3 \\ -3 \end{array} \right) \\
&= \left( \begin{array}{c} 0 \\ -3 \end{array} \right)
\end{align}
$$

上記より$(5)$が正しい。

Q.58

過学習は$(3)$のようなグラフに対応するので$(3)$が正しい。

Q.59

$$
\large
\begin{align}
E &= \frac{1}{2}(z-t)^{2} \\
z &= w_1 y_1 + w_2 y_2 \\
y_1 &= v_{11} x_1 + v_{12} x_2
\end{align}
$$

$\displaystyle \Delta v_{11} = -\eta \frac{\partial E}{\partial v_{11}}$は微分の連鎖律を用いて下記のように得ることができる。
$$
\large
\begin{align}
\Delta v_{11} &= -\eta \frac{\partial E}{\partial v_{11}} \\
&= -\eta \frac{\partial E}{\partial z} \cdot \frac{\partial z}{\partial y_1} \cdot \frac{\partial y_1}{\partial v_{11}} \\
&= -\eta \cdot (z-t) \cdot w_1 \cdot x_1 = -\eta (z-t) w_1 x_1
\end{align}
$$

上記より$(1)$が正しい。

Q.60

確信度は下記のように計算できる。
$$
\large
\begin{align}
\frac{n(A \cap B)}{n(A)} &= \frac{3}{4}
\end{align}
$$

よってリフト値は下記のように計算できる。
$$
\large
\begin{align}
\frac{3/4}{P(B)} &= \frac{3}{4} \cdot \frac{8}{5} \\
&= \frac{6}{5} = 1.2
\end{align}
$$

よって$(4)$が正しい。

連立方程式(simultaneous equation)の基本解法と行列を用いた表記

基本的な連立方程式(simultaneous equation)は中学数学などで取り扱いますが、線形代数では行列などを用いて連立方程式を表し高度な議論を行います。当記事では線形代数におけるトピックを取り扱うにあたって、連立方程式の基本解法と行列を用いた表記を取りまとめました。
作成にあたっては「チャート式シリーズ 大学教養 線形代数」の第$2.1$節「連立$1$次方程式と行列」を主に参考にしました。

・数学まとめ
https://www.hello-statisticians.com/math_basic

連立方程式の基本解法と行列を用いた表記

連立$1$次方程式の具体例と基本解法

$$
\large
\begin{align}
\begin{cases}
x + y = 2 \quad (1) \\
x + 2y = 3 \quad (2)
\end{cases}
\end{align}
$$

連立$1$次方程式は上記のように複数の未知数$x, y$についての$1$式に基づく方程式である。上記は「$(2)$式$-$$(1)$式」を計算することで$y=1$が得られ、$(1)$式に$y=1$を代入することで$x=1$が得られる。このように式同士の加減を元に方程式を解く手法を加減法という。

連立方程式の行列を用いた表記

連立方程式は行列の積を用いて表すことができる。たとえば前項の「連立$1$次方程式の具体例と基本解法」の連立方程式は下記のように行列を用いて表せる。
$$
\large
\begin{align}
\left( \begin{array}{c} x+y \\ x+2y \end{array} \right) &= \left( \begin{array}{c} 2 \\ 3 \end{array} \right) \\
\left( \begin{array}{c} 1 & 1 \\ 1 & 2 \end{array} \right)\left( \begin{array}{c} x \\ y \end{array} \right) &= \left( \begin{array}{c} 2 \\ 3 \end{array} \right)
\end{align}
$$

行列の積については下記などで詳しく取り扱った。

拡大係数行列

行列を用いて表した連立$1$次方程式$A\mathbf{x}=\mathbf{b}$で係数行列$\displaystyle A=\left( \begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{array} \right)$と定数項ベクトル$\displaystyle \mathbf{b} = \left( \begin{array}{c} b_{1} \\ b_{2} \\ \vdots \\ b_{n} \end{array} \right)$を並べてできる下記の行列$(A \, | \, \mathbf{b})$を拡大係数行列という。
$$
\large
\begin{align}
(A|\mathbf{b}) = \left( \begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{array} \, \middle| \, \begin{array}{c} b_{1} \\ b_{2} \\ \vdots \\ b_{n} \end{array} \right)
\end{align}
$$

具体例の確認

以下、「チャート式シリーズ 大学教養 線形代数」の例題の確認を行う。

基本例題$021$

・$[1]$
$$
\large
\begin{align}
4x – y + 3z &= 0 \\
x + 2y – 4z &= 2
\end{align}
$$

上記の連立方程式は下記のように行列を用いて書き表すことができる。
$$
\large
\begin{align}
\left( \begin{array}{c} 4x-y+3z \\ x+2y-4z \end{array} \right) &= \left( \begin{array}{c} 0 \\ 2 \end{array} \right) \\
\left( \begin{array}{ccc} 4 & -1 & 3 \\ 1 & 2 & -4 \end{array} \right) \left( \begin{array}{c} x \\ y \\ z \end{array} \right) &= \left( \begin{array}{c} 0 \\ 2 \end{array} \right)
\end{align}
$$

・$[2]$
$$
\large
\begin{align}
-x + 2z &= 3 \\
2y + z &= 1
\end{align}
$$

上記の連立方程式は下記のように行列を用いて書き表すことができる。
$$
\large
\begin{align}
\left( \begin{array}{c} -x + 2z \\ 2y + z \end{array} \right) &= \left( \begin{array}{c} 3 \\ 1 \end{array} \right) \\
\left( \begin{array}{ccc} -1 & 0 & 2 \\ 0 & 2 & 1 \end{array} \right) \left( \begin{array}{c} x \\ y \\ z \end{array} \right) &= \left( \begin{array}{c} 3 \\ 1 \end{array} \right)
\end{align}
$$

・$[3]$
$$
\large
\begin{align}
3x + y &= 3 \\
x – 2z &= 1 \\
x + y + z &= -1 \\
-x + 3y -5z &= 0
\end{align}
$$

上記の連立方程式は下記のように行列を用いて書き表すことができる。
$$
\large
\begin{align}
\left( \begin{array}{c} 3x + y \\ x – 2z \\ x + y + z \\ -x + 3y -5z \end{array} \right) &= \left( \begin{array}{c} 3 \\ 1 \\ -1 \\ 0 \end{array} \right) \\
\left( \begin{array}{c} 3 & 1 & 0 \\ 1 & 0 & -2 \\ 1 & 1 & 1 \\ -1 & 3 & -5 \end{array} \right) \left( \begin{array}{c} x \\ y \\ z \end{array} \right) &= \left( \begin{array}{c} 3 \\ 1 \\ -1 \\ 0 \end{array} \right)
\end{align}
$$

基本例題$022$

基本例題$023$

$$
\large
\begin{align}
-3x+2y+7z &= 8 \\
-x-2y-3z &= 0 \\
3x+y-3z &= 7
\end{align}
$$

上記の連立方程式は下記のように行列表記することができる。
$$
\large
\begin{align}
\left( \begin{array}{c} -3x+3y+7z \\ -x-2y-3z \\ 3x+y-3z \end{array} \right) &= \left( \begin{array}{c} 8 \\ 0 \\ -7 \end{array} \right) \\
\left( \begin{array}{c} -3 & 3 & 7 \\ -1 & -2 & -3 \\ 3 & 1 & -3 \end{array} \right) \left( \begin{array}{c} x \\ y \\ z \end{array} \right) &= \left( \begin{array}{c} 8 \\ 0 \\ -7 \end{array} \right) \quad (1)
\end{align}
$$

$(1)$式の拡大係数行列は行基本変形を元に下記のように簡約階段化を行うことができる。
$$
\large
\begin{align}
\left( \begin{array}{c} -3 & 3 & 7 \\ -1 & -2 & -3 \\ 3 & 1 & -3 \end{array} \, \middle| \, \begin{array}{c} 8 \\ 0 \\ -7 \end{array} \right) & \longrightarrow \left( \begin{array}{c} -3 & 3 & 7 \\ 1 & 2 & 3 \\ 3 & 1 & -3 \end{array} \, \middle| \, \begin{array}{c} 8 \\ 0 \\ -7 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{c} 1 & 2 & 3 \\ -3 & 3 & 7 \\ 3 & 1 & -3 \end{array} \, \middle| \, \begin{array}{c} 0 \\ 8 \\ -7 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{c} 1 & 2 & 3 \\ 0 & 8 & 16 \\ 0 & -5 & -12 \end{array} \, \middle| \, \begin{array}{c} 0 \\ 8 \\ -7 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{c} 1 & 2 & 3 \\ 0 & 1 & 2 \\ 0 & -5 & -12 \end{array} \, \middle| \, \begin{array}{c} 0 \\ 1 \\ -7 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{c} 1 & 0 & -1 \\ 0 & 1 & 2 \\ 0 & 0 & -2 \end{array} \, \middle| \, \begin{array}{c} -2 \\ 1 \\ -2 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{c} 1 & 0 & -1 \\ 0 & 1 & 2 \\ 0 & 0 & 1 \end{array} \, \middle| \, \begin{array}{c} -2 \\ 1 \\ 1 \end{array} \right) \\
& \longrightarrow \left( \begin{array}{c} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \, \middle| \, \begin{array}{c} -1 \\ -1 \\ 1 \end{array} \right)
\end{align}
$$

上記より連立方程式の解は$x=-1, y=-1, z=1$である。

正則行列(regular matrix)でない正方行列の具体例とその証明

逆行列を持つ行列を正則行列(regular matrix)といいます。正則行列はランクが行列の次数に一致し、有限個の基本行列(elementary matrix)の積に対応します。当記事では正則行列でない正方行列の具体例とその証明について取りまとめました。
作成にあたっては「チャート式シリーズ 大学教養 線形代数」の第$3.2$節「正則行列」を主に参考にしました。

・数学まとめ
https://www.hello-statisticians.com/math_basic

正則行列でない正方行列

正則行列の定義・特徴

「逆行列を持つ行列」を正則行列という。詳しくは下記で取り扱った。

正則行列でない行列の具体例

下記の行列は正則行列ではない。
$[1] \,$ 「$i$行が$0$」または「$j$列が$0$」の正方行列
$[2] \,$ 「$i$行が$j$行に一致」または「$i$列が$j$列に一致」する正方行列

上記の行列が正方行列でないことは次節の例題で証明を確認する。

正則行列と行列式

正則行列$A$の行列式$\det{A}$について$\det{A} \neq 0$が成立する。

具体例の確認

以下、「チャート式シリーズ 大学教養 線形代数」の例題の確認を行う。

基本例題$046$

・i)
$n$次正方行列$A$の$i$行目の成分が全て$0$の場合、下記が成立する。
$$
\large
\begin{align}
a_{i1} = a_{i2} = \cdots = a_{in} = 0 \quad (1)
\end{align}
$$

ここで$n$次正方行列$X$を定義し、$AX$の計算を行うと$(1)$式より$X$の値に関わらず$AX$の$(i,i)$成分$AX_{ii}$について$AX_{ii}=0$が成立する。$AX_{ii}=0$は正則行列の定義である「$AX=I$となる$X$が存在する」ことと反するので$A$は正則行列ではない。

・ⅱ)
$n$次正方行列$A$の$j$列目の成分が全て$0$の場合、下記が成立する。
$$
\large
\begin{align}
a_{1j} = a_{2j} = \cdots = a_{nj} = 0 \quad (2)
\end{align}
$$

ここで$n$次正方行列$X$を定義し、$XA$の計算を行うと$(1)$式より$X$の値に関わらず$AX$の$(j,j)$成分$AX_{jj}$について$AX_{jj}=0$が成立する。$AX_{jj}=0$は正則行列の定義である「$AX=I$となる$X$が存在する」ことと反するので$A$は正則行列ではない。

基本例題$048$

i)
行列$A$の$i$行目と$j$行目が一致する場合、$P_{ij}(-1)A$の$i$行目の成分が全て$1$となり、基本例題$046$より$P_{ij}(-1)A$は正則ではない。ここで正則行列の積は正則行列である一方で、正則行列$P_{ij}(-1)$と$A$の積は正則行列ではないので$A$は正則行列ではない。

ⅱ)
行列$A$の$i$列目と$j$列目が一致する場合、行列$A$の転置行列$A^{\mathrm{T}}$の$i$行目と$j$行目が一致するので、i)より$A^{\mathrm{T}}$が正則行列ではないことが確認できる。正則行列の転置行列は正則行列であるので$A$は正則行列ではない。