Học sâu ứng dụng University

Chủ đề 4 - Tổng quan về huấn luyện mạng nơ-ron đa tầng

50 questions
90 min
Answer key

Exam info

Subject
Học sâu ứng dụng
Exam type
University
Questions
50
Duration
90 min
Answers
✓ With explanations

Questions (50)

  1. Q 1.

    Cho logits và nhãn thật . Giá trị xác suất softmax ứng với lớp 0 xấp xỉ bao nhiêu?

    • A.

      0.114

    • B.

      0.042

    • C.

      0.844

    • D.

      0.500

  2. Q 2.

    Mô hình vừa khởi tạo huấn luyện bài toán phân loại 10 lớp với cross-entropy. Loss ở những lô đầu tiên nên xấp xỉ bao nhiêu, giả sử mọi thứ đúng?

    • A.

      0.693

    • B.

      2.303

    • C.

      9.7

    • D.

      0.1

  3. Q 3.

    Tại sao không thể thay softmax bằng cách áp sigmoid riêng lẻ cho từng nơ-ron đầu ra trong bài toán nhiều lớp?

    • A.

      Vì sigmoid không khả vi ở z = 0.

    • B.

      Vì đầu ra có thể âm, không phù hợp với xác suất.

    • C.

      Vì tổng các đầu ra sigmoid có thể khác 1, không còn là phân phối xác suất.

    • D.

      Vì sigmoid tốn nhiều bộ nhớ hơn softmax.

  4. Q 4.

    Gradient của cross-entropy theo logits có dạng nào?

    • A.

    • B.

    • C.

    • D.

  5. Q 5.

    Tính chất nào sau đây KHÔNG phải của hàm softmax?

    • A.

      Luôn là phân phối xác suất vì mỗi thành phần trong (0, 1) và tổng bằng 1.

    • B.

      Giữ nguyên thứ tự giữa logits và xác suất.

    • C.

      Phụ thuộc vào giá trị tuyệt đối của các logits, không chỉ phụ thuộc chênh lệch.

    • D.

      Với K = 2, .

  6. Q 6.

    Đường biên quyết định giữa hai lớp và của hồi quy softmax trong không gian đặc trưng có dạng gì?

    • A.

      Một đường cong bậc hai.

    • B.

      Một siêu phẳng (phương trình tuyến tính theo x).

    • C.

      Một đường tròn tùy thuộc vào trọng số.

    • D.

      Không xác định được, phụ thuộc dữ liệu.

  7. Q 7.

    Tại sao mô hình tuyến tính không giải được bài toán XOR?

    • A.

      Vì XOR có quá nhiều mẫu, gây tràn bộ nhớ.

    • B.

      Vì hai lớp nằm ở hai cặp góc đối diện, không tách được bằng đường thẳng.

    • C.

      Vì XOR cần hàm mất mát khác cross-entropy.

    • D.

      Vì XOR đòi hỏi tối ưu không lồi.

  8. Q 8.

    Một MLP gồm ba tầng nn.Linear liên tiếp nhưng KHÔNG có hàm kích hoạt giữa chúng, học được nhiều hơn một nn.Linear duy nhất không?

    • A.

      Có, vì nhiều tầng hơn nên khả năng biểu diễn tăng.

    • B.

      Có, nhưng chỉ khi số nơ-ron ở các tầng lớn.

    • C.

      Không, vì hợp các phép biến đổi tuyến tính vẫn là tuyến tính.

    • D.

      Không, nhưng cần nhiều epoch hơn để bù đắp.

  9. Q 9.

    Đạo hàm của hàm sigmoid có giá trị lớn nhất là bao nhiêu?

    • A.

      1.0

    • B.

      0.5

    • C.

      0.25

    • D.

      0.1

  10. Q 10.

    MLP cho MNIST có kiến trúc . Tổng số tham số (bao gồm bias) là bao nhiêu?

    • A.

      40 785

    • B.

      39 250

    • C.

      7 850

    • D.

      43 825

  11. Q 11.

    Tại sao phải khởi tạo trọng số ngẫu nhiên cho MLP thay vì khởi tạo cùng một hằng số?

    • A.

      Vì PyTorch không cho phép khởi tạo hằng số.

    • B.

      Vì khởi tạo hằng số làm mọi nơ-ron ẩn giống hệt nhau, không phá được đối xứng.

    • C.

      Vì SGD không hoạt động với hằng số.

    • D.

      Vì cần khởi tạo âm để ReLU hoạt động.

  12. Q 12.

    Hiện tượng "ReLU chết" xảy ra khi nào?

    • A.

      Khi learning rate quá nhỏ.

    • B.

      Khi một nơ-ron có z < 0 với mọi mẫu, gradient qua nó bằng 0 và không bao giờ cập nhật.

    • C.

      Khi loss bằng 0.

    • D.

      Khi số tầng ẩn quá ít.

  13. Q 13.

    Hàm torch.flatten(x, start_dim=1) áp dụng cho tensor [B, 1, 28, 28] cho ra kích thước nào?

    • A.

      [B]

    • B.

      [B, 1, 784]

    • C.

      [784]

    • D.

      [B, 784]

  14. Q 14.

    So với hồi quy logistic ở Chủ đề 3, mô hình MLP phân loại K lớp thay đổi điểm nào trong forward()?

    • A.

      Tăng số nơ-ron đầu ra lên K, bỏ sigmoid, trả về logits.

    • B.

      Bỏ tầng tuyến tính đầu ra.

    • C.

      Áp ReLU ở tầng đầu ra.

    • D.

      Trả về xác suất sau softmax.

  15. Q 15.

    Dataset huấn luyện 55 000 ảnh, batch_size = 64, mỗi epoch có bao nhiêu lần cập nhật (iteration)?

    • A.

      55 000

    • B.

      859

    • C.

      860

    • D.

      8 800

  16. Q 16.

    Đánh giá độ chính xác trên tập kiểm tra nên thực hiện trong ngữ cảnh nào để PyTorch không ghi đồ thị tính toán?

    • A.

      Trong with torch.no_grad():

    • B.

      Trong with torch.enable_grad():

    • C.

      Không cần ngữ cảnh đặc biệt.

    • D.

      Trong model.train()

  17. Q 17.

    Trên tập kiểm tra MNIST, lớp phổ biến nhất xuất hiện 1 135/10 000 ảnh. Mốc zero-rule là bao nhiêu phần trăm?

    • A.

      50.00%

    • B.

      11.35%

    • C.

      92.00%

    • D.

      1.135%

  18. Q 18.

    Khi gọi F.cross_entropy(probas, y) nhưng probas đã được tính qua softmax rồi (forward trả về xác suất), điều gì xảy ra?

    • A.

      Chương trình báo lỗi và dừng.

    • B.

      Softmax bị áp hai lần, loss tính sai, gradient sai, mô hình học rất chậm.

    • C.

      Cho kết quả y hệt như khi dùng logits.

    • D.

      Loss trở thành số âm.

  19. Q 19.

    Dataset và DataLoader phân chia công việc thế nào trong PyTorch?

    • A.

      Dataset chọn chỉ số, DataLoader trả về mẫu.

    • B.

      Dataset trả lời "mẫu thứ i là gì?" qua getitem, DataLoader trả lời "lô tiếp theo là gì?" qua gom lô và xáo trộn.

    • C.

      Cả hai cùng làm một việc.

    • D.

      Dataset chỉ dùng cho ảnh, DataLoader chỉ dùng cho bảng.

  20. Q 20.

    Dataset nạp "lười" (lazy) so với nạp toàn bộ (eager) có ưu điểm nào?

    • A.

      Tốc độ đọc mẫu nhanh hơn.

    • B.

      RAM chỉ chứa vài lô thay vì toàn bộ tập dữ liệu.

    • C.

      Không cần DataLoader.

    • D.

      Không cần file CSV đi kèm ảnh.

  21. Q 21.

    Trong ImageFileDataset.__getitem__, tại sao cần gọi transform(img) chứa ToTensor()?

    • A.

      Vì không có transform thì PIL Image không chứa thông tin ảnh.

    • B.

      Vì DataLoader ghép các mẫu thành tensor lô, cần getitem trả về tensor.

    • C.

      Vì PyTorch yêu cầu tất cả ảnh phải ở dạng float32.

    • D.

      Vì normalize chỉ chạy được trên tensor.

  22. Q 22.

    Vì sao phải xáo trộn train.csv (đang sắp xếp theo nhãn) trước khi tách thành tập huấn luyện và tập kiểm định?

    • A.

      Vì SGD đòi hỏi dữ liệu ngẫu nhiên để hội tụ.

    • B.

      Vì nếu không xáo trộn, cắt 10% cuối cho tập kiểm định có thể chỉ chứa vài lớp cuối.

    • C.

      Vì DataLoader yêu cầu tệp CSV phải xáo trộn.

    • D.

      Vì PyTorch không hiểu tệp CSV sắp theo nhãn.

  23. Q 23.

    Tập huấn luyện dùng RandomCrop((28, 28)) sau Resize(32), còn tập kiểm định dùng CenterCrop((28, 28)). Sự khác biệt này nhằm mục đích gì?

    • A.

      Tăng tốc độ huấn luyện và đánh giá.

    • B.

      Tập huấn luyện dùng tăng cường dữ liệu để mô hình bớt phụ thuộc vị trí, tập đánh giá cần thao tác xác định để kết quả lặp lại được.

    • C.

      RandomCrop tiết kiệm bộ nhớ hơn CenterCrop.

    • D.

      CenterCrop chỉ chạy trên GPU.

  24. Q 24.

    Trong PyTorch, đoạn nào để đo thời gian trên GPU cho kết quả chính xác?

    • A.

      Gọi torch.cuda.synchronize() trước khi đọc đồng hồ.

    • B.

      Chỉ dùng time.time() quanh phép tính GPU.

    • C.

      Đặt torch.manual_seed(0) trước khi đo.

    • D.

      Dùng torch.no_grad() khi đo thời gian.

  25. Q 25.

    Trong MLP hồi quy, tầng đầu ra là 1 nơ-ron KHÔNG có hàm kích hoạt. Lý do là gì?

    • A.

      Vì MSE không tương thích với hàm kích hoạt.

    • B.

      Vì sigmoid giới hạn (0, 1) và ReLU giới hạn [0, ∞), không phù hợp khi mục tiêu chuẩn hóa có giá trị âm hoặc lớn hơn 1.

    • C.

      Vì PyTorch không hỗ trợ hàm kích hoạt ở tầng đầu ra.

    • D.

      Vì hàm kích hoạt ở đầu ra sẽ làm gradient bùng nổ.

  26. Q 26.

    Khi huấn luyện MLP hồi quy, mục tiêu cỡ hàng trăm mà không chuẩn hóa. Điều gì xảy ra?

    • A.

      MSE và gradient rất lớn, huấn luyện kém ổn định.

    • B.

      Mô hình không thể học được bất kỳ điều gì.

    • C.

      PyTorch báo lỗi kích thước.

    • D.

      MSE trở thành MAE.

  27. Q 27.

    Sau khi huấn luyện hồi quy trong thang đã chuẩn hóa, dự đoán của mô hình là 0.5. Với , giá trị thật tương ứng là bao nhiêu?

    • A.

      0.5

    • B.

      318.94

    • C.

      349.60

    • D.

      61.33

  28. Q 28.

    Trong MLP hồi quy, quên .flatten() ở đầu ra thì F.mse_loss(predictions, targets) chạy ra sao?

    • A.

      Báo lỗi kích thước và dừng chương trình.

    • B.

      Broadcast thành ma trận [B, B], loss sai, gradient sai, mô hình học sai.

    • C.

      Tự động flatten để sửa lỗi.

    • D.

      Loss luôn bằng 0.

  29. Q 29.

    Trong mạng dùng để phân loại K lớp với K ≥ 2 theo quy ước của học phần, forward() nên trả về gì?

    • A.

      Xác suất sau softmax.

    • B.

      Logits thô, softmax để F.cross_entropy xử lý.

    • C.

      Nhãn dự đoán (argmax).

    • D.

      Một số vô hướng.

  30. Q 30.

    Để tránh tràn số khi tính softmax với logits lớn (ví dụ [1000, 1001, 1002]), thủ thuật nào được dùng trong PyTorch?

    • A.

      Chia logits cho 10 trước khi tính.

    • B.

      Trừ mỗi logit cho trước khi lấy mũ (log-sum-exp).

    • C.

      Cộng thêm một hằng số rất lớn.

    • D.

      Đổi sang float16 trước khi tính.

  31. Q 31.

    Trong PyTorch, hàm nào nhận trực tiếp logits và chỉ số lớp int64 mà không cần softmax riêng?

    • A.

      F.binary_cross_entropy

    • B.

      F.cross_entropy

    • C.

      F.mse_loss

    • D.

      F.nll_loss

  32. Q 32.

    MLP có hai tầng ẩn 25 và 15 nơ-ron (như trong Bài Lab cho XOR), không tính tầng đầu ra. Tổng tham số tầng ẩn (bao gồm bias) là bao nhiêu?

    • A.

      400

    • B.

      450

    • C.

      490

    • D.

      497

  33. Q 33.

    Định lý xấp xỉ phổ quát nói gì?

    • A.

      MLP nhiều tầng luôn tốt hơn MLP một tầng.

    • B.

      Một MLP với một tầng ẩn đủ rộng và hàm kích hoạt phù hợp có thể xấp xỉ bất kỳ hàm liên tục nào trên miền đóng, bị chặn.

    • C.

      MLP không có tầng ẩn nào cũng xấp xỉ được mọi hàm.

    • D.

      MLP càng sâu càng tốt với mọi bài toán.

  34. Q 34.

    Mạng "rộng và nông" so với "hẹp và sâu": khẳng định nào đúng?

    • A.

      Mạng nông bao giờ cũng tốt hơn mạng sâu.

    • B.

      Mạng sâu thường tổng quát hóa tốt hơn nhờ đặc trưng theo tầng bậc, nhưng khó huấn luyện hơn.

    • C.

      Mạng sâu luôn cần ít tham số hơn mạng nông.

    • D.

      Mạng sâu không bao giờ gặp vấn đề gradient.

  35. Q 35.

    Trong PyTorch, để chuyển một tensor sang GPU, đoạn nào đúng?

    • A.

      features.to(device)

    • B.

      features = features.to(device)

    • C.

      features.cuda() (không thay đổi biến)

    • D.

      torch.device(features)

  36. Q 36.

    Khi huấn luyện với DataLoader, tham số pin_memory=True phù hợp nhất với tình huống nào?

    • A.

      Khi dùng CPU và batch_size nhỏ.

    • B.

      Khi huấn luyện trên GPU.

    • C.

      Khi tập dữ liệu rất nhỏ vừa RAM.

    • D.

      Khi chỉ đánh giá mô hình.

  37. Q 37.

    Bị lỗi RuntimeError: Expected all tensors to be on the same device, nguyên nhân gần như chắc chắn là gì?

    • A.

      Sai số chiều tensor.

    • B.

      Mô hình ở GPU nhưng dữ liệu (hoặc ngược lại) chưa chuyển sang thiết bị.

    • C.

      Learning rate quá nhỏ.

    • D.

      Sai hàm mất mát.

  38. Q 38.

    Tại sao huấn luyện MLP cần nhiều bộ nhớ hơn suy luận?

    • A.

      Vì mỗi epoch phải duyệt qua toàn bộ dữ liệu.

    • B.

      Vì lan truyền ngược cần giữ mọi giá trị trung gian của lan truyền tiến.

    • C.

      Vì cần lưu cả ba tập dữ liệu.

    • D.

      Vì suy luận dùng batch nhỏ hơn.

  39. Q 39.

    Trong MLP dùng sigmoid ở tất cả tầng ẩn, mạng rất sâu thường khó huấn luyện vì sao?

    • A.

      Vì sigmoid quá chậm về mặt tính toán.

    • B.

      Vì đạo hàm sigmoid , nhân nhiều tầng làm gradient ở đầu gần 0.

    • C.

      Vì sigmoid không khả vi.

    • D.

      Vì sigmoid làm tăng kích thước tensor.

  40. Q 40.

    Trong vòng lặp huấn luyện, mỗi batch thực hiện 5 bước: lan truyền tiến, tính loss, xóa gradient cũ, lan truyền ngược, cập nhật tham số. Bước "xóa gradient cũ" để làm gì?

    • A.

      Để tránh tràn bộ nhớ GPU.

    • B.

      Vì PyTorch mặc định cộng gradient vào thay vì ghi đè; nếu không xóa, gradient cũ cộng với gradient mới.

    • C.

      Để khởi động lại optimizer.

    • D.

      Để giải phóng tham số.

  41. Q 41.

    MLP rộng (784 → 2048 → 2048 → 10) trên GPU có thể nhanh hơn CPU khoảng 20 lần, nhưng MLP nhỏ (784 → 50 → 25 → 10) gần như không được tăng tốc. Tại sao?

    • A.

      Vì GPU chỉ hỗ trợ mô hình có nhiều tham số.

    • B.

      Vì với mô hình nhỏ, thời gian khởi chạy phép toán và chép dữ liệu CPU↔GPU chiếm phần lớn.

    • C.

      Vì MLP nhỏ dùng ReLU mạnh hơn ở CPU.

    • D.

      Vì GPU không có đủ bộ nhớ cho MLP nhỏ.

  42. Q 42.

    Khi gặp lỗi "CUDA out of memory", biện pháp nào phù hợp nhất?

    • A.

      Tăng learning rate.

    • B.

      Giảm batch_size hoặc kích thước mô hình.

    • C.

      Đổi sang CPU luôn.

    • D.

      Xóa toàn bộ dataset.

  43. Q 43.

    Trong PyTorch, vì sao torch.argmax(logits, dim=1) cho nhãn dự đoán giống torch.argmax(probas, dim=1)?

    • A.

      Vì softmax không đổi tổng.

    • B.

      Vì softmax giữ nguyên thứ tự giữa các giá trị.

    • C.

      Vì softmax làm tròn số.

    • D.

      Vì logits được chuẩn hóa trước đó.

  44. Q 44.

    So với hồi quy logistic 2 lớp (1 đầu ra + sigmoid), vì sao K=2 thường được cài đặt bằng 2 đầu ra + softmax trong thực tế?

    • A.

      Vì softmax chính xác hơn sigmoid.

    • B.

      Vì dùng chung mã với bài toán nhiều lớp, dễ mở rộng.

    • C.

      Vì sigmoid không có sẵn trong PyTorch.

    • D.

      Vì softmax bắt buộc phải có hai đầu ra.

  45. Q 45.

    Khi transform=None trong ImageFileDataset.__getitem__, điều gì xảy ra khi đưa vào DataLoader?

    • A.

      DataLoader tự động chuyển PIL sang tensor.

    • B.

      DataLoader không ghép được các mẫu PIL thành batch tensor và sẽ báo lỗi.

    • C.

      Mỗi ảnh được tải vào GPU tự động.

    • D.

      Ảnh sẽ được lưu thành tệp mới.

  46. Q 46.

    Trong Bài Lab 4, MLP XOR (2 đầu vào → 25 → 15 → 2) có tổng cộng bao nhiêu tham số?

    • A.

      465

    • B.

      490

    • C.

      497

    • D.

      500

  47. Q 47.

    Tham số num_workers=4 trong DataLoader có ý nghĩa gì?

    • A.

      Chạy 4 GPU song song.

    • B.

      Dùng 4 tiến trình con đọc và biến đổi dữ liệu song song trên CPU.

    • C.

      Mỗi epoch lặp lại 4 lần.

    • D.

      Tăng learning rate gấp 4.

  48. Q 48.

    Trong PyTorch, khi nào cần đặt mã huấn luyện vào khối if __name__ == "__main__": khi dùng num_workers > 0?

    • A.

      Trên Linux luôn luôn cần.

    • B.

      Trên Windows và macOS khi chạy tệp .py (không phải Jupyter).

    • C.

      Trên cả Linux, Windows và macOS đều cần.

    • D.

      Chỉ trên Jupyter.

  49. Q 49.

    Một MLP hồi quy được huấn luyện với MSE. Trên tập kiểm tra, MAE = 5, RMSE = 7. Có thể kết luận gì?

    • A.

      RMSE luôn lớn hơn MAE cho mọi mô hình.

    • B.

      RMSE > MAE cho thấy có một số mẫu có sai số lớn kéo RMSE lên.

    • C.

      Mô hình hoàn hảo vì sai số thấp.

    • D.

      Cần huấn luyện lại với cross-entropy.

  50. Q 50.

    Theo định nghĩa, hệ số bằng 0 nghĩa là mô hình tương đương với mô hình nào?

    • A.

      Mô hình luôn dự đoán 0.

    • B.

      Mô hình luôn dự đoán giá trị trung bình .

    • C.

      Mô hình dự đoán ngẫu nhiên.

    • D.

      Mô hình MSE = 0.

Answers and explanations are in mode.