Nếu đã click vào bài viết này thì chắc hẳn các bạn cũng đã dùng qua ChatGPT hay các công cụ tương tự ít nhất một lần 😁 Khả năng biểu đạt ngôn ngữ một cách tự nhiên của chatbot làm nhiều người kinh ngạc, thậm chí với các chuyên gia ở thời điểm mới ra mắt. Vậy đằng sau sự "thông minh" ấy là gì ? Trong loạt bài viết này chúng ta sẽ cùng đi tìm hiểu cơ chế hoạt động của mô hình ngôn ngữ lớn (LLM), thứ tạo nên các chatBot AI đang làm xôn xao cả thế giới trong những năm vừa qua.
1. Mô hình ngôn ngữ lớn (LLM)
Mô hình ngôn ngữ lớn (Large Language Models hay LLMs) là một mô hình trí tuệ nhân tạo giúp máy tính hiểu, tạo và sinh văn bản tự nhiên như con người.
Trong cụm từ large language model , từ large đề cập đến cả độ lớn cả về số lượng tham số lẫn khối lượng dữ liệu khổng lồ mà nó được huấn luyện.
Các LLMs hiện nay thường có hàng chục hoặc thậm chí hàng trăm tỷ tham số. Hình bên dưới minh họa số lượng tham số của các phiên bản GPT.
2. Giới thiệu kiến trúc Transformer
Đa số các mô hình ngôn ngữ lớn hiện nay đều dựa trên kiến trúc Transformer do nhóm nghiên cứu thuộc Google Brain công bố vào năm 2017 trong bài báo nổi tiếng mang tên Attention Is All You Need.
Tham khảo từ kiến trúc Transformer, các nhà nghiên cứu của OpenAI đã tạo ra GPT (Generative Pre-trained Transformer) và gây nên cơn chấn động lớn trên toàn thế giới vào năm 2022 khi ra mắt ChatGPT.
=> Do đó, muốn hiểu được cách các LLMs như ChatGPT hoạt động như thế nào, trước tiên cần phải hiểu được Transformer
Kiến trúc Transformer gồm 2 phần chính:
- Encoder: Mã hóa dữ liệu đầu vào ở dạng ngôn ngữ tự nhiên thành các ma trận, vectors.
- Decoder: Từ dữ liệu đầu ra của encoder, giải mã chúng lại thành dạng ngôn ngữ tự nhiên.
Ví dụ trong tác vụ dịch thuật, đầu vào là tiếng Anh và đầu ra là tiếng Đức chẳng hạn. Bên trong Encoder và Decoder có thể có nhiều lớp con. GPT-3 có tận 96 lớp transformer.
Dưới đây là mô tả tổng quan về luồng hoạt động của kiến trúc Transformer, trong việc dịch tiếng Anh sang tiếng Đức.
- Đầu vào là câu tiếng Anh cần dịch, bước tiền xử lý sẽ chuyển câu thành dạng toán học để máy tính có thể xử lý.
- Dữ liệu sau khi đã được tiền xử lý sẽ được ném vào Encoder để biến đổi qua 7x7 49 bước.
- Kết quả đầu ra của Encoder thể hiện ngữ nghĩa và mối quan hệ giữa các từ trong câu với nhau.
- Kết quả đó được chuyển tiếp qua Decoder.
- Ở 3 lần chạy trước, nó đã sinh ra được đoạn "Das ist ein" (tiếng Đức, nghĩa là "This is a").
- Câu tiếng Đức đi qua bước tiền xử lý.
- Dựa vào đầu ra của encoder và thông tin về những từ đã sinh ra trước đó. Decoder xử lý và trả về kết quả dịch ra từ "Beispiel" nghĩa là "Example" => Hoàn tất quá trình dịch.
BERT và GPT
Sau khi giới thiệu Transformer, Google tiếp tục phát triển BERT (Bidirectional Encoder Representations from Transformers) vào năm 2018. BERT và GPT đều dựa trên Transformer nhưng do mục đích sử dụng khác nhau nên kiến trúc của chúng cũng có sự phân biệt rõ ràng.
Đặc điểm | BERT | GPT |
---|---|---|
Kiến trúc | Chỉ có Encoder | Chỉ có Decoder |
Ứng dụng | Hiểu ngữ nghĩa văn bản, phân loại văn bản | Sinh văn bản, chatbot |
Khả năng sinh văn bản | Không thể sinh văn bản | Có thể sinh văn bản mạch lạc |
Ứng dụng thực tế | Phát hiện nội dung độc hại trên x.com | chatGPT |
Các phiên bản | BERT, RoBERTa, ALBERT, DistilBERT | GPT-2, GPT-3, GPT-3.5, GPT-4, GPT-4o ... |
Hướng tiếp cận | Hai chiều (Bidirectional) | Một chiều (Autoregressive) |
- Bidirectional: Mô hình nhìn vào cả bên trái và bên phải của một từ để hiểu ngữ cảnh.
- Autoregressive: Mô hình chỉ nhìn vào từ trước đó để đoán từ tiếp theo.
Mô hình GPT, với việc chỉ có Decoder , tập trung vào nhiệm vụ sinh văn bản lại cũng có khả năng thực hiện các tác vụ dịch thuật một cách ấn tượng.
Điều này ban đầu khiến các nhà nghiên cứu bất ngờ, vì GPT không được huấn luyện để cho mục đích dịch thuật. Khả năng thực hiện các nhiệm vụ mà mô hình không được huấn luyện rõ ràng được gọi là emergent behavior. Điều này xuất hiện tự nhiên do mô hình được tiếp xúc với một lượng dữ liệu đa ngôn ngữ khổng lồ trong nhiều ngữ cảnh khác nhau.
Việc các mô hình GPT có thể học được các mẫu dịch giữa các ngôn ngữ và thực hiện tác vụ dịch thuật dù không được huấn luyện cho thấy sự mạnh mẽ và tiềm năng của các mô hình ngôn ngữ lớn (LLMs). Nó có thể thực hiện nhiều nhiệm vụ khác nhau mà không các mô hình riêng biệt cho từng nhiệm vụ.
Transformers vs. LLMs
Đại đa số các mô hình ngôn ngữ lớn ngày nay được xây dựng dựa trên kiến trúc Transformer. Tuy nhiên, không phải tất cả các Transformer đều là LLM, vì Transformer cũng có thể được ứng dụng trong thị giác máy tính (computer vision).
Các LLMs khác sử dụng kiến trúc hồi quy (Recurrent) và tích chập (Convolutional) thì hiện tại đang lép vế hoàn toàn so với cách tiếp cận dựa trên Transformer.
3. Xây dựng một mô hình ngôn ngữ lớn
Tiền huấn luyện và tinh chỉnh (Pretraining và fine-tuning)
- Pretraining: Một lượng dữ liệu khổng lồ từ các nguồn như internet, sách báo, ... được "nhồi" vào mô hình để nó hiểu được cấu trúc, ngữ nghĩa của các văn bản, ngôn ngữ khác nhau. Sau giai đoạn này, mô hình có thể tạo ra văn bản, trả lời câu hỏi ở mức cơ bản, nhưng vẫn có nhiều hạn chế như đưa ra câu trả lời không chính xác. Vì vậy, cần có bước tiếp theo là fine-tuning để cải thiện chất lượng.
- Fine-tuning: Mô hình được huấn luyện thêm trên tập dữ liệu được gán nhãn, có chất lượng cao hơn và tập trung vào những nhiệm vụ cụ thể. Tùy vào mục đích sử dụng, tập dữ liệu có thể giúp mô hình trở nên chính xác hơn trong việc trả lời câu hỏi, phân loại văn bản, viết code, hay tuân thủ hướng dẫn của người dùng.
Các giai đoạn trong việc xây dựng mô hình ngôn ngữ lớn
Trong loạt bài viết này, chúng ta lần lượt đi qua 3 giai đoạn chính:
- Tiền xử lý dữ liệu: tìm hiểu cơ chế Attention (trái tim của mọi LLMs) cũng như toàn bộ kiến trúc của một LLMs.
- Pretraining.
- Fine-tuning: Sử dụng 2 phương pháp fine-tuning phổ biến nhất là instruction fine-tuning and classification fine-tuning.
- Classification fine-tuning: Đào tạo với bộ dữ liệu được dán nhãn. Ví dụ như bộ dữ liệu về các email spam và không spam.
- Instruction fine-tuning: Bộ dữ liệu đào tạo bao gồm các câu hỏi và đáp án có sẵn. Dưới đây là 1 ví dụ đơn giản về câu hỏi 3 màu cơ bản trong
Instruction fine-tuning
.
{ "instruction": "What are the three primary colors?", "input": "", "output": "The three primary colors are red, blue, and yellow." },