Courses
“Drift” là thuật ngữ trong machine learning mô tả việc hiệu năng của mô hình triển khai trong sản xuất dần suy giảm theo thời gian. Điều này có thể xảy ra vì nhiều lý do, như sự thay đổi theo thời gian của phân phối dữ liệu đầu vào hoặc mối quan hệ giữa đầu vào (x) và mục tiêu mong muốn (y) thay đổi.
Drift có thể là vấn đề lớn khi áp dụng machine learning trong thế giới thực, nơi dữ liệu thường năng động và luôn thay đổi. Bài viết này sẽ đi sâu vào lý do mô hình bị drift, các loại drift, các thuật toán để phát hiện chúng, và cuối cùng, kết thúc bằng một ví dụ mã nguồn mở về phát hiện drift trong Python.
Drift là gì?
Các mô hình machine learning được huấn luyện bằng dữ liệu lịch sử, nhưng khi được dùng trong thực tế, chúng có thể lỗi thời và mất dần độ chính xác theo thời gian do hiện tượng gọi là drift. Drift là sự thay đổi theo thời gian trong các thuộc tính thống kê của dữ liệu được dùng để huấn luyện mô hình. Điều này có thể khiến mô hình kém chính xác hoặc vận hành khác với thiết kế ban đầu.
Nói cách khác, “drift” là sự suy giảm khả năng dự đoán chính xác của mô hình do những thay đổi trong môi trường mà mô hình đang được sử dụng.
Tại sao mô hình Machine Learning bị drift?
Có nhiều lý do khiến mô hình machine learning có thể drift theo thời gian.
Một lý do phổ biến là dữ liệu dùng để huấn luyện mô hình trở nên lỗi thời hoặc không còn đại diện cho điều kiện hiện tại.
Ví dụ, hãy xem xét một mô hình dự đoán giá cổ phiếu của một công ty dựa trên dữ liệu lịch sử. Nếu ta huấn luyện mô hình với dữ liệu từ một thị trường ổn định, ban đầu mô hình có thể hoạt động tốt. Tuy nhiên, nếu thị trường trở nên biến động hơn theo thời gian, mô hình có thể không còn dự đoán chính xác giá cổ phiếu vì các thuộc tính thống kê của dữ liệu đã thay đổi.
Một lý do khác là mô hình không được thiết kế để xử lý các thay đổi trong dữ liệu. Một số mô hình có khả năng xử lý thay đổi dữ liệu tốt hơn những mô hình khác, nhưng không mô hình nào có thể tránh drift hoàn toàn.
Các loại drift
Hãy khám phá hai loại drift cần xem xét:
1. Concept drift
Concept drift, còn gọi là model drift, xảy ra khi nhiệm vụ mà mô hình được thiết kế để thực hiện thay đổi theo thời gian. Ví dụ, hình dung một mô hình được huấn luyện để phát hiện email spam dựa trên nội dung. Nếu các kiểu email spam mà mọi người nhận được thay đổi đáng kể, mô hình có thể không còn phát hiện spam chính xác.
Concept drift có thể được chia nhỏ thành bốn loại (Learning under Concept Drift: A Review, Jie Lu và cộng sự):
- Sudden Drift (trôi đột ngột)
- Gradual Drift (trôi dần)
- Incremental Drift (trôi gia tăng)
- Recurring Concepts (khái niệm lặp lại)

Nguồn: https://arxiv.org/pdf/2004.05785.pdf
2. Data drift
Data drift, còn gọi là covariate shift, xảy ra khi phân phối dữ liệu đầu vào thay đổi theo thời gian. Ví dụ, một mô hình được huấn luyện để dự đoán khả năng một khách hàng mua sản phẩm dựa trên tuổi và thu nhập. Nếu phân phối độ tuổi và thu nhập của khách hàng thay đổi đáng kể theo thời gian, mô hình có thể không còn dự đoán chính xác khả năng mua hàng.
Điều quan trọng là nhận biết cả concept drift và data drift và thực hiện các bước để ngăn ngừa hoặc giảm thiểu tác động của chúng. Một số chiến lược bao gồm liên tục giám sát và đánh giá hiệu năng mô hình, cập nhật mô hình với dữ liệu mới, và sử dụng các mô hình có độ bền cao hơn trước drift.
Bạn có thể tìm hiểu thêm về khoa học dữ liệu sau triển khai, như drift, trong tập podcast DataFramed của chúng tôi.
3. Drift trong LLM và Embedding
LLM đưa ra một kiểu drift mà các phương pháp trên không được thiết kế để xử lý. Dữ liệu không phải là các hàng trong bảng — mà là văn bản tự do — và điều thay đổi theo thời gian thường là ý nghĩa của những gì người dùng hỏi. Hiện nay người ta cho rằng có ba dạng drift trong LLM cần theo dõi.
Embedding drift
Embedding drift xảy ra khi ý nghĩa của văn bản người dùng gửi cho mô hình thay đổi, dù bề mặt văn bản có vẻ giống nhau. LLM chuyển văn bản thành các danh sách số dài gọi là embedding, và drift có thể xuất hiện trong các con số đó mà không bộc lộ ở những thứ bạn thường đo lường.
Hãy tưởng tượng một chatbot hỗ trợ khách hàng ban đầu xử lý chủ yếu câu hỏi thiết lập và onboard. Sáu tháng sau, khối lượng tin nhắn và độ dài trung bình không đổi, nhưng người dùng giờ chủ yếu hỏi về thanh toán và hủy dịch vụ. Thống kê văn bản trông ổn định, nhưng phân phối embedding đã dịch chuyển. Để phát hiện điều này, các nhóm so sánh các lô embedding gần đây với một lô tham chiếu bằng một thước đo khoảng cách thống kê.
Prompt hoặc input drift
Prompt drift tương tự embedding drift nhưng được theo dõi ở mức cao hơn. Thay vì so sánh embedding thô, bạn nhóm các truy vấn đến theo danh mục — dùng một bộ phân loại hoặc một LLM khác — và theo dõi sự dịch chuyển trong cơ cấu.
Ví dụ, một trợ lý mã hóa nội bộ ra mắt cho kỹ sư backend có thể dần nhận nhiều lưu lượng từ nhà khoa học dữ liệu hỏi về pandas. Trợ lý vẫn có thể trả lời tốt, nhưng nhóm người dùng nó phục vụ không còn là nhóm đã được kiểm thử, và system prompt hoặc chỉ mục truy xuất theo thời gian có thể không còn phù hợp.
Rubric drift
Rubric drift là sự thay đổi theo thời gian trong điểm chất lượng mà một bộ đánh giá tự động chấm cho đầu ra của mô hình. Nhiều nhóm sản xuất hiện dùng LLM làm giám khảo, chấm từng phản hồi theo mức độ hữu ích, chính xác, hoặc giọng điệu. Khi các điểm số đó bắt đầu giảm với cùng kiểu đầu vào, thường là có điều gì đó đã thay đổi — mô hình đằng sau API, tài liệu được truy xuất, hoặc cơ cấu người dùng.
Điều khiến rubric drift đặc biệt hữu ích là nó cung cấp tín hiệu chất lượng mà không cần nhãn ground truth, vốn hiếm khi có sẵn theo thời gian thực cho đầu ra sinh.
Làm thế nào để phát hiện drift?
Có hai cách để phát hiện drift:
1. Cách tiếp cận dựa trên mô hình Machine Learning: Dùng mô hình để phát hiện dữ liệu đầu vào đến có bị drift hay không.
2. Các kiểm định thống kê: Có nhiều kiểm định thống kê để phát hiện data drift. Chúng chủ yếu chia thành ba nhóm:
-
- Phương pháp phân tích tuần tự
- Mô hình tùy chỉnh để phát hiện drift
- Phương pháp phân phối theo thời gian, rất phổ biến.
Các phương pháp dựa trên phân phối theo thời gian dùng kỹ thuật thống kê để tính sự khác biệt giữa hai phân phối xác suất nhằm phát hiện drift. Các phương pháp này bao gồm Population Stability Index, KL Divergence, JS Divergence, KS Test và Wasserstein Metric.
Thuật toán phát hiện Data Drift
Kiểm định Kolmogorov–Smirnov (K-S)
Kiểm định Kolmogorov–Smirnov (K-S) là kiểm định thống kê phi tham số dùng để xác định liệu hai tập dữ liệu có đến từ cùng một phân phối hay không. Nó thường được dùng để kiểm tra xem một mẫu dữ liệu có đến từ một quần thể cụ thể hay không hoặc để so sánh hai mẫu nhằm xác định chúng có cùng quần thể hay không.
Giả thuyết không của kiểm định này là các phân phối giống nhau. Nếu giả thuyết này bị bác bỏ, điều đó gợi ý có drift trong mô hình.
Kiểm định K-S là công cụ hữu ích để so sánh các tập dữ liệu và xác định liệu chúng có đến từ cùng một phân phối hay không.
Population Stability Index
Population Stability Index (PSI) là thước đo thống kê dùng để so sánh phân phối của một biến phân loại ở hai tập dữ liệu khác nhau.
Population Stability Index (PSI) được dùng để đo mức độ thay đổi của phân phối một biến giữa hai mẫu hoặc theo thời gian. Nó thường được dùng để theo dõi thay đổi trong đặc điểm của một quần thể và xác định các vấn đề tiềm ẩn trong hiệu năng của mô hình machine learning.
PSI ban đầu được phát triển để theo dõi sự thay đổi phân phối điểm số trong thẻ điểm rủi ro, nhưng nay được dùng để xem xét dịch chuyển phân phối cho mọi thuộc tính liên quan đến mô hình, bao gồm cả biến phụ thuộc và độc lập.
Giá trị PSI cao cho thấy có sự khác biệt đáng kể giữa các phân phối của biến ở hai tập dữ liệu, có thể gợi ý sự tồn tại của drift trong mô hình.
Nếu phân phối của một biến thay đổi đáng kể, hoặc nhiều biến thay đổi ở một mức độ nào đó, có thể cần hiệu chuẩn lại hoặc xây dựng lại mô hình để cải thiện hiệu năng.
Phương pháp Page–Hinkley
Phương pháp Page–Hinkley là phương pháp thống kê dùng để phát hiện thay đổi trong kỳ vọng (mean) của một chuỗi dữ liệu theo thời gian. Nó thường được dùng để giám sát hiệu năng mô hình machine learning và phát hiện thay đổi trong phân phối dữ liệu có thể chỉ ra model drift.
Để dùng phương pháp Page–Hinkley, bước đầu là xác định một ngưỡng và một hàm quyết định. Ngưỡng là giá trị mà trên đó sự thay đổi ở mean được coi là đáng kể, và hàm quyết định trả về 1 nếu phát hiện thay đổi, và 0 nếu không.
Tiếp theo, mean của chuỗi dữ liệu được tính ở mỗi bước thời gian, và hàm quyết định được áp dụng để xác định liệu có thay đổi xảy ra hay không. Nếu hàm quyết định trả về 1, điều đó cho thấy đã phát hiện thay đổi và mô hình có thể đang drift.
Phương pháp Page–Hinkley đơn giản và hiệu quả để phát hiện thay đổi trong mean của chuỗi dữ liệu theo thời gian. Nó đặc biệt hữu ích để phát hiện các thay đổi nhỏ ở mean có thể không thấy ngay khi quan sát dữ liệu. Tuy nhiên, cần chọn ngưỡng và hàm quyết định cẩn thận để đảm bảo phương pháp đủ nhạy để phát hiện thay đổi nhưng không quá nhạy gây báo động giả.
Triển khai phát hiện drift bằng Python
Trong phần này, chúng ta sẽ dùng Evidently để phát hiện drift. Evidently là thư viện Python mã nguồn mở dành cho nhà khoa học dữ liệu và kỹ sư làm việc với machine learning. Nó giúp kiểm thử, đánh giá và theo dõi hiệu năng mô hình từ giai đoạn xác thực đến sản xuất.
Import thư viện
import pandas as pd
import numpy as np
from sklearn import datasets
from evidently import Report
from evidently.presets import DataDriftPreset
Nạp dữ liệu và tạo tập tham chiếu và mục tiêu
# create ref and cur dataset for drift detection
adult_data = datasets.fetch_openml(name='adult', version=2, as_frame=True)
adult = adult_data.frame
adult_ref = adult[~adult.education.isin(['Some-college', 'HS-grad', 'Bachelors'])].copy()
adult_cur = adult[adult.education.isin(['Some-college', 'HS-grad', 'Bachelors'])].copy()
adult_cur.iloc[:2000, 3:5] = np.nan
Tạo báo cáo drift
#dataset-level metrics
report = Report([DataDriftPreset()], include_tests=True)
my_eval = report.run(current_data=adult_cur, reference_data=adult_ref)
my_eval

Bảng điều khiển phát hiện drift - tạo bằng EvidentlyAI
Xuất báo cáo drift ở định dạng JSON
#report in a JSON format
my_eval.json()
Xem toàn bộ Notebook của Datacamp tại đây.
Kết luận
Data drift và model drift có thể gây ra những thách thức đáng kể cho hệ thống machine learning trong sản xuất. Bằng cách hiểu nguyên nhân và tác động của drift, cũng như triển khai thực hành giám sát drift hiệu quả, bạn có thể đảm bảo mô hình của mình vẫn chính xác và đáng tin cậy theo thời gian.
Giám sát hiệu năng mô hình, sử dụng mô hình phát hiện drift, và thường xuyên huấn luyện lại với dữ liệu cập nhật chỉ là một vài thực hành tốt để giảm thiểu rủi ro từ drift. Chủ động giám sát drift giúp hệ thống machine learning tiếp tục mang lại giá trị cho tổ chức.
Giám sát drift cho các mô hình machine learning chỉ là một khía cạnh trong lĩnh vực rộng lớn gọi là MLOps. Hiểu các khái niệm MLOps là điều thiết yếu với mọi nhà khoa học dữ liệu, kỹ sư, hoặc lãnh đạo để đưa mô hình từ notebook cục bộ vào vận hành trong sản xuất.
Nếu bạn muốn đào sâu vào MLOps và lợi ích của nó cho sự nghiệp, hãy xem khóa học MLOps Concepts của chúng tôi. Tại đây, bạn sẽ học MLOps là gì, hiểu các giai đoạn trong quy trình MLOps, và xác định các mức độ trưởng thành MLOps. Sau khi nắm các khái niệm cốt lõi, bạn sẽ sẵn sàng triển khai machine learning một cách liên tục, đáng tin cậy và hiệu quả.
Câu hỏi thường gặp về phát hiện drift
Model drift trong machine learning là gì?
Model drift trong machine learning là khi hiệu năng của mô hình trên dữ liệu mới khác với hiệu năng trên dữ liệu huấn luyện ban đầu. Điều này có thể xảy ra vì nhiều lý do, bao gồm sự thay đổi phân phối dữ liệu theo thời gian, thêm dữ liệu mới không phù hợp với giả định ban đầu của mô hình, hoặc bản thân mô hình không thể thích nghi với điều kiện thay đổi.
Tại sao model drift là vấn đề?
Model drift có thể ảnh hưởng đáng kể đến hiệu năng và độ chính xác của mô hình. Khi dự đoán của mô hình trở nên kém tin cậy, nó có thể dẫn đến quyết định hoặc hành động sai với hậu quả tiêu cực. Ví dụ, trong y tế, model drift có thể dẫn đến chẩn đoán hoặc khuyến nghị điều trị không chính xác; trong tài chính, có thể dẫn đến quyết định đầu tư kém.
Làm sao phát hiện model drift?
Có nhiều cách xác định mô hình có đang drift hay không, như kiểm định thống kê, thuật toán phát hiện drift, và theo dõi mức độ mô hình đang hoạt động tốt ra sao. Một số phương pháp được thiết kế để phát hiện drift theo thời gian thực, trong khi số khác phù hợp kiểm tra theo đợt hoặc theo lịch. Điều quan trọng là chọn kỹ thuật phù hợp với ứng dụng và môi trường dữ liệu cụ thể.
Làm sao ngăn ngừa model drift?
Ngăn ngừa model drift đòi hỏi kết hợp lựa chọn mô hình cẩn thận, giám sát và kiểm thử thường xuyên, cùng can thiệp chủ động. Điều này có thể bao gồm dùng thuật toán bền vững hơn trước drift, thường xuyên huấn luyện lại mô hình với dữ liệu mới, hoặc triển khai các chiến lược xử lý drift khi được phát hiện. Cũng quan trọng là hiểu rõ các yếu tố có thể gây drift để có biện pháp phòng ngừa.
Phân phối dữ liệu ảnh hưởng đến model drift như thế nào?
Phân phối dữ liệu có thể ảnh hưởng đáng kể đến hiệu năng của mô hình. Nếu phân phối dữ liệu thay đổi theo thời gian, nó có thể dẫn đến model drift, vì mô hình có thể không còn dự đoán chính xác dữ liệu mới không khớp với giả định ban đầu. Điều này có thể xảy ra theo nhiều cách, như biến thiên tự nhiên của dữ liệu, thêm nguồn dữ liệu mới, hoặc thay đổi trong quy trình/hệ thống tạo ra dữ liệu.
Model drift có thể đảo ngược không?
Trong một số trường hợp, có thể đảo ngược model drift bằng cách huấn luyện lại mô hình trên dữ liệu mới hoặc điều chỉnh tham số. Tuy nhiên, không phải lúc nào cũng làm được, đặc biệt nếu phân phối dữ liệu đã thay đổi đáng kể hoặc mô hình trở nên quá phức tạp/chuyên biệt. Khi đó có thể cần bắt đầu lại với mô hình mới.
Có thể loại bỏ hoàn toàn model drift không?
Gần như không thể loại bỏ hoàn toàn model drift. Ngay cả những mô hình bền vững và được thiết kế tốt nhất cũng có thể bị ảnh hưởng bởi thay đổi trong dữ liệu hoặc quy trình tạo dữ liệu. Cách tiếp cận tốt nhất là quản lý và giảm thiểu tác động của model drift thông qua giám sát, kiểm thử và can thiệp thường xuyên.
Model drift ảnh hưởng đến hiệu năng mô hình như thế nào?
Model drift có thể ảnh hưởng lớn đến hiệu năng của mô hình. Khi dự đoán kém chính xác hơn, hiệu năng trên các chỉ số quan trọng như accuracy, precision, recall và hiệu quả tổng thể sẽ giảm. Trong một số trường hợp, model drift thậm chí có thể khiến mô hình thất bại hoàn toàn, dẫn đến dự đoán sai hoặc không đáng tin.
Model drift ảnh hưởng đến độ chính xác như thế nào?
Model drift có thể tác động tiêu cực đến độ chính xác của mô hình. Khi dự đoán kém chính xác, nó có thể dẫn đến quyết định hoặc hành động sai, gây hậu quả tiêu cực trong ứng dụng thực tế. Ví dụ, trong y tế, model drift có thể dẫn đến chẩn đoán hoặc đề xuất điều trị sai; trong tài chính, có thể dẫn đến quyết định đầu tư kém. Điều quan trọng là thường xuyên giám sát và kiểm tra model drift để duy trì độ chính xác của mô hình.
