線形代数の基礎〜中学生でもわかる機械学習の基礎【第3回】〜
線形代数の基礎〜中学生でもわかる機械学習の基礎【第3回】〜
こんにちは!
前回は、ニューラルネットワークの「つまみ(重み)」がどうやって学習するのかについて学びました。
今回は、その「つまみ」をたくさん管理したり、計算を素早くしたりするために必要な道具、線形代数の基本を学びます。
実は、線形代数は特別に難しいものではなく、「複数のものをまとめて扱う方法」というシンプルな考え方なんです。始めましょう!
第1章:ベクトルって何?
1-1. 日常生活の例:宝探しゲーム
想像してください。あなたは宝探しゲームをしています。友達に「宝がどこにあるか」を説明するとしたら、どう説明しますか?
「右に3歩、上に2歩進んだところにあるよ」
このとき、あなたは2つの情報を伝えています:
- 方向と距離(どっちに、どのくらい)
これがベクトルの考え方です!
1-2. ベクトルの定義
ベクトルとは、「大きさと方向を持つ量」です。
数学では、ベクトルをこんな風に書きます:
v = [3]
[2]
「右に3、上に2」という意味ですね。この書き方を「列ベクトル」と言います。
読み方:「ベクトル v」(vはイタリック体のv)
1-3. ベクトルの視覚的表現
図で書くとこんな感じです:
↑ y軸
│
2 ├─→ ここが(3, 2)
│ /
│ /
│/
0 └────────→ x軸
0 3
矢印が「ベクトル」です。矢印の根元が(0, 0)、先端が(3, 2)です。
1-4. ベクトルの3つの実生活例
例1:移動(位置の変化)
現在地(5, 3)から、ベクトル[2, 1]だけ移動した
↓
新しい場所(7, 4)
例2:速度
時速 東方向:60km
北方向:40km
速度ベクトル = [60]
[40]
速度も「どの方向に、どのくらいの速さ」なので、ベクトルで表せます!
例3:力
重力の力も、重さと方向があります。
重力 = [0 ] ← 横方向に0
[-100] ← 下方向に100
1-5. 2次元と3次元のベクトル
これまで「横と縦」の2次元ベクトルを見てきました。
2次元ベクトル:
v = [3]
[2]
3次元ベクトル(横・縦・奥行き):
w = [3]
[2]
[1]
ゲームのキャラクターは、3次元で動きますね。キャラの座標も3次元ベクトルで管理されます!
第2章:ベクトルの操作
2-1. ベクトルの足し算
「宝探しゲーム」を続けましょう。
1ステップ目:「右に3歩、上に2歩」
ベクトル v = [3]
[2]
2ステップ目:「さらに右に1歩、上に3歩」
ベクトル w = [1]
[3]
合計で、どこに行ったか?
答え:右に4歩、上に5歩
v + w = [3] + [1] = [3+1] = [4]
[2] [3] [2+3] [5]
図で見るとこんな感じです:
↑
│ w
5 ├──→→→ 到着地点(4, 5)
│ ↗
3 ├─→→→↗ v
│
0 └─────────→
0 3 4
最初のベクトルの先端から、2番目のベクトルを繋ぎます。これをベクトルの足し算と言います。
2-2. ベクトルのスカラー倍(数値倍)
「スカラー」って何?簡単です。普通の数字のことです。3とか、2.5とか。
では、ベクトルに数字を掛けるとどうなるか見てみましょう。
例:「右に3歩、上に2歩」というベクトルを2倍にしたら?
v = [3]
[2]
2倍のv = 2 × [3] = [6]
[2] [4]
つまり「右に6歩、上に4歩」
図で見ると:
↑
4 ├──────→ (6, 4)
│ ↗
2 ├─→
│
0 └─────────→
0 3 6
なぜこんなことするの?
機械学習では、「信号の強さを調整する」ときに使います。例えば、「この特徴はすごく重要だから、2倍の重みを付けよう」という感じです。
第3章:行列って何?
3-1. 複数のベクトルをまとめたもの
さて、ここからが重要です!
ベクトル1つで「1つの矢印」を表せました。では、複数のベクトルをまとめたら?
それが**行列(ぎょうれつ)**です!
3-2. 行列の定義と記号
行列は、数字を行(横)と列(縦)に並べた表です。
列1 列2
行1 [ 1 3 ]
行2 [ 2 4 ]
行3 [ 5 6 ]
これを行列 A と呼びます
読み方:「3行2列の行列」(行が先、列が後)
3-3. 記号の説明
数学では、行列のことをこう書きます:
A = [ 1 3 ]
[ 2 4 ]
[ 5 6 ]
また、行列の中の1つの要素(数字)を指すときは:
A(i, j) または A_{i,j}
と書きます。「i」は行の番号、「j」は列の番号です。
例:A(1, 2) = 3 (1行目、2列目の数字)
3-4. 実生活の例:テストの成績表
あなたのクラスのテスト結果を表にしたら:
数学 英語 理科
太郎 [ 80 70 85 ]
花子 [ 90 85 80 ]
次郎 [ 75 90 88 ]
これは3行3列の行列です!
数学の列を見れば「全員の数学の成績」がわかります。
太郎の行を見れば「太郎の全教科の成績」がわかります。
3-5. 実生活の例:野菜の値段表
八百屋さんのデータ管理を考えてみましょう。
小玉 中玉 大玉
にんじん [ 100 150 200 ]
トマト [ 80 120 160 ]
きゅうり [ 60 100 150 ]
「(1, 2)番目の値段」は何か?
→ にんじんの中玉の値段 = 150円
このように、「2つの条件に基づいてデータを管理する」のが行列の役割です!
3-6. 実生活の例:ピザの注文
あなたがピザ屋で働いています。月曜日から日曜日までの、MサイズとLサイズの売上本数を管理するとしたら:
Mサイズ Lサイズ
月曜 [ 10 5 ]
火曜 [ 12 8 ]
水曜 [ 8 6 ]
木曜 [ 15 10 ]
金曜 [ 18 12 ]
土曜 [ 20 15 ]
日曜 [ 16 14 ]
「金曜日のMサイズ」は何本?→ (5, 1)番目 = 18本
このデータ管理が、実は機械学習の基本なんです!
第4章:行列の操作
4-1. 行列の足し算
2つの行列を足す方法は、ベクトルの足し算と同じです。対応する位置の数字同士を足すだけ!
例:テストの成績を2回測定した場合
1回目のテスト:
A = [ 80 70 ]
[ 90 85 ]
2回目のテスト:
B = [ 85 75 ]
[ 88 90 ]
合計:
A + B = [ 80+85 70+75 ] [ 165 145 ]
[ 90+88 85+90 ] = [ 178 175 ]
注意:同じサイズの行列同士しか足せません!
4-2. 行列のスカラー倍
ベクトルと同じように、行列全体に数字を掛けます。
例:データを2倍に拡大する
A = [ 1 2 ]
[ 3 4 ]
2 × A = [ 2 4 ]
[ 6 8 ]
すべての数字が2倍になった!
第5章:行列とベクトルの掛け算(最重要)
5-1. なぜ行列とベクトルを掛けるのか?
ここが機械学習で最も重要な計算です!
思い出してください。第2回で学んだニューラルネットワークの式:
出力 = 入力 × 重み + バイアス
複数の入力と複数の重みがあるとき、この計算を効率よくやるには、行列とベクトルの掛け算を使います!
5-2. 行列とベクトルの掛け算:シンプルな例
最初の例を見てください。
行列 A = [ 2 1 ]
[ 3 4 ]
ベクトル v = [ 5 ]
[ 2 ]
この掛け算 A × v は:
1行目と v の掛け算:
[ 2 1 ] と [ 5 ]
[ 2 ]
2×5 + 1×2 = 10 + 2 = 12
2行目と v の掛け算:
[ 3 4 ] と [ 5 ]
[ 2 ]
3×5 + 4×2 = 15 + 8 = 23
答え:
A × v = [ 12 ]
[ 23 ]
図で見ると:
行列の各行がベクトルに「作用」して、
新しいベクトルが生まれる
5-3. 視覚的に理解する
実は、行列とベクトルの掛け算は、座標の変換を表しています。
元のベクトル (5, 2)
↑
2 ├──●
│
0 └──────→
0 5
行列 A で変換すると、新しい位置 (12, 23) になります。
新しいベクトル (12, 23)
↑
23 ├────────●
│
0 └────────────→
0 12
つまり、行列は「ベクトルを変換する装置」なんです!
5-4. 実生活の例:犬の体型分析
獣医さんが犬を診断する場合を考えましょう。
各犬の特徴を3つ測定して、「健康度スコア」を計算するとします。
犬の特徴ベクトル = [ 体重kg ] = [ 10 ]
[ 身長cm ] [ 30 ]
[ 年齢才 ] [ 2 ]
診断の重みを表す行列:
診断 A = [ 0.5 0.3 -0.1 ]
[ 0.2 0.4 0.0 ]
これは「体重は重要(0.5)、身長も大事(0.3)だけど、年齢は関係ない」という意味です。
計算すると:
A × ベクトル = [ 0.5×10 + 0.3×30 + (-0.1)×2 ]
[ 0.2×10 + 0.4×30 + 0.0×2 ]
= [ 5 + 9 - 0.2 ]
[ 2 + 12 + 0 ]
= [ 13.8 ]
[ 14.0 ]
1番目のスコアが13.8、2番目が14.0です。この2つの値で「この犬の健康状態」を判定します!
5-5. 複数のベクトルを一度に計算
実は、複数のベクトルを並べても、計算できます。
複数のベクトルを並べた行列:
V = [ 5 8 3 ]
[ 2 1 4 ]
これは「3つの犬」のデータを一度に管理しています。
A × V = [ 0.5 0.3 ] × [ 5 8 3 ]
[ 0.2 0.4 ] [ 2 1 4 ]
結果も行列になります:
= [ 13.8 ... ]
[ 14.0 ... ]
このように、複数のデータを同時に処理できるのが行列の強力さです!
第6章:機械学習での活用
6-1. ニューラルネットワークと行列
前回のニューラルネットワークを思い出しましょう。
入力層 隠れ層 出力層
□────────□────────□
□────────□────────□
□────────□────────□
各線(つまみ)の重みを管理するのに、行列を使います!
6-2. つまみ(重み)の管理
例えば、入力が3個、隠れ層が2個の場合:
入力1 ─┐
├─ つまみ(重み)─ 隠れ層1
入力2 ─┤
├──────────────┬─ 隠れ層2
入力3 ─┘ └─
これらの「つまみ」を行列で表すと:
W = [ w11 w12 ] ← これは 3×2 行列
[ w21 w22 ]
[ w31 w32 ]
w11:入力1 → 隠れ層1 のつまみ
w12:入力1 → 隠れ層2 のつまみ
...など
6-3. 行列計算で一度に計算
3つの入力データがあるとき:
データ = [ 入力1 ]
[ 入力2 ]
[ 入力3 ]
重みの行列 W = [ 0.5 0.3 ]
[ 0.2 0.4 ]
[ 0.1 0.2 ]
計算:
隠れ層の値 = W × データ
複数データがあっても:
複数データ = [ 0.5 0.3 0.8 ]
[ 0.2 0.4 0.1 ]
[ 0.1 0.2 0.6 ]
一度に計算できます!
6-4. なぜ行列を使うのか
理由1:計算が速い
100個の入力が10個の隠れ層に繋がっているとき、ループで1個ずつ計算するより、行列計算で一度に計算する方が、ものすごく速いです。
理由2:管理が簡単
1000個のつまみを1個ずつ変数で管理するのは大変です。でも行列なら「A」という1つの名前で管理できます。
理由3:GPUで高速化できる
ゲーム機やスーパーコンピュータは、行列計算に特化しています。行列を使うことで、これらを活用できるんです!
6-5. 複数層での行列の活躍
ニューラルネットワークが複数層あると:
入力 W1 隠れ層1 W2 隠れ層2 W3 出力
│ × → │ × → │ × → │
W1, W2, W3 が全部行列です。これらを組み合わせることで、複雑な計算ができるんです!
第7章:記号と読み方
7-1. よく出てくる記号
ベクトルの記号:
v, w, x (小文字のイタリック体)
読み方:「ベクトル v」
行列の記号:
A, B, W, X (大文字)
読み方:「行列 A」
7-2. 添え字(そえじ)の読み方
A(i, j) または A_{i,j}
読み方:「A の i, j 成分」
例:A(2, 3) = 5
「A の 2行3列の成分は5」
7-3. 転置行列
行と列を入れ替えた行列を「転置行列(てんちぎょうれつ)」と呼びます。
A = [ 1 2 3 ]
[ 4 5 6 ]
転置 = [ 1 4 ]
[ 2 5 ]
[ 3 6 ]
記号:A^T (T は上付き)
読み方:「A の転置」
7-4. その他の記号
A × B 「A と B の積」(掛け算)
||v|| 「v のノルム」(ベクトルの大きさ)
第8章:まとめと次のステップ
8-1. 今回学んだこと
-
ベクトル:方向と大きさを持つ矢印。位置、速度、力などを表す。
-
行列:複数のベクトルを並べた表。テスト成績表やピザの売上など、日常にあふれている。
-
掛け算:行列とベクトルの掛け算は「座標の変換」。これがニューラルネットワークの計算の中核。
-
なぜ大事か:複数のデータを効率よく処理でき、機械学習の計算を高速化できるから。
8-2. これらがどう繋がるか
第1回「機械学習とは」
↓
第2回「ニューラルネットワークとつまみ」
↓
第3回「線形代数(今ここ)」← 複数のつまみを管理する方法
↓
第4回「実装してみる」← 実際に計算してみる
8-3. よくある質問
Q1:行列の計算、なんで規則がこんなに複雑?
A:最初は複雑に見えますが、これは「効率的に計算する」ために最適な定義なんです。ゲームのグラフィック変換、天気予報の計算、全部この規則で動いています。
Q2:3次元以上の行列もあるの?
A:あります!画像処理では、色(RGB)を加えた4次元、時系列データでは5次元以上の「テンソル」を使います。でも基本的な考え方は同じです。
Q3:行列の計算、手でできるの?
A:小さい行列なら手計算できます。でも機械学習では「100 × 100」とか「1000 × 1000」の行列を扱うので、コンピュータにやってもらいます。
8-4. 実践への道
次回からは、これらの概念を使って:
- 実際にプログラムで計算してみる
- ニューラルネットワークを動かしてみる
- 本当の機械学習を体験する
これらができるようになります!
8-5. 最後に
「線形代数は難しい」という評判は、いい例がないからです。
実際には:
- ゲームの座標変換
- 写真のフィルター処理
- スマホの推薦システム
- 全部が線形代数です
あなたが今使ってるテクノロジーの裏側には、この「行列」という概念が隠れているんですね。
次回も一緒に、機械学習の世界を探索していきましょう!
付録:計算練習問題
問題1:ベクトルの足し算
v = [ 2 ] w = [ 3 ]
[ 3 ] [ 1 ]
v + w を計算してみてください
答え:
[ 5 ]
[ 4 ]
問題2:行列とベクトルの掛け算
A = [ 1 2 ] v = [ 1 ]
[ 3 4 ] [ 2 ]
A × v を計算してみてください
答え:
1行目:1×1 + 2×2 = 1 + 4 = 5
2行目:3×1 + 4×2 = 3 + 8 = 11
[ 5 ]
[ 11 ]
問題3:ピザ屋の例
月曜日のMサイズ:10本、Lサイズ:5本
火曜日のMサイズ:12本、Lサイズ:8本
これを行列で表してください
答え:
[ 10 5 ]
[ 12 8 ]
それでは、また次回お会いしましょう!
Discussion