Chuyển tới nội dung chính

Bài tập TTNT: học máy

Luyện về các thuật toán học máy (Phần III). Tự làm trước, bí thì mở Gợi ý.

Bài 1: nhận diện dạng học

Cho ba bài toán: dự đoán giá nhà từ diện tích; nhóm khách hàng theo hành vi mua; dạy robot đi bằng thưởng/phạt. Mỗi bài thuộc dạng học nào?

Gợi ý

Giá nhà là số thực có nhãn nên là học có giám sát (hồi quy). Nhóm khách hàng không có nhãn nên là học không giám sát (phân cụm). Robot học qua thưởng/phạt là học tăng cường. Xem lại bài Tổng quan học máy.

Bài 2: Naive Bayes bằng tay

Trong tập huấn luyện, 60% email là thường, 40% là rác. Từ "khuyen-mai" xuất hiện trong 10% email thường và 50% email rác. Một email chứa "khuyen-mai", nghiêng về loại nào hơn?

Gợi ý

So sánh P(thuong) * P(tu | thuong) với P(rac) * P(tu | rac): 0.6 * 0.1 = 0.06 so với 0.4 * 0.5 = 0.20. Giá trị của rác lớn hơn nên email nghiêng về rác. Xem lại bài Phân loại Naive Bayes.

Bài 3: dấu hiệu quá khớp

Một mô hình đạt độ chính xác 99% trên tập huấn luyện nhưng chỉ 70% trên tập kiểm tra. Hiện tượng gì đang xảy ra, và làm sao giảm bớt?

Gợi ý

Đây là quá khớp: mô hình học thuộc dữ liệu huấn luyện nhưng không tổng quát hóa. Giảm bằng cách thêm dữ liệu, đơn giản hóa mô hình, hoặc điều chuẩn (regularization). Xem lại bài Tổng quan học máyHồi quy.

Bài 4: một bước gradient descent

Hồi quy có w = 2. Tại một điểm, đạo hàm của hàm mất mát theo wgradient = 4, bước học alpha = 0.1. Giá trị w mới sau một bước cập nhật là bao nhiêu?

Gợi ý

Quy tắc: w = w - alpha * gradient = 2 - 0.1 * 4 = 1.6. Gradient descent đi ngược hướng đạo hàm để giảm mất mát. Xem lại bài Hồi quy tuyến tính và gradient descent.

Bài 5: một vòng K-means

Có các điểm 1, 2, 9, 10 trên một trục số, hai tâm khởi tạo ở 0 và 8. Hãy gán điểm vào tâm gần nhất rồi cập nhật lại hai tâm.

Gợi ý

Gán: 1 và 2 gần tâm 0; 9 và 10 gần tâm 8. Cập nhật tâm bằng trung bình mỗi cụm: cụm trái thành (1+2)/2 = 1.5, cụm phải thành (9+10)/2 = 9.5. Xem lại bài Phân cụm K-means.

Bài 6: cập nhật Q-learning

Với Q[s,a] = 5, phần thưởng reward = 10, gamma = 0.9, giá trị lớn nhất ở trạng thái kế là max = 20, bước học alpha = 0.5. Tính Q[s,a] mới.

Gợi ý

Công thức: Q = Q + alpha * (reward + gamma*max - Q). Thay số: 5 + 0.5 * (10 + 0.9*20 - 5) = 5 + 0.5 * 23 = 16.5. Xem lại bài Học tăng cường.

Bài 7: tính entropy của một nút

Một nút trong cây quyết định chứa 8 mẫu: 4 mẫu lớp A và 4 mẫu lớp B. Tính entropy của nút này (đơn vị bit). So với một nút chỉ toàn lớp A thì entropy thay đổi thế nào?

Gợi ý

Với tỉ lệ 4/8 và 4/8, entropy = -0.5 * log2(0.5) - 0.5 * log2(0.5) = 0.5 + 0.5 = 1 bit, là mức bất định cao nhất khi có hai lớp. Nút toàn lớp A hoàn toàn thuần nên entropy = 0. Cây quyết định ưu tiên phép chia làm entropy giảm nhiều nhất. Xem lại bài Cây quyết định.

Bài 8: rò rỉ dữ liệu khi chuẩn hóa

Một bạn tính trung bình và độ lệch chuẩn trên toàn bộ dữ liệu để chuẩn hóa, rồi mới chia thành tập huấn luyện và tập kiểm tra. Cách làm này sai ở đâu?

Gợi ý

Tham số chuẩn hóa đã "nhìn thấy" cả tập kiểm tra, nên thông tin của tập kiểm tra rò rỉ vào quá trình huấn luyện, làm điểm đánh giá lạc quan giả. Cách đúng: tính trung bình và độ lệch chỉ trên tập huấn luyện, rồi áp đúng các tham số đó lên tập kiểm tra. Xem lại bài Tổng quan học máy.

Bài 9: một lần lai ghép trong giải thuật di truyền

Hai cá thể được mã hóa là 11000011. Thực hiện lai ghép một điểm sau bit thứ 2. Hai cá thể con thu được là gì?

Gợi ý

Cắt cả hai chuỗi sau bit thứ 2 rồi tráo phần đuôi: 11|0000|11 cho ra con 11110000. Sau lai ghép, đột biến có thể lật ngẫu nhiên vài bit để giữ đa dạng quần thể. Xem lại bài Giải thuật di truyền.

Bài 10: gradient descent trên một điểm dữ liệu

Mô hình dự đoán y_hat = w * x với w = 1, gặp một điểm x = 2 có nhãn thật y = 6. Hàm mất mát là bình phương sai số (y_hat - y)^2, bước học alpha = 0.01. Tính w mới sau một bước cập nhật.

Gợi ý

Dự đoán y_hat = 1 * 2 = 2, sai số y_hat - y = 2 - 6 = -4. Đạo hàm mất mát theo w2 * (y_hat - y) * x = 2 * (-4) * 2 = -16. Cập nhật w = w - alpha * gradient = 1 - 0.01 * (-16) = 1 + 0.16 = 1.16. Vì đang dự đoán thấp hơn nhãn nên w được kéo tăng lên. Xem lại bài Hồi quy tuyến tính và gradient descent.

Bài 11: một vòng K-means trong mặt phẳng

Bốn điểm hai chiều: (1,1), (2,1), (8,8), (9,9). Hai tâm khởi tạo ở (0,0)(10,10). Gán mỗi điểm vào tâm gần hơn rồi cập nhật hai tâm.

Gợi ý

Hai điểm (1,1), (2,1) gần tâm (0,0); hai điểm (8,8), (9,9) gần tâm (10,10). Tâm mới là trung bình từng cụm theo mỗi trục: cụm trái ((1+2)/2, (1+1)/2) = (1.5, 1), cụm phải ((8+9)/2, (8+9)/2) = (8.5, 8.5). Xem lại bài Phân cụm K-means.

Bài 12: độ lợi thông tin của một phép chia

Một nút cha có 8 mẫu, 4 lớp dương và 4 lớp âm. Một phép chia tạo hai nhánh, mỗi nhánh 4 mẫu: nhánh trái có 3 dương 1 âm, nhánh phải có 1 dương 3 âm. Tính độ lợi thông tin của phép chia này.

Gợi ý

Entropy nút cha (4/4) = 1 bit. Entropy nhánh (3,1) = -(3/4)*log2(3/4) - (1/4)*log2(1/4) = 0.75*0.415 + 0.25*2 = 0.311 + 0.5 = 0.811 bit; nhánh (1,3) đối xứng nên cũng 0.811. Entropy sau chia là trung bình có trọng số (4/8)*0.811 + (4/8)*0.811 = 0.811. Độ lợi = 1 - 0.811 = 0.189 bit. Chia làm giảm bất định nhưng chưa tách hẳn hai lớp. Xem lại bài Cây quyết định.

Bài 13: quá khớp hay dưới khớp

Ba mô hình cho các cặp sai số (huấn luyện, kiểm tra): mô hình A (2%, 3%); mô hình B (1%, 25%); mô hình C (30%, 32%). Phân loại mỗi mô hình là vừa khéo, quá khớp hay dưới khớp.

Gợi ý

Mô hình A sai số hai bên đều thấp và sát nhau nên vừa khéo. Mô hình B sai số huấn luyện rất thấp nhưng kiểm tra cao vọt, khoảng cách lớn, là quá khớp (học thuộc dữ liệu). Mô hình C sai số cao ở cả hai tập, mô hình quá đơn giản không nắm được quy luật, là dưới khớp. Xem lại bài Tổng quan học máyHồi quy.

Bài 14: một cập nhật Q-learning từ số không

Ban đầu Q[s,a] = 0. Tác tử nhận thưởng reward = 1, gamma = 0.9, giá trị lớn nhất ở trạng thái kế max = 10, bước học alpha = 0.5. Tính Q[s,a] mới.

Gợi ý

Công thức Q = Q + alpha * (reward + gamma*max - Q). Thay số: 0 + 0.5 * (1 + 0.9*10 - 0) = 0.5 * (1 + 9) = 0.5 * 10 = 5. Giá trị Q lần đầu được kéo lên nhờ phần thưởng cộng ước lượng tương lai. Xem lại bài Học tăng cường.

Câu hỏi tự kiểm

Kiểm tra nhanh0/4 đúngchưa trả lời
  1. 1Entropy của một nút có 4 mẫu lớp A và 4 mẫu lớp B (đơn vị bit) là bao nhiêu?
  2. 2Vì sao hàm mất mát MSE của hồi quy tuyến tính không làm gradient descent kẹt ở cực tiểu địa phương?
  3. 3K-means cho kết quả khác nhau giữa các lần chạy chủ yếu vì lý do gì?
  4. 4Giả định cốt lõi của phân loại Naive Bayes là gì?