Grade

Bài 8 — Tại sao ChatGPT chọn từ tiếp theo với xác suất 92% thay vì 100%?

Bạn gõ "Hôm nay trời rất..." và ChatGPT viết tiếp "nắng".

Q

Quản trị viên

20 tháng 9, 2026· 7 phút đọc

Bài 8 — Tại sao ChatGPT chọn từ tiếp theo với xác suất 92% thay vì 100%?

Bạn gõ "Hôm nay trời rất..." và ChatGPT viết tiếp "nắng".

Nó không tra từ điển. Bên trong, nó vừa chấm điểm cho khoảng năm mươi nghìn từ trong vốn từ vựng, rồi chọn từ có điểm cao nhất. Nhưng câu hỏi thú vị hơn là: nếu nó đã chọn "nắng", tại sao mọi người luôn nói nó chọn với xác suất 92%92\% chứ không phải 100%100\%?

Câu trả lời nằm ở hai hàm số mà bạn học ở Toán 11: hàm mũ và hàm logarit.

Vấn đề: điểm số không phải xác suất

Sau khi chạy hết các lớp mạng nơ-ron (Bài 7), máy có một danh sách điểm số thô. Ví dụ với ba từ ứng viên:

Từ ứng viênĐiểm thô zz
"nắng"22
"mưa"11
"bão"00

Những con số này gọi là logits. Chúng có hai vấn đề khiến không dùng thẳng được:

  1. Có thể âm. Một từ rất khó xảy ra có thể được chấm −3-3. Mà xác suất thì không âm bao giờ.
  2. Không cộng lại thành 1. Ở đây 2+1+0=32+1+0 = 3, không phải 11.

Vậy cần một phép biến đổi làm hai việc cùng lúc: đưa mọi số về dương, và ép tổng bằng 11.

Ý tưởng: dùng hàm mũ

Hàm y=exy = e^x có đúng tính chất cần: nó luôn dương, với mọi xx kể cả xx âm.

Vậy bước 1: mũ hoá mọi điểm số. Bước 2: chia mỗi cái cho tổng, để tổng bằng 11.

Hai bước ấy gộp lại gọi là hàm Softmax:

pi=eziez1+ez2+⋯+eznp_i = \frac{e^{z_i}}{e^{z_1} + e^{z_2} + \dots + e^{z_n}}

Cái tên cũng có lý do: nó là bản "mềm" (soft) của phép lấy lớn nhất (max). Phép max cứng sẽ cho từ điểm cao nhất xác suất 100%100\% và các từ khác 0%0\%. Softmax vẫn ưu ái từ điểm cao nhưng chừa lại một phần cho các từ khác.

Trực quan hoá

Ba từ ứng viên, điểm thô mũ hoá rồi chuẩn hoá thành xác suất

Giải bài toán mẫu

Bước 1 — Mũ hoá từng điểm. Bấm máy:

e2=7,389,e1=2,718,e0=1,000e^2 = 7{,}389, \qquad e^1 = 2{,}718, \qquad e^0 = 1{,}000

Bước 2 — Cộng lại:

S=7,389+2,718+1,000=11,107S = 7{,}389 + 2{,}718 + 1{,}000 = 11{,}107

Bước 3 — Chia từng cái cho tổng:

p("na˘ˊng")=7,38911,107=0,665=66,5%p(\text{"nắng"}) = \frac{7{,}389}{11{,}107} = 0{,}665 = 66{,}5\%
p("mưa")=2,71811,107=0,245=24,5%p(\text{"mưa"}) = \frac{2{,}718}{11{,}107} = 0{,}245 = 24{,}5\%
p("ba˜o")=1,00011,107=0,090=9,0%p(\text{"bão"}) = \frac{1{,}000}{11{,}107} = 0{,}090 = 9{,}0\%

Kiểm: 66,5+24,5+9,0=100,0%66{,}5 + 24{,}5 + 9{,}0 = 100{,}0\% ✓

Chú ý một điều đáng ngạc nhiên: điểm thô của "nắng" chỉ gấp đôi điểm của "mưa" (22 so với 11), nhưng xác suất thì gấp gần ba lần (66,5%66{,}5\% so với 24,5%24{,}5\%). Hàm mũ nới rộng khoảng cách: chênh nhau 11 điểm thì chênh nhau e≈2,72e \approx 2{,}72 lần về xác suất.

"Nhiệt độ": vì sao ChatGPT có lúc sáng tạo, có lúc khô khan

Trước khi mũ hoá, mô hình chia mọi điểm cho một số TT gọi là nhiệt độ:

pi=ezi/T∑jezj/Tp_i = \frac{e^{z_i/T}}{\sum_j e^{z_j/T}}

Thử T=0,5T = 0{,}5 với cùng bộ điểm. Lúc này zz thành 44, 22, 00:

e4=54,598,e2=7,389,e0=1e^4 = 54{,}598, \quad e^2 = 7{,}389, \quad e^0 = 1
S=62,987S = 62{,}987
p("na˘ˊng")=54,59862,987≈86,7%,p("mưa")≈11,7%,p("ba˜o")≈1,6%p(\text{"nắng"}) = \frac{54{,}598}{62{,}987} \approx 86{,}7\%, \quad p(\text{"mưa"}) \approx 11{,}7\%, \quad p(\text{"bão"}) \approx 1{,}6\%

Từ 66,5%66{,}5\% vọt lên 86,7%86{,}7\%. Nhiệt độ thấp ⇒ phân bố nhọn ⇒ mô hình gần như luôn chọn từ điểm cao nhất ⇒ trả lời nhất quán nhưng nhàm.

Nhiệt độ cao thì ngược lại: phân bố dẹt, các từ ít khả năng cũng có cơ hội ⇒ văn phong đa dạng hơn nhưng dễ lạc đề.

Đó chính là nút "creativity" trong các ứng dụng AI — và nó là một phép chia trước khi mũ hoá.

Nửa còn lại: logarit dùng để phạt

Softmax cho ra dự đoán. Nhưng lúc huấn luyện, máy cần một con số đo mức sai để đưa vào Gradient Descent (Bài 5).

Giả sử câu đúng thật sự là "nắng". Mô hình gán cho "nắng" xác suất pp. Mức phạt được định nghĩa:

Maˆˊt maˊt=−ln⁡(p)\text{Mất mát} = -\ln(p)

Vì sao lại là logarit? Hãy xem bảng:

Mô hình gán cho từ đúngMất mát −ln⁡p-\ln p
99%99\% (rất chắc, và đúng)−ln⁡0,99≈0,01-\ln 0{,}99 \approx 0{,}01
66,5%66{,}5\% (đúng nhưng lơ mơ)−ln⁡0,665≈0,41-\ln 0{,}665 \approx 0{,}41
9%9\% (trúng do may)−ln⁡0,09≈2,41-\ln 0{,}09 \approx 2{,}41
1%1\% (sai hẳn)−ln⁡0,01≈4,61-\ln 0{,}01 \approx 4{,}61
→0%\to 0\% (sai chắc chắn)→+∞\to +\infty

Ba tính chất làm logarit đúng là hàm cần tìm:

  1. Luôn không âm. Vì 0<p≤10 < p \le 1 nên ln⁡p≤0\ln p \le 0, đổi dấu thành ≥0\ge 0.
  2. Phạt tăng rất nhanh khi sai. Từ 66,5%66{,}5\% xuống 9%9\% — xác suất giảm 7 lần nhưng mức phạt tăng gần 6 lần. Từ 9%9\% xuống 1%1\% thì phạt lại gần gấp đôi. Mô hình bị ép tránh những lần sai nặng trước khi lo tối ưu các lần đã gần đúng.
  3. Sai chắc chắn thì phạt vô hạn. Gán 0%0\% cho điều thật sự xảy ra là sai lầm không thể tha thứ — và hàm −ln⁡-\ln nói đúng điều đó.

Đại lượng này tên là Cross-Entropy Loss, hàm mất mát được dùng nhiều nhất trong toàn bộ ngành học máy.

Trở lại câu hỏi ở tiêu đề

Vì sao không bao giờ là 100%100\%?

Nhìn lại công thức: pi=ezi∑jezjp_i = \dfrac{e^{z_i}}{\sum_j e^{z_j}}. Muốn pi=1p_i = 1 thì mẫu số phải bằng đúng tử số, tức mọi ezje^{z_j} khác phải bằng 00. Nhưng ex>0e^x > 0 với mọi xx — hàm mũ không bao giờ nhận giá trị 00.

Vậy 100%100\% là điều toán học không cho phép, chứ không phải mô hình còn lưỡng lự.

Và điều đó lại rất đáng mừng. Một hệ thống luôn tuyệt đối chắc chắn là một hệ thống không biết mình có thể sai. Chính cái 8%8\% còn lại ấy là chỗ mô hình thừa nhận: "có thể là từ khác".

Thử thách tự tính

Một mô hình phân loại ảnh cho ba lớp với điểm thô: mèo =3= 3, chó =1= 1, chim =0= 0.

Câu hỏi 1. Tính e3e^3, e1e^1, e0e^0 và tổng của chúng (lấy ba chữ số thập phân).

Câu hỏi 2. Tính xác suất softmax cho cả ba lớp, làm tròn tới 0,1%0{,}1\%. Kiểm tổng bằng 100%100\%.

Câu hỏi 3. Ảnh thật là mèo. Tính mất mát −ln⁡p(meˋo)-\ln p(\text{mèo}).

Câu hỏi 4. Nếu cả ba điểm thô đều bằng nhau (ví dụ cùng bằng 22), xác suất mỗi lớp là bao nhiêu? Mất mát khi ấy bằng bao nhiêu?

Đáp án

Câu 1. e3=20,086e^3 = 20{,}086; e1=2,718e^1 = 2{,}718; e0=1,000e^0 = 1{,}000. Tổng S=23,804S = 23{,}804.

Câu 2.

p(meˋo)=20,08623,804≈84,4%p(\text{mèo}) = \frac{20{,}086}{23{,}804} \approx 84{,}4\%
p(choˊ)=2,71823,804≈11,4%p(\text{chó}) = \frac{2{,}718}{23{,}804} \approx 11{,}4\%
p(chim)=1,00023,804≈4,2%p(\text{chim}) = \frac{1{,}000}{23{,}804} \approx 4{,}2\%
Tổng: 84,4+11,4+4,2=100,0%84{,}4 + 11{,}4 + 4{,}2 = 100{,}0\% ✓

Câu 3. −ln⁡(0,844)≈0,170-\ln(0{,}844) \approx 0{,}170. Mức phạt nhỏ — mô hình vừa đúng vừa khá chắc.

Câu 4. Điểm bằng nhau ⇒ mũ bằng nhau ⇒ mỗi lớp 13≈33,3%\dfrac{1}{3} \approx 33{,}3\%. Mất mát =−ln⁡13=ln⁡3≈1,099= -\ln\dfrac{1}{3} = \ln 3 \approx 1{,}099.

Đây là mức phạt của một mô hình chưa học gì cả, chỉ đoán đều. Khi huấn luyện, con số cần theo dõi là mất mát có tụt xuống dưới ln⁡(soˆˊ lớp)\ln(\text{số lớp}) hay không — nếu không, mô hình chưa học được gì.

Lời kết cho cả series

Tám bài, tám mảng kiến thức, và không bài nào phải đi quá chương trình phổ thông:

BàiToán THPTKhái niệm AI
1Vectơ, toạ độVector Embedding
2Tích vô hướngCosine Similarity
3Đường thẳng, bất phương trìnhPerceptron
4Cực trị parabolHồi quy & hàm mất mát
5Đạo hàm, tiếp tuyếnGradient Descent
6Xác suất có điều kiện, BayesNaive Bayes
7Nhân ma trậnForward Propagation
8Hàm mũ, logaritSoftmax & Cross-Entropy

Điều đáng rút ra không phải là "AI dễ". Xây một mô hình thật đòi kỹ thuật, dữ liệu và sức tính toán khổng lồ. Điều đáng rút ra là nền móng của nó không xa lạ. Những công cụ ấy nằm trong sách giáo khoa của bạn, và chúng được chọn không phải vì đẹp mà vì chúng làm được việc: đo độ giống, chia hai nhóm, tìm điểm thấp nhất, cập nhật niềm tin khi có bằng chứng mới.

Lần tới khi ai đó hỏi "học Toán để làm gì", bạn có tám câu trả lời cụ thể — và mỗi câu đều kiểm chứng được bằng một chiếc máy tính cầm tay.


Muốn luyện chắc phần hàm mũ và logarit, thầy cô và các bạn có thể dựng bộ đề riêng trên Grade: chấm tự động ngay khi nộp kèm lời giải chi tiết từng câu. Dùng thử miễn phí tại đây.


Bắt đầu học cùng Grade

Luyện tập, kiểm tra trình độ và theo dõi tiến độ học tập đa môn — trên web và điện thoại.

Đăng ký miễn phí

Bài viết liên quan