GPT là gì? Giới thiệu trực quan về transformer [Video]
(youtube.com)- GPT là transformer được tiền huấn luyện trên dữ liệu quy mô lớn, hoạt động bằng cách dự đoán phân phối xác suất của mảnh văn bản tiếp theo rồi lặp lại việc lấy mẫu để tạo câu
- Cùng một kiến trúc này không chỉ dùng cho sinh văn bản mà còn cho nhận dạng giọng nói, giọng nói tổng hợp, tạo ảnh và dịch thuật; ở đây trọng tâm là dự đoán token tiếp theo, nền tảng của các công cụ kiểu ChatGPT
- Văn bản đầu vào được chia thành token rồi biến thành vector embedding, sau đó đi qua các khối attention và khối perceptron nhiều lớp để hấp thụ ngữ cảnh xung quanh
- GPT-3 chứa 175 tỷ tham số trong khoảng 28.000 ma trận, trong đó riêng embedding và unembedding mỗi phần đã chiếm khoảng 617 triệu trọng số
- Vector cuối cùng đi qua ma trận unembedding và softmax để thành phân phối xác suất của token tiếp theo, còn temperature điều chỉnh sự cân bằng giữa tính dễ đoán và tính đa dạng
Vai trò cơ bản của GPT và transformer
- Ba chữ trong GPT lần lượt là Generative, Pretrained, Transformer
- Generative có nghĩa là tạo ra văn bản mới
- Pretrained có nghĩa là được huấn luyện trên lượng dữ liệu khổng lồ trước, rồi có thể tinh chỉnh thêm cho các tác vụ cụ thể
- Transformer là kiến trúc mạng nơ-ron được xem là phát minh cốt lõi của làn sóng AI hiện nay
- Transformer được dùng trong nhiều dạng mô hình
- Mô hình nhận âm thanh đầu vào và tạo bản chép lời
- Mô hình tạo giọng nói tổng hợp từ văn bản
- Công cụ tạo ảnh từ mô tả văn bản như DALL-E, Midjourney
- Dịch máy, vốn là mục đích ban đầu của transformer do Google giới thiệu lần đầu năm 2017
- Biến thể được nói tới ở đây là mô hình dự đoán văn bản tiếp theo, nền tảng của các công cụ như ChatGPT
- Nó nhận văn bản đầu vào, và trong một số trường hợp cả hình ảnh hoặc âm thanh xung quanh, rồi dự đoán nội dung sẽ đến tiếp theo
- Đầu ra là một phân phối xác suất trên nhiều mảnh văn bản có thể xuất hiện kế tiếp
Cách dự đoán token tiếp theo trở thành sinh văn bản
- Dự đoán từ tiếp theo và tạo văn bản thoạt nhìn có vẻ là hai mục tiêu khác nhau, nhưng nếu chạy lặp đi lặp lại mô hình dự đoán thì có thể tạo ra văn bản dài
- Nhập văn bản ban đầu
- Mô hình tạo phân phối xác suất cho mảnh tiếp theo
- Lấy mẫu ngẫu nhiên từ phân phối đó rồi nối vào văn bản
- Đưa toàn bộ văn bản mới trở lại làm đầu vào và lặp lại cùng quy trình
- Khi chạy GPT-2 theo cách đó trên laptop, có thể xuất hiện trường hợp câu chuyện không nối tiếp tốt
- Nếu chuyển sang API GPT-3, vốn dùng cùng kiến trúc cơ bản nhưng lớn hơn, thì có thể tạo ra câu chuyện nghe hợp lý hơn
- Cách ChatGPT và các mô hình ngôn ngữ lớn khác tạo câu trả lời từng từ về bản chất cũng là dự đoán lặp lại và lấy mẫu
- Điểm khởi đầu đơn giản để biến nó thành chatbot là tổ chức ngữ cảnh hội thoại dưới dạng văn bản
- Đặt một system prompt mô tả bối cảnh rằng một AI assistant hữu ích đang tương tác với người dùng
- Đưa câu hỏi của người dùng vào như mảnh hội thoại đầu tiên
- Để mô hình dự đoán điều assistant đó sẽ nói tiếp
- Để cách này hoạt động tốt, cần có thêm một giai đoạn huấn luyện bổ sung
Luồng dữ liệu bên trong transformer
- Đầu vào được chia thành những mảnh nhỏ gọi là token
- Trong văn bản, token có thể là từ, một phần của từ hoặc tổ hợp ký tự phổ biến
- Nếu có cả hình ảnh hay âm thanh thì các mảng ảnh hoặc mảnh âm thanh cũng có thể là token
- Mỗi token được gắn với một vector, tức danh sách các con số
- Vector này mã hóa ý nghĩa của mảnh đó theo một cách nào đó
- Nếu xem như tọa độ trong không gian nhiều chiều, các từ có nghĩa gần nhau thường có xu hướng nằm gần nhau
- Chuỗi vector trước tiên đi qua khối attention
- Khối attention cho phép các vector trao đổi thông tin với nhau để cập nhật giá trị
- Nó xử lý ý nghĩa thay đổi theo ngữ cảnh, như model trong “a machine learning model” và model trong “a fashion model”
- Nó đảm nhiệm việc xác định từ nào liên quan đến việc cập nhật ý nghĩa của từ khác, và cập nhật theo cách nào
- Sau đó các vector đi qua khối gọi là perceptron nhiều lớp hoặc feed-forward layer
- Ở bước này, các vector không nói chuyện với nhau mà cùng trải qua một phép toán giống nhau theo kiểu song song
- Có thể ví như đặt ra một danh sách câu hỏi dài cho từng vector và cập nhật theo câu trả lời
- Toàn bộ mạng lặp lại các khối attention và khối perceptron nhiều lớp
- Ở giữa còn có các bước chuẩn hóa nhưng được lược bỏ trong phần tổng quan cấp cao
- Cuối cùng kỳ vọng ý nghĩa cốt lõi của câu sẽ được chứa trong vector cuối của chuỗi
- Vector cuối đó được dùng để tạo ra phân phối xác suất trên toàn bộ các token có thể xuất hiện tiếp theo
Khuôn dạng deep learning và quy mô tham số của GPT-3
- Deep learning là một cách tiếp cận machine learning dùng dữ liệu để quyết định cách mô hình hoạt động
- Nó được dùng cho các bài toán cần trực giác và nhận diện mẫu, như tạo nhãn từ ảnh hoặc dự đoán từ tiếp theo sau một đoạn văn bản
- Thay vì viết rõ quy trình bằng mã như AI đời đầu, người ta tạo ra một cấu trúc linh hoạt với các tham số có thể điều chỉnh rồi điều chỉnh giá trị bằng dữ liệu ví dụ
- Hồi quy tuyến tính là ví dụ machine learning đơn giản nhất
- Nó xử lý các trường hợp mà đầu vào và đầu ra mỗi bên chỉ là một con số, như diện tích nhà và giá nhà
- Nó tìm đường thẳng tối ưu bằng hai tham số liên tục là độ dốc và tung độ gốc y
- GPT-3 không có hai mà có 175 tỷ tham số
- Một mô hình khổng lồ như vậy có thể bị overfit vào dữ liệu huấn luyện hoặc thậm chí không thể huấn luyện nổi
- Các mô hình deep learning được xem là một họ mô hình đã được chứng minh là mở rộng tốt trong vài thập kỷ gần đây
- Thuật toán huấn luyện chung gắn kết họ mô hình này là backpropagation
- Để backpropagation hoạt động tốt ở quy mô lớn, mô hình phải tuân theo một khuôn dạng nhất định
- Đầu vào phải được biểu diễn dưới dạng mảng số thực
- Các mảng đó tiếp tục được biến đổi thành những mảng số thực khác khi đi qua nhiều lớp
- Lớp cuối của mô hình văn bản là một danh sách số biểu diễn phân phối xác suất của toàn bộ token có thể là token tiếp theo
- Các tham số trong deep learning thường được gọi là trọng số
- Cách các trọng số tương tác với dữ liệu là thông qua tổng có trọng số
- Các hàm phi tuyến cũng xuất hiện ở giữa, nhưng không phụ thuộc vào tham số
- Biểu diễn thực tế thường gom các tổng có trọng số thành phép nhân ma trận-vector thay vì bộc lộ trực tiếp chúng
- 175 tỷ trọng số của GPT-3 được sắp vào khoảng 28.000 ma trận
- Các ma trận này được chia thành 8 nhóm
- Trọng số của mô hình là “bộ não” thu được trong quá trình huấn luyện, còn dữ liệu được xử lý trong một lần chạy là phần mã hóa cho trường hợp cụ thể như văn bản đầu vào
Embedding, kích thước ngữ cảnh và phân phối xác suất đầu ra
- Bước đầu tiên là chia văn bản đầu vào thành token rồi biến từng token thành vector
- Token thực tế có thể là một phần từ hoặc dấu câu, nhưng trong phần giải thích này chúng được xem như từ để dễ hiểu
- Mô hình có sẵn một danh sách token khả dĩ gọi là vocabulary
- Ma trận embedding quyết định mỗi token sẽ được chuyển thành vector nào
- Nó được ký hiệu là W_E
- Các giá trị khởi đầu ngẫu nhiên nhưng được xác định qua huấn luyện dựa trên dữ liệu
- GPT-3 có vocabulary kích thước 50.257 và chiều embedding là 12.288
- Nhân hai con số này thì ma trận embedding có khoảng 617 triệu trọng số
- Embedding từ có thể được xem là các điểm trong không gian nhiều chiều
- Các từ có ý nghĩa gần nhau thường có xu hướng ở gần nhau
- Khi quá trình huấn luyện tiến triển, embedding có xu hướng sắp xếp sao cho các hướng trong không gian mang ý nghĩa nhất định
- Có các ví dụ về quan hệ woman - man và king - queen, hay Italy - Germany + Hitler cho kết quả gần Mussolini
- Với ví dụ queen, cũng có lưu ý rằng embedding thực của queen có thể ở xa hơn so với một king dạng nữ hóa đơn giản
- Tích vô hướng là cách đo hai vector thẳng hàng với nhau đến mức nào
- Cùng hướng thì dương, vuông góc thì bằng 0, ngược hướng thì âm
- Có thể kiểm tra giả thuyết rằng cats - cat là một hướng biểu thị số nhiều bằng tích vô hướng
- Các danh từ số nhiều có xu hướng cho giá trị cao hơn danh từ số ít
- Cũng có các trường hợp giá trị tích vô hướng tăng dần với các từ như one, two, three
- Vector trong transformer không chỉ đại diện cho một từ đơn lẻ mà còn phải hấp thụ ngữ cảnh
- Vector tạo ra ban đầu chỉ mang ý nghĩa của một token đơn lẻ lấy từ ma trận embedding
- Mục tiêu là khi đi qua mạng, nó sẽ mang ý nghĩa cụ thể hơn phản ánh cả những từ xung quanh lẫn ngữ cảnh xa hơn
- GPT-3 có context size là 2048, tức được huấn luyện để xử lý 2048 vector trong một lần
- Kích thước ngữ cảnh này giới hạn độ dài văn bản mà mô hình có thể xét đến khi dự đoán từ tiếp theo
- Điều này liên hệ với cảm giác các chatbot đầu như ChatGPT dễ mất ngữ cảnh trong các cuộc trò chuyện dài
- Bước cuối là tạo ra phân phối xác suất cho token tiếp theo
- Vector cuối của ngữ cảnh cuối cùng được nhân với ma trận unembedding W_U để tạo danh sách số có kích thước bằng vocabulary
- Mỗi thành phần của đầu ra thô này được gọi là logit cho dự đoán từ tiếp theo
- W_U có một hàng tương ứng với mỗi token trong vocabulary, và độ dài mỗi hàng bằng chiều embedding
- Theo quy mô GPT-3, riêng W_U cũng thêm khoảng 617 triệu tham số
- Gộp embedding và unembedding lại thì tổng tham số cộng dồn vượt nhẹ 1 tỷ
- softmax biến một danh sách số bất kỳ thành phân phối xác suất hợp lệ
- Mỗi giá trị phải nằm giữa 0 và 1 và tổng tất cả phải bằng 1
- Nó lấy lũy thừa cơ số e của từng số đầu vào để biến chúng thành số dương, rồi chia cho tổng toàn bộ để chuẩn hóa
- Giá trị đầu vào lớn sẽ nhận xác suất lớn gần 1, còn giá trị nhỏ sẽ tiến gần 0
- Nó mềm hơn việc chỉ chọn giá trị lớn nhất, nên các giá trị lớn gần nhau vẫn có thể nhận xác suất đáng kể
- Temperature điều chỉnh độ sắc của phân phối softmax
- Khi T lớn, các giá trị thấp cũng nhận nhiều trọng số hơn nên phân phối đồng đều hơn
- Khi T nhỏ, các giá trị lớn chi phối mạnh hơn
- T=0 là trường hợp cực đoan khi toàn bộ trọng số dồn vào giá trị lớn nhất
- Với temperature 0, mô hình luôn chọn từ dễ đoán nhất, và trong ví dụ thì tạo ra kiểu câu chuyện sáo mòn dạng Goldilocks
- Temperature cao hơn cho phép chọn những từ kém khả dĩ hơn, nhưng trong ví dụ thì câu chuyện ban đầu sáng tạo hơn rồi nhanh chóng trở nên vô nghĩa
- API không cho đặt temperature lớn hơn 2; đây không phải vì lý do toán học mà là một giới hạn tùy ý để ngăn công cụ tạo ra kết quả quá vô nghĩa
1 bình luận
Các ý kiến trên Hacker News
Nếu có ai biết GPT hoạt động ra sao thì tôi có điều muốn hỏi. Tôi cứ nghĩ các mô hình này chọn từ tiếp theo có vẻ hợp lý nhất, nhưng liệu việc chọn “một trong những từ hợp lý” có thể dẫn tới tình huống danh sách dự đoán từ tiếp theo sau đó trở nên kém hợp lý hơn nhiều không?
Nếu tính toán được, có vẻ sẽ có lợi hơn khi đưa “hai từ cùng nhau” vào danh sách ứng viên, rồi mở rộng tiếp thành 3, 4, n từ; không biết có cách nào như vậy không.
Sau khi xem video và đọc bình luận, tôi biết được rằng đây là beam search, và nó được dùng cùng với temperature để điều chỉnh hành vi này.
Temperature và
top_klà các tham số khá giống nhau, được đưa vào để phản ánh việc mỗi câu mà con người có thể nói đều không thể dự đoán được về mặt xác suất. Đây là một ví dụ tái hiện tương tự vào năm 2021 một biểu đồ cũ trong tài liệu Hugging Face giai đoạn 2018/2019: https://lilianweng.github.io/posts/2021-01-02-controllable-t...Có thể beam search với độ dài lớn hơn nhiều sẽ tốt hơn, hoặc một cách kết hợp nhiều kỹ thuật có thể hiệu quả, nhưng tôi không nghĩ vậy. Phần query-key-value của transformer, ở nhiều khía cạnh, tập trung vào một dạng tổng hợp trong mối quan hệ với toàn bộ ngữ cảnh. Bản thân kiến trúc không được thiết kế cho các đơn vị dài hơn kiểu này, và cũng không có hệ thống “hai token” cơ bản nào.
Nếu hầu hết mô hình GPT có 50.000–100.000 token, bạn sẽ phải xét số tham số lớn hơn rất nhiều, kiểu 50.000*50.000, và còn gặp vấn đề dữ liệu thưa. Ngay cả khi chưa tính đến độ phức tạp huấn luyện, rất nhiều yếu tố của mô hình GPT quá tập trung vào việc khai thác sự phong phú của một token đơn lẻ hoặc một chỉ mục token đơn lẻ, nên khó có thể nói chúng được thiết kế cho kiểu beam search này.
Các kỹ thuật như beam search có giúp ích, nhưng chỉ có thể cải thiện ở mức hệ số hằng số. Dù vậy, các mô hình ngôn ngữ lớn vẫn đã đạt được hiệu năng hiện tại bất chấp giới hạn này.
Ví dụ là beam search: https://www.width.ai/post/what-is-beam-search
Về bản chất, đây là cách duy trì một cửa sổ xác suất của các token dự đoán để nâng cao chất lượng đầu ra cuối cùng.
Nếu chunk các khối lớn hơn, toàn bộ quá trình này sẽ được trộn lại để có thể làm điều tương tự trong không gian khái niệm. Ví dụ, nếu lấy một phương pháp chuẩn như embedding câu, thì đó sẽ trở thành khối thao tác để so sánh.
Tôi không nghĩ ra ai tốt hơn người này để dạy đại chúng về cơ chế attention. Cảm giác như giấc mơ thành hiện thực.
Nếu bạn chưa xem các chương trước thì tôi thật sự rất khuyến nghị.
Nếu bạn thích nội dung này, kênh của Andrej Karpathy cũng có những video thú vị giải thích về mạng nơ-ron và cách chúng hoạt động bên trong. Nội dung hướng tới những người biết lập trình.
Tôi cũng đã thiếu hiểu biết mà nhảy thẳng vào, và dù anh ấy khuyên nên xem các video trước đó, tôi vẫn lầm tưởng rằng mình có thể vừa xem vừa hiểu. Trong đó có những thuật ngữ bắt buộc phải biết nếu muốn thật sự thu được gì đó.
Sau khi bỏ cuộc, lấp các khoảng trống bằng cách học nguồn khác rồi quay lại, các video của anh ấy trở nên giá trị hơn rất nhiều. Tôi rất khuyên những ai muốn học mạng nơ-ron hãy rút kinh nghiệm từ sai lầm của tôi.
Giữa một rừng nội dung Cá tháng Tư, đây là liều giải độc hay đến khó tin. Tôi chỉ muốn truyền thẳng nó vào mạch máu.
Liên quan, trực quan hóa tương tác này cũng đáng xem: https://bbycroft.net/llm
Thảo luận trước đó: https://news.ycombinator.com/item?id=38505211
3B1B là một trong những nhà giáo dục STEM xuất sắc nhất trên YouTube.
Người ta nói token tiếp theo được lấy bằng cách lấy mẫu các logit của cột cuối cùng sau bước unembedding, vậy chẳng phải như thế chỉ lấy lại token cuối cùng thôi sao? Hay ở bước nào đó kích thước ma trận đổi thành N+1?
Tôi đang chờ các video tiếp theo. Lần này có lẽ cuối cùng tôi cũng có thể hiểu và hấp thụ được trong đầu cách những thứ này hoạt động.