Thuật Toán Trong ChatGPT (phần 3): Đơn vị từ vựng

Trong phần 2, chúng ta đã biết được về giới hạn từ vựng của ChatGPT.  Trong phần này chúng ta sẽ cùng tìm hiểu về đơn vị từ vựng.

1. So sánh 

Hãy cùng ôn những ký ức thời thơ ấu, mỗi con người chúng ta đã học đọc viết như thế nào. Trong tiếng Việt chúng ta đã học cách đánh vần. Ví dụ như từ “tôi”, “môi”, “đôi”, có chung vần “ôi”, chúng ta viết và phát âm bằng cách tách ra phần phụ âm (t,m,đ) và nguyên âm đôi (ôi).

Trong tiếng Anh thì có thể lấy ví dụ các từ như “hello”, “hell”, “help” có chung hai chữ đầu tiên là “he”.

Thuật toán trong ChatGPT sử dụng phương pháp tương tự để phân tách các từ trong kho văn bản (corpus) ra các đơn vị từ vựng, để tạo nên một bộ từ điển huấn luyện (vocabulary). Các đơn vị từ vựng này không phải lúc nào cũng là các từ chính (word) mà thường là ở cấp độ nhỏ hơn là từ phụ(sub-word).

2. Từ Phụ

Trong ChatGPT có sử dụng thuật toán BPE để tạo ra các từ phụ (sub-word) mới từ các từ ban đầu trong kho văn bản, từ đó mở rộng từ vựng và giúp mô hình hiểu được các từ mới chưa có trong kho văn bản ban đầu, dựa trên các quy luật ghép chữ được phát hiện ra khi phân tích các từ có sẵn ban đầu. Thuật toán BPE (Byte-Pair Encoding) vốn là một phương pháp nén dữ liệu nhưng được áp dụng vào trong xử lý ngôn ngữ tự nhiên để phân tách ra các đơn vị từ vựng, hay còn gọi là từ phụ.

Dưới đây là cách thuật toán BPE hoạt động để tạo ra các từ phụ,  với giả sử kho văn bản ban đầu chỉ gồm các từ “đôi môi tôi”.

Bước 1: Tách từ thành các ký tự riêng biệt:

Kho văn bản (Corpus): ['đ', 'ô', 'i', ' ', 'm', 'ô', 'i', ' ', 't', 'ô', 'i']

Từ vựng (Vocabulary): [1:'đ', 2:'ô', 3:'i', 4:' ', 5:'m', 6:'t']

Bước 2: Tính toán tần suất xuất hiện của các cặp ký tự liên tiếp

{"đô": 1, "ôi": 3, "i  ": 2, " m": 1, "mô": 1, "  t": 1, "mô": 1}

Bước 3: Chọn cặp ký tự có tần suất xuất hiện cao nhất (“ôi”) và ghép chúng thành từ phụ mới

Kho văn bản (Corpus): ['đ', 'ôi', ' ', 'm', 'ôi', ' ', 't', 'ôi']

Từ vựng (Vocabulary): [1:'đ', 2:'ô', 3:'i', 4:' ', 5:'m', 6:'t', 7:'ôi']

Bước 4: Tính toán tần suất xuất hiện của các cặp ký tự liên tiếp

{"đôi": 1, "ôi   ": 2, "  m": 1, "môi": 1, "  t": 1, "tôi": 1}

Bước 5: Chọn cặp ký tự có tần suất xuất hiện cao nhất(“ôi    “) và ghép chúng thành từ phụ mới

Kho văn bản (Corpus): ['đ', 'ôi  ', 'm', 'ôi  ', 't', 'ôi']

Từ vựng (Vocabulary): [1:'đ', 2:'ô', 3:'i', 4:' ', 5:'m', 6:'t', 7:'ôi', 8:'ôi  ']

Bước 6: Tính toán tần suất xuất hiện của các cặp ký tự liên tiếp

{"đôi": 1, "ôi   m": 1, "môi  ": 1, "ôi  t": 1, "tôi": 1}

Đến đây thì không còn cặp ký tự nào có tần suất xuất hiện nhiều hơn 1 nữa nên quá trình tạo từ phụ kết thúc với từ điển huấn luyện như dưới đây.

Từ vựng (Vocabulary): [1:'đ', 2:'ô', 3:'i', 4:' ', 5:'m', 6:'t', 7:'ôi', 8:'ôi  ']

Kho văn bản (Corpus): ['đ', 'ôi  ', 'm', 'ôi  ', 't', 'ôi']

Như vậy qua thuật toán BPE, chúng ta đã tạo ra các từ phụ như “ôi”, “ôi   “, từ đó mở rộng từ vựng và giúp mô hình ChatGPT xử lý được cho các từ mới chưa có trong kho văn bản ban đầu, ví dụ như ghép các từ phụ sau có thể tạo thành các từ mới chưa có trong kho văn bản “đ-ô”, “đ-i”, “m-ô” . Điều này hữu ích khi xử lý các từ hiếm gặp hoặc không thấy trong kho văn bản huấn luyện.

Tìm hiểu được đến đây chúng ta cần đính chính lại nội dung của phần 2 một chút. Đó là với việc đưa vào sử dụng thuật toán BPE phân tách mỗi từ trong kho văn bản ra thành các từ phụ thì mô hình GPT có thể xử lý được những từ chưa hề gặp, là những từ có thể được tạo ra bằng cách ghép nối các từ vựng có sẵn như ví dụ trên.

Nếu gặp một ký tự mà không có trong danh sách từ vựng thì ChatGPT sẽ xử lý ký tự đó là ‘unknown’, ví dụ như khi nhập vào từ “xôi”, trong đó ký tự “x” không có trong từ vựng thì sẽ được chuyển thành “unknown-ôi”.

 

Add a Comment

Scroll Up