- Lấy cảm hứng từ chương trình Mark V. Shaney của thập niên 1980, tác giả đã tạo ra trình sinh văn bản Markov đơn giản Mark V. Shaney Junior, được triển khai chỉ với khoảng 30 dòng mã Python
- Mô hình này dự đoán từ tiếp theo theo xác suất dựa trên ba từ (trigram), sử dụng hơn 200 bài blog (khoảng 200.000 từ) làm dữ liệu huấn luyện
- Các câu được tạo ra có dạng câu vô nghĩa (gibberish), trộn lẫn các từ thuộc những chủ đề trên blog như Lisp, Emacs, toán học, lập trình
- Khi tăng bậc (order) của mô hình, câu trở nên nhất quán hơn, nhưng từ mức 5 trở lên thì mô hình bắt đầu sao chép nguyên văn nội dung gốc, khiến tính sáng tạo biến mất
- Ngay cả trong thời đại mô hình ngôn ngữ lớn (LLM), độ rõ ràng về mặt cấu trúc của mô hình Markov đơn giản vẫn được xem là điểm khởi đầu tốt để hiểu nguyên lý sinh ngôn ngữ
Tổng quan về chương trình Mark V. Shaney Junior
- Mark V. Shaney Junior là trình sinh văn bản mô phỏng người dùng ảo Mark V. Shaney, nhân vật từng hoạt động trên Usenet vào thập niên 1980
- Bản gốc là chương trình tự động tạo bài đăng bằng mô hình Markov
- Lần triển khai này là một phiên bản tối giản của ý tưởng đó và đã được công khai trên GitHub
- Toàn bộ mã chỉ khoảng 30 dòng Python, đặt trọng tâm vào sự đơn giản hơn là hiệu năng
- Ngay cả người mới tiếp xúc với mô hình Markov cũng có thể hiểu trong vòng 20 phút
Lập trình thử nghiệm như một thú vui
- Tác giả thích viết chương trình nhằm khám phá ý tưởng hơn là giải quyết một vấn đề cụ thể
- Đã nhiều lần thử nghiệm các chuỗi Markov với nhiều không gian trạng thái khác nhau
- Những đoạn mã thử nghiệm như vậy thường được sắp xếp lại và chia sẻ trên GitHub hoặc Codeberg
- Mark V. Shaney Junior cũng là một trong những thử nghiệm như vậy, sau đó được hoàn thiện thêm để công bố
Sinh văn bản bằng dữ liệu blog
- Sau khi thử nghiệm mô hình với "A Christmas Carol" của Charles Dickens,
tác giả đã dùng 24 năm bài blog (hơn 200 bài, khoảng 200.000 từ) làm dữ liệu đầu vào
- Phần bình luận (khoảng 40.000 từ) bị loại trừ
- Các câu sinh ra là những câu phi logic, trộn lẫn lệnh lập trình, thuật ngữ toán học, lệnh trình soạn thảo
- Ví dụ: các câu kết hợp ngẫu nhiên giữa lệnh Emacs, mã Lisp và thuật ngữ toán học
- Một số câu lấy từ ngữ từ những bài viết cụ thể trên blog để tạo thành những tổ hợp vô nghĩa
- Ví dụ: “Lisp source file” và “self-esteem” được trích từ các bài khác nhau rồi ghép lại
Tính chất Markov và cấu trúc thuật toán
- Thiết lập cơ bản dựa trên trigram (3 từ),
dùng cấu trúc map trong đó hai từ trước làm khóa (key) và từ thứ ba được lưu làm giá trị (value)
- Quá trình sinh văn bản
- Chọn ngẫu nhiên một cặp từ → chọn một trong các từ tiếp theo có thể xuất hiện với xác suất đồng đều
- Dùng từ vừa chọn cùng từ ngay trước đó để tạo thành cặp mới và lặp lại
- Kết thúc khi không còn từ tiếp theo hoặc đạt giới hạn 100 từ
- Nếu cùng một trigram xuất hiện nhiều lần, từ tiếp theo tương ứng sẽ được lưu trùng trong danh sách, từ đó tạo ra
lựa chọn xác suất tỷ lệ với tần suất xuất hiện
- Quá trình này là chuyển trạng thái xác suất chỉ phụ thuộc vào trạng thái hiện tại,
có thể biểu diễn bằng công thức P(Xₙ₊₁ | Xₙ, Xₙ₋₁, …, X₁) = P(Xₙ₊₁ | Xₙ),
- Đặc tính không nhớ (memoryless) này là cốt lõi của tính chất Markov
Các thử nghiệm bổ sung và điều chỉnh bậc mô hình
- Bậc (order) mặc định là 2 và có thể thay đổi bằng đối số dòng lệnh
- Khi tăng lên 3–4, câu trở nên nhất quán và tự nhiên hơn
- Ví dụ: có thể tạo ra những câu tương đối hợp lý, trộn giữa lệnh IRC và khái niệm toán học
- Tuy nhiên, khi tăng bậc lên 5, mô hình có xu hướng sao chép nguyên văn nội dung gốc, khiến
sự vô nghĩa mang tính sáng tạo (gibberish) biến mất
- Cũng có thể sinh văn bản bằng cách đưa vào một prompt ban đầu
- Ví dụ: nếu nhập câu mở đầu “Finally we”, mô hình sẽ tạo ra một câu dài trộn các từ như Emacs, MATLAB, GNU bash
Ý nghĩa của mô hình đơn giản
- Vào năm 2025, dù mô hình ngôn ngữ lớn (LLM) đang chiếm ưu thế,
mô hình Markov vẫn không thể nắm bắt cấu trúc toàn cục hay phụ thuộc dài hạn
- Dù vậy, nhờ thiết kế đơn giản và cách triển khai rõ ràng,
nó vẫn có giá trị như một mô hình nhập môn để học nguyên lý sinh ngôn ngữ
- Tác giả mô tả đây chính là “Hello, world” của các mô hình ngôn ngữ
1 bình luận
Ý kiến trên Hacker News
Markov Model là phiên bản thống kê của một máy trạng thái, tạo ra token tiếp theo theo xác suất chỉ dựa trên trạng thái hiện tại
Cần xác định rõ mối quan hệ giữa trạng thái và token thì mới có thể thảo luận một cách có ý nghĩa
Ví dụ, nếu trạng thái là một hàm của k quan sát cuối cùng thì đó được gọi là Markov Chain bậc k
Có thể xem RNN là một dạng mở rộng, trong đó trạng thái được định nghĩa như một hàm của các trạng thái trước đó và các token gần đây
Xác suất chuyển trạng thái có thể là xác định hoặc ngẫu nhiên, và độ dài ngữ cảnh cũng có thể được định nghĩa linh hoạt
Nhưng không phải mọi Markov Model đều có thể học được
Tôi nhớ là năm 1992 đã mua một chương trình kiểu này ở Egghead Software với giá 3 đô la
Tôi nạp vào đó mấy đoạn kiểu nhật ký suốt 5 năm của mình rồi cười ầm lên khi xem kết quả
Có thể tham khảo ví dụ cũ là Babble 1.0.20 và bài viết trên diễn đàn liên quan Software Spotlight: Babble
Đọc bài xong tôi cũng thử nghiệm với mô hình Markov
Ban đầu tôi làm ở mức ký tự, nhưng đổi sang mô hình bậc 2 cũng không khác biệt nhiều
Lên bậc 3 (trigram) thì thấy tự nhiên hơn một chút
Sau đó tôi áp dụng mô hình Markov bậc 1 lên văn bản đã được token hóa bằng BPE (Byte Pair Encoding), và kết quả nhất quán hơn đôi chút
Nhưng khi nâng lên bậc 2 thì nó sao chép nguyên văn bản gốc — vì BPE loại bỏ các token lặp, khiến chuyển tiếp trở nên mang tính xác định
Khi giới hạn số token lại (ví dụ: 894 → 800) thì nó lại trở nên không xác định, và văn bản trông tự nhiên hơn một chút
Nếu đẩy bậc lên quá cao (ví dụ: bậc 5), văn bản sẽ mang cảm giác khô khan và chỉ liệt kê sự kiện
Cuối cùng thì Markov model tuy đơn giản nhưng là một công cụ khá vui để thử nghiệm
Có vẻ nếu loại bỏ các chain chỉ có đúng một token theo sau thì sẽ khá hơn, nhưng lại có nguy cơ xóa luôn cả cấu trúc ngữ pháp
Tôi vẫn đang tìm cách tốt hơn để tránh các chain đơn dài
Nếu chỉ còn đúng một đường đi khả dĩ thì giảm xuống 4 từ chẳng hạn
Hoặc cũng có thể chỉ là chúng ta đang cô độc và tâm trí cố tìm trật tự trong hỗn loạn
Trước đây tôi cũng từng làm một thử nghiệm tương tự
Tôi đưa vào mô hình Markov khoảng 500.000 từ các bài fantasy và SF mình viết trong suốt 20 năm, rồi điều chỉnh bằng thanh trượt 2~5-gram
Đó giống như một “giếng mơ” mà tôi lôi ra dùng mỗi khi cần cảm hứng
Nó có vẻ như là phần tiếp nối của thói quen hồi nhỏ: mở ngẫu nhiên một trang từ điển để tìm ý tưởng viết
Thử nghiệm với kiểu corpus này có vẻ sẽ thành một dự án khá thú vị
Cũng có video thuyết trình
Có thể huấn luyện toàn bộ các bài viết cá nhân để tạo ra một mô hình của riêng mình không?
Nên dùng model và công cụ nào, và liệu không cần system prompt mà vẫn viết theo đúng giọng văn của tôi hay không?
Xa hơn nữa, tôi còn tò mò liệu nó có thể phản hồi tự nhiên qua điện thoại hoặc tin nhắn Discord hay không
Có một truyện fanfic Harry Potter được tạo bằng Markov Chain
Tên là Harry Potter and the Portrait of What Looked Like a Large Pile of Ash
Có thể xem tại liên kết của botnik.org
Chỉ cần nhìn câu đầu tiên thôi đã thấy như một đoạn văn bản rỗng tuếch
Theo tôi nó còn thiếu cảm xúc và ý nghĩa hơn cả cuốn sách dở nhất do con người viết ra
Những thử nghiệm kiểu như “I Fed 24 Years of My Blog Posts to a Markov Model” thực ra là điều mà nhiều LLM đã lặp đi lặp lại từ lâu
Một tác giả như Barbara Cartwright, người đã viết hơn 700 tiểu thuyết lãng mạn na ná nhau, có vẻ là kiểu có thể được tái hiện bằng Markov model
Vợ tôi đôi khi còn mua lại đúng cuốn tiểu thuyết đã đọc rồi để đọc lại
Tôi nhớ hồi giữa những năm 2000 trên IRC từng thấy bot Markov chain
Trước khi GPT xuất hiện thì chẳng có gì tốt hơn thế
Cái này thực ra gần với mô hình trigram hơn là Markov model
Nếu mở rộng lên 4-gram trở lên thì nó sẽ tạo ra các câu tự nhiên hơn nhiều
Trước đây từng có nghiên cứu về một mô hình n-gram khổng lồ tên là “infini-gram”, và tôi nghe nói trong một số miền dữ liệu nhất định nó cho hiệu năng tiệm cận LLM
Cảm ơn vì đã chia sẻ 24 năm trải nghiệm và suy nghĩ của bạn
Trong thời đại ngày nay, khi chỉ toàn tiêu dùng và kích thích tràn ngập, sự sẻ chia chân thành như thế này là điều rất đặc biệt