Softmax
Softmax
Kéo điểm số, trượt nhiệt độ, rồi cộng cùng một hằng số vào cả bốn lớp và xem kết quả không nhích một phần trăm nào.
Mạng nơ ron phân loại không nhả ra xác suất. Nó nhả ra vài số thực gọi là điểm số hay logit, mỗi lớp một số, và những số đó có thể âm, có thể lớn tuỳ ý, và không cộng lại thành gì cả. Softmax là bước biến chúng thành một phân phối xác suất: mọi thành phần dương, và tổng bằng 1.
Công thức thì một dòng. Với điểm số z và nhiệt độ T, xác suất của lớp thứ i là lũy thừa exp(z_i / T) chia cho tổng mọi lũy thừa. Cái đáng học không nằm ở dòng đó mà nằm ở ba hệ quả của nó, và cả ba đều đo được ngay trong sim dưới đây.
Ở trạng thái mở bài, sim đang nói gì
Bốn điểm số mặc định là 3.0, 1.0, 0.5 và -1.0, nhiệt độ T = 1.00. Hàng dưới đọc 81% cho Mèo, 11% cho Chó, 7% cho Chim và 1% cho Cá. Số chính xác lần lượt là 0.8092343867399149, 0.10951796493425296, 0.0664260035219575 và 0.01482164480387454.
Bốn con số đó cộng lại được 0.9999999999999998, tức thấp hơn 1 đúng một đơn vị cuối, hiểu theo bậc thang tại 1 là 2 lũy thừa -52. Ngay dưới 1 thì các số thực dày gấp đôi, nên cùng khoảng đó là hai bước biểu diễn: số liền sát dưới 1 là 0.9999999999999999. Ô đọc kết quả hiện 1.00, nên màn hình đang che một khe lệch có thật. Trên toàn bộ lưới 32768 cấu hình mà cổng kiểm quét, tổng bằng đúng 1 ở 21285 cấu hình và lệch nhiều nhất 4.440892098500626e-16, tức hai đơn vị cuối, ở phần còn lại. Vậy câu đúng là tổng bằng 1 tới mức số thực 64 bit cho phép, chứ không phải bằng 1 tuyệt đối. Nếu bạn viết một phép kiểm đòi bằng 1 tuyệt đối thì nó sẽ báo lỗi oan cho một cài đặt hoàn toàn đúng.
Còn hai con số nữa ở thanh công cụ. Ô còn cộng được: +7.0 tới -3.0 là chỗ để chuẩn bị cho mục sau: dải điểm số vẽ được chạy từ -4.0 tới 10.0, điểm số cao nhất đang là 3.0 nên còn 7 bậc phía trên, điểm số thấp nhất đang là -1.0 nên còn 3 bậc phía dưới.
Bốn phần trăm in ra cộng lại đúng 100, và đó là may chứ không phải luật. Xác suất thật của Chim là 6.64 phần trăm nên nó làm tròn lên thành 7%, còn của Cá là 1.48 phần trăm nên nó làm tròn xuống thành 1%. Làm tròn bốn số tới phần trăm nguyên hoàn toàn có thể cho tổng lệch khỏi 100, và nếu bạn thấy thế thì đó không phải lỗi của softmax mà là lỗi của việc đọc con số đã làm tròn như con số gốc. Cùng lý do đó, một thanh đọc 1% có thể ứng với xác suất 0.005, và một thanh đọc 0% vẫn có thể ứng với 0.004, tức nó không hề trống.
Cách tự kiểm một cài đặt softmax mà không cần máy tính
Trước khi tin bất cứ con số nào ở trên, đáng bỏ ra một phút để biết cách bắt lỗi một cài đặt softmax bằng tay. Mẹo là chọn điểm số sao cho lũy thừa ra số nguyên, vì exp(ln k) đúng bằng k.
Đặt bốn điểm số là ln 4, ln 2, 0, 0. Bốn lũy thừa thành 4, 2, 1, 1, tổng bằng 8, nên đáp án phải là đúng 0.5, 0.25, 0.125 và 0.125. Bốn số đó cộng lại bằng 1 không sai một bit nào, và ở đây là chính xác chứ không phải tới mức làm tròn, vì cả bốn đều là phân số có mẫu là lũy thừa của hai nên máy giữ được nguyên vẹn. Nói cho đủ, exp(ln 4) trên máy này trả về đúng 4, đó là điều kiện để ví dụ tròn trịa như vậy, và đáng kiểm chứ không nên giả định. Hai lớp cũng làm được tương tự: ln 3 với 0 cho đúng 0.75, ln 9 với 0 cho 0.9, và ln 99 với 0 cho 0.99.
Bộ ví dụ này bắt được hai lỗi thường gặp cùng lúc. Nếu ai đó quên chia cho nhiệt độ thì nhân đôi cả bốn điểm số và nhân đôi luôn nhiệt độ phải cho ra y hệt kết quả cũ, và một cài đặt bỏ mất phép chia sẽ trượt ngay ở phép thử đó. Nếu ai đó lấy lũy thừa sai cơ số thì bốn con số tròn trịa kia sẽ không còn tròn nữa.
Cái giá của việc chia cho tổng: bốn lớp bị buộc vào nhau
Mẫu số của softmax là tổng của cả bốn lũy thừa, nên không lớp nào có xác suất riêng của mình. Kéo riêng thanh Mèo từ 3.0 lên 3.1 và cả bốn phần trăm đổi: 81% 11% 7% 1% thành 82% 10% 6% 1%. Ba lớp kia không được ai chạm tới, điểm số của chúng vẫn y nguyên, nhưng xác suất của cả ba đều giảm, vì mẫu số vừa lớn thêm.
Đây là chỗ khác biệt thứ hai so với sigmoid. Nếu bạn dùng bốn sigmoid độc lập cho bốn lớp thì mỗi lớp có một xác suất riêng, chúng không cần cộng thành 1, và một đầu vào có thể thuộc hai lớp cùng lúc hoặc không thuộc lớp nào. Softmax thì luôn phát biểu một câu chọn một trong bốn. Chọn softmax là chọn giả thiết rằng bốn lớp loại trừ nhau và đầu vào chắc chắn thuộc một trong chúng, và giả thiết đó không phải lúc nào cũng đúng với bài toán bạn đang làm.
Bất biến quan trọng nhất: cộng một hằng số thì không đổi gì cả
Đây là tính chất làm softmax khác sigmoid, và nó dễ thấy nhất bằng cách tự làm. Bấm +1 cho cả bốn bảy lần. Bốn nhãn điểm số bò từ 3.0 1.0 0.5 -1.0 lên 10.0 8.0 7.5 6.0. Bốn phần trăm ở hàng dưới: 81%, 11%, 7%, 1%. Không nhích một chữ số nào.
Rồi bấm -1 cho cả bốn cho tới khi bốn nhãn đọc 0.0 -2.0 -2.5 -4.0, tức mọi điểm số đều bằng 0 hoặc âm. Vẫn là 81%, 11%, 7%, 1%.
Lý do là một dòng đại số. Cộng c vào mọi điểm số nhân cả tử số và mẫu số với cùng một hệ số exp(c / T), và hệ số đó triệt tiêu. Nói cách khác softmax chỉ nhìn hiệu giữa các điểm số, còn độ lớn tuyệt đối của chúng không mang một bit thông tin nào. Bản thân cài đặt trong sim chính là bất biến này dùng có chủ ý: nó trừ đi điểm số lớn nhất trước khi lấy lũy thừa, và nó được phép làm thế đúng vì phép trừ đó không đổi kết quả.
Cổng kiểm quét bất biến này trên 1441792 mẫu, gồm cả z và cả hằng số c. Trong đó 1081487 mẫu, tức 75.01 phần trăm, giống nhau tới từng bit. Phần còn lại lệch nhiều nhất 5.551115123125783e-16, hai đơn vị rưỡi ở chữ số cuối, và xét theo tỉ lệ thì luôn dưới 1e-13. Nên phát biểu đúng là bất biến giữ được tới mức làm tròn, chứ không phải giữ được bit-y-nguyên ở mọi chỗ.
Và bất biến này có một điểm gãy đo được, đáng biết vì nó không phải lỗi của softmax. Cộng c bằng 2 lũy thừa 51 thì cả bốn xác suất vẫn y nguyên tới từng bit. Cộng c bằng 2 lũy thừa 52 thì một xác suất dịch 0.025055306600997355, tức đủ để thấy trên hình. Nguyên nhân nằm ở chỗ khác: tại 2 lũy thừa 52, khoảng cách giữa hai số thực 64 bit liền nhau đã lên tới 1, nên con số 0.5 trong danh sách điểm số không còn biểu diễn được sau khi cộng. Hiệu giữa các điểm số đổi, và phân phối đổi theo. Cộng tới 2 lũy thừa 54 thì phân phối đã sụp gần về đều nhau.
Có một chỗ sim cố tình từ chối thay vì làm. Khi bấm cộng mà một thanh sẽ vượt ra ngoài dải -4.0 tới 10.0, hệ không kẹp thanh đó lại rồi cộng ba thanh kia, mà giữ nguyên cả bốn và hiện một dòng nói rõ lớp nào chắn. Kẹp một thanh trong khi ba thanh kia dịch là làm đổi hiệu giữa các điểm số, tức làm hỏng đúng cái bất biến đang được minh hoạ, và nó sẽ hỏng một cách im lặng.
Nhiệt độ: cùng một điểm số, nhiều mức chắc chắn
Nhiệt độ chia điểm số trước khi lấy lũy thừa. Chia cho số lớn thì mọi hiệu co lại, các lũy thừa gần bằng nhau, phân phối phẳng ra. Chia cho số nhỏ thì mọi hiệu giãn ra, phân phối dồn về một đỉnh. Với bốn điểm số mặc định, đây là số cụ thể ở từng mức:
T | bốn thanh đọc | entropy (bit) | nhãn |
|---|---|---|---|
0.1 | 100% 0% 0% 0% | 6.296687637103517e-8 | nhọn |
0.5 | 98% 2% 1% 0% | 0.19042631028885318 | nhọn |
1 | 81% 11% 7% 1% | 0.9464861376409316 | chuẩn |
2 | 56% 21% 16% 8% | 1.6431592569131017 | phẳng |
5 | 37% 25% 22% 16% | 1.939490176137572 | phẳng |
Nhãn ở cột cuối là quy ước trình bày chứ không phải chân lý: sim gọi là nhọn khi T dưới 0.85 và phẳng khi T trên 1.35, còn đúng tại hai mốc đó thì vẫn là chuẩn.
Hai chỗ trong bảng đáng dừng lại.
Thứ nhất, 100% ở T = 0.1 không có nghĩa là bằng 1. Xác suất thật ở đó là 0.9999999979249583, thiếu 1 một khoảng 2.075041694027391e-9. Nó chỉ đúng bằng 1 khi T xuống dưới 0.05444132229769673, tức thấp hơn cả mốc nhỏ nhất của thanh kéo. Vậy một nhãn 100% trên hình luôn là kết quả của phép làm tròn, không phải của một xác suất đã đạt trần.
Thứ hai, T = 5 không phải là gần đều nhau. Bốn lớp đọc 37% 25% 22% 16%, và lớp đầu vẫn giữ đúng 0.36681368108410056, tức khoảng cách giữa lớp cao nhất và lớp thấp nhất còn hơn hai mươi điểm phần trăm. Entropy ở đó là 1.939490176137572 bit trên mức tối đa 2 bit của bốn lớp, gần nhưng chưa tới. Muốn cả bốn thanh cùng đọc 25% thì phải đẩy nhiệt độ tới 106.82465510547233, tức hơn hai mươi lần mốc cao nhất của thanh kéo. Bản trước của bài này nói T = 5 cho khoảng 25% mỗi lớp, và đó là một câu sai, đo là biết.
Còn một điều nhiệt độ không làm được: nó không bao giờ đổi lớp thắng. Chia mọi điểm số cho cùng một số dương không đổi thứ tự của chúng, nên lớp có điểm cao nhất vẫn có xác suất cao nhất ở mọi mức nhiệt độ. Cổng kiểm quét 32768 cấu hình và không có ngoại lệ nào. Muốn đổi lớp thắng thì phải kéo một thanh, tức đổi hiệu, chứ không phải trượt nhiệt độ.
Cuối cùng, nhiệt độ và độ lớn của điểm số là cùng một cái núm. Nhân mọi điểm số với 10 cho ra đúng kết quả của việc chia nhiệt độ cho 10: bộ 30, 10, 5, -10 ở T = 1 bằng bộ 3, 1, 0.5, -1 ở T = 0.1. Nhân thì đổi kết quả, cộng thì không, và hai chuyện đó rất dễ bị lẫn.
Một cách đo độ phẳng bằng đúng một con số là entropy. Nó bằng 0 khi phân phối dồn hết vào một lớp và bằng 2 bit khi bốn lớp chia đều, tức 2 bit là mức trần của bốn lớp. Cột entropy trong bảng trên đi lên đơn điệu theo nhiệt độ, và đó không phải nhận xét bằng mắt: cổng kiểm quét 512 bộ điểm số nhân với 50 bước nhiệt độ, tổng 25600 bước, và không có bước nào entropy tụt xuống. Nói cách khác câu "nhiệt độ cao thì phẳng hơn" có một đại lượng đứng sau nó, chứ không chỉ là mô tả hình dáng.
Nhiệt độ là số chia nên nó không được phép bằng 0. Cài đặt đặt một sàn ở 1e-6, và cái sàn đó chỉ để chặn phép chia cho 0: thanh kéo dừng ở 0.1, tức cao hơn sàn mười vạn lần, nên người đọc không bao giờ chạm tới. Nếu bạn gọi hàm trực tiếp với T bằng 0 hoặc bằng số âm thì nó bị đưa về sàn và trả về phân phối một điểm 1, 0, 0, 0 thay vì NaN.
Tràn số không phải chuyện lý thuyết
Viết thẳng công thức, tức lấy exp(z / T) rồi chia cho tổng, là cách sai trong thực tế. Lý do là Math.exp có hai bờ. Nó tràn thành vô cùng khi đối số vượt 709.782712893384, và một bước số thực sau mốc đó, ở 709.7827128933841, kết quả đã là vô cùng. Ở đầu kia nó tụt hẳn về 0 khi đối số xuống dưới -745.1332191019411, mà tại đúng mốc này giá trị còn sống sót chỉ là 5e-324, số dưới chuẩn nhỏ nhất mà máy biểu diễn được.
Cổng kiểm dò cả hai bờ bằng cách chia đôi, rồi so bản viết thẳng với bản trừ đi giá trị lớn nhất. Kết quả đo, tính theo hằng số c cộng vào bốn điểm số mặc định:
- Ở
T = 1, bản viết thẳng còn đúng tớic = 706.571046213528và sai ngay ở số thực kế tiếp,706.5710462135281. Chỗ sai đầu tiên là mẫu số tràn: từng lũy thừa còn hữu hạn nhưng tổng của chúng đã thành vô cùng, nên cả bốn xác suất về0và tổng bằng0chứ không bằng1. - Đẩy thêm chút nữa, tới
c = 706.7827128933841, thì chính lũy thừa lớn nhất thành vô cùng và kết quả cóNaN. Mốc đó đúng bằng một bước số thực trên709.782712893384cho điểm số lớn nhất. - Ở
T = 0.5mốc sai đầu tiên tụt về351.87882039664026, ởT = 0.1tụt về67.97827128913089. Nhiệt độ nhỏ chia điểm số thành số lớn hơn, nên nó nhân rủi ro tràn lên đúng theo tỉ lệ. - Bản trừ đi giá trị lớn nhất, ở mọi điểm nói trên, trả về đúng phân phối của trạng thái mở bài:
81% 11% 7% 1%. Nó không có cửa sổ hỏng nào, vì sau khi trừ thì lũy thừa lớn nhất luôn làexp(0)bằng1.
Nhưng ca tệ nhất không phải NaN, vì NaN thì bạn thấy ngay. Ca tệ nhất là ở phía âm. Tại c = -744.1332191019412, bản viết thẳng cho ra 0.8181818181818182, 0.12121212121212122, 0.06060606060606061 và 0. Bốn số đó cộng lại đúng bằng 1. Nhìn thì không có gì bất thường. Thực chất bốn lũy thừa đã rơi vào vùng số dưới chuẩn, nơi một số thực chỉ còn giữ vài bit, nên ba số sống sót bị lượng tử hoá thành 27, 4 và 2 đơn vị của 5e-324, tức đúng 27/33, 4/33 và 2/33, còn số thứ tư đã tụt hẳn về 0.
Trên màn hình bản viết thẳng sẽ đọc 82% 12% 6% 0% trong khi đáp án đúng là 81% 11% 7% 1%. Cả bốn phần trăm đều sai, và không có một dấu hiệu nào để nghi ngờ. Xuống thấp hơn nữa, tới c = -748.1332191019412, mọi lũy thừa mới cùng tụt về 0 và kết quả thành NaN.
Nói cho công bằng: trong dải mà chính sim này cho phép, cả hai bản đều đúng. Cổng kiểm chạy bản viết thẳng trên toàn bộ 32768 cấu hình của lưới và không gặp giá trị vô hạn nào, khe lệch tương đối luôn dưới 1e-13. Nghĩa là bạn không thể bấm ra lỗi tràn ở đây, và đó là lý do những con số phía trên phải đo bằng cổng chứ không phải bằng chuột. Nhưng điểm số trong một mô hình thật không bị chặn ở 10, và đó là lúc phép trừ giá trị lớn nhất chuyển từ thủ pháp gọn gàng thành điều kiện để đúng.
Hai lớp thì softmax chính là sigmoid
Softmax với đúng hai lớp không giống sigmoid, nó là sigmoid. Đặt hai điểm số a và b thì thành phần đầu của softmax bằng sigmoid của (a - b) / T. Cổng kiểm đối chiếu trên 40328 mẫu, giống nhau tới từng bit ở 26632 mẫu, và khe lệch lớn nhất ở phần còn lại vẫn dưới 1e-14, đúng cỡ hai phép làm tròn khác nhau của cùng một hàm.
Ba ví dụ để thấy nó khít: softmax([2, 0]) cho 0.8807970779778823, đúng bằng sigmoid của 2. softmax([5, 3]) cũng cho 0.8807970779778823, vì chỉ hiệu mới đáng kể, và đây lại là bất biến dịch chuyển ở mục trên nhìn từ góc khác. softmax([0, 0]) cho 0.5 và 0.5.
Nói cách khác, phân loại logistic hai lớp và phân loại softmax nhiều lớp không phải hai kỹ thuật, mà là một kỹ thuật ở hai số lớp. Sim này khoá cứng bốn lớp nên bạn không kéo được về hai, vì vậy quan hệ đó là chuyện của công thức và cổng kiểm chứng nó trực tiếp trên hàm của engine.
Softmax không biết nói "không thuộc lớp nào"
Softmax luôn tiêu hết 1.0 cho những lớp mà nó được đưa. Không có đầu ra thứ năm, nên không có chỗ nào để đặt câu trả lời "không phải bốn lớp này".
Điều đó nghe hiển nhiên nhưng hệ quả thì không. Vì bất biến dịch chuyển, một bộ điểm số toàn số âm cho ra đúng cùng một câu trả lời như một bộ toàn số dương: 0, -2, -2.5, -4 và 10, 8, 7.5, 6 đều cho 81% 11% 7% 1%. Nghĩa là điểm số thấp không phải là dấu hiệu để nghi ngờ. Một mô hình chấm mọi lớp rất thấp vẫn báo một lớp thắng với xác suất 81 phần trăm, và softmax không có cách nào phân biệt tình huống đó với tình huống nó thật sự tự tin.
Ngược lại, bốn điểm số bằng nhau cho đúng 25% mỗi lớp, dù giá trị chung của chúng là -4, 0, 3, 10 hay một triệu. Đó là cách duy nhất softmax nói "tôi không biết", và nó chỉ nói được khi các lớp ngang nhau, chứ không nói được khi bài toán nằm ngoài bốn lớp.
Nên xác suất mà softmax cho ra là xác suất tương đối giữa các lớp đã biết. Muốn phát hiện đầu vào lạ thì cần một cơ chế khác, đặt bên ngoài softmax.
Bốn lớp bằng điểm nhau thì ai thắng
Trường hợp bằng điểm là trường hợp bạn kéo tới được, nên nó phải có câu trả lời. Kéo cả bốn thanh về cùng một độ cao thì bốn xác suất đều là 25% và không có lớp nào nhiều hơn lớp nào, nhưng sim vẫn phải tô sáng một thanh. Nó chọn lớp đứng trước, tức Mèo. Lệch đi một phần trên mười lũy thừa mười lăm về phía Cá là Cá thắng ngay, nên đây là một quyết định có hiệu lực thật chứ không phải chuyện vô hại.
Điều đáng nhớ là quy tắc phá hoà này là quy ước, không phải kết quả tính toán. Đổi nó thành lấy lớp đứng sau thì phân phối không thay đổi một chút nào, chỉ thanh được tô sáng đổi chỗ. Chính vì thế nó rất dễ trôi qua mọi phép kiểm về số: một phép kiểm so lớp thắng với lớp thắng thì tự nó đồng ý với chính nó ở mọi cấu hình. Cổng kiểm của bài này từng để lọt đúng lỗ đó, và cách bịt là khẳng định riêng về ca bằng điểm.
Những con số trong bài được kiểm bằng gì
Mọi con số bạn vừa đọc đều bị một cổng kiểm khoá lại, hiện là 280 khẳng định, và cổng không tin phép tính của chính engine. Nó dựng lại kết quả bằng ba đường độc lập.
Đường thứ nhất tính từng xác suất theo hiệu từng cặp, tức không tìm giá trị lớn nhất và không dựng một mẫu số chung, nên nó không thể thừa hưởng một sai sót nào của cách làm kia. Đường thứ hai là chính bản viết thẳng công thức, dùng để đo chỗ nó gãy. Đường thứ ba nặng nhất: mỗi điểm số được đổi chính xác thành một phân số nhị phân, vì một số thực 64 bit vốn là một phân số như thế, rồi lũy thừa được tính bằng chuỗi Taylor trên số nguyên lớn với 120 chữ số thập phân, và chuỗi chỉ chạy với đối số dương rồi lấy nghịch đảo để không bao giờ có hiện tượng triệt tiêu. Đường thứ ba không có một phép tính dấu phẩy động nào, nên nó cho giá trị đúng theo nghĩa toán học của đúng những số mà máy đang giữ.
Đối chiếu engine với đường thứ ba trên 980 mẫu: 393 mẫu khớp tới từng bit, và phần còn lại lệch tương đối dưới 1e-14. Chỗ lệch nhiều nhất nằm ở cấu hình mà đối số của lũy thừa lớn nhất, đúng như dự đoán, vì mỗi bậc độ lớn của đối số ăn mất một phần độ chính xác của kết quả.
Và cổng còn tự kiểm chính nó: nó cố tình phá engine rồi đòi chính mình phải báo đỏ. Một phép kiểm không bao giờ đỏ được thì nó không chứng minh điều gì.
Cũng nên nói rõ những gì bài này không chỉ ra. Trong sim không có huấn luyện: điểm số do bạn kéo, chứ không phải do một mô hình học ra, nên không câu nào ở đây nói được rằng gradient sẽ tìm tới bộ điểm số nào. Cổng cũng không kiểm được chuyện hiệu chỉnh, tức chuyện 81% có thật sự nghĩa là đúng tám mươi mốt lần trên một trăm hay không. Đó là một tính chất của mô hình và của dữ liệu, không phải của hàm softmax, và một mô hình sai vẫn cho ra một phân phối cộng bằng 1 rất gọn gàng.
Softmax biến điểm số thành xác suất tổng bằng 1, tới mức số thực cho phép: trên 32768 cấu hình đã quét, tổng bằng đúng 1 ở 21285 cấu hình và lệch nhiều nhất hai đơn vị cuối. Bất biến mạnh nhất là cộng cùng một hằng số vào mọi điểm số thì kết quả không đổi, vì exp(c/T) triệt tiêu ở cả tử và mẫu, và đó cũng là nền của thủ pháp trừ đi giá trị lớn nhất. Nhiệt độ điều khiển độ chắc chắn nhưng không đổi lớp thắng: 81% 11% 7% 1% ở T = 1 phẳng ra thành 37% 25% 22% 16% ở T = 5, còn muốn cả bốn đọc 25% thì cần T tới 106.82465510547233. Bản viết thẳng exp(z)/Σexp(z) không chỉ ra NaN: tại c = -744.1332191019412 nó cho một phân phối cộng đúng bằng 1 mà cả bốn phần trăm đều sai. Và với hai lớp thì softmax đúng là sigmoid.
- 1Bạn bấm nút cộng bảy lần, đưa bốn điểm số từ 3.0 1.0 0.5 -1.0 lên 10.0 8.0 7.5 6.0. Bốn phần trăm ở hàng dưới thay đổi thế nào?
- 2Cài đặt viết thẳng exp(z)/Σexp(z), không trừ đi giá trị lớn nhất, hỏng theo kiểu nào là nguy hiểm nhất?
- 3Đẩy nhiệt độ lên mốc cao nhất của thanh kéo, T = 5, thì phân phối của bốn điểm số mặc định ra sao?