Mô hình ngôn ngữ tính toán bằng cách đoán chữ số tiếp theo, giống cách nó đoán chữ, nên rất dễ sai với phép tính dài hoặc số lớn. Khi được trao công cụ chạy mã, nó không tự tính nữa mà viết ra một đoạn chương trình ngắn mô tả phép tính, máy tính thực thi đoạn đó và trả về con số chính xác. Đây là lý do cùng một chatbot có lúc tính sai một phép nhân đơn giản, có lúc lại xử lý đúng cả bảng số liệu hàng nghìn dòng.
Bài này giải thích vì sao mô hình ngôn ngữ yếu về tính toán, công cụ chạy mã khắc phục điều đó thế nào, và những chỗ nó vẫn có thể đưa bạn tới kết quả sai một cách rất thuyết phục. Không cần biết lập trình để đọc; bạn chỉ cần hình dung một người giỏi diễn đạt nhưng được phép mượn máy tính bỏ túi.
Vì sao mô hình ngôn ngữ tính nhẩm kém
Mô hình ngôn ngữ không có một bộ phận tính toán bên trong như máy tính bỏ túi. Nó học từ khối văn bản khổng lồ và trả lời bằng cách đoán phần chữ tiếp theo hợp lý nhất. Với phép tính quen thuộc như hai cộng hai, đáp án xuất hiện quá nhiều trong dữ liệu nên nó gần như luôn đúng. Với phép nhân hai số bảy chữ số mà nó chưa từng thấy, nó phải "đoán" từng phần của con số, và sai số len vào.
Cách mô hình cắt chữ thành các mảnh nhỏ, gọi là token, cũng gây khó: một con số dài có thể bị chia thành những mảnh không theo hàng đơn vị, hàng chục. Chi tiết vì sao chatbot tính nhầm và đếm sai được giải thích ở danh mục vì sao AI bịa; bài này đi tiếp sang câu hỏi thực tế hơn là người ta khắc phục điều đó bằng cách nào, và cách khắc phục ấy để lại những lỗ hổng gì.
Các thế hệ mô hình mới, nhất là những mô hình được huấn luyện để suy luận nhiều bước, tính nhẩm tốt hơn nhiều so với trước. Nhưng về nguyên lý, đoán vẫn là đoán. Với con số cần chính xác tuyệt đối, để máy tính thật làm vẫn an toàn hơn.
Một lần chạy mã diễn ra thế nào
Ví dụ giả định: bạn tải lên bảng chỉ số công tơ điện của tám phòng trọ trong tháng và hỏi mỗi phòng phải trả bao nhiêu tiền điện theo đơn giá bạn cho. Phía sau, quá trình thường như sau.
- Mô hình đọc câu hỏi và nhận ra cần tính toán trên dữ liệu, không nên đoán.
- Mô hình viết một đoạn mã ngắn: mở tệp, lấy cột chỉ số cũ và chỉ số mới, trừ ra số điện dùng, nhân với đơn giá.
- Phần mềm chạy đoạn mã đó trong một môi trường cô lập, giống một chiếc máy tính tạm thời tách khỏi máy của bạn và khỏi máy chủ chính.
- Kết quả, hoặc thông báo lỗi nếu mã chạy hỏng, được trả lại cho mô hình.
- Nếu có lỗi, ví dụ tên cột không khớp, mô hình đọc thông báo, sửa mã và chạy lại. Đây là một vòng lặp tác tử nhỏ.
- Khi có kết quả, mô hình viết lại thành bảng hoặc câu trả lời dễ đọc cho bạn.
Điểm cần nhớ: con số cuối cùng do máy tính ra nên phép tính chính xác. Nhưng việc chọn phép tính nào, lấy cột nào, hiểu đơn giá ra sao vẫn do mô hình quyết định. Chính xác về số học không có nghĩa là đúng về ý.
Chạy mã giúp được những việc gì
Phép tính dài và số lớn. Cộng dồn, nhân chia, phần trăm, quy đổi đơn vị trên nhiều dòng dữ liệu. Máy làm chính xác và nhanh, điều mà đoán chữ không bảo đảm được.
Đọc và tổng hợp bảng tính. Lọc, đếm, nhóm theo tháng, tìm dòng trùng, tính trung bình từng nhóm. Với tệp hàng nghìn dòng, mô hình không cần "đọc" từng dòng bằng mắt mà để mã xử lý.
Vẽ biểu đồ. Mô hình viết mã vẽ biểu đồ từ dữ liệu, ảnh biểu đồ được tạo ra từ con số thật chứ không phải tưởng tượng.
Kiểm tra lại chính mình. Khi mô hình nêu một con số trong câu trả lời, nó có thể chạy mã để đối chiếu, nhờ đó bắt được lỗi tính nhẩm trước khi tới tay bạn.
Chuyển đổi định dạng. Đổi tệp từ dạng này sang dạng khác, gộp nhiều tệp, tách cột họ tên. Những việc lặp lại mà người làm tay dễ sót.
Những chỗ chạy mã vẫn dẫn tới kết quả sai
Kết quả từ chạy mã trông rất chắc chắn vì có số lẻ tới từng đơn vị và đôi khi kèm biểu đồ đẹp. Chính vẻ chắc chắn đó khiến lỗi khó bị phát hiện. Những lỗi thường gặp nằm ở khâu hiểu dữ liệu, không ở khâu tính.
- Lấy nhầm cột. Bảng có hai cột tên gần giống, như "doanh thu" và "doanh thu thuần", mô hình chọn nhầm. Mọi con số sau đó sai một cách nhất quán.
- Hiểu sai định dạng số. Ở Việt Nam dấu chấm thường dùng phân cách hàng nghìn, dấu phẩy cho phần thập phân, ngược với cách viết phổ biến bằng tiếng Anh. Đọc nhầm là một nghìn biến thành một phẩy.
- Bỏ qua dòng lỗi. Ô trống, ô ghi chữ lẫn số, dòng tổng cộng nằm giữa bảng có thể bị loại âm thầm hoặc cộng hai lần.
- Chọn sai cách tính. Tính trung bình khi đáng lẽ phải lấy trung vị, cộng phần trăm của các nhóm có quy mô khác nhau như cộng số thường.
- Nói đã chạy nhưng không chạy. Nếu công cụ không được bật, mô hình đôi khi vẫn trình bày như vừa tính xong, trong khi con số là đoán.
- Giới hạn môi trường. Môi trường cô lập thường không vào được Internet, có giới hạn thời gian và dung lượng; tệp quá lớn có thể chỉ được xử lý một phần.
Cách kiểm nhanh: chọn hai ba dòng bất kỳ, tự tính tay hoặc bằng bảng tính, so với kết quả. Xem lại cột và cách tính mà mô hình mô tả. Với số liệu dùng cho quyết định tiền bạc hay báo cáo chính thức, bước này không nên bỏ.
Khi nào nên mong chatbot chạy mã, khi nào không cần
Không phải câu hỏi có số nào cũng cần chạy mã. Bảng dưới giúp bạn đoán khi nào kết quả tính nhẩm đủ dùng và khi nào nên đòi hỏi con số được tính thật.
| Loại câu hỏi | Tính nhẩm của mô hình | Có chạy mã |
|---|---|---|
| Phép tính nhỏ quen thuộc, ước lượng nhanh | Thường đủ | Không cần thiết |
| Phép tính nhiều bước, số lẻ, số lớn | Dễ sai một chữ số | Nên có |
| Tổng hợp bảng nhiều dòng | Không đáng tin, dễ bỏ sót | Gần như bắt buộc |
| Câu hỏi khái niệm như vì sao lãi kép tăng nhanh | Đủ để giải thích | Chỉ cần khi muốn minh hoạ bằng số |
| Đếm chữ, đếm từ, sắp xếp danh sách dài | Hay sai | Nên có |
Nhiều ứng dụng tự quyết định khi nào chạy mã và hiển thị đoạn mã hoặc dòng thông báo khi đã chạy. Nếu thấy một con số quan trọng mà không có dấu hiệu nào cho thấy đã được tính thật, hãy coi đó là con số ước lượng.
Chạy mã và suy luận nhiều bước: hai cách bớt sai khác nhau
Gần đây nhiều mô hình được giới thiệu là có khả năng suy luận, tức là được huấn luyện để viết ra các bước trung gian trước khi đưa đáp án, giống học sinh trình bày lời giải thay vì ghi ngay kết quả. Cách này giúp rõ rệt với bài toán nhiều bước, vì mỗi bước nhỏ dễ đoán đúng hơn một bước nhảy lớn.
Tuy vậy suy luận nhiều bước vẫn diễn ra bằng cơ chế đoán chữ. Mỗi bước trung gian là một lần đoán, và một lỗi tính ở bước giữa sẽ được mang theo tới cuối, đôi khi kèm lời giải thích nghe rất hợp lý. Chạy mã đi theo hướng khác: mô hình không cố tự tính mà giao phần tính cho máy, chỉ giữ lại phần quyết định cần tính gì.
Hai cách này bổ sung cho nhau. Suy luận giúp mô hình hiểu đề và chọn cách giải; chạy mã bảo đảm phép tính đúng. Một hệ thống tốt thường dùng cả hai: nghĩ ra cách làm, viết mã, chạy, đọc kết quả, và tự hỏi con số có hợp lý không. Ví dụ, nếu tiền điện một phòng trọ tính ra gấp mười lần các phòng khác, một mô hình cẩn thận sẽ dừng lại kiểm tra cột chỉ số thay vì báo kết quả ngay.
Với người dùng, bài học thực tế là không nên tin một con số chỉ vì lời giải trình bày dài và mạch lạc. Lời giải dài cho bạn thêm chỗ để kiểm, chứ không tự nó bảo đảm đúng.
Tải dữ liệu lên để chạy mã: những điều nên cân nhắc
Khi bạn tải một bảng tính lên để chatbot phân tích, tệp đó được chuyển tới máy chủ của dịch vụ và nằm trong môi trường chạy mã ít nhất trong thời gian phiên làm việc. Với bảng lương, danh sách khách hàng, số tài khoản, thông tin sức khoẻ, bạn nên xoá hoặc thay các cột định danh như họ tên, số điện thoại, số giấy tờ trước khi tải, vì phép tính hiếm khi cần tới chúng.
Môi trường cô lập được thiết kế để mã chạy không đụng tới máy của bạn hay các hệ thống khác, nên rủi ro mã độc lan ra ngoài là thấp. Nhưng cô lập về kỹ thuật không giống với bảo mật về dữ liệu: dữ liệu vẫn nằm trên máy chủ của bên thứ ba theo chính sách của họ. Chính sách lưu trữ tệp tải lên khác nhau giữa các dịch vụ, nên kiểm bản hiện hành là việc nên làm với dữ liệu nhạy cảm.
Một điểm cuối: chạy mã làm AI giỏi hơn ở phần tính toán, nhưng không làm nó hiểu nghiệp vụ của bạn hơn. Biết cột nào là gì, con số nào hợp lý, kết quả nào đáng ngờ vẫn là phần việc của người hiểu việc.
Câu hỏi thường gặp
Chạy mã có nghĩa là AI tự viết phần mềm không?
Ở đây chỉ là những đoạn mã ngắn dùng một lần để tính toán hay xử lý dữ liệu, chạy xong là bỏ. Việc dùng AI để viết phần mềm thật là chuyện khác, có nhiều khâu kiểm thử và thuộc về các trang dành cho người lập trình.
Mã do AI viết có làm hỏng máy tính của bạn không?
Với công cụ chạy mã trong chatbot phổ biến, mã chạy trong môi trường cô lập trên máy chủ của dịch vụ, không chạy trên máy của bạn. Rủi ro chỉ xuất hiện nếu bạn tự chép mã đó về máy chạy mà không hiểu nó làm gì, hoặc dùng công cụ cho tác tử quyền chạy lệnh trên máy mình.
Vì sao có lúc chatbot nói không chạy được mã?
Có thể tính năng không có trong phiên bản hoặc gói đang dùng, bị tắt trong cài đặt, hoặc tệp quá lớn, định dạng không đọc được. Cũng có khi mô hình chọn không chạy mã vì đánh giá không cần. Khi cần, bạn nói rõ là muốn con số được tính thật bằng công cụ.
Kết quả tính bằng mã có cần kiểm lại không?
Có, nhưng kiểm theo cách khác. Phép cộng nhân thì máy làm đúng; phần cần kiểm là mô hình đã hiểu đúng câu hỏi chưa, lấy đúng cột chưa, xử lý ô trống ra sao. Thử tính tay vài dòng và đọc lại cách làm mô hình mô tả là đủ phát hiện phần lớn lỗi.
Chatbot không có công cụ chạy mã thì nên dùng thế nào với số liệu?
Dùng nó để giải thích cách tính, lập công thức cho bảng tính, hoặc kiểm tra logic, rồi để bảng tính hay máy tính bỏ túi làm phần tính. Tránh nhờ nó cộng một cột số dài rồi chép thẳng kết quả vào báo cáo.
Biểu đồ do AI vẽ bằng mã có tin được không?
Biểu đồ được vẽ từ chính con số mà đoạn mã tính ra, nên nó trung thành với dữ liệu đã xử lý. Nhưng nếu khâu chọn cột hay lọc dữ liệu sai, biểu đồ sẽ minh hoạ đẹp đẽ cho một kết quả sai. Xem trục, đơn vị và số dòng dữ liệu được dùng trước khi đưa biểu đồ vào báo cáo.