Python 挑戰 ML (機器學習) -- 練習題 [2]

📝 測驗說明與操作指南(管線工程與實戰進階篇)

  • 作答方式:請閱讀題目後,直接點擊下方您認為正確的選項((A), (B), (C), (D))。
  • 即時判定:點擊選項後,系統會透過純 CSS 機制立即判定對錯。若答對,系統會顯示綠色提示;若答錯,系統會標示紅色,並為您同步標出真正的正確答案。
  • 觀看解析:作答選定後,選項下方會自動展開詳細的管線與模型觀念解析,幫助您加深記憶。
⚠️ 注意:本測驗採用單次鎖定作答設計,點選任何選項後即無法更改,請確認思考後再點選。
Q1. 在線性迴歸的底層數學中,正規方程式(Normal Equation)的解為 w = (X^T X)^(-1) X^T y。若在 Python 中執行 np.linalg.inv(X.T @ X) 時拋出「Singular matrix(奇異矩陣)」錯誤,這在資料科學實務上通常代表什麼意義?

✅ 答對了!

❌ 答錯了!

💡 解析:當特徵間存在完美或高度的線性相關(共線性)時,X^T X 的行列式會趨近於 0,成為不可逆的奇異矩陣,這會導致線性迴歸模型極度不穩定。

Q2. 在 NLP 任務或推薦系統中,常需要計算兩個文本向量 A 與 B 的餘弦相似度(Cosine Similarity)。下列哪一段 NumPy 程式碼能正確實現公式 (A · B) / (||A|| ||B||)?

✅ 答對了!

❌ 答錯了!

💡 解析:餘弦相似度的分子是兩向量的內積 np.dot,分母是兩向量的 L2 範數(長度)相乘 np.linalg.norm,此程式碼完美映射了數學定義。

Q3. 在訓練深度學習模型時,為什麼實務上經常優先選擇 Adam 優化器而不是傳統的 SGD(隨機梯度下降)?

✅ 答對了!

❌ 答錯了!

💡 解析:Adam 會追蹤梯度的歷史一階動量與二階動量,對不同更新頻率的參數給予不同的學習率,使其在複雜地形中收斂更快、更穩定。

Q4. 在使用 PyTorch 建構訓練迴圈(Training Loop)時,若發現訓練初期的 Loss 數值異常爆炸或降不下來,最可能是下列哪一個典型流程步驟被遺漏了?

✅ 答對了!

❌ 答錯了!

💡 解析:PyTorch 預設會「累積(accumulate)」梯度。若未清空,每次 backward 的梯度會不斷加總到前一次的結果上,導致參數更新步伐錯亂、Loss 爆炸。

Q5. 在進行機器學習分類任務時,若遇到模型輸出「極度自信卻完全預測錯誤」的情況(例如正確標籤為 1,模型卻輸出預測類別 0 的機率為 0.999),此時 Cross Entropy(交叉熵)Loss 函數會產生什麼特徵反應?

✅ 答對了!

❌ 答錯了!

💡 解析:交叉熵公式中包含 -log(p),當正確類別的預測機率 p 趨近於 0(即極度自信預測錯誤)時,log(p) 會趨近負無限大,產生極高的 Loss 懲罰。

Q6. 在 Python 中使用 Scikit-learn 計算二元分類模型的 AUC(ROC 曲線下面積)時,下列哪一種程式碼撰寫方式才是正確評估模型排序能力的實務標準?

✅ 答對了!

❌ 答錯了!

💡 解析:ROC 曲線依賴改變閾值來觀察 TPR 與 FPR 的變化,因此必須傳入「預測為正類的機率值」(predict_proba),邊界切分才能連續,反映真實 AUC 排序能力。

Q7. 資料前處理時,若某一數值特徵中存在極少數的「極端離群值(Extreme Outliers)」,此時對該特徵使用 StandardScaler(Z-score 標準化)會產生什麼負面影響?

✅ 答對了!

❌ 答錯了!

💡 解析:StandardScaler 依賴平均值與標準差,極端值會嚴重扭曲這兩個統計量,使得標準化後的正常資料失去解析度,此時應改用基於分位數的 RobustScaler。

Q8. 除了進行特徵降維以減少運算量,主成分分析(PCA)在線性迴歸管線中經常被用來解決下列哪一種統計問題?

✅ 答對了!

❌ 答錯了!

💡 解析:PCA 透過正交轉換,將原本高度相關的特徵投影到互相垂直(正交)的主成分軸上,轉換後的新特徵之間完全線性獨立,完美消除共線性。

Q9. 在物件偵測(Object Detection)任務中(如 YOLO),我們經常使用 IOU(Intersection over Union)來評估邊界框(Bounding Box)的準確度。若要用 Python 撰寫邏輯取得兩個框的「交集區域寬度」,概念上應如何計算?

✅ 答對了!

❌ 答錯了!

💡 解析:交集的左邊界是兩者「較右邊的左邊界 (max)」,右邊界是兩者「較左邊的右邊界 (min)」。兩者相減即可得到交集寬度(若為負數則代表無交集)。

Q10. 在醫療影像分割(Image Segmentation)任務中,為何實務上常偏好使用 Dice Coefficient(或 Dice Loss)而非二元交叉熵(BCE Loss)?

✅ 答對了!

❌ 答錯了!

💡 解析:當前景極小時,BCE 模型只要全部預測為背景就能得到很低的 Loss。Dice 專注於衡量預測區域與真實區域的交集重疊程度,能有效克服嚴重的背景不平衡。

Q11. 在自然語言處理(NLP)的管線中,比起傳統的 TF-IDF,使用如 BERT 等現代語言模型的優勢在於能產生「上下文相關(Contextualized)」的向量。在 Python 實作中,這真實意味著什麼?

✅ 答對了!

❌ 答錯了!

💡 解析:BERT 利用 Transformer 的自注意力機制,根據周圍的字詞動態計算編碼,這解決了一詞多義的問題;而 TF-IDF 或靜態 Word2Vec 對同一單字永遠給出固定的向量。

Q12. 在解讀影像辨識架構(如 VGG16)的 Keras model.summary() 時,對於記憶體和效能評估,下列關於卷積層(Conv2D)與全連接層(Dense)特性的敘述何者正確?

✅ 答對了!

❌ 答錯了!

💡 解析:CNN 架構的特性在於:卷積層利用權重共享進行密集的滑動視窗運算(高計算量/高記憶體圖形);而末端 Dense 層每個神經元皆須互連,導致參數暴增。這對硬體選型至關重要。

Q13. 使用 PyTorch 建立標準的深度學習訓練管線時,單一個 Step(批次資料)的正確執行順序為何?

✅ 答對了!

❌ 答錯了!

💡 解析:這是 PyTorch 標準且必須遵循的流程:y_pred = model(X) -> loss = criterion(...) -> optimizer.zero_grad() -> loss.backward() -> optimizer.step()。

Q14. 在探索式資料分析(EDA)中,當資料表含有多個數值變數時,我們常使用 Pandas 的 df.corr() 搭配 Seaborn 來快速診斷特徵間是否存在「共線性」。下列哪一種視覺化語法是實務上的最佳選擇?

✅ 答對了!

❌ 答錯了!

💡 解析:heatmap(熱力圖)能將相關係數矩陣用顏色深淺直觀地表現出來,加入 annot=True 更能直接在格子上顯示數值,是診斷多維度共線性的標準解法。

Q15. 在機器學習訓練中導入 CLR(Cyclical Learning Rates,循環學習率)策略,其背後最核心的優化(Optimization)考量是什麼?

✅ 答對了!

❌ 答錯了!

💡 解析:在複雜的損失地形中,模型很容易陷入平緩的鞍點或局部盲區。CLR 故意在訓練過程中規律地放大步伐,賦予模型動能去跨越這些障礙,尋找全局更好的解。

Q16. 在觀看 Scikit-learn 或 Keras 訓練過程的學習曲線(Learning Curve)時,若發現「訓練集 Loss 穩步下降接近 0」,但「驗證集(Validation)Loss 下降到一半後卻開始反轉向上飆升」。這典型代表模型發生了什麼事?

✅ 答對了!

❌ 答錯了!

💡 解析:這是最標準的過擬合特徵圖形。模型在訓練集上表現趨近完美(Low Bias),但在沒看過的驗證集上徹底失敗(High Variance)。

Q17. 在 Pandas 進行資料清理時,若我們希望保留盡可能多的資料,且「只有當 age 欄位與 income 欄位同時都遺漏(NaN)」時,才將該筆資料列(Row)刪除。下列哪一行語法最為正確?

✅ 答對了!

❌ 答錯了!

💡 解析:subset 指定要檢查的特定欄位,how='all' 嚴格規定必須「所有」指定的欄位都為空值,該列才會被剔除,完美符合情境需求。

Q18. 在 Scikit-learn 中建立一個包含標準化(StandardScaler)與支持向量機(SVC)的管線 Pipeline([('scaler', StandardScaler()), ('clf', SVC())])。若想使用 GridSearchCV 調整 SVC 的 C 超參數,字典(Dictionary)中的 key 應該如何正確撰寫?

✅ 答對了!

❌ 答錯了!

💡 解析:在 Pipeline 中針對特定步驟設定超參數,必須遵循「步驟名稱 + 雙底線 `__` + 參數名稱」的語法規則,以正確指引網格搜尋找對底層物件。

Q19. 在自然語言處理(NLP)中使用 TfidfVectorizer 將文章轉換為特徵矩陣,這個輸出的矩陣具有什麼典型的數學與矩陣特性?

✅ 答對了!

❌ 答錯了!

💡 解析:TF-IDF 矩陣的欄位是整個語料庫的所有詞彙。一篇文章只會包含其中極少數詞彙,因此矩陣中 99% 的數值都是 0,必須以稀疏矩陣格式儲存以節省記憶體。

Q20. 在梯度下降法中,加入「動量(Momentum)」機制的實務目的為何?這在 Python 實作中常透過設定 optim.SGD(..., momentum=0.9) 來達成。

✅ 答對了!

❌ 答錯了!

💡 解析:動量會記住上一步走的方向與速度。當方向一致時會加速前進;當遇到山谷兩壁反覆彈跳時,動量能抵消橫向震盪,集中力量往谷底前進。

沒有留言:

張貼留言

>