Thuật Toán Trong ChatGPT (phần 2): Giới hạn
Trong phần 1, chúng ta đã có cái nhìn tổng quan về quá trình xử lý của ChatGPT ở mức độ bao quát nhất. Trong phần này, chúng ta sẽ đi sâu vào một khía cạnh quan trọng khác của ChatGPT, đó là giới hạn của thuật toán, để hiểu rõ hơn về giới hạn của ChatGPT.
1. Bối cảnh
Trong giao diện của ChatGPT, có một nút gọi là “Regenerate response” (Tạo lại câu trả lời). Khi bạn không hài lòng với kết quả trả về, bạn có thể nhấn vào nút này để tạo ra một câu trả lời mới. Bằng cách lặp lại quá trình này, bạn có thể tiếp tục tạo ra các câu trả lời mới mỗi khi cần thiết. Tuy nhiên, liệu ChatGPT có thể đạt được đến trình độ tự nhận biết câu trả lời không cần phải chỉnh sửa hoặc thay đổi gì thêm?
2. Giới hạn nhận biết
Câu hỏi này gợi ý đến một bài toán nổi tiếng trong lĩnh vực Khoa học Máy tính, gọi là “Bài toán Dừng” (Halting Problem). Bài toán này liên quan đến việc quyết định xem một chương trình có dừng lại khi chạy với một đầu vào cụ thể hay không.
Vào năm 1936, nhà toán học và cũng là nhà khoa học máy tính Alan Turing đã chứng minh rằng không tồn tại một thuật toán nào có thể giải quyết Bài toán Dừng cho mọi cặp chương trình và đầu vào. Điều này có nghĩa là không có thuật toán nào có thể xác định được một chương trình sẽ dừng lại hay không với một dữ liệu đầu vào.
Tương tự, trong trường hợp của ChatGPT, không có một phương pháp tổng quát nào để xác định khi nào một câu trả lời cần phải được chỉnh sửa thêm hay không. Mặc dù nút “Regenerate response” có thể tạo ra những câu trả lời mới, nhưng không có cách nào để đảm bảo rằng câu trả lời mới sẽ đạt đến sự hoàn thiện hoặc chính xác hơn so với câu trả lời trước đó.
ChatGPT là một mô hình học máy dựa trên việc học tập từ dữ liệu và tạo ra câu trả lời dựa trên ngữ cảnh. Nó không thể tự nhận biết được khi nào câu trả lời cần được chỉnh sửa hoặc không cần thay đổi gì thêm. Trách nhiệm của việc sửa đổi hoặc điều chỉnh câu trả lời vẫn nằm ở người sử dụng.
3. Giới hạn từ vựng
Trong phần 1, chúng ta đã biết rằng mô hình GPT làm việc với các “token”. Mỗi từ được biểu diễn bằng một hoặc nhiều token. Danh sách tất cả các từ vựng trong quá trình huấn luyện được chuyển đổi thành danh sách các token. Sau đó, mỗi token được đánh số theo thứ tự xuất hiện, trong đó các từ xuất hiện nhiều hơn sẽ có số thứ tự nhỏ hơn. Điều này có nghĩa là mô hình GPT chỉ có thể sử dụng các từ trong phạm vi các từ vựng đã được huấn luyện, không có khả năng tạo ra các từ mới hoặc hiểu được các từ không có trong từ điển huấn luyện.
Để hiểu rõ hơn về giới hạn từ vựng này, hãy giả sử rằng phạm vi huấn luyện của mô hình chỉ là một tập hợp các câu sau:
- “Tôi sinh ra ở Việt Nam.”
- “Tôi biết nói tiếng Việt.”
- “Tôi sử dụng đũa khi ăn cơm.”
Quá trình mã hóa tokenization sẽ được thực hiện như sau:
Bước 1: Phân đoạn (Segmentation)
Câu 1: [“Tôi”, “sinh”, “ra”, “ở”, “Việt”, “Nam”, “.”]
Câu 2: [“Tôi”, “biết”, “nói”, “tiếng”, “Việt”, “.”]
Câu 3: [“Tôi”, “sử”, “dụng”, “đũa”, “khi”, “ăn”, “cơm”, “.”]
Bước 2: Mã hóa (Encoding)
Mỗi từ được mã hóa thành một số duy nhất (TokenId). Ví dụ:
Câu 1: [1, 2, 3, 4, 5, 6, 7]
Câu 2: [1, 8, 9, 10, 5, 7]
Câu 3: [1, 11, 12, 13, 14, 15, 16, 7]
Bước 3: Tạo từ điển (Vocabulary)
Tạo từ điển từ danh sách các Token Id duy nhất. Ví dụ:
Từ điển: {“Tôi”: 1, “sinh”: 2, “ra”: 3, “ở”: 4, “Việt”: 5, “Nam”: 6, “.”: 7, “biết”: 8, “nói”: 9, “tiếng”: 10, “sử”: 11, “dụng”: 12, “đũa”: 13, “khi”: 14, “ăn”: 15, “cơm”: 16}
Quá trình mã hóa tokenization này giúp biến đổi các câu văn thành một chuỗi các TokenId, thể hiện các từ và cấu trúc ngữ pháp trong tập huấn luyện. Giới hạn từ vựng của mô hình được xác định bởi tập huấn luyện này là 16 TokenId như trên.
Điều này có nghĩa rằng trong trường hợp ChatGPT, nếu một từ không xuất hiện trong tập huấn luyện, mô hình không hiểu được nghĩa của từ đó hoặc có khả năng tạo ra từ mới không có trong từ điển.