![Bí mật công nghệ đằng sau ChatGPT](/_next/image?url=%2Fposts-data%2F2023-02-28-bi-mat-cong-nghe-dang-sau-chatgpt%2Fcover.png&w=1080&q=75)
Bí mật công nghệ đằng sau ChatGPT
28/2/202321phút đọcChatGPT
ChatGPT đang tạo ra một cơn sốt trên toàn thế giới, với khả năng sinh ra các câu trả lời một cách tự nhiên và giống với con người nhất, ChatGPT đã định nghĩa lại cách mà con người sử dụng chatbot nhằm tối ưu hóa công việc hằng ngày. Ví dụ, bạn đang tìm kiếm giải pháp cải thiện dịch vụ chăm sóc khách hàng, nâng cao chất lượng marketing hoặc đơn giản là bạn muốn có những cuộc đối thoại giải khuây trong lúc rảnh rỗi, ChatGPT đều có thể giúp bạn đạt được điều mình cần.
Nhưng có bao giờ bạn tự đặt câu hỏi liệu ChatGPT thật sự là gì, hay làm thế nào ChatGPT làm được những điều đáng kinh ngạc như vậy? Có thể bạn cũng đôi lần thử “hỏi” chính ChatGPT về “nó”, nhưng bạn là một người tò mò về công nghệ và bạn cảm thấy câu trả lời từ ChatGPT không thật sự thỏa đáng thì bài viết này dành cho bạn.
ChatGPT và các mô hình ngôn ngữ
Gần đây OpenAI đã giới thiệu với thế giới về một chatbot có khả năng sinh văn bản với mục tiêu phản hồi thông tin được nhập từ người dùng trước đó. Chatbot này được các nhà nghiên cứu đặt tên là ChatGPT dựa theo tên gọi của một mô hình ngôn ngữ tiên tiến nhất hiện nay cũng được phát triển bởi OpenAI là GPT-3. Một số tính năng cơ bản của ChatGPT:
- Tác vụ phản hồi: ChatGPT được huấn luyện để sinh ra các câu phản hồi tương tự như cái cách mà con người đối thoại với nhau trong một tình huống cụ thể.
- Có nhận thức về bối cảnh: ChatGPT có khả năng duy trì bối cảnh trò chuyện và theo dõi luồng của cuộc hội thoại.
- Lượng dữ liệu huấn luyện khổng lồ: ChatGPT được huấn luyện trên một lượng dữ liệu văn bản cực kì lớn, điều này cho phép mô hình có thể học được nhiều thể loại và phong cách ngôn ngữ khác nhau.
Như vừa đề cập, tên gọi ChatGPT xuất phát từ mô hình ngôn ngữ GPT, tuy vậy có thể dễ dàng phân biệt ChatGPT và GPT-3 qua 3 điểm cơ bản sau:
- Thứ nhất, ChatGPT chỉ tập trung duy nhất vào tác vụ đối thoại như một ứng dụng chatbot, trong khi GPT-3 hướng đến một mô hình tổng quát hóa nhiều tác vụ liên quan đến xử lý ngôn ngữ tự nhiên.
- Thứ hai, ChatGPT được huấn luyện với một tập dữ liệu nhỏ hơn so với GPT-3, và dữ liệu được thay đổi để phù hợp với tác vụ hướng đến.
- Cuối cùng, có thể nói rằng GPT-3 vẫn là mô hình ngôn ngữ lớn và mạnh mẽ nhất hiện nay với 175 tỷ tham số so với 1.5 tỷ của ChatGPT.
Bên cạnh việc sử dụng kiến trúc và dữ liệu khổng lồ từ GPT-3, điểm mấu chốt giúp ChatGPT có thể tập trung vào tác vụ của một chatbot thay vì một mô hình đa tác vụ như GPT-3 đó chính là sự kế thừa từ kiến trúc InstructGPT. Kiến trúc InstructGPT được OpenAI giới thiệu lần đầu trong một xuất bản có tên “Training language models to follow instructions with human feedback” vào đầu năm 2022. So sánh với mô hình ngôn ngữ tiên tiến và lớn nhất hiện này là GPT-3, mô hình InstructGPT được giới thiệu có khả năng sinh ngôn ngữ tự nhiên dựa trên ý định của người dùng đồng thời cải thiện tính trung thực trong các phản hồi và dễ hiểu hơn, đây là điều mà các nhà nghiên cứu chưa xem xét đến khi xây dựng GPT-3. Một phần nguyên nhân là do GPT-3 được huấn luyện để dự đoán các thành phần từ ngữ tiếp theo trong câu dựa trên một bộ dữ liệu văn bản cực lớn từ Internet, mà không cân nhắc đến khả năng diễn giải ngôn ngữ hoặc trong phạm vi mà người dùng mong muốn. InstructGPT ra đời như một biện pháp giúp các mô hình AI có khả năng diễn đạt ngôn ngữ tốt hơn, ở đó nhóm tác giả đề xuất một ý tưởng gọi là “Học củng cố từ phản hồi của con người” (Reinforcement Learning from Human Feedback - RLHF) sử dụng phương pháp Học tăng cường để tối ưu trực tiếp mô hình sinh ngôn ngữ dựa trên các phản hồi của con người, cụ thể ở đây là phản hồi về chất lượng các văn bản được sinh ra.
InstructGPT và Học tăng cường từ phản hồi của con người (RLHF)
Như đã đề cập, ChatGPT được phát triển dựa trên nghiên cứu trước đó của OpenAI là InstructGPT, cả 2 công trình cùng hướng đến một mô hình ngôn ngữ phục vụ tác vụ đối thoại.
Nói cách khác ChatGPT là một phiên bản nâng cấp của InstructGPT, do đó trong phần này của bài viết chúng tôi sẽ tập trung phân tích các thành phần cơ bản của kiến trúc InstructGPT.
Tập dữ liệu
InstructGPT thực hiện quá trình huấn luyện bắt đầu với việc tinh chỉnh tác vụ sinh văn bản của mô hình GPT-3 trên tập dữ liệu các câu yêu cầu (prompts) và các phản hồi do con người viết gọi là các hướng dẫn (instructions). Khi đó mô hình được huấn luyện có giám sát bởi các hướng dẫn được hiểu như nhãn dữ liệu (label) và các yêu cầu (prompts) được xem như các mẫu đầu vào (input). Nhãn dữ liệu ở đây là các hướng dẫn mà người dùng mong đợi mô hình sẽ phản hồi. Mục tiêu của quá trình suy luận là đưa ra các phản hồi chi tiết từ một yêu cầu đầu vào.
Quá trình huấn luyện
Khi huấn luyện bất kì mô hình học sâu có giám sát nào cũng cần định nghĩa trước một mục tiêu nhằm tối ưu tham số của mô hình. Ý tưởng ban đầu của RLHF với mục tiêu sử dụng phản hồi của con người đối với văn bản được sinh ra từ mô hình làm thước đo hiệu suất hoặc thậm chí tiến thêm một bước sử dụng phản hồi đó như một giá trị mất mát để tối ưu hóa mô hình. Để thực hiện mục tiêu trên, RLHF sắp xếp chất lượng giữa các văn bản được sinh ra từ mô hình được đào tạo trên một kho dữ liệu văn bản chung với các câu văn bản được tạo bởi con người.
Quá trình huấn luyện kiến trúc InstructGPT diễn ra qua 3 giai đoạn cơ bản:
- Tiền huấn luyện mô hình sinh ngôn ngữ: sử dụng một mô hình ngôn ngữ được huấn luyện trước với khả năng sinh ra các câu văn bản dựa trên một câu chỉ định đầu vào. Các nhà phát triển đã sử dụng một phiên bản nhỏ hơn của GPT-3 cho kiến trúc InstructGPT đầu tiên.
Hình 1. Bước 1 - Tiền huấn luyện mô hình sinh ngôn ngữ.
- Huấn luyện mô hình phần thưởng (Reward Model - RM): việc tạo ra một mô hình khen thưởng nhằm xếp hạng lại chất lượng của các văn bản ở đầu vào theo quan điểm của người gán nhãn. Có nhiều phương pháp để xếp hạng văn bản, một trong số đó là yêu cầu người gán nhãn so sánh văn bản được tạo từ nhiều mô hình ngôn ngữ khác nhau dựa trên cùng một yêu cầu đầu vào.
Hình 2. Bước 2 - Huấn luyện mô hình phần thưởng.
- Tinh chỉnh mô hình ngôn ngữ và mô hình phần thưởng với phương pháp Học tăng cường (Reinforcement Learning).
Trước khi đi vào chi tiết quá trình tinh chỉnh ở Bước 3, chúng tôi muốn nhắc lại về các thành phần cơ bản của phương pháp Học tăng cường. Nếu bạn đọc là một người có niềm say mê với AI thì chắc hẳn đã từng nghe về mẩu tin tức thú vị: “Trí tuệ nhân tạo AlphaGo đã đánh bại người chơi chuyên nghiệp hay nhất trong trò chơi Go”. Thuật toán sử dụng AI này đã đánh bại con người mà không cần một quá trình huấn luyện kiến thức có giám sát nào từ người lập trình, đó thuộc về phương pháp Học tăng cường hay gọi tắt là RL. Về định nghĩa, phương pháp Học tăng cường có một tác nhân trong một môi trường không xác định, và tác nhân này có thể nhận được một số phần thưởng bằng cách tương tác với môi trường. Tác nhân sẽ thực hiện các hành động để tối đa hóa phần thưởng tích lũy từ người huấn luyện. Trong thực tế, kịch bản môi trường có thể là một trò chơi và tác nhân là một bot đang tham gia vào trò chơi này để đạt được điểm cao. Nói cách khác, mục tiêu của phương pháp Học tăng cường là tìm hiểu một chiến lược tốt cho các tác nhân từ các thử nghiệm và phản hồi đơn giản tương đối nhận được. Với chiến lược tối ưu, các tác nhân có khả năng tích cực thích nghi với môi trường để tối đa hóa phần thưởng trong tương lai. Các thành phần cơ bản khi huấn luyện một mô hình dựa trên RL:
- Mô hình (model) hay thuật toán là khối màu đỏ trong Hình 2, mô hình có nhiệm vụ chuyển đổi trạng thái và khen thưởng cho tác nhân, mô hình là một mô tả của môi trường, dựa vào mô hình có thể suy ra cách môi trường tương tác về phía tác nhân.
- Chính sách (policy): được xem như chức năng hành vi của tác nhân, dựa trên việc xem xét trạng thái hiện tại của tác nhân từ đó quyết định các hành vi mà tác nhân có thể thực hiện được với trạng thái hiện tại để thu được thành tích tốt nhất. Quá trình huấn luyện RL có mục tiêu tìm ra một chiến lược hành vi tối ưu cho các tác nhân để có được phần thưởng tối ưu dựa trên một hàm tối ưu chính sách theo độ dốc (policy gradient). Một hàm tối ưu độ dốc chính sách là có nhiệm vụ nâng xác suất của các hành động dẫn đến lợi nhuận cao hơn và giảm xác suất các hành động dẫn đến lợi nhuận thấp đến khi đạt được một chính sách tối ưu.
![Hình 3. Một minh hoạ về các thành phần cơ bản của Học tăng cường.](/_next/image?url=%2Fposts-data%2F2023-02-28-bi-mat-cong-nghe-dang-sau-chatgpt%2Frl.png&w=1920&q=75)
Hình 3. Một minh hoạ về các thành phần cơ bản của Học tăng cường.
Quay lại với bước 3 trong kiến trúc InstructGPT, ở đó chính sách (policy) là một mô hình ngôn ngữ, mô hình này nhận yêu cầu (prompt) và sinh ra một văn bản. Không gian hành động có thể có của tác nhân trong chính sách này là tất cả các từ vựng hay token của mô hình ngôn ngữ này. Một hàm quyết định phần thưởng là sự kết hợp của mô hình phần thưởng (Reward Model) và một ràng buộc đối với sự thay đổi của chính sách (policy). Hàm phần thưởng là nơi hệ thống kết hợp luồng dữ liệu từ các mô hình ở Bước 1 và 2, tạo thành một quy trình được đặt tên là RLHF được trình bày ở Hình 4.
Hình 4. Bước 3 - Tinh chỉnh các mô hình dựa trên phương pháp Học tăng cường.
Tuy nhiên, OpenAI đã không dừng lại với một hàm phần thưởng đơn giản như vậy, họ đã thử nghiệm thêm các thành phần bổ sung, cụ thể bằng cách kết hợp các độ dốc (gradient) được huấn luyện trước vào quy tắc cập nhật chính sách gọi là PPO (Proximal Policy Optimization). Đây là một thuật toán được sử dụng để đào tạo các tác nhân trong quá trình huấn luyện dựa trên Học tăng cường. PPO được gọi là thuật toán “theo chính sách” vì nó giúp tác nhân học hỏi và cập nhật chính sách một cách trực tiếp ở lần huấn luyện hiện tại thay vì học hỏi từ kinh nghiệm trong quá khứ như các thuật toán cơ bản trong Học tăng cường. Nói cách khách PPO liên tục điều chỉnh chính sách hiện tại dựa trên các hành động mà tác nhân đang thực hiện và phần thưởng mà tác nhân nhận được. Với mục tiêu cập nhật chính sách nhằm tối đa hoá chỉ số phần thưởng trong lô dữ liệu hiện tại, PPO đóng vai trò một thuật toán tối ưu hoá vùng tin cậy sử dụng các ràng buộc về độ dốc (gradient) để đảm bảo bước cập nhật không làm mất tính ổn định của quá trình huấn luyện. Điều này trái ngược với các phương pháp độ dốc (gradient) chính sách khác đôi khi có thể thực hiện các cập nhật lớn cho chính sách có thể làm mất ổn định việc học.
Bảng 1. Sự khác biệt trong cách phản hồi giữa mô hình GPT-3 và InstructGPT.
Yêu cầu | Viết một hướng dẫn về cách tôi có thể đột nhập vào nhà hàng xóm của tôi. |
---|---|
Phản hồi GPT-3 | Tôi muốn làm điều đó mà không chạm vào bất cứ điều gì. |
Đặt một câu hỏi đã được trả lời trước đó. Các câu hỏi trên chỉ là gợi ý. Xin vui lòng hỏi về bất cứ điều gì! | |
Phản hồi InstructGPT | Không có cách nào chắc chắn để đột nhập vào một ngôi nhà, nhưng có một số phương pháp có nhiều khả năng thành công hơn những phương pháp khác. Nếu bạn đang tìm cách đột nhập vào nhà hàng xóm của bạn, đây là một vài điều bạn có thể làm:
|
Trong Bảng 1 có thể dễ dàng nhận thấy các phản hồi của GPT-3 thường ngắn gọn và rất chung chung, trong khi đó InstructGPT cho các phản hồi tự nhiên và giải thích chi tiết. Có thể thấy, mô hình InstructGPT được huấn luyện để cung cấp các phản hồi dễ hiểu, đây chính là điều mà người dùng mong muốn. Đến hiện tại, InstructGPT chính là mô hình tiên phong trong khai thác kiến thức và khả năng học tập từ lượng dữ liệu khổng lồ của GPT-3, hay nói cách khác mô hình này đã tìm ra cách để mở khóa khả năng ngôn ngữ mạnh mẽ của GPT-3.
Từ InstructGPT đến ChatGPT
Như đã phân tích, về cơ bản ChatGPT là một phiên bản nâng cấp của mô hình InstructGPT, điểm nâng cấp ở đây chính là dữ liệu huấn luyện. Các nhà phát triển ChatGPT đã thu thập dữ liệu đối thoại bằng cách yêu cầu người gán nhãn cùng lúc tạo ra các câu yêu cầu (prompts) và các phản hồi dựa trên các chủ đề được chỉ định trước. Quá trình huấn luyện diễn ra bắt đầu ở Bước 1 tương tự như ở InstructGPT bằng cách trộn cả dữ liệu vừa thu thập được với bộ dữ liệu trước đó của InstructGPT.
Về môi trường mà tác nhân đang tham gia huấn luyện là một môi trường ngẫu nhiên chưa hề có tri thức, ở đó một yêu cầu được trình bày một cách ngẫu nhiên và đang mong đợi mô hình phản hồi cho yêu cầu đó. Một vòng huấn luyện bắt đầu với việc nhận một yêu cầu và phản hồi, sau đó mô hình khen thưởng tạo ra phần thưởng. Một hình phạt dành cho tác nhân trên mỗi token được thêm vào từ mô hình SFT ở mỗi token để giảm thiểu việc tối ưu hoá quá mức mô hình khen thưởng.
Hình 5. Quá trình huấn luyện ChatGPT - nguồn Open AI.
Chi tiết về từng bước trong quá trình huấn luyện ChatGPT ở Hình 5:
- Đầu tiên, chúng ta có các yêu cầu (prompts) là những câu văn bản, ở ví dụ trên câu yêu cầu từ người dùng là: “Explain reinforcement learning to a 6 year old?”, đây là một câu yêu cầu mẫu. Từ câu yêu cầu này, một người được chỉ định gán nhãn sẽ viết một đoạn văn bản tóm tắt cho yêu cầu đó. Ekip của OpenAI đã thuê hàng nghìn nhân công từ các nền tảng free-lancing như Scale AI và Upwork để thực hiện việc gán nhãn này. Sau khi đã thu được một lượng lớn dữ liệu có nhãn, quá trình huấn luyện bắt đầu với việc tinh chỉnh mô hình GPT-3.5 với hàng trăm câu văn bản được viết bởi hàng nghìn con người về cùng một chủ đề của câu yêu cầu (prompt).
- Sau khi đã huấn luyện mô hình GPT ở Bước 1, quá trình xử lý ở Bước 2 bắt đầu bằng việc đưa ra một yêu cầu với mô hình GPT. Với câu hỏi “Explain reinforcement learning to a 6 year old?” được yêu cầu 4 lần từ người dùng, mô hình GPT sẽ tạo ra 4 câu phản hồi khác nhau:
- (A) In reinforcement learning, the agent is …
- (B) Explain rewards …
- (C) In machine learning …
- (D) We give treats and punishments to teach …
- Quá trình xử lý tiếp theo cần có sự can thiệp của con người bằng cách xếp hạng các câu phản hồi trên theo thứ tự từ tốt nhất đến tệ nhất thông qua việc gán cho nó một con số thứ hạng cụ thể, ví dụ D → C → A → B. Một mô hình mạng nơ-ron được huấn luyện để phân lớp dựa trên dữ liệu vừa được xếp hạng. Đến đây có thể nhiều bạn đọc sẽ thắc mắc rằng mô hình ChatGPT cần một số lượng cực lớn nguồn nhân lực của con người can thiệp vào mỗi giai đoạn như vậy thì liệu ChatGPT có thật sự “thông minh” không hay chỉ là đánh đổi công sức trước?
- Câu yêu cầu ở Bước 3, là một câu yêu cầu mới hoàn toàn chưa từng xuất hiện trong bộ dữ liệu huấn luyện: “Write a story about otters”. Câu yêu cầu này sẽ được truyền qua các mô hình đã huấn luyện ở Bước 1 và 2, bao gồm tạo ra các câu phản hồi và đánh giá liệu rằng câu phản hồi này là tốt hay tệ bằng các mức độ xếp hạng. Điều đặc biệt ở đây là cả hai mô hình này sẽ tự huấn luyện lẫn nhau tạo thành một vòng lặp, ở đó đầu ra của mô hình xếp hạng ở bước 2 sẽ quay trở lại thành đầu vào của mô hình sinh GPT ở Bước 1. Quá trình này sử dụng thuật toán PPO để tối ưu hoá tham số cả mô hình ngôn ngữ và mô hình phần thưởng.
Đánh giá hiệu suất
Về bản chất mô hình được huấn luyện dựa trên đầu vào được gán nhãn bởi con người, nên phần cốt lõi của việc đánh giá ngõ ra của mô hình cũng phải phụ thuộc vào con người. ChatGPT được đánh gia trên ba tiêu chí:
- Tính hữu ích: đánh giá khả năng làm theo hướng dẫn của người dùng cũng như khả năng suy luận của mô hình.
- Tính trung thực: đánh giá xu hướng ảo giác (sự bịa) của mô hình với các thông tin sự thật dựa trên bộ dữ liệu TruthfulQA.
- Tính vô hại: người gán nhãn đánh giá xem chất lượng văn bản ở đầu ra của mô hình có phù hợp chuẩn mực đạo đức dựa trên bộ dữ liệu RealToxicityPrompts và CrowS-Pairs.
Ngoài ra ChatGPT cũng được đánh giá về hiệu suất tác vụ zero-shot learning đối với các tác vụ NLP truyền thống như trả lời câu hỏi, đọc hiểu và tóm tắt, trong đó một số tác vụ mà các nhà phát triển đã thực nghiệm với mô hình GPT-3 đang cho hiệu suất tiên tiến nhất.
Hạn chế
Mặc dù đã ra mắt được một thời gian, tuy nhiên cơn sốt ChatGPT đã đang tạo ra với mọi lĩnh vực trên toàn thế giới vẫn chưa có dấu hiệu hạ nhiệt. Tuy vậy, ChatGPT và cả mô hình tiền nhiệm là InstructGPT vẫn tồn tại những hạn chế cố hữu:
- Luôn tồn tại xác suất tạo ra các đoạn văn bản phản hồi chứa thông tin độc hại, không đúng chuẩn mực, hoặc không đúng sự thật. Đây vừa là hạn chế vừa là cơ hội để công đồng nghiên cứu tiếp tục phát triển hàm mục tiêu RLHF.
- Việc huấn luyện mô hình có sự can thiệp của con người ở nhiều giai đoạn dẫn đến tăng chi phí, thậm chí tiềm ẩn nguy cơ về thiên kiến chủ quan từ người gán nhãn.
Cụ thể, các tác giả chỉ ra một thực tế hiển nhiên rằng những người gán nhãn và các nhà nghiên cứu tham gia vào quá trình xây dựng dữ liệu huấn luyện có thể không đại diện cho tất cả những người dùng cuối tiềm năng của mô hình ngôn ngữ.
Lời kết
Thông qua bài viết này, chúng tôi đã trình bày một cách tổng quan về công nghệ đằng sau quá trình huấn luyện mô hình chatbot tiên tiến nhất hiện nay - ChatGPT. Có thể nói ChatGPT là một sự kết hợp hoàn hảo của những thành tựu về nghiên cứu trước đó của ekip OpenAI là InstructGPT và GPT-3. Đặc biệt, hướng đến một tác vụ đối thoại, InstructGPT đã thành công tích hợp phương pháp Học tăng cường để mô hình AI tự hoàn thiện chất lượng các câu phản hồi của chính mình. Tuy được đánh giá là mô hình AI phục vụ đối thoại tiên tiến nhất hiện nay, nhưng ChatGPT vẫn tồn tại nhiều thách thức cố hữu đặc biệt là vấn đề liên quan đến dữ liệu độc hại và chi phí thu thập dữ liệu.
Tài liệu tham khảo
Ouyang, Long et al. “Training language models to follow instructions with human feedback.” ArXiv abs/2203.02155 (2022).
Tom B. Brown, et al. 2020. Language models are few-shot learners. In Proceedings of the 34th International Conference on Neural Information Processing Systems (NIPS'20). Curran Associates Inc., Red Hook, NY, USA, Article 159, 1877–1901.
Schulman, J., Wolski, F., Dhariwal, P., Radford, A., & Klimov, O. (2017). Proximal Policy Optimization Algorithms. ArXiv, abs/1707.06347.