Mô hình ngôn ngữ lớn là một mạng nơ-ron rất to, được huấn luyện trên khối văn bản khổng lồ để làm đúng một việc: đoán mảnh chữ tiếp theo. Lặp lại việc đoán đó hết mảnh này đến mảnh khác, nó viết ra được cả câu trả lời, bài văn, đoạn mã. Sau đó người ta dạy thêm để nó biết trò chuyện, làm theo yêu cầu và từ chối việc có hại.
Nghe "đoán chữ tiếp theo" thì có vẻ đơn giản, thậm chí tầm thường. Nhưng muốn đoán giỏi chữ tiếp theo trong hàng tỉ câu thuộc mọi chủ đề, mô hình buộc phải nắm được ngữ pháp, kiến thức phổ thông và cả cách lập luận thường gặp. Đó là lý do nó trông như hiểu.
Hiểu cơ chế này giúp bạn lý giải được rất nhiều chuyện khi dùng chatbot: vì sao hỏi hai lần ra hai câu khác nhau, vì sao nó quên điều bạn dặn ở đầu cuộc trò chuyện dài, và vì sao nó có thể sai một cách rất tự tin.
Đoán mảnh chữ tiếp theo: trái tim của mô hình
Hãy chơi một trò quen thuộc: "Mẹ ơi, con đói, cho con ăn bát..." Bạn gần như đoán ngay chữ tiếp là "cơm" hay "phở". Bạn đoán được vì đã nghe hàng nghìn câu tương tự. Mô hình ngôn ngữ làm đúng việc ấy, chỉ là với lượng văn bản lớn hơn đời người đọc được rất nhiều lần.
Mô hình không chọn đúng một chữ. Nó tính xác suất cho mọi khả năng: "cơm" khả năng cao, "phở" khá cao, "bún" thấp hơn, "sắt" gần như không. Sau đó nó chọn một chữ, có khi chọn chữ cao nhất, có khi được phép chọn ngẫu nhiên trong nhóm khả năng cao để câu văn bớt khô cứng. Đây là lý do cùng một câu hỏi, hai lần hỏi có thể ra hai câu trả lời khác nhau.
Chọn xong một mảnh, mô hình gắn nó vào đoạn văn rồi đoán mảnh tiếp, cứ thế cho tới khi hết câu trả lời. Không có bước nào mô hình "lên dàn ý" rồi mới viết như người. Mọi thứ trông như có kế hoạch là do khuôn mẫu đã học từ hàng triệu văn bản có kế hoạch.
Muốn đoán giỏi, mô hình phải nắm được rằng "thủ đô của Việt Nam là" thường đi với "Hà Nội", rằng sau câu hỏi thường là câu trả lời, rằng một lập luận thường có "vì", "nên". Kiến thức và cách lập luận như được nén vào hàng tỉ trọng số. Nhưng nó được nén theo kiểu thống kê, nên chỗ nào văn bản hiếm hoặc mâu thuẫn, mô hình dễ đoán sai.
Những khái niệm cần biết khi dùng mô hình ngôn ngữ
Token. Mảnh chữ mà mô hình xử lý. Có khi là cả một từ, có khi chỉ là một phần từ. Tiếng Việt có dấu thường bị cắt thành nhiều mảnh hơn tiếng Anh, nên cùng ý nhưng tốn token hơn.
Cửa sổ ngữ cảnh. Lượng chữ mô hình nhìn thấy được trong một lần. Cuộc trò chuyện dài quá cửa sổ thì phần đầu bị cắt bớt, mô hình "quên" điều bạn dặn.
Câu lệnh hay prompt. Toàn bộ những gì bạn đưa vào: yêu cầu, tài liệu, ví dụ. Mô hình chỉ biết những gì có trong câu lệnh cộng với những gì đã học.
Lời dặn hệ thống. Đoạn chỉ dẫn ẩn mà ứng dụng đặt sẵn, như "trả lời lịch sự, chỉ nói về sản phẩm của cửa hàng". Người dùng thường không thấy.
Nhiệt độ. Nút chỉnh mức ngẫu nhiên khi chọn chữ. Thấp thì câu trả lời ổn định, cao thì đa dạng và dễ lan man.
Tiền huấn luyện. Giai đoạn học đoán chữ trên khối văn bản lớn. Tốn kém nhất, tạo ra kiến thức nền.
Tinh chỉnh theo chỉ dẫn. Giai đoạn dạy mô hình trả lời đúng dạng hỏi đáp, làm theo yêu cầu thay vì chỉ viết tiếp văn bản.
Học từ phản hồi của người. Người chấm câu trả lời tốt hay dở, mô hình điều chỉnh theo. Giúp câu trả lời hữu ích và an toàn hơn, nhưng cũng có thể làm nó hay chiều ý người hỏi.
Mốc kiến thức. Thời điểm dữ liệu huấn luyện dừng lại. Chuyện sau mốc này mô hình không biết, trừ khi được tra cứu thêm.
Tra cứu kèm theo. Cách cho mô hình đọc tài liệu hoặc kết quả tìm kiếm trước khi trả lời, giúp cập nhật và bám nguồn hơn.
Tham số. Các trọng số bên trong mô hình. Nhiều tham số thường giỏi hơn nhưng tốn tài nguyên hơn, và không phải yếu tố duy nhất quyết định chất lượng.
Đa phương thức. Mô hình nhận cả ảnh, tiếng ngoài chữ. Chụp ảnh tờ đơn thuốc cũng hỏi được, nhưng chuyện thuốc vẫn phải hỏi dược sĩ.
Từ "đoán chữ" đến "trợ lý biết trò chuyện"
Một mô hình mới học xong giai đoạn đoán chữ thì chưa phải trợ lý. Đưa nó câu "Viết giúp mình email xin nghỉ phép", nó có thể viết tiếp thành một danh sách câu hỏi khác, vì trên mạng câu đó hay nằm trong các bài tổng hợp. Nó chỉ đang viết tiếp văn bản cho giống văn bản thật.
Để thành trợ lý, người ta cho mô hình học thêm hàng loạt cặp hỏi đáp mẫu được viết cẩn thận, rồi cho người chấm điểm các câu trả lời. Qua bước này mô hình học được dạng "người hỏi, trợ lý đáp", học cách từ chối yêu cầu nguy hiểm, học trình bày rõ ràng. Phần lớn tính cách của một chatbot đến từ giai đoạn này.
Một tác dụng phụ đáng biết: vì được thưởng khi làm người hỏi hài lòng, mô hình có xu hướng xuôi theo ý bạn. Hỏi "cách này đúng không" kèm giọng tin chắc, nó dễ gật. Muốn ý kiến thẳng thắn, hãy hỏi trung tính hoặc yêu cầu nó chỉ ra điểm yếu của chính ý bạn.
Các ứng dụng chatbot ngày nay còn gắn thêm công cụ quanh mô hình: tra cứu trên mạng, đọc tệp bạn tải lên, chạy phép tính, nhớ một số thông tin giữa các lần trò chuyện. Những thứ đó giúp bù chỗ yếu của mô hình, nhưng bản thân mô hình bên trong vẫn là cỗ máy đoán chữ.
Mô hình ngôn ngữ giỏi và dở ở đâu với người dùng Việt?
Giỏi viết lại câu chữ. Biến ghi chú lộn xộn thành đoạn văn mạch lạc, đổi giọng trang trọng sang thân mật.
Giỏi giải thích khái niệm phổ thông. Lãi kép là gì, quang hợp diễn ra thế nào. Kiến thức phổ biến có nhiều trong dữ liệu nên ít sai.
Giỏi gợi ý ý tưởng. Tên món mới cho quán, câu hỏi phỏng vấn ứng viên, dàn bài thuyết trình.
Khá ở dịch thông dụng. Email, hướng dẫn, mô tả sản phẩm. Văn bản pháp lý, y khoa cần người chuyên môn soát.
Dở với thông tin rất địa phương. Đường nào ở thị trấn hay ngập, chợ nào họp phiên ngày nào. Dữ liệu ít, mô hình dễ bịa.
Dở với quy định hay đổi. Thủ tục hành chính, mức phí, điều kiện hồ sơ. Luôn hỏi lại cơ quan chức năng hoặc trang chính thức.
Dở với số học nhiều bước. Cộng dồn chi phí cả tháng hay chia tiền nhóm phức tạp. Dùng bảng tính hoặc yêu cầu mô hình dùng công cụ tính.
Dở với tên riêng hiếm. Tên làng, tên người ít người biết dễ bị nhầm hoặc bị gán thông tin của tên khác.
Có thể lẫn văn phong dịch. Câu tiếng Việt đôi khi đọc như dịch từ tiếng Anh, dùng cấu trúc bị động lạ tai. Đọc lại và sửa cho tự nhiên.
Phương ngữ và tiếng lóng. Hiểu được phần lớn, nhưng cách nói riêng vùng miền hoặc tiếng lóng mới nổi có thể bị hiểu lệch.
Không thay được người có chuyên môn. Sức khoẻ, pháp lý, tài chính: dùng để hiểu khái niệm, còn quyết định phải hỏi bác sĩ, luật sư, chuyên gia.
Từ lúc bấm gửi đến lúc chữ hiện ra, chuyện gì xảy ra?
Ứng dụng ghép câu lệnh. Câu bạn gõ được ghép với lời dặn hệ thống, phần trò chuyện trước đó và tài liệu bạn đính kèm thành một khối chữ.
Cắt thành token. Khối chữ được cắt thành các mảnh và đổi thành mã số. Chữ "Nguyễn" có thể thành một hay nhiều mảnh tuỳ bộ cắt.
Đổi mảnh thành vector. Mỗi mảnh thành một dãy số dài thể hiện "nghĩa" của nó trong không gian mà mô hình đã học.
Gắn vị trí. Mô hình được báo mảnh nào đứng trước, mảnh nào sau, vì "chó cắn người" khác "người cắn chó".
Qua các lớp chú ý. Ở mỗi lớp, từng mảnh "nhìn" các mảnh khác và tự cân xem mảnh nào liên quan tới mình. Đây là phần cốt lõi của transformer.
Tính xác suất mảnh tiếp theo. Lớp cuối cho ra một bảng xác suất trên toàn bộ kho mảnh chữ mà mô hình biết.
Chọn một mảnh. Theo cách chọn đã cài đặt: chắc chắn nhất hoặc có chút ngẫu nhiên.
Lặp lại. Mảnh vừa chọn được nối vào, cả quá trình chạy lại để đoán mảnh kế. Đây là lý do chữ hiện ra từ từ trên màn hình.
Có thể gọi công cụ giữa chừng. Nếu ứng dụng cho phép, mô hình có thể dừng lại để tìm kiếm, tính toán, đọc tệp rồi viết tiếp dựa trên kết quả.
Lớp lọc an toàn. Nhiều dịch vụ kiểm tra thêm đầu vào và đầu ra để chặn nội dung độc hại trước khi hiện cho bạn.
Dừng khi xong ý hoặc chạm giới hạn. Mô hình tự sinh dấu kết thúc, hoặc bị dừng vì vượt độ dài cho phép, khi đó câu trả lời có thể bị cụt.
Câu hỏi thường gặp
Vì sao hỏi chatbot hai lần cùng một câu lại ra hai câu trả lời khác nhau?
Vì mô hình chọn từng mảnh chữ theo xác suất và thường được phép chọn hơi ngẫu nhiên để câu văn tự nhiên. Ý chính thường giống nhau, cách diễn đạt khác. Nếu hai lần trả lời trái ngược nhau về sự việc, đó là dấu hiệu mô hình không chắc.
Mô hình ngôn ngữ có tự tra mạng không?
Bản thân mô hình thì không, nó chỉ dùng kiến thức đã học. Một số ứng dụng gắn thêm công cụ tìm kiếm để mô hình đọc kết quả rồi trả lời, khi đó câu trả lời thường có kèm nguồn để bạn kiểm tra.
Vì sao chatbot quên điều mình dặn ở đầu cuộc trò chuyện?
Mỗi lần trả lời, mô hình chỉ nhìn được một lượng chữ giới hạn. Cuộc trò chuyện dài quá thì phần đầu bị cắt hoặc bị tóm tắt. Cách khắc phục là nhắc lại yêu cầu quan trọng hoặc mở cuộc trò chuyện mới kèm bản tóm tắt.
Mô hình ngôn ngữ có học từ cuộc trò chuyện của mình không?
Mô hình không tự học ngay khi bạn trò chuyện. Tuy nhiên tuỳ chính sách của từng dịch vụ, dữ liệu trò chuyện có thể được lưu và dùng để cải thiện sau này. Hãy đọc phần cài đặt quyền riêng tư và tắt nếu không muốn.
Mô hình ngôn ngữ nhỏ chạy trên điện thoại có dùng được không?
Dùng được cho việc gọn như gợi ý câu, tóm tắt ngắn, và có lợi là dữ liệu không rời máy. Với câu hỏi phức tạp hoặc cần kiến thức rộng, mô hình lớn chạy trên máy chủ thường trả lời tốt hơn.