📊

線形代数の基礎〜中学生でもわかる機械学習の基礎【第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. 今回学んだこと

  1. ベクトル:方向と大きさを持つ矢印。位置、速度、力などを表す。

  2. 行列:複数のベクトルを並べた表。テスト成績表やピザの売上など、日常にあふれている。

  3. 掛け算:行列とベクトルの掛け算は「座標の変換」。これがニューラルネットワークの計算の中核。

  4. なぜ大事か:複数のデータを効率よく処理でき、機械学習の計算を高速化できるから。

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