你點了菜,怎麼算營養?
矩陣不是格子對格子,而是資訊的重新組合。
🍱 一、今天我們從點便當開始說起
你曾經在自助餐點過菜嗎?想像你今天拿了 1 份炒蛋、0 份青菜和 2 份滷豆干。
如果我問你:「那你今天總共吃進多少蛋白質、脂肪和纖維?」
你可能會說:「我去查每道菜的營養表,再一項一項加總。」
沒錯。這,其實就是「矩陣乘法」正在做的事。
🚫 二、我們先來澄清一個常見的誤解
很多同學第一次接觸矩陣乘法時,會以為只要「位置對位置相乘」就好:
text
複製程式碼[1 2] [3 4] [1×3 2×4] → 不對!
[5 6] × [7 8] = [5×7 6×8]
這樣的運算,其實叫做 點乘(Element-wise multiplication),和我們今天要學的矩陣乘法不一樣。
🍱 三、矩陣乘法就像點菜與營養混合的過程
我們來看一個實際的例子。
顧客點的菜(矩陣 A)
每一列是一位顧客,每一欄是一道菜。
ini
複製程式碼A =
[1 0 2] # 顧客1:1份炒蛋,0份青菜,2份豆干
[0 1 1] # 顧客2:1份青菜,1份豆干
每道菜的營養成分(矩陣 B)
每一列是一道菜,每一欄是一種營養素(蛋白質、脂肪、纖維)
ini
複製程式碼B =
[10 5 2] # 炒蛋
[3 1 6] # 青菜
[5 2 4] # 豆干
顧客吃進的總營養(A × B = C)
ini
複製程式碼C =
[20 9 10] # 顧客1:總共吃進 20g 蛋白質、9g 脂肪、10g 纖維
[8 3 10] # 顧客2:總共吃進 8g 蛋白質、3g 脂肪、10g 纖維
🧠 四、為什麼這叫「乘法」?
你可以把它想成:
「每一位顧客的選擇」×「每一道菜的營養內容」=「顧客實際攝取的總營養」
它不是一格對一格地算,而是:
- 一整列(顧客的選擇)
- 和一整欄(每種營養素)
- 進行一對一相乘後加總,得出一個新數字
這個過程稱為「行與列的內積(dot product)」。
💻 五、來寫一小段程式,一起動手看看
python
複製程式碼import numpy as np
# 顧客點餐
A = np.array([[1, 0, 2],
[0, 1, 1]])
# 菜的營養組成
B = np.array([[10, 5, 2],
[3, 1, 6],
[5, 2, 4]])
# 矩陣乘法
C = A.dot(B)
print(C)
執行這段程式,我們就會看到每位顧客總共攝取了多少營養。
🔍 六、資料科學為什麼需要矩陣乘法?
矩陣乘法可以幫助我們:
- 把一份資料轉換成另一份有意義的資訊
- 把「數量 × 特徵」變成「結果」
- 把模型的權重 × 特徵,轉換成一個預測
資料科學家幾乎每天都會使用矩陣乘法,它是資料與資料之間「互動」的核心語言。
💬 七、小結:你不是在相乘,而是在「配對與重組」
希望今天的例子能幫助你理解:
矩陣乘法不是格子對格子,而是整組資訊的「融合」、「轉譯」、「再解釋」。
下一篇,我們會學一個新的概念:範數(Norm),它能幫助你量度向量的長度、判斷資料的大小、甚至衡量模型的複雜度。