Nếu quên gọi `.eval()` trước khi test mô hình có BatchNorm và Dropout, kết quả có thể bị ảnh hưởng như thế nào?

Tác giả: AI VIET NAM (AI VIET NAM)

Keywords: BatchNorm, Dropout, Eval Mode, Train Mode, Sai Lệch Kết Quả

Vì sao quên gọi
.eval()
có thể làm sai lệch kết quả khi test mô hình?

Nhiều bạn khi chạy mô hình xong thường kiểm tra độ chính xác ngay, nhưng lại hay bỏ quên bước chuyển mô hình sang chế độ đánh giá bằng

.eval()
. Với các mô hình có BatchNorm và Dropout, đây là nguyên nhân khiến kết quả test không phản ánh đúng khả năng thật của mô hình.

Vì sao chuyện này dễ xảy ra?

Khi huấn luyện, mô hình thường được đặt ở chế độ

.train()
. Nhiều bạn quen chạy luôn inference sau khi train mà không đổi trạng thái. Điều này dẫn đến việc BatchNorm và Dropout tiếp tục hoạt động giống lúc train, gây ra sai khác so với hành vi mong đợi ở giai đoạn test.

BatchNorm và Dropout hoạt động thế nào?

Để hiểu ảnh hưởng, cần nắm bản chất của hai cơ chế này:

BatchNorm

  • Trong lúc train: dùng mean và variance của batch hiện tại.
  • Trong lúc test: dùng running mean và running variance đã được tích lũy.

Dropout

  • Trong lúc train: tắt ngẫu nhiên một tỷ lệ neuron để tránh overfitting.
  • Trong lúc test: không tắt neuron, giữ mạng hoạt động đầy đủ.

Nếu không gọi

.eval()
, mô hình tiếp tục sử dụng cơ chế của lúc train:

  • BatchNorm dùng giá trị tức thời khiến output dao động.
  • Dropout tiếp tục tắt neuron khiến tín hiệu đầu ra không ổn định.

Kết quả bị ảnh hưởng như thế nào?

Khi test mô hình mà quên

.eval()
, các vấn đề thường xuất hiện:

  • Độ chính xác giảm đáng kể do dropout làm mất thông tin.
  • Kết quả không ổn định: mỗi lần chạy test cho ra một giá trị khác nhau.
  • BatchNorm tạo ra phân phối khác so với lúc test chuẩn, khiến mô hình dự đoán sai.
  • Mất khả năng đánh giá đúng hiệu năng mô hình: mô hình thực tế có thể tốt hơn rất nhiều.

Ví dụ thực tế

Giả sử bạn đang làm bài toán phân loại ảnh (module Computer Vision, gần với nhóm kiến thức ở module 9 trong chương trình AIO). Mô hình CNN gồm:

  • 2 lớp BatchNorm
  • 1 lớp Dropout tỉ lệ 0.3

Nếu không bật chế độ

.eval()
trước khi test 500 ảnh, bạn có thể thấy accuracy chỉ 75%. Khi bật
.eval()
, accuracy tăng lên khoảng 89% và ổn định hơn. Chênh lệch đến từ việc Dropout vẫn “tắt” neuron và BatchNorm không dùng running statistics khi ở chế độ train.

Góc nhìn làm dự án AI/ML

Trong dự án thực tế, việc quên

.eval()
gây nhiều hệ quả:

  • Logging lưu lại số liệu sai lệch, ảnh hưởng quy trình MLOps (liên quan nhóm kiến thức MLOps của module 4–8).
  • Khi deploy, mô hình chạy khác lúc đánh giá nội bộ khiến pipeline thiếu ổn định.
  • Dễ dẫn đến quyết định sai trong tối ưu mô hình hoặc lựa chọn kiến trúc.

Đây cũng là lỗi phổ biến mà các nhóm ML thường phải kiểm tra lại trước khi benchmark mô hình.

Liên hệ kiến thức nền

Hiểu rõ cơ chế BatchNorm, Dropout và chế độ train/eval liên quan đến nhiều chủ đề trong chuỗi module Deep Learning (module 7–8) và các bài toán CV/NLP (module 9–10). Đây là các kiến thức nền mà người học AI thường tiếp cận khi xây dựng mô hình thực tế.

Lời khuyên cho người bắt đầu

  • Có thể tập thói quen luôn chuyển mô hình sang
    .eval()
    trước khi test.
  • Bạn có thể thử chạy một mô hình đơn giản với và không có
    .eval()
    để quan sát sự khác biệt.
  • Việc tự kiểm chứng giúp hiểu rõ hơn cách BatchNorm và Dropout vận hành.

Hỏi đáp nhanh về chủ đề

  1. BatchNorm có dùng thống kê khác nhau giữa train và test không?
    Có, lúc test dùng running mean và variance.

  2. Dropout có hoạt động khi test không?
    Không, khi test dropout được tắt.

  3. Quên

    .eval()
    có gây sai lệch lớn không?
    Có thể, đặc biệt với mô hình có nhiều BatchNorm hoặc Dropout.

  4. Mô hình không có BatchNorm và Dropout có cần

    .eval()
    không?
    Có, để đảm bảo trạng thái mô hình nhất quán.


FAQ về chương trình AIO

Q1. Con số 0 thì học nổi không?
Ans: Chỉ cần bạn có thời gian học. Điều quan trọng nhất không phải giỏi hay không, mà là có học đều mỗi ngày. Kiến thức – tài liệu – môi trường đã có team lo. Nếu bạn không có thời gian thì nên cân nhắc.

Q2. Ai dạy AIO?
Ans: Đội admin dạy toàn bộ. Admin trực tiếp hướng dẫn và hỗ trợ mọi câu hỏi của bạn trong suốt quá trình học.

Q3. Admin có “xịn” không?
Ans: Admin đều là người làm nghề thật, mỗi người một cách dạy. Quan trọng là bạn cảm thấy hợp cách truyền đạt. Admin không dám nói xịn, chỉ dạy bằng hết sức.

Q4. AIO có gì khác những nơi khác?
Ans: AIO không phải trung tâm. Đây là dự án học tập cộng đồng, được cải tiến qua từng khóa. Tinh thần của AIO: Cùng nhau học – cùng nhau khổ – cùng nhau lớn. Nếu hợp tinh thần đó, bạn sẽ thấy phù hợp.

Tài nguyên học AI: