Nền tảnggiáo trình tự học
Chương 1821 phút đọc

18Câu hỏi phỏng vấn#

18.1Cách trình bày câu trả lời#

Phần lớn câu hỏi phỏng vấn về học máy cơ bản có dạng "vì sao X" hoặc "X khác Y thế nào". Một câu trả lời tốt thường đi qua ba bước. Đầu tiên là vấn đề mà X giải quyết: X ra đời để xử lý tình huống nào. Tiếp theo là cơ chế: X hoạt động thế nào, tốt nhất bằng một công thức ngắn hoặc một con số cụ thể. Cuối cùng là giới hạn: X tốn kém ở đâu, và khi nào nó không còn đúng.

Với các chủ đề nền tảng, có thêm một bước giúp câu trả lời nổi bật: nêu mối liên hệ giữa X với một khái niệm khác. Chẳng hạn, trả lời về ridge mà chỉ ra được nó là ước lượng MAP với tiên nghiệm Gauss cho thấy người trả lời hiểu nguồn gốc của phương pháp chứ không chỉ nhớ công thức.

Các câu trả lời mẫu dưới đây dẫn số liệu từ các thí nghiệm của giáo trình. Khi phỏng vấn không cần nhớ chính xác từng con số; điều quan trọng là nắm được độ lớn và chiều của hiệu ứng.

18.2Hồi quy và tối ưu#

Câu hỏi: Vì sao hồi quy tuyến tính dùng bình phương sai số?

Trả lời

Vì bình phương sai số là âm log hợp lý khi nhiễu có phân phối Gauss (Mục 10.2), nên nghiệm bình phương tối thiểu chính là ước lượng hợp lý cực đại dưới giả thiết đó. Nếu nhiễu có đuôi dày hơn Gauss, ví dụ có nhiều điểm ngoại lai, thì giả thiết nhiễu Laplace hợp lý hơn và cho ra hồi quy trị tuyệt đối, phương pháp ít nhạy với điểm ngoại lai. Đổi giả thiết về nhiễu là đổi hàm mất mát.

Câu hỏi: Khi nào phương trình chuẩn không có nghiệm duy nhất, và xử lý thế nào?

Trả lời

Khi XX không đủ hạng cột: số đặc trưng lớn hơn số điểm dữ liệu, hoặc có đặc trưng là tổ hợp tuyến tính của các đặc trưng khác. Ví dụ điển hình là mã hoá one-hot đủ KK giá trị trong khi vẫn giữ cột hằng số. Khi đó có vô số nghiệm cho cùng một dự đoán. Giả nghịch đảo chọn nghiệm có chuẩn nhỏ nhất, trùng với giới hạn của ridge khi λ→0+\lambda \to 0^+. Trên thực tế thường bỏ cột thừa hoặc dùng ridge.

Câu hỏi: Đa cộng tuyến gây hại thế nào?

Trả lời

Nó làm hệ số dao động mạnh nhưng hầu như không ảnh hưởng tới dự đoán. Trong thí nghiệm ở Mục 4.4, khi tương quan giữa hai đặc trưng tăng từ 0 lên 0,999, độ lệch chuẩn của hệ số tăng khoảng 25 lần, trong khi độ lệch chuẩn của dự đoán gần như không đổi. Mức tăng khớp với lý thuyết VIF=1/1−ρ2≈22\sqrt{\text{VIF}} = 1/\sqrt{1-\rho^2} \approx 22. Vì vậy đa cộng tuyến là vấn đề của việc diễn giải hệ số, không phải của dự đoán.

Câu hỏi: Tốc độ hội tụ của gradient descent phụ thuộc vào gì?

Trả lời

Vào số điều kiện κ\kappa của hàm mất mát, không phụ thuộc vào số chiều. Với hàm bậc hai, số vòng lặp tỉ lệ với κlog⁡(1/ε)\kappa\log(1/\varepsilon). Mục 5.3 đo được khi κ\kappa tăng từ 1 lên 10 000, số vòng lặp tăng từ 1 lên 92 104; thêm momentum giảm bậc xuống κ\sqrt\kappa, chỉ còn 1 297 vòng. Hệ quả thực tế: chuẩn hoá đặc trưng về cùng thang đo là cách rẻ nhất để giảm κ\kappa và tăng tốc huấn luyện.

Câu hỏi: Kiểm tra gradient bằng cách nào?

Trả lời

So sánh với sai phân trung tâm, dùng ε\varepsilon khoảng 10−510^{-5} tới 10−610^{-6} và đánh giá bằng sai số tương đối. Điểm hay bị hiểu sai là ε\varepsilon không phải càng nhỏ càng tốt: sai số cắt cụt tỉ lệ ε2\varepsilon^2 nhưng sai số làm tròn tỉ lệ u/εu/\varepsilon, nên điểm tối ưu là ε∗∼u1/3≈6×10−6\varepsilon^* \sim u^{1/3} \approx 6\times10^{-6}. Thí nghiệm ở Mục 5.5 đo được 5,6×10−65{,}6\times10^{-6}, và ε=10−13\varepsilon = 10^{-13} cho sai số lớn hơn khoảng 5×1075 \times 10^7 lần.

18.3Phân loại#

Câu hỏi: Perceptron, hồi quy logistic và SVM khác nhau ở đâu?

Trả lời

Chúng giống nhau ở mô hình (hàm tuyến tính w⊤x+bw^\top x + b) và thường tối ưu bằng các biến thể của gradient descent. Chúng khác nhau ở hàm mất mát, viết theo lề m=y(w⊤x+b)m = y(w^\top x + b):

Hàm mất mát Hệ quả
Perceptron max⁡(0,−m)\max(0,-m) bằng 0 khi m≥0m \ge 0: dừng ngay khi vừa phân loại đúng, không hội tụ khi dữ liệu không tách được
SVM max⁡(0,1−m)\max(0,1-m) bằng 0 khi m≥1m \ge 1: sinh ra khái niệm lề
Hồi quy logistic log⁡(1+e−m)\log(1+e^{-m}) trơn và luôn dương: cho ra xác suất

Mất mát 0–1 không dùng trực tiếp được vì đạo hàm của nó bằng 0 hầu khắp nơi. Hinge và logistic (theo logarit cơ số 2) là chặn trên lồi của mất mát 0–1; mất mát perceptron chỉ là hàm thay thế lồi, không phải chặn trên.

Câu hỏi: Hồi quy logistic và hồi quy softmax liên hệ thế nào?

Trả lời

Hồi quy softmax với hai lớp chính là hồi quy logistic, với w=w1−w0w = w_1 - w_0. Softmax có KK vector trọng số nhưng chỉ hiệu giữa chúng được dữ liệu xác định, vì cộng cùng một vector vào tất cả không đổi xác suất. Thí nghiệm ở Mục 6.4 khớp cả hai mô hình trên cùng dữ liệu và cho trọng số lệch nhau 1,6×10−151{,}6\times10^{-15}, tức trùng nhau tới sai số làm tròn.

Câu hỏi: Vì sao hồi quy logistic thường cần regularization?

Trả lời

Khi dữ liệu tách được hoàn toàn, hàm mất mát giảm mãi khi nhân ww với số ngày càng lớn, nên không có nghiệm hữu hạn và ∥w∥→∞\|w\| \to \infty. Mục 6.5 đo được: không có regularization, ∥w∥\|w\| tăng từ 10,2 lên 34,8 khi số vòng lặp tăng từ 500 lên 50 000 mà không dừng; với λ=0,01\lambda = 0{,}01, ∥w∥\|w\| đứng yên ở 3,993. Vì vậy LogisticRegression của scikit-learn mặc định có regularization ℓ2\ell_2. Hệ số lớn bất thường cũng là dấu hiệu nên kiểm tra rò rỉ dữ liệu.

Câu hỏi: Naive Bayes, LDA và QDA khác nhau thế nào?

Trả lời

Với đặc trưng liên tục và mô hình Gauss cho mỗi lớp, cả ba là cùng một bộ phân loại sinh, chỉ khác ràng buộc trên ma trận hiệp phương sai: Naive Bayes Gauss dùng ma trận đường chéo riêng cho từng lớp, LDA dùng một ma trận đầy đủ chung cho mọi lớp, QDA dùng ma trận đầy đủ riêng cho từng lớp. LDA có biên tuyến tính vì khi hai lớp dùng chung Σ\Sigma, số hạng bậc hai x⊤Σ−1xx^\top\Sigma^{-1}x triệt tiêu khi lấy hiệu hai hàm phân biệt; thí nghiệm ở Mục 7.4 khớp hàm quyết định của LDA bằng hàm tuyến tính với sai số 4,4×10−154{,}4\times10^{-15}. QDA linh hoạt hơn nhưng phải ước lượng KK ma trận hiệp phương sai, nên cần nhiều dữ liệu hơn.

Câu hỏi: Vì sao Naive Bayes vẫn phân loại tốt dù giả thiết độc lập gần như luôn sai?

Trả lời

Vì để chọn đúng nhãn chỉ cần thứ tự của các xác suất hậu nghiệm đúng, không cần giá trị của chúng đúng. Các xác suất do Naive Bayes đưa ra thường bị đẩy về gần 0 hoặc 1 quá mức, vì các bằng chứng tương quan bị đếm lặp lại, nên không nên dùng chúng như xác suất đã hiệu chuẩn.

18.4Đánh giá mô hình#

Câu hỏi: Vì sao không nên dùng độ chính xác trên dữ liệu mất cân bằng?

Trả lời

Vì một bộ phân loại vô dụng có thể đạt độ chính xác rất cao. Trong thí nghiệm ở Mục 8.1 với 0,98% lớp dương, bộ phân loại luôn đoán lớp âm đạt độ chính xác 0,9902, cao hơn một bộ phân loại phát hiện được hơn nửa số ca dương (F1=0,51F_1 = 0{,}51, độ chính xác 0,9900). Nên dùng precision, recall, F1F_1 hoặc PR-AUC.

Câu hỏi: Khi nào dùng ROC-AUC, khi nào dùng PR-AUC?

Trả lời

Trên cùng mô hình và dữ liệu mất cân bằng ở Mục 8.3, ROC-AUC bằng 0,9715 nhưng PR-AUC chỉ bằng 0,4931. Lý do nằm ở mẫu số: FPR chia cho toàn bộ lớp âm, lớp chiếm 99% dữ liệu, nên hàng trăm dương giả hầu như không làm FPR thay đổi; precision chia cho số điểm được báo dương, nên nhạy với dương giả. Mốc so sánh cũng khác: ROC-AUC của bộ đoán ngẫu nhiên luôn là 0,5, còn PR-AUC của nó bằng tỉ lệ lớp dương, ở đây 0,01. Khi lớp dương hiếm và chất lượng của các cảnh báo là điều quan trọng, dùng PR-AUC.

Câu hỏi: Precision và recall đánh đổi nhau thế nào?

Trả lời

Qua ngưỡng quyết định. Ở Mục 8.1, hạ ngưỡng từ 2,6 xuống −1,0 làm recall tăng từ 0,52 lên 1,00 và precision giảm từ 0,49 xuống 0,012. Chọn ngưỡng là quyết định dựa trên chi phí của từng loại lỗi, không có ngưỡng đúng về mặt kỹ thuật. Khi một loại lỗi đắt hơn, có thể dùng FβF_\beta để phản ánh điều đó.

18.5Regularization và xác suất#

Câu hỏi: Ridge và lasso khác nhau thế nào?

Trả lời

Ridge phạt ∥w∥22\|w\|_2^2, lasso phạt ∥w∥1\|w\|_1. Lasso cho nhiều hệ số bằng đúng 0, ridge thì không. Trong trường hợp các cột trực chuẩn, ridge nhân mỗi hệ số với 1/(1+λ)1/(1+\lambda), còn lasso trừ mỗi hệ số một lượng λ\lambda và cắt về 0 những hệ số nhỏ hơn (ngưỡng mềm). Nguyên nhân là ∣w∣|w| không khả vi tại 0 và dưới vi phân tại đó là cả đoạn [−1,1][-1, 1]. Mục 9.4 đo được: ở λ=100\lambda = 100, lasso đưa đúng 9 trong 12 hệ số về 0, trùng với 9 hệ số bằng 0 của mô hình thật, còn ridge không đưa hệ số nào về 0.

Câu hỏi: Ridge có co mọi hệ số như nhau không?

Trả lời

Không. Viết qua SVD, ridge nhân thành phần theo hướng riêng thứ ii với di2/(di2+λ)d_i^2/(d_i^2+\lambda). Ở Mục 9.3 với λ=10\lambda = 10, hướng có giá trị suy biến 12,27 giữ lại 0,938, hướng có giá trị suy biến 6,17 chỉ giữ lại 0,792. Ridge co mạnh nhất những hướng dữ liệu cung cấp ít thông tin, cũng là những hướng mà ước lượng bình phương tối thiểu có phương sai lớn nhất. Nhờ vậy ridge xử lý được đa cộng tuyến.

Câu hỏi: Regularization có nguồn gốc từ đâu?

Trả lời

Từ phân phối tiên nghiệm. Ước lượng MAP cực tiểu −log⁡p(D∣θ)−log⁡p(θ)-\log p(\mathcal{D}\mid\theta) - \log p(\theta): số hạng thứ nhất là hàm mất mát, số hạng thứ hai là regularization. Tiên nghiệm Gauss cho ridge với λ=σ2/τ2\lambda = \sigma^2/\tau^2, tiên nghiệm Laplace cho lasso, tiên nghiệm Dirichlet cho làm trơn Laplace. Mục 10.4 kiểm chứng: nghiệm ridge dạng đóng và nghiệm MAP tìm bằng BFGS lệch nhau 2×10−82\times10^{-8}. Cần nói thêm rằng MAP chỉ lấy đỉnh của hậu nghiệm, không cho biết mức độ không chắc chắn như suy luận Bayes đầy đủ.

18.6Tối ưu lồi và SVM#

Câu hỏi: Vì sao tính lồi quan trọng?

Trả lời

Với hàm lồi, mọi điểm có gradient bằng 0 là cực tiểu toàn cục, nên kết quả không phụ thuộc điểm khởi tạo. Ở Mục 11.6, gradient descent chạy từ 21 điểm xuất phát cho một điểm dừng duy nhất với hàm lồi, nhưng cho hai điểm dừng với giá trị −2,87-2{,}87 và −1,65-1{,}65 với hàm không lồi x4−3x2+x/2x^4 - 3x^2 + x/2. Hàm mất mát của mạng nơ-ron không lồi, nên khởi tạo, chuẩn hoá và kết nối tắt trở nên quan trọng khi huấn luyện mạng sâu.

Câu hỏi: Vì sao SVM được giải qua bài toán đối ngẫu?

Trả lời

Lý do quan trọng nhất là bài toán đối ngẫu chỉ phụ thuộc vào dữ liệu qua tích vô hướng xi⊤xjx_i^\top x_j, nên thay tích vô hướng bằng một kernel là SVM làm việc được trong không gian đặc trưng phi tuyến mà không cần dựng không gian đó. Ngoài ra bài toán đối ngẫu có nn biến thay vì dd biến, có lợi khi dd lớn hơn nn, và giá trị đối ngẫu cho chặn dưới để biết nghiệm hiện tại còn cách tối ưu bao xa.

Câu hỏi: Vector hỗ trợ là gì, và vì sao chỉ chúng ảnh hưởng tới nghiệm?

Trả lời

Là những điểm có nhân tử Lagrange αi>0\alpha_i > 0. Theo điều kiện bù của KKT, αi>0\alpha_i > 0 chỉ xảy ra khi ràng buộc của điểm đó chặt, tức điểm nằm đúng trên lề (với SVM lề cứng). Mọi điểm nằm ngoài lề có αi=0\alpha_i = 0 và không đóng góp vào w=∑iαiyixiw = \sum_i \alpha_i y_i x_i. Đây là hệ quả của KKT, không phải lựa chọn thiết kế. Thí nghiệm ở Mục 13.3 có 3 vector hỗ trợ trên 120 điểm; bỏ 117 điểm còn lại, nghiệm không đổi.

Câu hỏi: Tham số CC trong SVM lề mềm có vai trò gì?

Trả lời

CC cân bằng giữa lề rộng và mức phạt cho các điểm vi phạm lề; nó đóng vai trò nghịch đảo của hệ số regularization, vì SVM lề mềm tương đương với mất mát hinge cộng 12∥w∥2\tfrac{1}{2}\|w\|^2. KKT chia các điểm thành ba nhóm: α=0\alpha = 0 (ngoài lề), 0<α<C0 < \alpha < C (trên lề), α=C\alpha = C (vi phạm lề). Ở Mục 13.4, C=0,003C = 0{,}003 cho lề rộng 5,61 và cả 114 vector hỗ trợ đều vi phạm lề; C=300C = 300 cho lề 1,73 với 45 vector hỗ trợ. Với kernel tuyến tính trên dữ liệu có biên tối ưu tuyến tính, CC ảnh hưởng ít tới sai số kiểm tra; với kernel phi tuyến, CC quan trọng hơn nhiều.

Câu hỏi: Thủ thuật kernel là gì?

Trả lời

Là tính tích vô hướng trong không gian đặc trưng, K(x,x′)=φ(x)⊤φ(x′)K(x,x') = \varphi(x)^\top\varphi(x'), mà không cần tính φ(x)\varphi(x). Kernel RBF tương ứng với một không gian đặc trưng vô hạn chiều, nhưng mỗi lần tính chỉ tốn O(d)O(d). Trên dữ liệu hai đường tròn đồng tâm (Mục 13.5), kernel tuyến tính đạt độ chính xác 0,615, còn kernel đa thức bậc 2 và RBF đều đạt 1,000; kernel bậc 2 đạt tuyệt đối vì không gian đặc trưng của nó chứa x12+x22x_1^2 + x_2^2.

Câu hỏi: Vì sao SVM với kernel ít được dùng cho dữ liệu rất lớn?

Trả lời

Vì chi phí, không phải vì độ chính xác. Huấn luyện cần làm việc với ma trận kernel n×nn\times n, chi phí khoảng O(n2)O(n^2) tới O(n3)O(n^3); khi dự đoán phải tính kernel với mọi vector hỗ trợ, mà số vector hỗ trợ thường tăng theo nn. Mỗi epoch của SGD trên mạng nơ-ron chỉ tốn chi phí tuyến tính theo nn.

18.7Học không giám sát#

Câu hỏi: PCA làm gì, và khi nào nó không phù hợp?

Trả lời

PCA tìm các hướng trực giao có phương sai lớn nhất, là các vector riêng của ma trận hiệp phương sai. Sai số tái tạo khi giữ kk thành phần bằng đúng tổng các trị riêng bị bỏ nhân (n−1)(n-1) (định lý Eckart–Young; Mục 14.3 kiểm chứng tới 10−1210^{-12}). PCA không dùng nhãn, nên hướng có phương sai lớn có thể vô dụng cho phân loại: ở Mục 14.4, thành phần chính thứ nhất giữ 96,1% phương sai nhưng cho AUC 0,502, trong khi hướng của LDA cho AUC 0,9987.

Câu hỏi: PCA và LDA khác nhau thế nào?

Trả lời

PCA cực đại phương sai toàn phần và không dùng nhãn. LDA cực đại tỉ số giữa tán xạ giữa các lớp và tán xạ trong lớp, và có dùng nhãn. LDA cho tối đa K−1K - 1 chiều vì ma trận tán xạ giữa các lớp có hạng không quá K−1K - 1. Hướng của LDA, SW−1(μ1−μ0)S_W^{-1}(\mu_1 - \mu_0), trùng với vector trọng số của bộ phân loại Gauss dùng chung ma trận hiệp phương sai ở Mục 7.4.

Câu hỏi: K-means bảo đảm được điều gì?

Trả lời

Chỉ bảo đảm dừng ở một cực tiểu địa phương, vì bài toán tìm nghiệm tối ưu là NP-khó và hàm mục tiêu không lồi. Ở Mục 15.2, trên dữ liệu 8 cụm, khởi tạo ngẫu nhiên cho nghiệm tồi trong 71,5% số lần chạy, k-means++ giảm xuống 46,5%. Vì vậy cần chạy nhiều lần; lưu ý scikit-learn từ phiên bản 1.4 mặc định chỉ chạy một lần với k-means++. K-means còn giả định cụm lồi, gần tròn, kích thước tương đương và các chiều cùng thang đo: trên hai dải dẹt song song nó chỉ đạt độ chính xác 0,53.

Câu hỏi: Chọn số cụm kk thế nào?

Trả lời

Không chọn bằng cách cực tiểu inertia, vì inertia luôn giảm theo kk và bằng 0 khi k=nk = n. Phương pháp elbow tìm chỗ inertia ngừng giảm nhanh: ở Mục 15.4, mức giảm là 27,7% khi lên k=8k = 8 rồi chỉ còn 5,4% khi lên k=9k = 9. Elbow không có định nghĩa chặt và thường không rõ trên dữ liệu thật; có thể dùng hệ số silhouette hoặc gap statistic, và trong nhiều trường hợp kk do yêu cầu nghiệp vụ quyết định.

Câu hỏi: Phân rã ma trận cần bao nhiêu dữ liệu?

Trả lời

Cần số đánh giá mỗi người dùng lớn hơn hạng kk nhiều lần. Trong thí nghiệm ở Mục 16.3 với hạng thật k=4k = 4, ở 10,1 đánh giá mỗi người RMSE là 3,54, tệ hơn cả đoán mọi ô bằng 0 (2,08); ở 19,8 đánh giá mỗi người RMSE giảm xuống 0,30. Mỗi người dùng có kk ẩn số, và vì đánh giá có nhiễu còn các vector sản phẩm cũng đang được ước lượng, số đánh giá cần thiết lớn hơn kk nhiều lần.

Câu hỏi: Vì sao khởi đầu lạnh là vấn đề nghiêm trọng?

Trả lời

Với người dùng chưa có đánh giá nào, hàm mất mát chỉ còn thành phần regularization λ∥pu∥2\lambda\|p_u\|^2, có cực tiểu tại pu=0p_u = 0, nên mô hình dự đoán gần 0 cho mọi sản phẩm. Ở Mục 16.5, RMSE cho người dùng mới là 2,24, tệ hơn đoán bằng 0 (2,08). Vì vậy hệ thống thực tế cần kết hợp lọc dựa trên nội dung với lọc cộng tác.

18.8Các câu trả lời chưa đạt#

Câu trả lời Vì sao chưa đạt
"Bình phương sai số vì nó phạt sai số lớn nặng hơn." Đúng nhưng chưa đủ: chưa nêu được bình phương sai số là MLE dưới giả thiết nhiễu Gauss.
"Đa cộng tuyến làm mô hình dự đoán kém." Sai: nó làm hệ số dao động, còn dự đoán gần như không đổi.
"Gradient descent chậm vì bài toán có nhiều chiều." Sai: tốc độ phụ thuộc số điều kiện, không phụ thuộc số chiều.
"Kiểm tra gradient thì ε\varepsilon càng nhỏ càng tốt." Sai: ε\varepsilon quá nhỏ làm sai số làm tròn lớn lên; điểm tối ưu cỡ u1/3u^{1/3}.
"Mô hình đạt độ chính xác 99% nên rất tốt." Trên dữ liệu có 1% lớp dương, bộ phân loại luôn đoán lớp âm cũng đạt 99%.
"ROC-AUC 0,97 nghĩa là mô hình rất tốt." Trên dữ liệu mất cân bằng, cùng mô hình đó có thể có PR-AUC chỉ 0,49.
"Ridge và lasso về cơ bản giống nhau." Lasso cho hệ số bằng đúng 0, ridge thì không; đây là khác biệt về bản chất.
"Regularization chỉ là một mẹo để chống overfitting." Chưa đủ: regularization tương ứng với một phân phối tiên nghiệm (ridge là MAP với tiên nghiệm Gauss).
"SVM tốt vì tìm được biên tối ưu." Chưa rõ tối ưu theo nghĩa nào: cần nói là lề lớn nhất, và vì sao lề lớn giúp tổng quát hoá.
"Kernel RBF ánh xạ dữ liệu lên không gian nhiều chiều rồi phân loại ở đó." Thiếu ý chính: phép ánh xạ đó không bao giờ được tính tường minh.
"PCA giữ 95% phương sai nên gần như không mất thông tin." Phương sai lớn không có nghĩa là hữu ích: có trường hợp giữ 96,1% phương sai mà AUC chỉ 0,502.
"K-means tìm được cụm tối ưu." Bài toán NP-khó; thuật toán chỉ cho cực tiểu địa phương, kể cả khi dùng k-means++.
"Naive Bayes giả định các đặc trưng độc lập." Thiếu điều kiện quan trọng: độc lập có điều kiện khi đã biết lớp.
"Chọn kk cho K-means bằng cách cực tiểu inertia." Inertia luôn giảm theo kk và bằng 0 khi k=nk = n.