Chủ đề 4 - Tổng quan về huấn luyện mạng nơ-ron đa tầng
Exam info
- Subject
- Học sâu ứng dụng
- Exam type
- University
- Questions
- 50
- Duration
- 90 min
- Answers
- ✓ With explanations
Questions (50)
- 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
- A.
- 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
- A.
- 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.
- A.
- Q 4.
Gradient của cross-entropy theo logits có dạng nào?
- A.
- B.
- C.
- D.
- A.
- 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, .
- A.
- 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.
- A.
- 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.
- A.
- Q 8.
Một MLP gồm ba tầng
nn.Linearliê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ộtnn.Linearduy 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.
- A.
- 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
- A.
- 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
- A.
- 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.
- A.
- 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.
- A.
- 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]
- A.
- 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.
- A.
- 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
- A.
- 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()
- A.
- 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%
- A.
- Q 18.
Khi gọi
F.cross_entropy(probas, y)nhưngprobasđã đượ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.
- A.
- 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.
- A.
- 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.
- A.
- Q 21.
Trong
ImageFileDataset.__getitem__, tại sao cần gọitransform(img)chứaToTensor()?- 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.
- A.
- 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.
- A.
- Q 23.
Tập huấn luyện dùng
RandomCrop((28, 28))sauResize(32), còn tập kiểm định dùngCenterCrop((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.
- A.
- 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.
- A.
- 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ổ.
- A.
- 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.
- A.
- 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
- A.
- 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.
- A.
- 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.
- A.
- 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.
- A.
- 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
- A.
- 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
- A.
- 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.
- A.
- 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.
- A.
- 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)
- A.
- Q 36.
Khi huấn luyện với DataLoader, tham số
pin_memory=Truephù 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.
- A.
- 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.
- A.
- 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.
- A.
- 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.
- A.
- 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ố.
- A.
- 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ỏ.
- A.
- 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.
- A.
- Q 43.
Trong PyTorch, vì sao
torch.argmax(logits, dim=1)cho nhãn dự đoán giốngtorch.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 đó.
- A.
- 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.
- A.
- Q 45.
Khi
transform=NonetrongImageFileDataset.__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.
- A.
- 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
- A.
- Q 47.
Tham số
num_workers=4trong 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.
- A.
- Q 48.
Trong PyTorch, khi nào cần đặt mã huấn luyện vào khối
if __name__ == "__main__":khi dùngnum_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.
- A.
- 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.
- A.
- 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.
- A.
Answers and explanations are in mode.