Tracks
Sẽ thế nào nếu bạn cần phân loại văn bản vào một danh mục mới, nhưng không có lấy một ví dụ được gán nhãn để huấn luyện?
Vậy thì bạn không thể đi theo hướng bộ phân loại truyền thống. Chúng yêu cầu ví dụ có nhãn cho mọi danh mục bạn muốn dự đoán, đồng nghĩa với hàng tuần gán nhãn trước khi có thể bắt đầu huấn luyện. Và ngay khi xuất hiện danh mục mới, bạn lại phải quay về gán nhãn.
Bạn nên cân nhắc phân loại zero-shot. Cách này bỏ qua toàn bộ bước gán nhãn bằng cách để mô hình gán các nhãn mà nó chưa từng thấy trong quá trình huấn luyện. Trên thực tế, điều này có nghĩa bạn có thể phân loại phản hồi khách hàng vào các nhóm như "khiếu nại thanh toán" hoặc "yêu cầu tính năng" mà không cần chuẩn bị một ví dụ huấn luyện nào cho cả hai.
Trong bài viết này, tôi sẽ hướng dẫn bạn cách phân loại zero-shot hoạt động, so sánh nó với các phương pháp truyền thống và few-shot, và cách áp dụng vào các tác vụ NLP thực tế bằng Hugging Face Transformers.
Hugging Face chính xác là gì? Hãy đăng ký lộ trình Hugging Face Fundamentals để xây dựng tác tử AI và tinh chỉnh LLM.
Phân Loại Zero-Shot Là Gì?
Phân loại zero-shot là một phương pháp học máy cho phép mô hình gán nhãn cho dữ liệu mà không được huấn luyện cụ thể trên các nhãn đó.
Điểm mấu chốt là "zero-shot". Nghĩa là mô hình không thấy bất kỳ ví dụ huấn luyện nào cho các danh mục bạn muốn dự đoán. Bạn đưa cho nó một đoạn văn bản và một danh sách nhãn có thể, và nó chọn khớp tốt nhất dựa trên những gì nó đã biết.
Tất cả tri thức này đến từ giai đoạn tiền huấn luyện. Các mô hình lớn tiếp thu hiểu biết rộng về ngôn ngữ và khái niệm từ những kho văn bản khổng lồ, và chính kiến thức tổng quát đó là thứ chúng dựa vào khi bạn yêu cầu phân loại điều gì mới.
Cách Phân Loại Zero-Shot Hoạt Động
Quy trình đằng sau phân loại zero-shot trở nên đơn giản khi chia nhỏ thành các bước. Bạn chỉ cần bốn bước:
-
Nhập văn bản hoặc dữ liệu: Bất cứ thứ gì bạn muốn phân loại - đánh giá của khách hàng, phiếu hỗ trợ, tiêu đề tin tức, một đoạn tài liệu.
-
Cung cấp các nhãn ứng viên: Bạn đưa cho mô hình một danh sách các danh mục có thể. Đây chỉ là những từ hoặc cụm từ ngắn, như
"product question","refund request","technical issue", hoặc"general inquiry". -
Mô hình đánh giá mối quan hệ giữa đầu vào và nhãn: Mô hình xem xét từng nhãn và chấm điểm mức độ phù hợp với đầu vào dựa trên hiểu biết ngôn ngữ đã được tiền huấn luyện.
-
Chọn nhãn có khả năng cao nhất: Nhãn có điểm cao nhất sẽ được trả về như dự đoán, thường kèm theo điểm tin cậy cho từng ứng viên.
Điểm mấu chốt là bạn có thể thay đổi các nhãn ứng viên bất kỳ lúc nào mà không cần huấn luyện lại. Nếu ngày mai bạn muốn thêm danh mục mới, chỉ cần thêm vào danh sách. Khá "gây choáng" nếu bạn chỉ quen với học có giám sát.
Phân Loại Zero-Shot so với Phân Loại Truyền Thống
Cả hai cách đều giải quyết cùng một vấn đề (gán nhãn cho dữ liệu), nhưng tiếp cận theo những cách khác nhau.
Phân loại truyền thống
Các bộ phân loại truyền thống học từ các ví dụ có nhãn. Bạn thu thập một tập dữ liệu trong đó mỗi mục được gắn với danh mục đúng, huấn luyện một mô hình trên đó, và mô hình học được các mẫu tách biệt giữa các lớp.
Cách này đã hiệu quả suốt nhiều thập kỷ, nhưng có hai ràng buộc lớn:
- Bạn cần dữ liệu huấn luyện có nhãn: Thường là rất nhiều. Thu thập và gán nhãn dữ liệu tốn thời gian và tiền bạc, những nguồn lực hữu hạn quý giá nhất.
- Tập nhãn là cố định: Khi mô hình đã huấn luyện, nó chỉ có thể dự đoán những danh mục đã thấy trong quá trình huấn luyện. Thêm lớp mới đồng nghĩa phải quay lại huấn luyện lại.
Phân loại zero-shot
Zero-shot hoạt động theo hướng ngược lại. Không có bước huấn luyện theo tác vụ cụ thể. Mô hình sử dụng những gì đã học trong tiền huấn luyện để đánh giá bất kỳ nhãn nào bạn đưa ra.
Điều đó mang lại hai lợi thế:
- Không cần huấn luyện theo tác vụ: Bạn hoàn toàn bỏ qua việc thu thập dữ liệu, gán nhãn và huấn luyện.
- Bộ nhãn linh hoạt: Bạn có thể thay đổi danh mục linh hoạt. Thêm mới, bớt đi, đổi tên - mô hình xử lý được mà không cần huấn luyện lại.
Đánh đổi
Sự linh hoạt này không miễn phí. Một bộ phân loại truyền thống được huấn luyện trên tập dữ liệu có nhãn tốt thường sẽ vượt trội hơn mô hình zero-shot trên đúng tác vụ đó. Nó đã thấy chính xác những ví dụ bạn quan tâm và đã tinh chỉnh cho chúng.
Các mô hình zero-shot là những "nhà tổng quát". Chúng giỏi nhiều thứ, nhưng hiếm khi tốt nhất ở một thứ cụ thể. Vì vậy lựa chọn phụ thuộc vào nhu cầu của bạn.
Nếu bạn có dữ liệu gán nhãn và cần độ chính xác cao nhất trên một bộ danh mục cố định, hãy huấn luyện một bộ phân loại truyền thống. Nếu bạn không có dữ liệu gán nhãn, hoặc danh mục thay đổi thường xuyên, zero-shot là con đường nhanh hơn để có giải pháp hoạt động.
Vai Trò của Foundation Models và LLM
Phân loại zero-shot trở nên phổ biến vì các mô hình tiền huấn luyện lớn đã đủ tốt để xử lý nó.
Trước thời foundation models, bạn không thể chỉ đưa cho mô hình một danh sách nhãn mà nó chưa từng thấy và kỳ vọng dự đoán hợp lý. Mô hình không biết đủ về ngôn ngữ để kết nối. Tiền huấn luyện trên các kho văn bản khổng lồ đã thay đổi điều đó. Một mô hình đã "đọc" phần lớn internet đã từng gặp những từ như "refund" hay "complaint" trong vô số ngữ cảnh, nên việc ghép chúng với đầu vào mới trở nên khả thi.
Một vài họ mô hình đứng sau hầu hết các quy trình zero-shot ngày nay:
- BERT và các biến thể: Các mô hình kiểu BERT học biểu diễn sâu của văn bản trong tiền huấn luyện. Các biến thể như RoBERTa và DeBERTa đẩy xa hơn với phương pháp huấn luyện tốt hơn và tập dữ liệu lớn hơn.
- Mô hình dựa trên NLI: Đây là các mô hình được tinh chỉnh trên tác vụ suy diễn ngôn ngữ tự nhiên. Chúng đứng sau hầu hết các pipeline zero-shot dựng sẵn, và ở phần tiếp theo, tôi sẽ giải thích lý do.
- LLM hiện đại: Các mô hình ngôn ngữ lớn như họ GPT hoặc Claude có thể xử lý phân loại zero-shot thông qua nhắc lệnh. Bạn mô tả tác vụ bằng ngôn ngữ tự nhiên, liệt kê danh mục, và mô hình chọn một cái.
Điểm chung là quy mô và tính tổng quát. Một mô hình huấn luyện cho một tác vụ hẹp chỉ làm được tác vụ đó. Một mô hình huấn luyện trên dữ liệu văn bản rộng có thể được chuyển hướng sang nhiều tác vụ mà không cần từng thấy ví dụ có nhãn cho chúng.
Suy Diễn Ngôn Ngữ Tự Nhiên (NLI) và Phân Loại Zero-Shot
Phần lớn các bộ phân loại zero-shot bạn thấy trong thực tế được xây dựng trên mô hình NLI. Đây là phần khiến nhiều người ngạc nhiên, nên đáng để đi chậm lại.
Suy diễn ngôn ngữ tự nhiên là một tác vụ riêng. Cho hai câu (tiền đề và giả thuyết), mô hình quyết định mối quan hệ giữa chúng. Đầu ra là một trong ba nhãn:
- Suy hàm (Entailment): Giả thuyết suy ra từ tiền đề.
- Mâu thuẫn (Contradiction): Giả thuyết mâu thuẫn với tiền đề.
- Trung lập (Neutral): Hai câu không liên quan, hoặc không đủ thông tin để quyết định.
Ví dụ, nếu tiền đề là "The team finished the project two weeks early" và giả thuyết là "The team delivered on time", một mô hình NLI nên dự đoán suy hàm. Nếu giả thuyết là "The team missed the deadline", nó nên dự đoán mâu thuẫn.
Thiết lập này hóa ra lại rất phù hợp với phân loại zero-shot. Nếu bạn coi đầu vào là tiền đề, bạn có thể biến mỗi nhãn ứng viên thành một giả thuyết.
Giả sử bạn muốn phân loại câu "My package never arrived" vào một trong ba danh mục: sự cố vận chuyển, sự cố thanh toán, hoặc câu hỏi về sản phẩm. Mô hình không xem đây là các nhãn. Nó xem chúng là các giả thuyết, thường được bao trong một mẫu đơn giản như "This text is about {label}":
-
Tiền đề:
"My package never arrived"| Giả thuyết:"This text is about a shipping issue" -
Tiền đề:
"My package never arrived"| Giả thuyết:"This text is about a billing issue" -
Tiền đề:
"My package never arrived"| Giả thuyết:"This text is about a product question"
Mô hình NLI chấm điểm từng cặp. Giả thuyết có điểm suy hàm cao nhất thắng, và nhãn đó trở thành dự đoán.
Mô hình không cần học "sự cố vận chuyển" hay "sự cố thanh toán" nghĩa là gì dưới dạng nhãn. Nó chỉ cần học trông "suy hàm" như thế nào nói chung, và điều đó được học trong quá trình tinh chỉnh NLI.
Đó là lý do các phương pháp zero-shot dựa trên NLI hoạt động tốt. Mô hình đang làm đúng tác vụ nó được huấn luyện (đánh giá suy hàm), còn bạn đang đóng khung bài toán phân loại như một chuỗi câu hỏi suy hàm.
Zero-Shot so với Few-Shot so với Mô Hình Được Tinh Chỉnh
Zero-shot không phải là cách duy nhất để khiến mô hình thực hiện tác vụ phân loại mà không cần một lượt huấn luyện đầy đủ. Hãy so sánh với các lựa chọn thay thế.
Zero-shot
Zero-shot nghĩa là không có ví dụ nào cả. Bạn đưa cho mô hình đầu vào và một danh sách nhãn ứng viên, và nó đưa ra dự đoán dựa trên những gì đã học trong tiền huấn luyện.
Mô hình chưa từng thấy dữ liệu gán nhãn cho tác vụ cụ thể của bạn. Nó làm việc hoàn toàn dựa vào tri thức tổng quát.
Few-shot
Few-shot cung cấp cho mô hình vài ví dụ, thường ngay trong prompt. Bạn cho nó xem hai, năm, có thể mười ví dụ đầu vào đi kèm nhãn đúng, rồi yêu cầu nó phân loại một đầu vào mới theo cùng cách.
Mô hình không được huấn luyện lại ở đây. Nó vẫn dùng trọng số đã tiền huấn luyện. Các ví dụ chỉ đóng vai trò tham chiếu - một kiểu "ý tôi muốn nói về các danh mục này là như vậy" trước khi bạn yêu cầu dự đoán.
Tinh chỉnh (Fine-tuning)
Tinh chỉnh là một quá trình huấn luyện riêng. Bạn lấy một mô hình tiền huấn luyện, đưa vào một tập dữ liệu gán nhãn cho tác vụ của bạn, và cập nhật trọng số cho đến khi nó dự đoán tốt các danh mục cụ thể của bạn.
Đây là cách nặng nhất trong ba cách. Bạn cần dữ liệu gán nhãn, hạ tầng huấn luyện và thời gian. Đổi lại, mô hình trở nên chuyên biệt cho tác vụ của bạn.
So sánh ba cách
Ba cách khác nhau ở ba yếu tố quan trọng trong thực tế: độ chính xác, tính linh hoạt và chi phí.
| Độ chính xác | Tính linh hoạt | Chi phí | |
|---|---|---|---|
| Zero-shot | Thấp nhất trong ba, nhưng vẫn tốt cho mục đích tổng quát | Cao nhất, bạn có thể thay đổi nhãn bất cứ lúc nào | Thấp nhất, không cần dữ liệu và không cần huấn luyện |
| Few-shot | Tốt hơn zero-shot, đặc biệt với ví dụ được chọn kỹ | Cao, bạn có thể thay đổi ví dụ và nhãn trong prompt | Thấp, bạn chỉ cần một vài ví dụ |
| Tinh chỉnh | Cao nhất trên tác vụ đã được huấn luyện | Thấp nhất, cần huấn luyện lại cho danh mục mới | Cao nhất, bao gồm thu thập dữ liệu, gán nhãn và huấn luyện |
So sánh học zero-shot với các lựa chọn khác
Có vài điểm đáng rút ra từ bảng này.
Độ chính xác không phải một xếp hạng sạch sẽ. Tinh chỉnh thắng khi bạn có đủ dữ liệu gán nhãn và tác vụ ổn định. Nhưng với một tác vụ hoàn toàn mới không có ví dụ để học, tinh chỉnh thậm chí không khả thi, và zero-shot trở thành lựa chọn thực tế duy nhất.
Tính linh hoạt đi theo hướng ngược lại. Zero-shot cho phép bạn thay đổi danh mục bất cứ khi nào muốn. Các mô hình đã tinh chỉnh bị khóa vào bộ nhãn chúng được huấn luyện.
Chi phí là điểm dễ thấy nhất. Zero-shot hầu như không tốn gì để thiết lập. Few-shot thêm một bước gán nhãn nhỏ. Tinh chỉnh là một dự án riêng và cần hạ tầng chuyên dụng.
Quy trình mà hầu hết các nhóm chọn là bắt đầu với zero-shot để xem tác vụ có khả thi không. Nếu độ chính xác chưa đủ, chuyển sang few-shot. Nếu vẫn chưa đủ và tác vụ quan trọng, thì tinh chỉnh.
Phân Loại Zero-Shot trong NLP
Phân loại zero-shot xuất hiện trong rất nhiều quy trình NLP, đặc biệt ở những nơi khó có dữ liệu gán nhãn hoặc danh mục liên tục thay đổi. Dưới đây là các ứng dụng phổ biến nhất.
Phân tích cảm xúc
Phân tích cảm xúc là điểm khởi đầu kinh điển. Bạn đưa mô hình một đoạn văn bản và yêu cầu chọn từ các nhãn như "positive", "negative" và "neutral".
Điểm thú vị là mức độ dễ dàng để vượt ra ngoài ba nhãn tiêu chuẩn. Một bộ phân loại cảm xúc truyền thống bị khóa vào những gì nó đã được huấn luyện. Với zero-shot, bạn có thể dùng các nhãn cụ thể hơn như "frustrated", "satisfied", "confused" hoặc "excited" và mô hình xử lý chúng mà không cần huấn luyện lại. Điều này rất phù hợp cho phản hồi sản phẩm hoặc theo dõi mạng xã hội, nơi các danh mục cảm xúc bạn quan tâm phụ thuộc vào ngữ cảnh.
Phân loại chủ đề
Phân loại chủ đề sắp xếp tài liệu theo lĩnh vực. Bài báo thành "politics", "sports", "technology", "finance". Phiếu hỗ trợ thành "billing", "shipping", "account access", "feature request".
Zero-shot giúp việc này trở nên tầm thường để thiết lập. Bạn không cần tập dữ liệu gán nhãn cho mọi chủ đề mới. Nếu sản phẩm ra mắt tính năng mới và bạn muốn theo dõi các phiếu về nó, chỉ cần thêm "new feature feedback" vào danh sách nhãn ứng viên và xong.
Nhận diện ý định
Nhận diện ý định tìm ra người dùng đang muốn làm gì. Đây là động cơ phía sau hầu hết chatbot và trợ lý giọng nói. Khi ai đó gõ "I need to change my password", mô hình cần nhận ra ý định là "password reset" thay vì, chẳng hạn, "general security question".
Đây là nơi zero-shot phát huy. Sản phẩm thực tế liên tục bổ sung ý định người dùng mới theo thời gian, và huấn luyện lại một bộ phân loại ý định mỗi khi đội sản phẩm thêm tính năng là rất tốn công. Zero-shot cho phép bạn cập nhật danh sách ý định mà không cần thay đổi mô hình.
Kiểm duyệt nội dung
Kiểm duyệt nội dung gắn cờ văn bản có vấn đề - những thứ như "hate speech", "spam", "harassment" hoặc "misinformation". Các nền tảng phải liên tục cập nhật chính sách, và danh mục thay đổi khi xuất hiện kiểu lạm dụng mới.
Zero-shot rất phù hợp ở đây. Nhóm kiểm duyệt có thể điều chỉnh định nghĩa nhãn hoặc thêm danh mục mới khi chính sách tiến hóa, mà không cần quay lại đội kỹ thuật để huấn luyện lại. Thông thường, nó được kết hợp với các bộ phân loại truyền thống cho các trường hợp khối lượng lớn, còn zero-shot xử lý phần "đuôi dài" của các danh mục không có đủ ví dụ gán nhãn để huấn luyện.
Phân Loại Zero-Shot với Hugging Face Transformers
Thư viện transformers của Hugging Face là cách dễ nhất để thử phân loại zero-shot trong Python. API pipeline ẩn gần như toàn bộ phần tải mô hình, vì vậy bạn có thể đi từ con số không đến dự đoán chỉ trong vài dòng code.
Lần đầu chạy đoạn mã này, mô hình sẽ được tải xuống, nên sẽ mất chút thời gian.
Dưới đây là ví dụ hoàn chỉnh bạn có thể chạy:
from transformers import pipeline
from pprint import pprint
# Load a zero-shot classification pipeline
classifier = pipeline(
"zero-shot-classification",
model="facebook/bart-large-mnli"
)
# The text you want to classify
text = "My package never arrived and customer support hasn't responded in three days."
# The labels you want the model to choose from
candidate_labels = [
"shipping issue",
"billing issue",
"product question",
"general inquiry"
]
# Run the classification
result = classifier(text, candidate_labels)
pprint(result)
Đầu ra là một dictionary với ba trường: đầu vào gốc, các nhãn ứng viên được sắp xếp từ khả năng cao đến thấp, và điểm tin cậy cho mỗi nhãn.

Pipeline output
"shipping issue" thắng với độ tin cậy 0.82. Mô hình chưa từng thấy ví dụ gán nhãn về khiếu nại vận chuyển trong quá trình huấn luyện, nhưng nó suy ra từ mô hình bart-large-mnli đã được tinh chỉnh trên dữ liệu NLI như đã đề cập ở phần trước.
Có vài điều đáng lưu ý về quy trình này:
-
Mô hình là mô hình NLI:
bart-large-mnlilà BART được tinh chỉnh trên bộ dữ liệu MultiNLI. Khi bạn gọi pipeline, nó chuyển đổi các nhãn của bạn thành giả thuyết ở phía sau và chạy qua mô hình. -
Bạn có thể thay đổi nhãn bất cứ lúc nào: Không cần thay đổi gì ở mô hình. Thay danh sách
candidate_labelsbằng danh sách khác là bạn đang phân loại theo các danh mục khác. -
Đa nhãn chỉ là một cờ: Đặt
multi_label=Truekhi gọi pipeline, và các nhãn sẽ không cạnh tranh với nhau. Mỗi nhãn nhận một xác suất độc lập, nên một đầu vào có thể thuộc nhiều danh mục.
result = classifier(text, candidate_labels, multi_label=True)
pprint(result)

Đầu ra đa nhãn
Toàn bộ quy trình chỉ có vậy. Tải pipeline, định nghĩa nhãn, gọi bộ phân loại. Nhanh và dễ hơn nhiều so với xây dựng một mô hình phân loại từ đầu.
Những Sai Lầm Phổ Biến với Phân Loại Zero-Shot
Phân loại zero-shot rất dễ thiết lập, và chính vì thế cũng dễ dùng sai. Dưới đây là những lỗi thường gặp nhất trong các dự án thực tế.
Chọn nhãn mơ hồ
Nhãn là cách bạn truyền đạt tác vụ cho mô hình. Nhãn mơ hồ dẫn đến dự đoán mơ hồ.
"good" và "bad" không nói với mô hình được bao nhiêu. "customer is happy with the product" và "customer is reporting a problem with the product" cho mô hình thứ gì đó để bám vào. Nhãn của bạn càng giống các cụm từ có ý nghĩa, mô hình sẽ càng chấm điểm chúng tốt hơn so với đầu vào.
Ngoài ra, tránh các nhãn chồng lấn. Nếu "complaint" và "negative feedback" cùng xuất hiện trong danh sách ứng viên, mô hình sẽ chia nhỏ độ tin cậy giữa chúng và không nhãn nào nổi bật rõ ràng.
Cho rằng zero-shot đạt hiệu năng như tinh chỉnh
Đây là lỗi phổ biến nhất. Zero-shot tốt, nhưng không phải phép màu.
Một mô hình đã tinh chỉnh trên vài nghìn ví dụ gán nhãn cho tác vụ cụ thể của bạn gần như luôn vượt một mô hình zero-shot trên tác vụ đó. Nếu bạn thấy 85% độ chính xác với zero-shot và cần 95% cho sản xuất, không có cách tinh chỉnh nhãn nào lấp đầy khoảng cách đó. Lúc đó, tinh chỉnh là câu trả lời.
Dùng zero-shot khi bạn không có dữ liệu gán nhãn, khi danh mục thay đổi thường xuyên, hoặc khi "đủ tốt" thực sự là đủ. Đừng chọn chỉ vì thiết lập nhanh rồi ngạc nhiên khi nó kém hiệu quả trên một tác vụ quan trọng.
Đánh giá trên tập dữ liệu quá hẹp
Thường là thế này: bạn xây một bộ phân loại zero-shot, kiểm thử trên 50 ví dụ do chính bạn viết, và nó đúng hết. Bạn triển khai, rồi vào sản xuất ai cũng phàn nàn là tệ.
50 ví dụ bạn viết không đại diện cho những gì người dùng thực sự gửi. Chúng sạch hơn, rõ ràng hơn, và phù hợp hơn với cách bạn nghĩ về danh mục. Hãy đánh giá trên dữ liệu giống với những gì mô hình sẽ thực sự thấy - văn bản do người dùng tạo, có lỗi chính tả, tiếng lóng, và các trường hợp biên. Nếu bạn chưa có dữ liệu đó, hãy lấy mẫu vài trăm đầu vào thực và tự gán nhãn trước khi tin vào con số.
Bỏ qua ngôn ngữ đặc thù lĩnh vực
Các mô hình zero-shot mục đích chung biết ngôn ngữ mục đích chung. Chúng không biết tiếng lóng ngành của bạn.
Thuật ngữ y khoa, ngôn ngữ pháp lý, từ viết tắt tài chính, đặc tả kỹ thuật - tất cả đều có vốn từ hẹp mà các mô hình tiền huấn luyện đã thấy, nhưng không sâu. Nếu bạn yêu cầu một mô hình zero-shot tổng quát phân loại một câu đầy mã ICD-10 hoặc thông báo lỗi SQL, hãy kỳ vọng kết quả lẫn lộn.
Bạn có hai lựa chọn. Hoặc viết lại nhãn bằng ngôn ngữ phổ thông mà mô hình có khả năng hiểu hơn, hoặc chuyển sang mô hình được tiền huấn luyện trên văn bản thuộc lĩnh vực của bạn. BioBERT cho văn bản y sinh, FinBERT cho tài chính, và các mô hình theo miền khác thường vượt trội hơn mô hình tổng quát trên tác vụ chuyên biệt.
Vì Sao Phân Loại Zero-Shot Quan Trọng trong AI Hiện Đại
Phân loại zero-shot là một trong những minh chứng rõ ràng nhất cho việc foundation models đã thay đổi những gì có thể trong AI như thế nào.
Một thập kỷ trước, mọi tác vụ phân loại đều bắt đầu với câu hỏi: chúng ta có dữ liệu gán nhãn không, nếu không thì lấy ở đâu? Các dự án gán nhãn kéo dài hàng tháng, cần ngân sách, phối hợp nhà cung cấp, và kiểm soát chất lượng. Mô hình thậm chí không thể xây dựng cho đến khi dữ liệu tồn tại.
Giả định đó giờ không còn đúng nữa.
Một foundation model được huấn luyện trên dữ liệu văn bản rộng đã biết đủ về ngôn ngữ để xử lý một tác vụ phân loại mới ngay khi bạn mô tả nó. Danh sách nhãn là thứ duy nhất bạn cần xác định.
Sự chuyển dịch này quan trọng vì vài lý do gắn với xu hướng lớn hơn trong AI:
- Nó cho thấy foundation models thực sự để làm gì: Mục tiêu của tiền huấn luyện ở quy mô lớn là xây một mô hình đủ tổng quát để có thể chuyển hướng sang nhiều tác vụ mà không cần huấn luyện lại. Phân loại zero-shot là một trong những ví dụ rõ nhất cho lời hứa đó được hiện thực hóa.
- Nó cắt giảm phụ thuộc vào tập dữ liệu có giám sát: Dữ liệu gán nhãn vẫn hữu ích, nhưng không còn là điều kiện bắt buộc để tạo ra một bộ phân loại hoạt động. Các nhóm không có ngân sách cho dự án gán nhãn vẫn có thể triển khai tính năng AI giá trị.
- Nó thay đổi tốc độ triển khai: Một tính năng phân loại từng mất cả quý để phát hành nay có thể được dựng bản mẫu trong một buổi chiều. Điều này ảnh hưởng đến những gì các nhóm chọn xây dựng, vì chi phí thử nghiệm đã gần như bằng không.
Xu hướng rộng hơn là chuyển từ mô hình theo tác vụ sang mô hình mục đích chung. Tinh chỉnh vẫn có chỗ đứng, và huấn luyện từ đầu cũng vậy khi tác vụ đòi hỏi. Nhưng điểm khởi đầu mặc định đã thay đổi. Bạn chọn một mô hình tiền huấn luyện trước và chỉ chuyên biệt hóa khi dữ liệu biện minh cho điều đó.
Kết luận
Phân loại zero-shot nhắc chúng ta rằng không phải mọi bài toán học máy đều cần một lượt huấn luyện riêng nữa. Một mô hình đã hiểu ngôn ngữ có thể được chuyển hướng sang tác vụ mới bằng cách thay đổi các nhãn bạn cung cấp. Không cần ví dụ hay tinh chỉnh.
Tính linh hoạt đó là toàn bộ ý nghĩa. Những danh mục bạn quan tâm hôm nay có thể không còn là những danh mục bạn quan tâm tháng sau, và các mô hình zero-shot cho phép bạn thay đổi ý định.
Vì vậy, trước khi bắt đầu một dự án gán nhãn dữ liệu, hãy chạy một đường cơ sở zero-shot. Bạn sẽ biết trong một buổi chiều liệu tác vụ đã được giải quyết, giải quyết một phần, hay vẫn cần cách tiếp cận nặng ký hơn. Không có gì hơn thế.
Nếu bạn mới làm quen với LLM, hãy đăng ký khóa học Khái niệm về Mô hình Ngôn ngữ Lớn (LLM). Khóa học dạy bạn mọi thứ cần biết về ứng dụng LLM, phương pháp huấn luyện và nghiên cứu mới nhất.
FAQs
Nói một cách đơn giản, phân loại zero-shot là gì?
Phân loại zero-shot là cách gán nhãn cho văn bản mà không cần huấn luyện mô hình trên các nhãn cụ thể đó. Bạn đưa cho mô hình một đầu vào và danh sách các danh mục có thể, và nó chọn khớp tốt nhất dựa trên những gì đã học trong tiền huấn luyện. "Zero" đề cập đến số lượng ví dụ huấn luyện cần cho mỗi danh mục, tức là bằng không.
Khi nào tôi nên dùng phân loại zero-shot thay vì tự huấn luyện mô hình?
Hãy dùng zero-shot khi bạn đang thử nghiệm, không có dữ liệu gán nhãn, khi danh mục thay đổi thường xuyên, hoặc khi bạn cần ra mắt nguyên mẫu nhanh. Đây cũng là lựa chọn đúng cho công việc khám phá khi bạn vẫn đang xác định danh mục nên là gì. Nếu bạn có bộ nhãn ổn định và đủ ví dụ gán nhãn, tinh chỉnh một bộ phân loại truyền thống thường sẽ cho độ chính xác tốt hơn.
Phân loại zero-shot chính xác đến mức nào?
Độ chính xác phụ thuộc vào mô hình bạn dùng, mức độ rõ ràng của nhãn, và mức độ phù hợp của tác vụ với hiểu biết ngôn ngữ tổng quát. Một mô hình zero-shot trên tác vụ được định nghĩa rõ có thể đạt từ mức ổn đến sẵn sàng sản xuất, nhưng gần như luôn kém hơn mô hình đã tinh chỉnh trên đủ dữ liệu gán nhãn cho cùng tác vụ. Hãy coi zero-shot như một đường cơ sở mạnh.
Sự khác biệt giữa phân loại zero-shot và NLI là gì?
Suy diễn ngôn ngữ tự nhiên (NLI) là một tác vụ mà mô hình quyết định một câu có suy hàm, mâu thuẫn, hay trung lập so với câu khác. Phân loại zero-shot dùng các mô hình NLI làm động cơ phía sau: đầu vào của bạn trở thành tiền đề, và mỗi nhãn ứng viên được chuyển thành giả thuyết. Nhãn có giả thuyết đạt điểm suy hàm cao nhất sẽ thắng.
Tôi có thể dùng phân loại zero-shot cho văn bản không phải tiếng Anh không?
Có, nhưng bạn cần một mô hình đa ngôn ngữ. Các mô hình như xlm-roberta-large-xnli được huấn luyện trên dữ liệu NLI đa ngôn ngữ và có thể xử lý phân loại zero-shot trên hàng chục ngôn ngữ. Hãy dùng bart-large-mnli và các mô hình chỉ dành cho tiếng Anh khi văn bản là tiếng Anh, và chuyển sang biến thể đa ngôn ngữ khi đầu vào không phải tiếng Anh.
