Xin chúc mừng! Bạn đã triển khai mô hình kỳ lân. Mô hình của bạn phải chạy 24x7 mà không gặp bất kỳ sự cố nào. Để đảm bảo điều này, bạn phải theo dõi quy trình học máy (ML) của mình.
Viết giản đồ dữ liệu để xác thực dữ liệu thô
Để theo dõi dữ liệu, bạn nên liên tục kiểm tra dữ liệu so với dự kiến các giá trị thống kê bằng cách viết các quy tắc mà dữ liệu phải đáp ứng. Bộ sưu tập này được gọi là giản đồ dữ liệu. Xác định giản đồ dữ liệu bằng cách làm theo các bước sau:
Hiểu rõ phạm vi và cách phân phối các tính năng. Đối với danh mục tính năng, hiểu tập hợp các giá trị có thể có.
Mã hoá hiểu biết của bạn vào giản đồ dữ liệu. Sau đây là các ví dụ về quy tắc:
- Đảm bảo rằng điểm xếp hạng do người dùng gửi luôn nằm trong khoảng từ 1 đến 5.
- Kiểm tra để đảm bảo từ the xuất hiện thường xuyên nhất (đối với văn bản tiếng Anh) tính năng).
- Kiểm tra để đảm bảo mỗi đối tượng phân loại được đặt thành một giá trị trong một tập hợp cố định giá trị có thể có.
Kiểm tra dữ liệu của bạn dựa trên giản đồ dữ liệu. Giản đồ của bạn phải nắm bắt dữ liệu như:
- Sự cố bất thường
- Giá trị không mong muốn của biến phân loại
- Phân phối dữ liệu ngoài dự kiến
Viết mã kiểm thử đơn vị để xác thực kỹ thuật tính năng
Mặc dù dữ liệu thô của bạn có thể vượt qua giản đồ dữ liệu này, nhưng mô hình của bạn sẽ không huấn luyện dựa trên dữ liệu thô. Thay vào đó, mô hình của bạn sẽ huấn luyện dựa trên dữ liệu đã được tính năng thiết kế. Ví dụ: mô hình của bạn huấn luyện dựa trên các tính năng dạng số chuẩn hoá thay vì dữ liệu số thô. Vì dữ liệu được thiết kế theo tính năng có thể rất khác với dữ liệu đầu vào thô, bạn phải kiểm tra dữ liệu được thiết kế theo tính năng tách biệt với các bước kiểm tra dữ liệu đầu vào thô.
Viết mã kiểm thử đơn vị dựa trên hiểu biết của bạn về dữ liệu được thiết kế theo tính năng. Ví dụ: bạn có thể viết mã kiểm thử đơn vị để kiểm tra các điều kiện như sau:
- Tất cả các đối tượng dạng số đều được tính theo tỷ lệ, ví dụ: từ 0 đến 1.
- Được mã hoá một lần vectơ chỉ chứa một số 0 và N-1 duy nhất.
- Việc phân phối dữ liệu sau khi chuyển đổi tuân theo kỳ vọng. Ví dụ: nếu bạn đã chuẩn hoá bằng điểm Z, thì giá trị trung bình của Điểm Z phải là 0.
- Trường hợp ngoại lệ được xử lý, chẳng hạn như bằng cách điều chỉnh theo tỷ lệ hoặc đoạn video.
Kiểm tra chỉ số cho các phần dữ liệu quan trọng
Toàn bộ thành công đôi khi che khuất một tập hợp con không thành công. Nói cách khác, một mô hình có chỉ số tổng thể tuyệt vời vẫn có thể đưa ra những dự đoán tồi tệ cho tình huống nhất định. Ví dụ:
Mô hình kỳ lân của bạn hoạt động tốt về tổng thể, nhưng lại hoạt động kém khi đưa ra dự đoán về sa mạc Sahara.
Nếu bạn thuộc kiểu kỹ sư hài lòng với AUC tuyệt vời nói chung, thì bạn có thể không nhận thấy các vấn đề của mô hình ở sa mạc Sahara. Nếu thực hiện dự đoán phù hợp cho mọi khu vực đều quan trọng, thì bạn cần theo dõi hiệu suất cho mọi khu vực. Các tập dữ liệu con, chẳng hạn như tập dữ liệu tương ứng đến sa mạc Sahara, được gọi là các lát dữ liệu.
Xác định những phần dữ liệu cần quan tâm. Sau đó, hãy so sánh chỉ số mô hình cho các phần dữ liệu này với chỉ số cho toàn bộ tập dữ liệu. Kiểm tra để đảm bảo mô hình của bạn hoạt động tốt trên tất cả các lát dữ liệu giúp loại bỏ thiên kiến. Xem Sự công bằng: Đánh giá dựa trên sự thiên vị để biết thêm thông tin.
Sử dụng các chỉ số thực tế
Chỉ số mô hình không nhất thiết phải đo lường tác động thực tế của mô hình của bạn. Ví dụ: việc thay đổi một siêu tham số có thể làm tăng AUC của mô hình, nhưng làm thế nào thay đổi đó có ảnh hưởng đến trải nghiệm người dùng không? Để đo lường tác động trong thực tế, bạn cần để xác định các chỉ số riêng biệt. Ví dụ: bạn có thể khảo sát người dùng mô hình của mình để xác nhận rằng các em thực sự đã nhìn thấy một chú kỳ lân khi mô hình dự đoán rằng các em sẽ làm.
Kiểm tra để phát hiện sai lệch khi phân phát nội dung huấn luyện
Xu hướng phân phát huấn luyện có nghĩa là dữ liệu đầu vào trong quá trình huấn luyện sẽ khác nhau dựa trên dữ liệu đầu vào trong quá trình phân phát. Bảng sau đây mô tả hai loại độ lệch quan trọng:
Loại | Định nghĩa | Ví dụ: | Giải pháp |
---|---|---|---|
Độ lệch giản đồ | Dữ liệu đầu vào để huấn luyện và cung cấp không tuân theo cùng một giản đồ. | Các thay đổi về định dạng hoặc việc phân phối dữ liệu phân phát trong khi mô hình tiếp tục huấn luyện dựa trên dữ liệu cũ. | Sử dụng cùng một giản đồ để xác thực dữ liệu huấn luyện và phân phối. Đảm bảo rằng bạn kiểm tra riêng các số liệu thống kê không được kiểm tra bởi giản đồ của bạn, chẳng hạn như tỷ lệ giá trị bị thiếu |
Tính năng lệch | Có sự khác biệt về dữ liệu được thiết kế giữa việc huấn luyện và phân phát. | Mã kỹ thuật tính năng khác nhau giữa huấn luyện và phân phối, tạo ra các dữ liệu được thiết kế khác nhau. | Tương tự như độ lệch giản đồ, hãy áp dụng các quy tắc thống kê tương tự cho quá trình huấn luyện và phân phát dữ liệu được thiết kế riêng. Theo dõi số điện thoại các đối tượng bị sai lệch được phát hiện và tỷ lệ các ví dụ bị sai lệch trên mỗi tính năng. |
Nguyên nhân gây ra sai lệch khi phân phát nội dung huấn luyện có thể rất khó phát hiện. Luôn xem xét dữ liệu nào có sẵn cho mô hình của bạn tại thời điểm dự đoán. Trong thời gian đào tạo, chỉ sử dụng các tính năng mà bạn sẽ có khi phân phát quảng cáo.
Bài tập: Kiểm tra kiến thức
Giả sử bạn có một cửa hàng trực tuyến và muốn dự đoán số tiền bạn sẽ kiếm được vào một ngày nhất định. Mục tiêu của công nghệ học máy là dự đoán hằng ngày bằng cách sử dụng số lượng khách hàng dưới dạng một tính năng.
Trả lời: Vấn đề là bạn không biết số lượng khách hàng tại thời điểm dự đoán, trước khi đã hoàn tất. Do đó, tính năng này không hữu ích, ngay cả khi dự đoán chặt chẽ doanh thu hằng ngày của bạn. Liên quan đến việc đó, khi bạn huấn luyện một mô hình và có được số liệu đánh giá đáng kinh ngạc (như 0,99 AUC), hãy tìm những loại tính năng này có thể xuất hiện trong nhãn của bạn.
Kiểm tra xem nhãn có bị rò rỉ hay không
Rò rỉ nhãn có nghĩa là thông tin thực tế mà bạn đang sử dụng cố gắng dự đoán đã vô tình nhập các tính năng huấn luyện của bạn. Nhãn sự rò rỉ đôi khi rất khó phát hiện.
Bài tập: Kiểm tra kiến thức
Giả sử bạn xây dựng mô hình phân loại nhị phân để dự đoán xem có một bệnh nhân mới ở bệnh viện bị ung thư. Mô hình của bạn sử dụng các tính năng như sau:
- Tuổi của bệnh nhân
- Giới tính của bệnh nhân
- Tình trạng bệnh lý trước đây
- Tên bệnh viện
- Dấu hiệu sinh tồn
- Kết quả kiểm tra
- Tính di truyền
Nhãn như sau:
- Boolean: Bệnh nhân có bị ung thư không?
Bạn phân vùng dữ liệu cẩn thận để đảm bảo tập huấn luyện của mình phù hợp tách biệt với tập xác thực và tập kiểm thử. Mô hình này hoạt động quá tốt đối với bộ xác thực và bộ thử nghiệm; các chỉ số thật tuyệt vời. Rất tiếc là mô hình này hoạt động rất kém đối với bệnh nhân mới trong thế giới thực.
Câu trả lời: Một trong những đặc điểm của mô hình là tên bệnh viện. Một số bệnh viện chuyên điều trị ung thư. Trong quá trình đào tạo, mô hình này nhanh chóng nhận thấy rằng những bệnh nhân được chỉ định đến một số bệnh viện có khả năng bị ung thư. Vì vậy, tên bệnh viện đã trở thành một yếu tố rất quan trọng.
Tại thời điểm suy luận, hầu hết bệnh nhân vẫn chưa được chỉ định vào bệnh viện. Suy cho cùng, mục đích của mô hình này là để chẩn đoán sự hiện diện hoặc không có ung thư và sau đó sử dụng chẩn đoán đó để chỉ định bệnh nhân đến bệnh viện thích hợp. Do đó, trong quá trình suy luận, chưa có tính năng tên bệnh viện và mô hình này đã buộc phải dựa vào các tính năng khác.
Theo dõi tuổi của mô hình trong toàn bộ quy trình
Nếu dữ liệu phân phát phát triển theo thời gian, nhưng mô hình của bạn không được huấn luyện lại thường xuyên, thì bạn sẽ thấy chất lượng mô hình giảm. Theo dõi thời gian kể từ khi mô hình được huấn luyện lại về dữ liệu mới và đặt độ tuổi tối thiểu cho cảnh báo. Bên cạnh việc giám sát tuổi của mô hình khi phân phát thì bạn nên theo dõi tuổi của mô hình trong toàn bộ quy trình để bắt các gian hàng đường ống.
Kiểm thử để đảm bảo trọng số và đầu ra của mô hình có tính ổn định về mặt số học
Trong quá trình huấn luyện mô hình, trọng số và dữ liệu đầu ra của lớp không được là NaN (không phải là số) hoặc Inf (vô hạn). Viết mã kiểm thử để kiểm tra giá trị NaN và Inf của trọng số và đầu ra của lớp. Ngoài ra, hãy kiểm thử để đảm bảo hơn một nửa kết quả của một lớp khác 0.
Theo dõi hiệu suất của mô hình
Công cụ dự đoán giao diện kỳ lân của bạn đang trở nên phổ biến hơn dự kiến! Bạn nhận được nhiều yêu cầu dự đoán và thậm chí nhiều dữ liệu huấn luyện hơn. Bạn cho rằng như vậy thì tốt cho đến khi bạn nhận ra rằng mô hình của mình ngày càng tốn nhiều bộ nhớ hơn và thời gian đào tạo. Bạn quyết định giám sát hiệu suất của mô hình bằng cách làm theo các bước sau:
- Theo dõi hiệu suất của mô hình theo phiên bản mã, mô hình và dữ liệu. Theo dõi cho phép bạn xác định chính xác nguyên nhân khiến hiệu suất suy giảm.
- Kiểm thử các bước huấn luyện mỗi giây đối với phiên bản mô hình mới so với phiên bản trước đó và dựa vào ngưỡng cố định.
- Phát hiện rò rỉ bộ nhớ bằng cách đặt một ngưỡng sử dụng bộ nhớ.
- Theo dõi thời gian phản hồi của API và theo dõi tỷ lệ phân vị của API. Trong khi phản hồi của API có thể nằm ngoài tầm kiểm soát của bạn, việc phản hồi chậm có thể khiến các chỉ số thực tế kém.
- Theo dõi số lượng truy vấn được trả lời mỗi giây.
Kiểm tra chất lượng của mô hình trực tiếp trên dữ liệu phân phát
Bạn đã xác thực mô hình của mình. Nếu tình huống trong thế giới thực, chẳng hạn như kỳ lân thay đổi sau khi ghi lại dữ liệu xác thực? Tiếp đến là chất lượng mô hình phân phát sẽ bị suy giảm. Tuy nhiên, việc kiểm tra chất lượng trong phân phát rất khó khăn vì dữ liệu thực tế không phải lúc nào cũng được gắn nhãn. Nếu dữ liệu phân phát của bạn không được gắn nhãn, hãy cân nhắc các thử nghiệm sau:
Điều tra các mô hình cho thấy sai lệch thống kê đáng kể trong dự đoán. Xem Phân loại: Dự đoán Độ lệch.
Theo dõi các chỉ số thực tế cho mô hình của bạn. Ví dụ: nếu bạn đang phân loại thư rác, so sánh cụm từ gợi ý của bạn với nội dung rác do người dùng báo cáo.
Giảm thiểu sự khác biệt tiềm năng giữa dữ liệu huấn luyện và phân phối bằng cách phân phát phiên bản mô hình mới trên một phần nhỏ truy vấn của bạn. Khi bạn xác thực mô hình phân phát mới của mình, hãy chuyển dần tất cả các truy vấn sang phiên bản mới.
Khi sử dụng các phép kiểm thử này, hãy nhớ theo dõi cả sự xuống cấp đột ngột và chậm trong chất lượng dự đoán.
Sắp xếp ngẫu nhiên
Giúp quy trình tạo dữ liệu của bạn có thể tái sản xuất. Giả sử bạn muốn thêm đối tượng địa lý để xem mức độ ảnh hưởng đến chất lượng mô hình. Để thử nghiệm công bằng, tập dữ liệu của bạn nên giống hệt nhau, ngoại trừ tính năng mới này. Trên tinh thần đó, hãy đảm bảo mọi sự ngẫu nhiên đều có thể được thực hiện trong quá trình tạo dữ liệu thuật toán tất định:
- Thêm trình tạo số ngẫu nhiên (RNG). Việc gieo hạt giúp đảm bảo rằng RNG sẽ cho ra các giá trị giống nhau theo cùng thứ tự mỗi lần bạn chạy, điều này sẽ tạo lại tập dữ liệu của bạn.
- Sử dụng khoá băm bất biến. Băm là một cách phổ biến để phân tách hoặc dữ liệu mẫu. Bạn có thể băm từng ví dụ và sử dụng số nguyên thu được để hãy quyết định phần tách nào để đặt ví dụ. Dữ liệu đầu vào cho hàm băm của bạn không nên thay đổi mỗi khi bạn chạy chương trình tạo dữ liệu. Không sử dụng thời gian hiện tại hoặc một số ngẫu nhiên trong hàm băm của bạn (ví dụ: nếu bạn muốn tạo lại hàm băm theo yêu cầu.
Các phương pháp trên áp dụng cho cả việc lấy mẫu và chia tách dữ liệu.
Những điều cần lưu ý khi băm
Hãy tưởng tượng một lần nữa bạn đang thu thập các Cụm từ tìm kiếm và sử dụng tính năng băm để bao gồm hoặc loại trừ cụm từ tìm kiếm. Nếu khoá băm chỉ sử dụng truy vấn, thì trong nhiều ngày, bạn sẽ luôn bao gồm cụm từ tìm kiếm đó hoặc luôn loại trừ cụm từ tìm kiếm đó. Luôn bao gồm hoặc luôn loại trừ truy vấn không tốt vì:
- Nhóm các bài tập huấn luyện của bạn sẽ có các nhóm cụm từ tìm kiếm ít đa dạng hơn.
- Tập hợp đánh giá của bạn sẽ có độ khó một cách giả tạo vì chúng không trùng lặp với dữ liệu huấn luyện của bạn. Trên thực tế, tại thời điểm phân phát, bạn sẽ đã xem một số lưu lượng truy cập trực tiếp trong dữ liệu huấn luyện của mình, vì vậy, sẽ phản ánh điều đó.
Thay vào đó, bạn có thể băm theo truy vấn + ngày, để tạo ra một hàm băm khác mỗi ngày.