iPAS AI 應用規劃師 · 初級+中級

📐 iPAS 專用線性代數速成

不教數學系那套。iPAS 從來不叫你手算反矩陣——它只考六件事:維度對不對得起來、NumPy 那幾個函式誰是誰、兩個向量像不像、PCA 的特徵值在幹嘛、SVD 為什麼能降維、範數在正則化與梯度裁剪裡的角色。這頁就把這六件事用三個互動實驗室講完。

🟢 綠標=初級也會考🔵 藍標=中級才考🧪 3 個互動實驗室🐍 NumPy 函式速查

💡 先講白話:AI 為什麼離不開線性代數

一句話:資料是矩陣,模型是矩陣乘法,訓練是在調矩陣裡的數字。
一張 28×28 的手寫數字圖 → 攤平成 784 維向量;一批 100 張 → (100, 784) 的矩陣;一層全連接層做的事就是 \(y = Wx + b\),把 784 維乘進 128 維。所以「維度對不對」=「這個模型接不接得起來」,這正是 iPAS 最愛考的計算題。
📌 考試心態校正:iPAS 考的是「看得懂、判斷得出來」,不是「算得出來」。歷屆真題長這樣:給你兩個矩陣的形狀問輸出形狀、給你一段 NumPy 程式問哪個敘述正確、問 SVD 能不能分解長方形矩陣。沒有一題要你手推行列式。

🧱 第一層:純量、向量、矩陣、張量 初級

這四個名詞的差別只有一個:需要幾個索引才能指到一個數字(也就是「階數 / ndim」)。

名稱階數長相AI 裡的例子
純量 Scalar03.14學習率、loss 值
向量 Vector1[1, 2, 3]詞嵌入向量、一筆樣本的特徵
矩陣 Matrix2[[1,2],[3,4]]一批資料 (樣本數, 特徵數)、權重 W
張量 Tensor3 以上shape=(32,224,224,3)一批彩色圖片 (批次, 高, 寬, 通道)
常見混淆:「張量」在深度學習框架(PyTorch / TensorFlow)裡是所有階數的統稱——純量也是 tensor。但考試問「階數最高的是誰」時,答案就照上表。另外 張量分解(Tensor Decomposition) 是模型壓縮手法之一(把大張量拆成小結構),別跟量化 Quantization(FP32→INT8 降精度)、剪枝 Pruning(砍連線)搞混——這三個是中級的送分題。

🔤 看到符號就卡住?先把這張表放旁邊

這頁會用到的符號全部列在下面,一行一個。數學的困難常常不是概念難,而是沒人告訴你那個圖案怎麼念、代表什麼——看不懂符號,整條式子就等於空白。

符號怎麼念在這頁的意思
Σsigma
西格瑪(大寫)
把一串東西全部加起來。下面寫從哪開始、上面寫到哪結束。
‖x‖norm
範數(雙豎線)
向量的「長度」。雙豎線是為了跟單豎線的絕對值區隔。
× ·multiplication
乘號兩種寫法
都是乘。差別純粹是歷史與排版習慣。
=equals
等號
兩邊相等。
not equal
不等於
兩邊不相等。
≤ ≥less/greater than or equal
小於等於、大於等於
包含「剛好等於」的那個邊界。
λlambda
蘭布達
在這四頁有三種身分:特徵值(PCA)、正則化強度(L1/L2)、卜瓦松的平均發生次數
ρ rrho / r
相關係數
兩個變數的線性關係強度,範圍 −1 到 1。
θtheta
西塔(參數)
泛指「模型的某個未知參數」。在線代頁則是兩個向量的夾角
Aᵀtranspose
轉置
把矩陣的行與列對調。
A⁻¹inverse
反矩陣
乘回去會變成單位矩陣的那個矩陣,相當於矩陣版的「倒數」。
det |A|determinant
行列式
一個能判斷矩陣「有沒有把空間壓扁」的數。det = 0 代表沒有反矩陣。
perpendicular
垂直、正交
兩個向量夾角 90°,內積為 0,彼此完全無關。
x₁ x₂subscript
下標
編號用。x₁, x₂, x₃ 是「第 1、2、3 個」,不是次方。
A x大寫矩陣、小寫向量
排版慣例
看字體就知道是什麼:大寫=矩陣、小寫=向量或純量
√ᵢ Σᵢindices
求和的上下界與指標 i
Σ 底下的 i=1、頂上的 n:從第 1 個加到第 n 個。i 是「跑號」。
🔍 想知道「為什麼是這個符號」?例如 Σ 其實是希臘文的 S,來自拉丁文 Summa(和)∫ 是一個被拉長的 S∂ 是圓體的 d——完整的 50 個符號來源、發明者與年代,都整理在 數學符號解碼器
那頁還會誠實標出哪些符號根本查不到出處(像機器學習學習率的 η,翻遍符號史文獻都沒人記載為什麼是它)——看不懂不是你的問題,是真的沒人寫下來。

🔢 基本功:矩陣乘法到底怎麼算 初級中級

規則只有一句話:輸出 C 的第 i 列第 j 欄,等於「A 的第 i 」和「B 的第 j 」對應相乘後全部加起來——也就是這兩條線的內積

A(2 列 × 3 欄)
×
B(3 列 × 2 欄)
=
C(2 列 × 2 欄)
👆 點看看綠色輸出 C 裡的任何一格——我會把負責它的那一列那一欄亮起來。

為什麼「A 的欄數」一定要等於「B 的列數」

因為要對應相乘——A 那一列拿出 3 個數字,B 那一欄就得剛好也有 3 個數字才配得起來。少一個或多一個都沒辦法配對,整個運算就不成立。這就是下一個實驗室要玩的「維度相容」,本質上只是這件事的形狀版說法。

🖐️ 手指口訣:左手食指從 A 的左邊往右滑一列,右手食指從 B 的上面往下滑一欄,兩隻手指每碰一次就把那對數字相乘,滑完把所有乘積加起來——那個總和就填進 C 的交叉點。
⚠️ 兩個必記的性質:
不可交換:\(AB \neq BA\)。上面的 A×B 是 2×2,但 B×A 會變成 3×3——連形狀都不一樣。順序寫反就是錯的。
逐元素相乘不是矩陣乘法:NumPy 的 A * B 是把同位置的數字直接相乘(要求兩者形狀相同),A @ B 才是上面這套「列×欄再相加」。考程式題最愛用這個騙人。

🧪 實驗室 1:維度接龍 中級高頻

知道怎麼算之後,考試真正問的其實只有「接不接得起來、輸出多大」:內側兩個數字要相同,外側兩個數字留下來。 \((a,b) \times (b,c) = (a,c)\)。拖動滑桿把中間兩個數字調成不一樣,看它整條斷掉。

矩陣 A(輸入)(1, 10)
×
矩陣 B(權重)(10, 64)
=
輸出(1, 64)
✅ 內側 10 = 10,可以相乘。
乘加次數(FLOPs 概念): 若 B 是全連接層權重,參數量含偏置:
🎯 真題還原(中級 科目一):Attention 層裡輸入 \(Q\) 形狀 (1, 10)、投影權重 \(W_Q\) 形狀 (10, 64),問 \(Q \times W_Q\) 的輸出形狀 → (1, 64)
陷阱選項:(10,10) 是把「被吃掉的內側維度」誤當輸出;(64,1) 是把外側順序寫反了。口訣:左邊的列留下、右邊的欄留下,中間握手後消失。
🎯 參數量真題:輸入 9 個特徵、接一層 10 個神經元的全連接層,參數量 = \((9+1) \times 10 = 100\)。那個 +1 是偏置 bias,每個神經元各配一個——這題幾乎每屆都換皮出現。

🧭 實驗室 2:向量羅盤(內積・餘弦・距離) 初級中級

用滑鼠拖動兩個箭頭的頂端,看四個數字怎麼變。重點在於分辨:內積是一個數字、逐元素相乘還是一個向量、餘弦只管方向、歐氏距離管絕對位置。

💡 提示:拖動藍色或橘色箭頭的頂點。座標會吸附到 0.5 的格線上。
向量 a = [3, 2] 長度 ‖a‖ =
向量 b = [2.5, -1] 長度 ‖b‖ =
np.dot(a,b) 內積 =  (一個純量)
a * b 逐元素 =  (還是向量!)
餘弦相似度 cos θ =  夾角
歐氏距離 ‖a−b‖₂ =
曼哈頓距離 ‖a−b‖₁ =
拖拖看:把 b 轉到和 a 同方向,cos 會逼近 1;轉到垂直,cos = 0(正交)。

為什麼「文字比對用餘弦、不用歐氏距離」

按上面那顆「把 b 等比拉長」的按鈕:餘弦相似度完全沒變,歐氏距離卻暴增。文件向量的「長度」通常只反映文章多長、字數多少,不代表主題不同。所以 RAG 的向量檢索、詞嵌入比對,幾乎一律用餘弦相似度——它把長度除掉,只留下方向(=語意)。

⚠️ 極高頻陷阱:v1 * v2 在 NumPy 是逐元素相乘(element-wise)[1,2,3]*[4,5,6] = [4,10,18]np.dot(v1,v2) 才是內積1×4+2×5+3×6 = 32。114 年第 2 回中級科目三第 40 題就是整題在考這個。矩陣乘法要用 @np.matmul,不要用 *
要比什麼用哪個典型場景
語意像不像(不管長度)餘弦相似度RAG 檢索、詞嵌入、推薦系統、文件分群
實際離多遠歐氏距離 L2K-means 分群、KNN、異常偵測
各維度差距總和(抗離群)曼哈頓距離 L1高維稀疏資料、對離群值較穩健
順帶記:K-means 的三大限制之一就是「以歐氏距離為基礎,難以處理非凸/半月形群集」,這是中級科目三的常客。要處理非球形群集就改 DBSCAN/HDBSCAN。

🐍 NumPy 線代函式速查(考程式題必背) 中級

中級科目三會直接貼一張程式碼截圖問「下列敘述何者正確」。這五個函式分清楚就穩了:

寫法做什麼回傳最常被拿來騙人的錯配
np.dot(a,b)向量內積 / 矩陣乘法純量或矩陣被說成「逐元素相乘」
a * b逐元素相乘同形狀陣列被說成「矩陣乘法」
a @ b / np.matmul矩陣乘法矩陣
np.linalg.inv(A)矩陣矩陣被說成「算行列式」
np.linalg.det(A)行列式純量被說成「算反矩陣」
np.linalg.eig(A)特徵值+特徵向量(值, 向量)被說成「算反矩陣」
np.linalg.norm(v)範數(預設 L2 長度)純量被說成「正規化」
A.T轉置(行列互換)矩陣被說成「反矩陣」
記憶鉤子:invinverse 反;detdeterminant 行列式;eigeigenvalue 特徵值。三個英文字頭直接對應,選項一旦張冠李戴就是錯的。

🎡 實驗室 3:PCA 主軸儀(特徵值在幹嘛) 中級核心

PCA 的一句話定義:對資料的共變異數矩陣做特徵分解,特徵向量=主要變異的方向,特徵值=那個方向上的變異量。 拉動下面的相關係數,看兩條主軸怎麼轉、第二個特徵值怎麼被壓扁。

共變異數矩陣 Cov
PC1 特徵值 λ₁ =  方向
PC2 特徵值 λ₂ =  方向
PC1 解釋變異比例:
把 ρ 拉到 0.95 以上試試:λ₂ 幾乎歸零,代表第二個維度根本沒帶新資訊——這就是共線性,也是 PCA 敢丟掉它的理由。

考試會問的三件事

問題標準答案
PCA 在數學上做了什麼?共變異數矩陣做特徵值分解,取特徵值最大的前 k 個特徵向量當新座標軸
怎麼決定保留幾維?累積解釋變異比例(如累積 85%~95%),或看陡坡圖 Scree Plot 的轉折
PCA 前一定要做什麼?標準化(\((X-\mu)/\sigma\))。不然單位大的特徵(如「年薪」)會霸佔主成分
⚠️ PCA 三大誤解:① PCA 是降維不是分類——「用最大主成分當分類依據」是錯的選項。② PCA 是非監督的,完全不看標籤 y。③ PCA 產出的新特徵是原特徵的線性組合,失去可解釋性(不能再說「這是年齡」)。
PCA vs t-SNE 選型題(每屆都出):要「降維後餵給模型當特徵」→ PCA(線性、可套用到新資料 transform、快);要「把高維嵌入畫成 2D 看群集」→ t-SNE(非線性、只為視覺化、不能拿來當下游特徵、距離不代表真實距離)。

🔻 SVD 奇異值分解:中級的必考題 中級

\[ A_{m \times n} = U_{m \times m}\; \Sigma_{m \times n}\; V^{T}_{n \times n} \] 把任何一個矩陣拆成三塊:\(U\) 與 \(V\) 是旋轉方向,中間的 \(\Sigma\) 是對角線上的奇異值,由大到小排好,代表「這個方向有多重要」。

四句話記住全部考點

SVD 不限方陣——長方形矩陣照分解。(這是最愛考的「下列何者正確」的答案,選項會寫「SVD 只能分解方陣」)
截斷 SVD(Truncated SVD)=只留最大的 k 個奇異值,用低維近似原矩陣 → 這就是降維。
PCA 是 SVD 的特例:對中心化資料做 SVD,等價於對共變異數矩陣做特徵分解。所以說「SVD 比 PCA 更一般化」是正確的。
LSA(潛在語意分析)=把截斷 SVD 用在「詞—文件矩陣」上,挖出潛在語意;推薦系統則用在「使用者—商品評分矩陣」上找潛在因子。
為什麼推薦系統愛用 SVD?使用者–商品評分矩陣天生就是超大的長方形(100 萬人 × 5 萬商品),而且極度稀疏。PCA 走不動的地方,截斷 SVD 可以直接上,把每個人與每個商品都壓成幾十維的「潛在興趣向量」,再用內積算匹配度。

📏 範數 Norm:正則化與梯度裁剪的共同語言 中級

範數就是「向量的長度該怎麼量」。iPAS 只考兩種:

L1 範數L2 範數
算法\(\sum |w_i|\) 絕對值相加\(\sqrt{\sum w_i^2}\) 平方和開根號
當正則化Lasso:把不重要的權重壓成剛好 0 → 自動特徵選擇、模型稀疏Ridge / 權重衰減:把權重整體縮小但不歸零 → 抑制過擬合、緩解共線性
幾何直覺菱形限制區,尖角容易碰到座標軸 → 出現 0圓形限制區,處處平滑 → 不會剛好是 0
兩個一起用Elastic Net=L1 + L2,兼顧稀疏與穩定

梯度裁剪 Gradient Clipping(真題原句)

訓練 RNN/Transformer 時梯度可能爆炸,clip_grad_norm_ 的作用是限制梯度的 L2 範數,避免更新步幅失控導致 loss 變 NaN。考題重點在插入位置

loss.backward() → ✂️ clip_grad_norm_(params, max_norm) → optimizer.step()
先反向傳播算出梯度,才裁得到;裁完再用裁剪後的梯度更新權重。放錯位置=白做。
⚠️ 別混淆:梯度裁剪限制的是梯度,不是 loss、也不是權重本身。選項若寫「限制 Loss 數值大小避免梯度消失」是錯的——它處理的是梯度爆炸,不是消失。

🔢 向量化與標準化:資料進模型前的線代 初級

類別 → 向量

One-Hot 編碼:把無順序的類別(縣市、顏色)拆成多個 0/1 欄位,避免模型誤以為「台北=1、台中=2」有大小關係。代價是維度暴增且互相共線——所以線性模型常搭配 drop_first 拿掉一欄當基準,降低共線性。
Ordinal 編碼:有順序的類別(非常不滿意→非常滿意)才用,直接轉成 1~5 保留順序。
嵌入向量 Embedding:把類別/詞彙壓成稠密的低維向量(如 512 維),語意相近的向量方向也相近——這就是為什麼可以用餘弦相似度比對。

數值 → 同一個尺度

標準化 Standardization:\(z = (x-\mu)/\sigma\),轉成平均 0、標準差 1。PCA、SVM、KNN、神經網路都需要。
正規化 Normalization(Min-Max):\(x' = (x - x_{min})/(x_{max}-x_{min})\),壓到 [0,1],對離群值敏感。

🎯 Z-score 判讀真題:監控系統設 |Z| ≥ 2 觸發警示,某特徵 Z-score = −2 代表「該值低於歷史平均 2 個標準差」。負號=方向在平均值下方,絕對值 2=距離兩個標準差,剛好踩到警示邊界。別看到負號就選「超出常態分布範圍」。

✅ 自我檢測

Q0:\(A=\begin{bmatrix}1&2\\3&4\end{bmatrix}\)、\(B=\begin{bmatrix}5&6\\7&8\end{bmatrix}\),AB 的左上角那一格是多少?

19。取 A 的第 1 [1, 2] 與 B 的第 1 [5, 7],對應相乘再相加:1×5 + 2×7 = 5 + 14 = 19。整個 AB = [[19, 22], [43, 50]]。順帶一提 BA = [[23, 34], [31, 46]],兩者不相等——矩陣乘法不可交換

Q1:輸入 Q 形狀 (1, 10),權重 W_Q 形狀 (10, 64),Q × W_Q 的輸出形狀是?

(1, 64)。內側 10 與 10 相同故可乘,外側 1 與 64 留下來。選 (10,10) 是把被吃掉的內側當輸出;選 (64,1) 是外側順序寫反。

Q2:v1 = np.array([1,2,3])v2 = np.array([4,5,6])v1 * v2np.dot(v1,v2) 各是多少?

v1 * v2array([4, 10, 18])(逐元素);np.dot(v1,v2)32(4+10+18,一個純量)。順帶:np.linalg.inv 是反矩陣、det 才是行列式、eig 是特徵值。

Q3:下列關於 SVD 的敘述,何者正確?(A)只能分解方陣(B)截斷 SVD 可降維(C)PCA 可視為 SVD 的特例(D)LSA 是 SVD 在詞—文件矩陣上的應用

(A) 不正確。SVD 對任意 m×n 長方形矩陣都成立——推薦系統的使用者×商品矩陣本來就是長方形,正是 SVD 的主場。B、C、D 皆為正確敘述。

Q4:兩篇文章長度差很多(一篇 200 字、一篇 5000 字),要判斷主題是否相近,該用餘弦相似度還是歐氏距離?

餘弦相似度。它先除掉向量長度、只比方向,不會因為文章字數多寡而失真。歐氏距離會把「長度差異」誤判成「主題差異」。

Q5:PyTorch 訓練迴圈中,clip_grad_norm_ 應該插在哪兩行之間?作用是什麼?

插在 loss.backward() 之後optimizer.step() 之前。作用是限制梯度的 L2 範數,避免梯度爆炸造成更新步幅失控、loss 變 NaN。

Q6:某資料集兩個特徵相關係數高達 0.97,對 PCA 而言代表什麼?

共變異數矩陣的第二個特徵值 λ₂ 接近 0,表示第二個方向幾乎沒有變異、沒帶新資訊(共線性)。PCA 只留 PC1 就能保住絕大部分變異,降維幾乎無損。

Q7:一層全連接層輸入 9 個特徵、輸出 10 個神經元,可訓練參數共幾個?

100 個。權重 9×10 = 90,加上每個神經元各一個偏置 bias 共 10 → (9+1)×10 = 100。

🎯 重點整理(考前 5 分鐘掃這裡)

矩陣乘法怎麼算:C 的第 i 列第 j 欄 = A 的第 i 列 · B 的第 j 欄(對應相乘再相加)。不可交換,AB ≠ BA。
形狀怎麼看:\((a,b)\times(b,c)=(a,c)\)。內側相同才可乘、外側留下來。全連接層參數量 = (輸入+1) × 輸出。
NumPydot=內積、*=逐元素、@=矩陣乘法、inv=反矩陣、det=行列式、eig=特徵值、.T=轉置。
相似度:餘弦只看方向(適合文字/嵌入/RAG),歐氏看絕對距離(適合 K-means/KNN),正交時 cos = 0。
PCA:共變異數矩陣的特徵分解;特徵值=該方向變異量;要先標準化;是非監督降維、不是分類、會失去可解釋性。
SVD:\(A=U\Sigma V^T\),不限方陣;截斷 SVD 留前 k 個奇異值=降維;PCA 是其特例;LSA/推薦系統的主力。
範數:L1→稀疏(Lasso、自動選特徵)、L2→縮小(Ridge、權重衰減)、Elastic Net 兩者兼用;梯度裁剪限制梯度 L2 範數,位置在 backward 之後、step 之前。
張量:階數 0/1/2/3+ = 純量/向量/矩陣/張量;張量分解≠量化≠剪枝。