Chapter 02

行列の積

前の行列の行と後の行列の列の内積で、新しい行列の要素が埋まる。

チャプター別 ディープラーニング図

チャプターを進めるたびに、下の図が少しずつ埋まります。ここまでの構造です。

X1X2X3Y1Y2Y3重みA·B行列積の結果

左は行列Aの1行、右Y1~Y3は行列Bの列との内積結果。これが集まってA·Bの行列積になります。

ディープラーニングで見る行列の積

行列の積は二つの数の表(行列)を組み合わせて新しい行列を作る演算です。前の行列の一つの行と後の行列の一つの列内積が、結果の一つのマスに入ります。

すべての行と列の組み合わせについて内積を求めると結果の行列が完成します。たとえば 2×3 行列と 3×2 行列の積は 2×2 の結果になります。

積が成り立つ条件は、前の行列の列数と後の行列の行数が同じであることです。この条件さえ覚えれば、掛けられるかどうかすぐ判断できます。

ディープラーニングの線形層は入力に重み行列を掛ける演算──つまり行列の積です。ニューロンが10個なら内積10回ですが、行列の積ならまとめて一度に計算できます。

GPU大量の行列の積を並列処理するよう設計されています。数百万回の掛け算が一瞬で終わるからこそ、リアルタイムの画像認識やチャットボットが実現できるのです。

ディープラーニングのほぼすべての演算は行列の積に帰着します──アテンション、畳み込み、再帰ネットワークなど。行列の積を理解すればディープラーニングの骨格が分かります。

画像認識: 画像のピクセル値を行列に並べ、重み行列と掛けて「犬か猫か」などの特徴を抽出します。これを何層も繰り返します。

チャットボット・翻訳: ChatGPTやGoogle翻訳は文を数値の行列に変換し、巨大な重み行列と数十〜数百回掛け算して回答を生成します。計算の大部分が行列の積です。

レコメンド・自動運転: Netflixが数千ユーザーのおすすめスコアを一括計算するのも、自動運転車がカメラ映像から障害物を認識するのも、内部では大規模な行列の積が動いています。

一つの要素を求める: 結果の (i, j) 要素は Aのi行Bのj列の内積です。同じ位置の成分を掛けて足します。

空白の戦略: 空白が結果にあれば、その行と列の内積を計算するだけです。空白がAやBにある場合は、既知の結果と他の値から逆算します。

次元の確認: 掛ける前にAの列数とBの行数が一致しているか確認しましょう。結果の大きさは(Aの行数)×(Bの列数)です。

Aの1行 × Bの1列(内積)→ 結果行列の1マス

A
1
2
3
4
×
B
5
6
7
8
=
ABA \cdot B
19
22
43
50

そのマスAの2行 · Bの2列(内積1回)

Aの2行[3, 4], Bの2列[6, 8]
3×6 = 18
4×8 = 32
ABA \cdot B [1,1] = 18 + 32 = 50
ABA \cdot B [0,0]191×5 + 2×7 = 19
ABA \cdot B [0,1]221×6 + 2×8 = 22
ABA \cdot B [1,0]433×5 + 4×7 = 43
ABA \cdot B [1,1]503×6 + 4×8 = 50

問題

以下の行列積 ABA \cdot B の空欄(?)に入る値を求めなさい。

A
0
2
-2
1
×
B
-2
-3
2
-1
=
ABA \cdot B
4
-2
5
1 / 20