メインコンテンツへスキップ

4.1.1 線形代数ロードマップ:データはベクトル、バッチは行列

線形代数は、AI がデータを表し、変換するための言語です。証明の暗記から始めず、まず各オブジェクトがコードで何をするかを見ます。

まずマップを見る

線形代数学習マップ

この小章の流れです。

線形代数章フロー

概念AI での最初の意味
ベクトル1つの対象を数値列で表す
行列複数のベクトルを積む、または変換を表す
内積対応する位置を掛けて合計する
行列積多くの内積を一度に行う
固有値/固有ベクトル重要な方向。PCA の直感に使う

最小ループを動かす

linear_algebra_first_loop.py を作り、numpy をインストールしてから実行します。

import numpy as np

student = np.array([90, 85, 92])
students = np.array(
[
[90, 85, 92],
[70, 88, 75],
[95, 91, 89],
]
)
weights = np.array([0.4, 0.2, 0.4])

single_score = student @ weights
all_scores = students @ weights

print("student_vector:", student)
print("matrix_shape:", students.shape)
print("single_score:", round(single_score, 2))
print("all_scores:", all_scores.round(2))

出力:

student_vector: [90 85 92]
matrix_shape: (3, 3)
single_score: 89.8
all_scores: [89.8 75.6 91.8]

@ ではなく * を使うと、重み付きスコアではなく要素ごとの掛け算になります。最初にここを区別できるとかなり楽になります。

この順番で学ぶ

順番読むまず見ること
14.1.2 ベクトル対象 -> ベクトル、長さ、内積、コサイン類似度
24.1.3 行列バッチデータ、行列積、X @ W + b
34.1.4 固有値と固有ベクトル特別な方向、PCA の直感
44.1.5 ベクトル空間基底、次元、線形変換

合格ライン

1つのサンプルがベクトル、バッチが行列である理由、@ が何をするか、そして RAG 類似度、PCA、ニューラルネットワーク層に再登場する理由を説明できれば合格です。