行列の「ランク1」ってなに?
― たった1つの情報だけでできている行列の話

1. はじめに:行列の“ランク”って何?
数学や物理、プログラミングなどで「行列」という言葉を聞いたことがある人も多いと思います。行列とは、数字がたくさん並んだ表のようなものです。
その行列に関して、「ランク」というものがあります。
ランクとは、その行列がどれだけ独立した情報を持っているかを示す数字です。
たとえば、次のような行列を見てください。
lua
コピーする編集する
A = [[1, 2],
     [2, 4]]
この行列は2行2列の正方形の形をしています。でもよく見ると、2行目は1行目を2倍しただけですよね?つまり、2つの行がありますが、実質的には1つの行と同じ情報しか持っていません。
このような行列は「ランク1の行列」と呼ばれます。

2. ランク1って、どういう意味?
行列のランク1とは、「たった1つの方向の情報しか持っていない行列」のことです。
少しだけイメージしてみましょう。
たとえば、あなたが紙の上に3本の矢印を描いたとして、その3本すべてが同じ方向を向いていて、長さだけが違うとします。
このとき、矢印は全部同じ“情報”から作られたものです。方向が一緒で、長さだけが違うなら、実質的に1つの矢印で全体を表せますよね。
行列で同じことが起きていたら、それが「ランク1の行列」です。

3. ランク1行列はどうやって作られるの?
実は、ランク1の行列は「ベクトルの掛け算(外積)」で作ることができます。
難しく聞こえるかもしれませんが、ベクトルというのはただの「矢印(向きと大きさを持つもの)」だと思ってください。
1つの縦向きのベクトル(u)と、1つの横向きのベクトル(v)を掛け合わせると、行列になります。
この掛け算のことを「外積」と言います。
たとえば、こうです。
python
コピーする編集する
import numpy as np

u = np.array([[1], [2], [3]])  # 縦ベクトル(3行1列)
v = np.array([[4, 5]])         # 横ベクトル(1行2列)

A = u @ v  # 外積をとる

print(A)
この結果としてできる行列は次のようになります。
lua
コピーする編集する
[[ 4  5]
 [ 8 10]
 [12 15]]
この行列をよく見ると、1行目が [4, 5]、2行目はその2倍、3行目はその3倍です。つまり、すべての行が1行目のスカラー倍(長さだけ違う)です。これが「ランク1」の特徴です。

4. Pythonでランクを確認するには?
Python(NumPy)には、行列のランクを計算する関数もあります。
python
コピーする編集する
np.linalg.matrix_rank(A)
このコードを実行すると、「1」と出てきます。つまり、さっきの行列はやはりランク1だとわかります。

5. どうしてランク1は大切なの?
ランク1の行列は、数学だけでなく、機械学習や画像処理、音声処理などいろいろな分野でとても大事な役割を果たしています。
たとえば、最近話題のAI(人工知能)や大規模言語モデル(ChatGPTのようなもの)でも、内部でこの「ランク1の行列」のような構造が使われていることがわかってきました。
大きなモデルの中で、たった1つの方向の変化だけで動作が変わる。これは、非常に効率的で、頭の良い仕組みです。

6. まとめ
* 行列の「ランク」とは、どれだけ独立した情報を持っているかを表す数
* 「ランク1」とは、たった1つのベクトルから作られたような行列
* すべての行(または列)が同じ方向を向いていれば、それはランク1
* Pythonを使えば簡単にランク1の行列を作ったり調べたりできる
* AIの世界でもこのランク1の構造が活用されている

難しそうに見える行列の話も、具体的に手を動かしてみると、意外とシンプルな仕組みでできていることがわかります。