End-to-end dialog trade off với modular pipeline thế nào?
Human-in-the-loop nên đặt ở đâu trong vòng cải thiện bot?
Framework như Rasa chuẩn hóa phần nào?
Ghi chú trong khi đọc
End-to-End Approach: thay vì train riêng NLU, dialog manager và NLG, seq2seq học trực tiếp từ utterance/lịch sử hội thoại sang response. Ưu điểm là train end-to-end, ít module thủ công; nhược điểm là khó debug, cần dữ liệu hội thoại phù hợp và khó kiểm soát factual correctness.
Seq2Seq Model: nhận một sequence làm input và sinh một sequence khác làm output. Trong chatbot, input là user utterance hoặc context hội thoại; output là response của bot.
Modular pipeline cần ontology, label riêng cho từng component và nhiều dataset annotated khác nhau. End-to-end approach giảm gánh nặng đó, nhưng đổi lại mất bớt khả năng nhìn vào từng bước như intent, slot, state và policy.
Seq2seq giữ thứ tự token trong câu hỏi, nên phù hợp với dialog generation hơn bag-of-words. Sách nhắc LSTM là nền thường gặp, còn transformer mới hơn có thể dùng cho seq2seq dialog.
Deep Reinforcement Learning for Dialogue Generation: vấn đề của seq2seq thường là sinh câu chung chung kiểu “I don’t know”. RL thêm khái niệm reward dài hạn để response hiện tại được đánh giá theo khả năng giúp cả cuộc hội thoại đạt mục tiêu.
Trong RL view, mỗi response của bot là một action. Bot cần học chuỗi action qua exploration/exploitation, thay vì chỉ sinh câu nghe hợp lý ở từng turn.
Goodness của hội thoại phụ thuộc vào task: goal-oriented dialog đo bằng khả năng hoàn thành mục tiêu của user; chitchat đo bằng mức độ thú vị/tự nhiên, nên reward khó định nghĩa hơn.
Human-in-the-Loop: con người can thiệp khi bot hiểu sai query, chọn sai action, hoặc gặp câu ngoài scope. Feedback của người đóng vai trò reward/penalty hoặc tín hiệu sửa lỗi cho quá trình học.
Sách xem human-in-the-loop là hướng thực tế hơn so với dialog generation tự động hoàn toàn. Hệ hybrid kết hợp end-to-end generation với human feedback đáng tin hơn khi cần factual correctness.
Rasa NLU là framework giúp ghép các thành phần dialog thành pipeline triển khai được: NLU, slot/state, interactive learning, annotation, API integration và tùy biến model.
Rasa giải quyết phần engineering quanh bot: giữ context/dialog state, capture slot-value, tạo thêm training data bằng interactive learning, annotate data, tích hợp API/channel, và cho phép thay model trong pipeline.
Interactive learning trong Rasa có hai tác dụng: vừa tạo dữ liệu mới bằng cách chat với bot, vừa thu feedback khi model sai để dùng như negative samples cho case khó.
Rasa hỗ trợ nhiều lựa chọn model cho intent/dialog act detection và sequence labeling: classifier có sẵn, custom classifier, embeddings, BERT và distilled BERT để cân bằng performance/latency.
Rasa hữu ích vì có thể bắt đầu bằng model có sẵn, sau đó thay bằng custom model, thêm adversarial examples, và tích hợp channel/API khi yêu cầu sản phẩm phức tạp hơn.
Viết lại bằng lời của tôi
Một dialog system thực tế không nên chỉ hỏi “model nào sinh câu hay nhất?“. Câu hỏi đúng hơn là: bot có giữ được mục tiêu hội thoại, biết khi nào thiếu slot, biết khi nào cần hỏi lại, và có cơ chế để con người sửa lỗi hay không.
End-to-end generation giúp bot linh hoạt hơn, nhưng càng linh hoạt thì càng khó kiểm soát. Vì vậy framework như Rasa và human-in-the-loop đóng vai trò như lớp vận hành: biến các model rời rạc thành hệ thống có feedback, annotation, API và khả năng sửa sai.
RL phù hợp khi chất lượng không nằm ở một câu trả lời đơn lẻ mà nằm ở cả chuỗi hội thoại. Bot cần học hành động nào giúp cuộc trò chuyện đi tới kết quả, thay vì chỉ sinh câu nghe hợp lý ở từng turn.