Để giúp anh/chị quyết định có đọc tiếp hay không, tôi xin phép cung cấp các thông tin liên quan đến bài post này như sau:
- Chủ đề: Machine Learning.
- Tính thời sự: Tháng 12/2021.
- Thời gian đọc: Đọc hết: 15 phút, đọc ý chính: 7 phút.
~
Hôm nay xin phép anh/chị chúng ta đàm luận về chủ đề “máy hiểu ngôn ngữ tự nhiên”. Chủ đề này có vẻ quá tham vọng, đúng không ạ? Ngay như bản thân chúng ta, mấy ai dám tự tin nói rằng mình hiểu ngôn ngữ tiếng Việt. Tất nhiên, “hiểu ngôn ngữ” có mức độ của nó. Các nhà văn, nhà văn hóa họ hiểu ngôn ngữ một cách sâu sắc. Người thường như tôi thì mức độ hiểu ngôn ngữ hạn chế hơn nhiều. Như vậy, cụm từ “hiểu ngôn ngữ” hàm chứa mức độ: hiểu đến mức nào. Đến cuối bài đàm luận này, anh/chị sẽ thấy là trong một số tác vụ, con người chưa hẳn là hiểu ngôn ngữ hơn máy đâu!
-
Đề dẫn.
Nhưng trước hết, dựa trên cơ sở nào để máy có thể hiểu được ngôn ngữ? Trong một lần nhàn đàm trước, tôi có đề cập đến tính chất autoregressive (tự động tiếp diễn) của dữ liệu như văn bản, phát âm, nét chữ viết tay. Con người suy luận dựa trên hiểu biết về quá khứ. Khi anh/chị đọc bài post này, anh/chị hiểu từng từ dựa trên sự hiểu biết của anh/chị về những từ trước đó. Rõ ràng là như vậy. Anh/chị không vứt bỏ mọi thứ và bắt đầu suy nghĩ lại từ đầu. Dòng suy nghĩ của anh/chị có tính phát sinh liên tục: cái sau dựa vào chuỗi của những cái trước đó. Để hiểu từ đang đọc, bằng một cách nào đó, chúng ta “liên kết” với các từ đứng đằng trước, thậm chí là các từ đứng ở đầu bài post. Nói một cách khác, dữ liệu là chuỗi mà phần tử thứ n+1 là một hàm (xác suất) của n phần tử trước đó: xn+1 = FP(x1, x2, …, xn) – trong đó FP(.) là hàm xác suất xuất hiện phần tử xn+1 từ chuỗi x1, x2, …, xn. Nếu bằng một cách nào đó, máy có thể lưu giữ một số lượng cực lớn các quy tắc suy luận như trên, thì chúng ta có thể coi như “máy hiểu” các văn bản mà nó đọc.
-
⧛
ⓐ Natural Language Understanding
Vào tháng 6/2018, OpenAI đăng bài báo về một mô hình liên quan đến NLU (Natural Language Understanding). Hướng tiếp cận của họ vào thời điểm đó được cho là khá mới mẻ và khác biệt.
Hệ thống của họ hoạt động theo 2 giai đoạn. Đầu tiên mô hình được huấn luyện không giám sát (unsupervised) với tập dữ liệu cực lớn – dữ liệu Autoregressive không dán nhãn. Sau đó, họ điều chỉnh mô hình theo từng tác vụ (Task) dựa vào tập dữ liệu có dán nhãn:
- Giai đoạn 1 được đặt tên là Generative Pre-Training. Dữ liệu đầu vào của giai đoạn này có tính chất Autoregressive. Kỳ vọng của họ là, với tập dữ liệu khổng lồ, mô hình có thể “nắm bắt” gần hết các quy tắc suy diễn!
- Giai đoạn 2 có tên là Fine-tuning, tinh chỉnh các tham số đã được tạo ra ở giai đoạn 1. Dữ liệu của giai đoạn 2 là dữ liệu có dán nhãn. Logic của vấn đề là ở chỗ: sau giai đoạn 1, mô hình về cơ bản đã nắm bắt các quy tắc suy diễn tổng quát; ở giai đoạn 2, mô hình chỉ cần chỉnh các hiểu biết tổng quát đó “nắn theo” các quy tắc suy diễn cục bộ của tác vụ là được.
Mô hình theo quy tắc Pre-training – Fine-tuning cho kết quả tốt hơn mô hình chuyên biệt cho từng tác vụ. Phát hiện này gây ngạc nhiên thú vị cho cộng đồng Machine Learning.
Một điểm khác, xin đàm luận cùng anh/chị: dữ liệu dán nhãn và không dán nhãn. Chúng ta chứng kiến nhiều mô hình mạng nơ-ron thành công với dữ liệu dán nhãn. Điển hình về loại mô hình này: dịch máy (Neural Machine Translation), nhận dạng giọng nói (Speech Recognition), thị giác máy tính (Computer Vision). Tuy nhiên, việc tổ chức dán nhãn thường dày công và cần nhiều nguồn lực, nhiều lúc là không khả thi khi số lượng nhãn quá lớn.
Chúng ta cũng biết rằng, trong NLP (Natural Language Processing), nguồn dữ liệu ngôn ngữ có rất nhiều và đa dạng: tập hợp các tác phẩm văn học, lịch sử, báo chí, tạp chí, blog, … Đặc biệt, nguồn ngữ liệu trực tuyến (online) nhiều “vô kể”, lại phát sinh liên tục không ngừng. Nguồn này do người dùng Internet post lên mạng. Nguồn dữ liệu ngôn ngữ này, tuyệt đại đa số, là không dán nhãn. Vì vậy, vào khoảng thời gian năm 2018, cộng đồng Machine Learning “đổ xô” vào nghiên cứu các mô hình không giám sát, sử dụng dữ liệu ngôn ngữ không dán nhãn.
-
⧛
ⓑ Mô hình NLU
Tiếp theo, tôi xin phép lược điểm một số mô hình NLU (Natural Language Understanding) theo cách tiếp cận 2 giai đoạn: Pre-training với tập dữ liệu văn bản không dán nhãn và Fine-tuning với dữ liệu dán nhãn. Khi theo dõi diễn tiến của cộng đồng nghiên cứu, chúng ta thấy lĩnh vực này có sự tham gia của hầu hết các đại gia công nghệ: OpenAI, Google, Facebook, Microsoft, NVIDIA, IBM, Baidu, Huawei, Alibaba, Infosys, Tencent, … Thông thường, các công ty họ có mô hình NLU của riêng họ. Tuy nhiên, theo quan sát của cá nhân tôi, thì 2 mô hình GPT (của OpenAI) và BERT (của Google) có tính đột phá và là mô hình mở đường cho các mô hình khác. Vì vậy, mời anh/chị tham khảo chi tiết 2 mô hình này.
① GPT (Generative Pre-trained Transformer)-OpenAI.
Đầu tiên chúng ta cùng bàn đến dòng GPT của OpenAI. Tôi dùng từ “dòng GPT” vì GPT (đến thời điểm của bài post này) có 3 phiên bản: GPT-1, GPT-2 và GPT-3. Có thể diễn đạt một cách cô đọng thuật toán của dòng GPT: đoán từ (word) tiếp theo của đoạn văn bản trước đó gồm n từ: xn+1 = FP(x1, x2, …, xn).
- Mô hình nền. Thông thường, với dữ liệu sắp xếp theo chuỗi thì người ta hay nghĩ đến mạng RNN (hoặc LSTM – là biến thể của RNN). Tuy nhiên, đó chỉ là cách tiếp cận trước năm 2017. Kể từ khi mô hình Transformer ra đời (tháng 6/2017), cách tiếp cận trước đây theo RNN hầu hết được thay thế bằng Transformer. Vì sao vậy? Cái cơ bản nhất: RNN chậm. Trong RNN, dữ liệu đầu vào/đầu ra được nhập/xuất một cách tuần tự từ 1 đến n và mô hình RNN phải cần đến n nhịp để thực thi chuỗi n phần tử. Mô hình Transformer khắc phục được nhược điểm này của RNN. Trong Transformer, toàn bộ n phần tử của chuỗi được xử lý đồng thời. Có thể anh/chị sẽ đặt câu hỏi: thế thứ tự các phần tử (x1, x2, …, xn) có được lưu giữ đúng không? Câu trả lời là: Có, Transformer lưu giữ toàn bộ các phần tử theo đúng thứ tự của chúng. Bằng cách nào? Trả lời: Transformer mã hóa vị trí toàn bộ n phần tử. Một đặc tính nổi bật, hơn hẳn RNN của Transformer là mô hình này cho phép tính toán song song. Vì vậy, Transformer tận dụng được phần cứng của hệ thống có nhiều GPU.
-
Thế GPT sử dụng Transformer như thế nào? Mô hình Transformer có 2 phần là phần mã hóa (Transformer Encoder) và phần giải mã (Transformer Decoder). GPT chỉ sử dụng phần giải mã (Transformer Decoder).
-
- Các phiên bản. Dòng GPT có 3 phiên bản: GPT-1, GPT-2 và GPT-3. Để tiện so sánh, đối với mỗi phiên bản, tôi sẽ tóm lược ý tưởng chính, tập mẫu dữ liệu mà họ dùng để huấn luyện, số tham số của mô hình và chất lượng nổi bật của mô hình đó.
💡 Ý tưởng chính của phiên bản này là huấn luyện dữ liệu không dán nhãn (văn bản) cho Pre-training và huấn luyện tinh chỉnh có dán nhãn (Fine-tuning) đối với tập mẫu dữ liệu của từng tác vụ cụ thể.
▓ Tập mẫu dữ liệu cho Pre-training là kho ngữ liệu BooksCorpus gồm 7,000 cuốn sách chưa xuất bản.
Σ Số tham số của mô hình: 117 triệu.
✔ Chất lượng nổi bật: Trong số 12 tác vụ cụ thể mà họ thử nghiệm thì GPT-1 đạt được 9 kết quả tốt hơn các mô hình khác với cùng tác vụ. Mô hình này chứng minh rằng cách tiếp cận Pre-training với dữ liệu văn bản (không dán nhãn) cho kết quả rất hứa hẹn, mở đường cho các mô hình khác tiếp cận theo cùng phương thức nhưng với số tham số lớn hơn nhiều.
-
💡 GPT-2 thừa kế ý tưởng của GPT-1. Nghĩa là: Pre-training huấn luyện dữ liệu không dán nhãn, còn fine-tuning huấn luyện dữ liệu có dán nhãn. Tuy nhiên, ở giai đoạn Pre-training, GPT-2 đưa vào ý tưởng mới: Task Conditioning (tạm dịch là Chỉ định tác vụ). Theo ý kiến cá nhân tôi, đây là một ý tưởng đột phá.
-
Task Conditioning là gì vậy? Bình thường, chúng ta có thể xem mô hình ngôn ngữ như hàm xác suất P(Output | Input). Nghĩa là đầu ra (Output) được tính toán (một cách xác suất) của đầu vào (Input). Trong GPT-2, mô hình ngôn ngữ được chuyển thành P(Output | Input, Task). Nghĩa là cùng một đầu vào (Input), tùy theo tác vụ (Task), đầu ra (Output) sẽ khác nhau. Theo đó, khi dung lượng tập dữ liệu không dán nhãn đủ phong phú thì một cách vô tình mô hình đã “lồng” dữ liệu dán nhãn ở giai đoạn Pre-training. Một vài ví dụ về mẫu huấn luyện Task Conditioning:
* Huấn luyện dịch máy (Machine Translation): đưa vào chuỗi văn bản theo format như sau:
[Dịch tiếng Anh ra tiếng Pháp, Câu tiếng Anh, Câu tiếng Pháp]
* Huấn luyện đọc hiểu (Reading Comprehension): đưa vào chuỗi văn bản theo format như sau:
[Trả lời câu hỏi, Tài liệu, Hỏi, Trả lời]
⚠ Chú ý: Trong các ví dụ trên, phân chữ in nghiêng là Chỉ định tác vụ (Task Conditioning).
-
Với cách tiếp cận này, khi tinh chỉnh (Fine-tuning), GPT-2 cần rất ít nhãn (trong bài báo họ gọi là Few-shot learning), thậm chí là không sử dụng một nhãn nào (Zero-shot learning)! Họ làm được như vậy là nhờ sau giai đoạn Pre-training, mô hình ít nhiều đã chứa nhãn của giai đoạn Fine-tuning.
▓ Để đảm bảo chất lượng, mô hình lấy dữ liệu từ trang Reddit và các đường link ngoài xuất phát từ trang này. Kết quả được họ đặt tên là WebText với dung lượng lên đến 40 GB, lấy từ hơn 8 triệu tài liệu.
Σ GPT-2 có 4 loại kích cỡ, với số lượng tham số tương ứng như sau:
• 117 M (triệu)
• 345 M
• 762 M
• 1,542 M
✔ Chất lượng nổi bật: Sau giai đoạn Pre-training, không cần Fine-tuning, trong số 8 tác vụ, GPT-2 cho 7 kết quả tốt hơn các mô hình khác.
-
⚠ Bài báo nhận định: chất lượng mô hình tỷ lệ theo hàm log tuyến tính (log-linear) của dung lượng dữ liệu và số tham số của mô hình.
-
💡 Như nhận định từ GPT-2, mục tiêu của GPT-3 là tăng dữ liệu huấn luyện và tăng tham số của mô hình (đồng nghĩa với tăng chất lượng mô hình). Tham vọng của GPT-3 là mô hình này không cần Fine-tuning hoặc chỉ cần 1 hoặc rất ít nhãn thì đã suy diễn được đầu ra từ đầu vào. GPT-3 đưa vào một ý tưởng mới mang tính đột phá mà họ đặt tên là In-context learning (tạm dịch là Học theo ngữ cảnh).
-
In-context learning là gì? Đối với con người, chúng ta thu nhận kiến thức gần giống với giai đoạn Pre-training. Khi suy diễn một vấn đề nào đó (gần giống với mô hình suy diễn), chúng ta trước hết nhận diện tác vụ. Máy cũng vậy. Nhưng máy chỉ có khả năng nhận diện tác vụ qua đoạn văn bản đầu vào. Kỹ năng này có tên gọi là pattern recognition (nhận dạng mẫu): “mẫu” văn bản như vậy tương ứng với “tác vụ” nào. Các tác giả bài báo gọi là In-context learning. Họ chia thành 4 mẫu ngữ cảnh tiêu biểu của GPT-3 gồm:
• Fine-Tuning (FT): Trường hợp này mô hình cần hàng nghìn đến hàng trăm nghìn mẫu dữ liệu có dán nhãn để điều chỉnh trọng số (weight) trước khi đi vào thực tế sử dụng.
• Few-Shot (FS): Trường hợp này mô hình cần K mẫu demo nhưng không được phép điều chỉnh trọng số. K nằm trong khoảng 10-100. K mẫu này dùng để làm gì? Chỉ là để cho máy “nhận dạng tác vụ”!
• One-Shot (1S): Tương tự như Few-Shot nhưng trong trường hợp này, máy chỉ cần 1 mẫu để “nhận dạng tác vụ”.
• Zero-Shot (0S): Không cần mẫu demo mà vẫn biết được tác vụ! Trường hợp này dễ bị hiểu nhầm là “máy tự động hiểu”. Không phải vậy, thưa anh/chị. Thực chất, mô hình vẫn cần một mẫu nhưng mẫu này được ẩn đi bằng một câu lệnh. Ví dụ về câu lệnh: “Dịch tiếng Anh ra tiếng Pháp:”. Sau đó nếu chúng ta đưa vào từ “cheese” thì máy sẽ cho kết quả là “du fromage”.
▓ GPT-3 huấn luyện với 5 kho ngữ liệu là Common Crawl, WebText2, Books1, Books2 và Wikipedia (trong Wikipedia họ chỉ lấy phần tiếng Anh). Mỗi kho ngữ liệu được gắn với một trọng số tương ứng với chất lượng của kho ngữ liệu đó. Kho ngữ liệu có chất lượng cao thì mô hình sẽ lấy mẫu nhiều lần hơn kho ngữ liệu có chất lượng thấp.
Σ Số tham số của mô hình: 175 tỷ (gấp hơn 100 lần số tham số của GPT-2). Khi huấn luyện, người ta chia nhỏ thành 8 kích cỡ khác nhau như trong bảng dưới đây:
Tên mô hình
|
Số tham số
|
GPT-3 Small
|
125 M (triệu)
|
GPT-3 Medium
|
350 M
|
GPT-3 Large
|
760 M
|
GPT-3 XL
|
1.3 B (tỷ)
|
GPT-3 2.7B
|
2.7 B
|
GPT-3 6.7B
|
6.7 B
|
GPT-3 13B
|
13 B
|
GPT-3 175B (GPT-3)
|
175 B
|
✔ Chất lượng nổi bật: Ngoài các kết quả với các chất lượng cao hơn các mô hình khác (ví dụ: đọc hiểu, dịch máy) GPT-3 có một số tính năng đặc biệt. Ví dụ: có thể thực hiện các phép cộng trừ số học 2 chữ số, biết sắp xếp lại các ký tự của một từ đã bị xáo trộn sao cho đúng chính tả, biết viết các bản tin gần bằng chất lượng của các nhà báo, biết học và sử dụng từ mới.
-
② BERT (Bidirectional Encoder Representations from Transformers)-Google.
Tiếp theo, chúng ta cùng bàn đến mô hình BERT của Google. Cũng giống như GPT, BERT gồm 2 giai đoạn là Pre-training và Fine-tuning. Pre-training được huấn luyện với dữ liệu không dán nhãn và Fine-tuning sử dụng dữ liệu có dán nhãn tùy theo từng tác vụ (Task) cụ thể. BERT cũng sử dụng mô hình Transformer, nhưng họ chỉ sử dụng phần mã hóa (Transformer Encoder).
-
💡 Ý tưởng chính. BERT có một điểm khác cơ bản trong cách tiếp cận so với GPT. Mô hình như GPT được gọi là mô hình từ-trái-sang-phải. Vì sao vậy? Vì GPT xác định phần tử thứ n+1 (xn+1) từ n phần tử trước đó (x1, x2, …, xn). Ngược lại, một mô hình được gọi là từ-phải-sang-trái nếu mô hình đó xác định phần tử bên trái cùng (x1) từ n phần tử bên phải ngay sau phần tử đó (x2, …, xn, xn+1).
BERT là mô hình 2 chiều (bidirectional) bao gồm cả từ-trái-sang-phải và từ-phải-sang-trái. Khi huấn luyện, theo cách truyền thống (đoán phần tử tiếp theo từ n phần tử trước đó) thì chuỗi các phần tử sẽ dự đoán “chính nó”. Nếu để nguyên như vậy thì mô hình sẽ bị “chập” vì kết quả đúng 100% dẫn đến là mô hình sẽ không điều chỉnh được các trọng số (weight).
Làm thế nào để xử lý trường hợp này? Họ xử lý bằng cách “che” (mask) một số phần tử trong n phần tử của chuỗi và việc huấn luyện là dự đoán các từ đã bị “che” đó. Về mặt nghiên cứu văn học, phương pháp này có tên gọi là “Cloze Procedure” do Wilson L. Taylor đề xướng vào năm 1953 (tham khảo bài báo ở đây).
Để cho dễ hiểu, tôi lấy một ví dụ trong tiếng Việt. Việc của BERT là phải điền vào chỗ trống (…) từ thích hợp trong câu: “ông nói … bà nói vịt”. Đối với người Việt chúng ta thì rất dễ nhận biết từ cần điền là từ “gà”. Nhưng “máy” không biết đâu, nó phải quét qua hàng nghìn, hàng triệu văn bản để tìm từ thích hợp. Khi máy quét (huấn luyện) là lúc mô hình điều chỉnh các trọng số sao cho mô hình có thể “hiểu” các văn bản mà nó đọc!
-
▓ Tập mẫu dữ liệu. Kho ngữ liệu về sách BooksCorpus (800 triệu từ) và Wikipedia phần tiếng Anh (loại bỏ danh mục, bảng biểu, đầu đề) với dung lượng là 2.5 tỷ từ. Tổng dung lượng của 2 kho ngữ liệu này là 16GB.
-
Σ Số tham số. BERT có 2 kích cỡ: BERTBASE và BERTLARGE.
BERTBASE có 110 triệu tham số và BERTLARGE có 340 triệu tham số.
-
✔ Chất lượng nổi bật. BERT đạt kết quả tốt hơn các mô hình khác: 8/9 tác vụ (Task) của GLUE, + 3 tác vụ khác gồm: Stanford Question Answering Dataset (SquAD): SquAD v1.1, SquAD v2.0, Situations With Adversarial Generations (SWAG).
-
⧛
Tiếp theo, chúng ta bàn đến việc đo chất lượng các mô hình đã lược kể ở trên. Anh/chị có thể đặt câu hỏi: làm thế nào để đánh giá, hoặc chấm điểm mô hình “máy hiểu ngôn ngữ tự nhiên”? Trả lời: cũng giống như thời chúng ta còn đi học phổ thông, thầy cô đánh giá năng lực học tập của chúng ta qua bảng điểm. Giới nghiên cứu Machine Learning cũng làm như vậy để chấm điểm các mô hình. Vào tháng 4/2018, người ta đưa ra thước đo GLUE [ bài báo ]. Rất nhanh sau đó, nhiều mô hình đã đạt điểm “tối đa” (giống như chúng ta ra đề thi dễ quá, nhiều học sinh đạt điểm tối đa, rất khó phân hạng để tuyển chọn vào đại học 😊). Vì lý do này, khoảng một năm sau, vào tháng 5/2019, người ta đưa ra một thước đo khác, tương tự như GLUE nhưng khó hơn, có tên gọi là SuperGLUE [ bài báo ]. Trong phần tiếp theo, tôi xin phép đề cập đến hai thước đo này. Qua đó, có thể chúng ta ít nhiều học được cách làm của họ trong việc thúc đẩy nghiên cứu “máy hiểu được ngôn ngữ tiếng Việt”!?
① GLUE (General Language Understanding Evaluation).
Trước năm 2018, các mô hình NLU (Natural Language Understanding) thường chỉ tập trung vào một tác vụ (Task). Mô hình cho một tác vụ nào đó không thể đem áp dụng sang tác vụ khác được.
Tuy nhiên, để đánh giá mô hình “máy hiểu ngôn ngữ”, rõ ràng là chúng ta cần đánh giá mô hình với rất nhiều các tác vụ. Những tác vụ nào cần được đánh giá để coi như “máy hiểu ngôn ngữ”? Có thể không bao giờ có câu trả lời đúng cho câu hỏi này, vì đơn giản là số tác vụ nhiều “vô kể”. Nhưng nghiên cứu khoa học là “dùng cái hữu hạn để tiếp cận cái vô hạn” mà 😊!?
Mục tiêu của GLUE là đánh giá mô hình NLU đa tác vụ, tương tự như GPT hoặc BERT. (Anh/chị chú ý các bài báo về Machine Learning thường dùng từ Model-Agnostic, tôi dịch là mô hình đa tác vụ.) GLUE chỉ đánh giá thông qua 9 tác vụ. Mỗi một tác vụ được chọn là một công trình nghiên cứu về NLP (Natural Language Processing) đã đăng trước đây, ít nhiều đã được giới nghiên cứu “thừa nhận”.
➡ Tiếp theo, tôi xin liệt kê danh mục các tác vụ (xem chi tiết trên trang GLUE). (Đối với các anh/chị không thích đi sâu vào chi tiết, xin vui lòng bỏ qua.)
- CoLA (Corpus of Linguistic Acceptability - 2018). Kho ngữ liệu này gồm tập hợp câu tiếng Anh đã được dán nhãn là đúng ngữ pháp hoặc không đúng ngữ pháp. Việc của tác vụ là dự đoán xem câu đầu vào (input) có đúng ngữ pháp hay không.
- SST-2 (Stanford Sentiment Treebank - 2013). Gồm tập hợp các câu về bình luận phim (movie reviews) được dán nhãn là cảm nhận của độc giả: thích / chê (positive / negative). Việc của tác vụ là đưa ra dự đoán về cảm nhận của độc giả đối với câu đầu vào (input).
- MRPC (Microsoft Research Paraphrase Corpus – 2005). Gồm các cặp câu trích ra từ các bản tin. Các cặp này được dán nhãn là đồng nghĩa / không đồng nghĩa. Việc của tác vụ là phải dự đoán được nhãn (đồng nghĩa / không đồng nghĩa).
- QQP (Quora Question Pairs). Tuyển chọn các cặp câu hỏi trên trang Quora, được dán nhãn đồng nghĩa / không đồng nghĩa. Việc của tác vụ là phải dự đoán được nhãn (đồng nghĩa / không đồng nghĩa).
- STS-B (Semantic Textual Similarity Benchmark – 2017). Tuyển chọn cặp câu từ tiêu đề các bản tin, video, chú thích hình ảnh. Các cặp câu này được dán nhãn mức đồng nghĩa từ 1-5. Việc của tác vụ là dự đoán mức đồng nghĩa.
- MNLI (Multi-Genre Natural Language Inference Corpus – 2018). Tuyển chọn cặp câu hàm chứa lẫn nhau (entailment). {Hàm chứa (entailment) được hiểu là “câu này có thể suy ra câu kia”.} Cấu trúc cặp câu này gồm một câu tiền đề (premise) và một câu giả thuyết (hypothesis). Việc của tác vụ là xác định xem câu tiền đề hàm chứa (entailment) giả thuyết, mâu thuẫn (contradiction) với giả thuyết hoặc 2 câu này bất liên quan (neutral). Chú ý rằng MNLI có 3 loại nhãn: entailment, contradiction và neutral.
- QNLI (Stanford Question Answering Dataset – 2016). Tuyển chọn tập dữ liệu gồm (“câu hỏi” – “mục văn bản”). Người ta trích một câu trong “mục văn bản” cô đọng nhất để “trả lời” cho “câu hỏi”. Việc của tác vụ là xác định xem có đúng câu trích ra là thực sự trả lời cho câu hỏi hay không.
- RTE (Recognizing Textual Entailment - 2006). Tác vụ nhận dạng tính hàm chứa (entailment) của văn bản. Tập mẫu dữ liệu này tương tự như MNLI nhưng người ta chập contradiction & neutral thành not_entailment. Nghĩa là RTE chỉ phân thành 2 loại nhãn là entailment và not_entailment. Việc của tác vụ là phải chọn đúng nhãn [tức là tiền đề (premise) có hàm chứa giả thuyết (hypothesis) hay không].
- WNLI (Winograd Schema Challenge – 2011). Tác vụ đọc – hiểu văn bản. Hệ thống cho câu có chứa một đại từ (pronoun). Đại từ này tham chiếu đến một từ hoặc cụm từ trong câu đó. Người ta liệt kê tất cả các tùy chọn mà đại từ đó có thể tham chiếu đến. Việc của tác vụ là phải chọn đúng đại từ thay thế vào câu gốc.
➡ Phương pháp đánh giá và xếp hạng. (Đối với các anh/chị không thích đi sâu vào chi tiết, xin vui lòng bỏ qua.)
Cách tính điểm. Mô hình được đánh giá theo từng tác vụ, sau đó tính điểm tổng theo phương pháp trung bình cộng, hệ số 100.
Cách tham gia. Truy cập trang GLUE, vào mục Tasks, tải dữ liệu của từng tác vụ về máy (file zip). Unzip vào từng thư mục tương ứng với tác vụ, sẽ được 3 file lần lượt có tên là dev.tsv, train.tsv và test.tsv. (File tsv (tab-separated value) là loại file văn bản thuần (text) chứa bảng dữ liệu mà các cột được phân cách bằng ký tự tab – mã 09.) File train.tsv (có dán nhãn) dùng để huấn luyện, file dev.tsv (có dán nhãn) dùng để thẩm định (validate) mô hình và file test.tsv (không dán nhãn) dùng để kiểm tra kết quả mô hình và nộp (upload) cho “ban giám khảo” GLUE. Căn cứ vào kết quả tải lên, người ta chấm điểm từng tác vụ, tính điểm trung bình, sau đó xếp hạng.
Phân tích hiệu năng. Ngoài 9 tác vụ dùng để chấm điểm, GLUE còn bổ sung một tập dữ liệu dùng để phân tích, chẩn đoán hiệu năng mô hình, có tên gọi là tập dữ liệu chẩn đoán (Diagnostic Dataset) (không dán nhãn) gồm các cặp câu hàm chứa lẫn nhau (entailment) - cấu trúc giống tác vụ MNLI.
❔ Mục tiêu của Diagnostic Dataset là gì? Có thể anh/chị sẽ đặt câu hỏi như vậy. Thông thường, mô hình mạng nơ-ron tích lũy kiến thức thông qua việc huấn luyện với tập dữ liệu mẫu được dán nhãn. So sánh với con người, ngoài việc chúng ta đọc dữ liệu mẫu, để hiểu ngôn ngữ, chúng ta thường vận dụng kiến thức đã được tích hợp đâu đó từ trước. Ý tưởng của GLUE khi đưa Diagnostic Dataset vào là kiểm tra xem mô hình có khả năng “tích hợp kiến thức đâu đó từ trước” hay không, khi cố tình không cung cấp tập dữ liệu mẫu.
⚠ Chú ý rằng việc chẩn đoán này không đưa vào tính điểm xếp hạng, chỉ có tác dụng giúp cho nhóm thiết kế phân tích hiệu năng của mô hình.
-
Một cách trực quan: SuperGLUE tương tự như GLUE nhưng khó hơn. Ngoài yêu cầu mô hình cần “hiểu” (understand), SuperGLUE còn đưa vào chấm điểm kỹ năng “suy luận” (reason) đối với ngôn ngữ tiếng Anh!
SuperGLUE gồm 8 tác vụ, trong đó 6 tác vụ được thiết kế mới và 2 tác vụ được chuyển từ GLUE sang.
➡ Tôi xin liệt kê các tác vụ của SuperGLUE trong phần tiếp theo. (Đối với các anh/chị không thích đi sâu vào chi tiết, xin vui lòng bỏ qua.)
- BoolQ (Boolean Questions – 2019). Đây là tác vụ Hỏi – Đáp (Question Answering). Mẫu dữ liệu gồm (đoạn văn, câu hỏi liên quan đến đoạn văn). Câu hỏi dạng Yes/No. Việc của tác vụ là chọn Yes hoặc No.
- CB (CommitmentBank – 2019). Đây là tác vụ đoán cam kết của diễn ngôn. Mẫu của dữ liệu là đoạn văn bản ngắn (diễn ngôn) có chứa ít nhất một mệnh đề nhúng (embedded clause). Từ “ngữ nghĩa” của đoạn văn và mệnh đề nhúng, người ta lập thành một tiền đề (premise) hàm chứa mệnh đề nhúng và một giả thuyết (hypothesis) tương ứng. Việc của tác vụ là xác định xem câu tiền đề hàm chứa (entailment) giả thuyết, mâu thuẫn (contradiction) với giả thuyết hoặc 2 câu này bất liên quan (neutral).
- COPA (Choice of Plausible Alternatives - 2011). Đây là tác vụ suy luận Nhân – Quả. Hệ thống cho một câu tiền đề và việc của tác vụ là phải xác định nguyên nhân (cause) hoặc kết quả (effect) của tiền đề từ danh mục hai lựa chọn.
- MultiRC (Multi-Sentence Reading Comprehension - 2018). Đây là tác vụ Hỏi – Đáp (Question Answering). Mẫu dữ liệu gồm một văn bản ngữ cảnh (Context Paragraph), một câu hỏi về nội dung văn bản này và liệt kê các câu trả lời theo hình thức đa lựa chọn (Multiple Choice). Việc của tác vụ là đánh dấu True/False vào từng lựa chọn.
- ReCoRD (Reading Comprehension with Commonsense Reasoning Dataset - 2018). Đây là tác vụ Đọc – Hiểu (Reading Comprehension). Mẫu dữ liệu gồm bản tin ngắn và một câu hỏi dạng “điền từ vào chỗ trống”. Từ cần điền vào chỗ trống được lấy từ các cụm từ thuộc bản tin.
- RTE (Recognizing Textual Entailment - 2006). Tác vụ nhận dạng tính hàm chứa (entailment) của văn bản. Hệ thống cho một văn bản tiền đề (premise) và một câu giả thuyết (hypothesis). Việc của tác vụ là xác định xem văn bản tiền đề có hàm chứa (entailment) giả thuyết hay không.
⚠ Tác vụ này được chuyển từ GLUE sang. Chú ý: người ta gộp contradiction và neutral thành not_entailment. Như vậy, RTE trong SuperGLUE chỉ có 2 loại nhãn là entailment và not_entailment.
- WiC (Word-in-Context - 2019). Đây là tác vụ phân biệt nghĩa của từ đa nghĩa (polysemous). Hệ thống cho 2 đoạn văn bản có chứa cùng một từ đa nghĩa. Việc của tác vụ là xác định xem từ đó ở 2 đoạn văn bản đó có cùng nghĩa hay không.
- WSC (Winograd Schema Challenge - 2012). Đây là tác vụ giải tham chiếu của đại từ (pronoun) trong câu văn. Hệ thống cho câu có chứa một đại từ. Đại từ này tham chiếu đến một từ (hoặc cụm từ) trong câu đó. Người ta liệt kê tất cả các tùy chọn mà đại từ đó có thể tham chiếu đến. Việc của tác vụ là phải chọn đúng tùy chọn để thay thế vào đại từ trong câu gốc.
⚠ Chú ý: tác vụ này được chuyển từ GLUE sang. (Tên cũ ở GLUE là WNLI.)
➡ Phương pháp đánh giá và xếp hạng. (Đối với các anh/chị không thích đi sâu vào chi tiết, xin vui lòng bỏ qua.)
SuperGLUE có cách tính điểm, cách xếp hạng hoàn toàn tương tự như GLUE. Tuy nhiên, có 2 điểm khác biệt nhỏ.
- File dữ liệu có dạng thức là .jsonl (JSON Lines). JSON: JavaScript Object Notation.
- Phần phân tích hiệu năng có 2 công cụ.
- Công cụ kiểm tra “hiểu biết thường thức” (Common Sense) tương tự như công cụ Diagnostics của GLUE. Trên bảng tác vụ (Tasks), công cụ này có tên là “Broadcoverage Diagnostics” với mã hiệu là “Ax-b”.
- Công cụ kiểm tra “định kiến giới tính” (Gender Bias), chỉ có ở SuperGLUE. Trên bảng tác vụ (Tasks), công cụ này có tên là “Winogender Schema Diagnostics” với mã hiệu là “Ax-g”.
-
Một vài nhận xét chung về GLUE và SuperGLUE. (Đối với các anh/chị không thích đi sâu vào chi tiết, xin vui lòng bỏ qua.)
Nhận xét 1. Khi quan sát 2 bảng xếp hạng (xếp hạng GLUE, xếp hạng SuperGLUE), anh/chị sẽ thấy có “mô hình” với tên lần lượt là “GLUE Human Baselines” (ở bảng xếp hạng của GLUE) và “SuperGLUE Human Baselines” (ở bảng xếp hạng của SuperGLUE). Đây là các “mô hình” người thật, chứ không phải là mô hình máy. Vào thời điểm bài viết này, trong bảng xếp hạng của GLUE, nhóm “người thật” chỉ xếp thứ 16, còn trong bảng SuperGLUE, nhóm này xếp thứ 4.
Rất thú vị, đúng không ạ, vì có nhiều mô hình máy xếp hạng cao hơn người! (Tuy nhiên, chú ý rằng đây chỉ là xếp hạng theo các tác vụ rất đặc trưng. Hơn nữa, với các mô hình tham gia xếp hạng thì đội ngũ nghiên cứu của mô hình đó đã “nghiền ngẫm” dữ liệu rất kỹ trước khi “nộp bài”.)
Nhận xét 2. Chúng ta thấy cả 2 thước đo GLUE và SuperGLUE đều có mô hình Baselines (GLUE Baselines và SuperGLUE Baselines) – tạm dịch là điểm sàn. Hiểu theo nghĩa này, điểm của các mô hình Baselines là điểm chuẩn, thường đứng ở cuối bảng xếp hạng. Tuy nhiên, khá thú vị là chúng ta thấy có một số mô hình có điểm thấp hơn điểm sàn.
-
⧛
ⓓ Follow-up.
Có thể nói GPT-3 gây “chấn động” trong cộng đồng Machine Learning. GPT-3 có thể lập trình, làm thơ, chơi game, viết báo, viết văn, làm toán (các phép tính số học dưới 100), … gần giống với “người thật” 😊! Sau GPT-3, theo quan sát của cá nhân, tôi thấy có một số mô hình khác tương tự về cách tiếp cận:
➡ Wu Dao 2.0 (BAAI [Beijing Academy of Artificial Intelligence] – tháng 6/2021). Tôi không có thông tin về cấu trúc của Wu Dao 2.0 nhưng có lẽ mô hình này cũng theo hướng tiếp cận của GPT. Căn cứ theo các bài post trên Internet, mô hình này có thể mô phỏng lời nói đàm thoại, làm thơ, hiểu được hình ảnh, thậm chí tạo công thức chế biến món ăn. Số tham số của mô hình: 1.750 tỷ (gấp 10 lần số tham số của GPT-3).
➡ Jurassic-1 (AI21 Labs – tháng 8/2021). Cách tiếp cận của mô hình này hoàn toàn giống với cách tiếp cận của GPT (sử dụng Transformer Decoder). Chỉ có một vài điểm khác biệt: tập dữ liệu huấn luyện đa dạng hơn, từ điển có số từ vựng lớn hơn. Số tham số của mô hình: 178 tỷ (nhiều hơn 3 tỷ so với tham số của GPT-3).
➡ Megatron-Turing NLG (NVIDIA & Microsoft – tháng 8/2021). Cách tiếp cận của mô hình cũng giống với cách tiếp cận của GPT (sử dụng Transformer Decoder). Theo bài báo thì họ có hạ tầng huấn luyện tốt hơn (NVIDIA là công ty sản xuất ra GPU). Số tham số của mô hình: 530 tỷ (hơn gấp 3 lần số tham số của GPT-3).
➡ Gopher (DeepMind – 08/12/2021). Mặc dù là một công ty trực thuộc Google, tuy nhiên DeepMind lại không theo cấu trúc của BERT mà xây dựng Gopher theo hướng tiếp cận của GPT: lấy dữ liệu dạng Autoregressive, sử dụng cấu trúc Transformer Decoder. Số tham số của mô hình: 280 tỷ (khoảng 1.5 lần số tham số của GPT-3).
➡ ERNIE 3.0 Titan (Baidu – 23/12/2021). Cách tiếp cận của mô hình này bắt chước cách tiếp cận của GPT-3. Mô hình này đưa thêm vào cấu trúc phần huấn luyện dữ liệu đồ thị tri thức (Knowledge Graph) nhằm bổ sung phần hiểu biết thường thức (Common Sense). Số tham số của mô hình: 260 tỷ (khoảng dưới 1.5 lần số tham số của GPT-3).
-
⧛
ⓔ Suy ngẫm chậm
(là ‘System 2’ trong “Thinking, Fast and Slow”).
➡ Chúng ta thấy các mô hình mạng nơ-ron thời gian gần đây càng ngày càng trở nên khổng lồ. Cùng với nhận xét của bài báo GPT-2, “chất lượng mô hình tỷ lệ với hàm log tuyến tính dung lượng dữ liệu và số tham số của mô hình”, với trào lưu các đại gia công nghệ đua nhau cho xuất xưởng các mô hình có hàng trăm, hàng nghìn tỷ tham số, cảm giác chung là mọi việc thoát ra ngoài tầm tay với của những người/tổ chức/doanh nghiệp có nguồn lực hạn chế. Thêm nữa, GPT-3 và một số mô hình khác lại đóng mã nguồn (closed source). Vì vậy, làm thế nào để tiếp cận các mô hình “khủng” này là một câu hỏi để ngỏ.
➡ Khi phát triển mô hình theo phương thức Pre-training – Fine Tuning, cộng đồng Machine Learning nhận ra rằng, hóa ra từ trước đến nay các mô hình quá tập trung vào việc giải quyết tác vụ (Task) đơn lẻ, quên mất rằng cần phải xây dựng mô hình có khả năng giải quyết cùng lúc đa tác vụ và phải biết cách học “tác vụ mới” một cách nhanh chóng trên nền hiểu biết tập hợp các “tác vụ cũ”. Từ đó, mô hình sẽ có năng lực xử lý hàng nghìn, hàng triệu tác vụ. Tôi đoán mò rằng, có lẽ đây là xu thế trong thời gian sắp tới của cộng đồng nghiên cứu Machine Learning.
(_/)
( •_•)
/ >☕