1. Home
  2. プログラマーのための線形代数
  3. 行列の演算
  4. 行列とは

行列とは

繰り返し述べている通り、線形代数はベクトルや行列を様々に変換して、別の新しいベクトルや行列を作り出すための算術です。それでは行列とは何でしょうか。当ページでは、この行列について以下のことがわかります。

当ページでわかること

  • プログラマーにとって行列とは
  • ベクトルと行列の違い

プログラマーにとって行列とは

行列とは何でしょうか?

まずベクトルについておさらいしましょう。ベクトルは線形代数の最も基本的な構成要素であり、データを意味する数値のリストです。たとえば以下の \(v\) は、3 つの数値からできているベクトルです。

\[
v
=
\begin{pmatrix}
2 & 1 & 0
\end{pmatrix}
\]

これと同じように行列もデータを意味する数値のリストです。ただし、行列には文字通り「行」と「列」という概念があります。たとえば以下の \(A\) は 3 行 3 列の行列です。

\[
A
=
\begin{pmatrix}
0 & 0 & 1 \\
1 & 0 & 0 \\
0 & 1 & 0
\end{pmatrix}
\]

このように私たちプログラマーにとっては、ベクトルも行列もデータを意味する数値のリストに過ぎません。

ベクトルと行列の違い

さて、ベクトルも行列もデータであるとしたら、両者の違いは何なのでしょうか。結論から言うと、ベクトルには入力値や出力値といった意味合いがあります。一方で、行列はベクトルを変換する写像(=関数)といった意味合いがあります。

基本的な機械学習を例に考えてみましょう。

機械学習の実践で初めて目にする行列と言えば、訓練データです。この訓練データに対して、未訓練のデータを入力することで、訓練済みデータが出力されます。

\[\begin{eqnarray}
\overset{未訓練}{
\begin{pmatrix}
2 & 1 & 0
\end{pmatrix}}
\overset{入力}{\longrightarrow}
\overset{訓練データ}{
\begin{pmatrix}
0 & 0 & 1 \\
1 & 0 & 0 \\
0 & 1 & 0
\end{pmatrix}}
\overset{出力}{\longrightarrow}
\overset{訓練済}{
\begin{pmatrix}
0 & 2 & 1
\end{pmatrix}}
\end{eqnarray}\]

このようにベクトルと行列は同じデータではありますが、前者は変換される側のデータで、後者は変換する側のデータであると考えることができます。このことから、「あるデータを変換するもの」という意味で、行列は「写像」と言われます(写像とは関数を難しくしただけの言葉です)。

以上が行列です。