Kết nối qua MCP →

Nhập phép tính

Nhập K số thực, phân tách bằng dấu phẩy, khoảng trắng hoặc xuống dòng.

Công thức

Quảng cáo

Kết quả

Softmax σ(z)
0.0900305732, 0.2447284711, 0.6652409558
phân phối xác suất (tổng bằng 1)
Độ dài vector K 3
Tổng các giá trị đầu ra 1
Argmax (chỉ số bắt đầu từ 1) 3
Xác suất lớn nhất 0,6652409558

Hàm softmax là gì?

Hàm softmax nhận vào một vector gồm K số thực và biến nó thành một phân phối xác suất: mọi giá trị đầu ra đều nằm trong khoảng từ 0 đến 1, và tổng của cả K giá trị bằng đúng 1. Đây là hàm kích hoạt tiêu chuẩn ở lớp đầu ra của các mô hình phân loại trong mạng nơ-ron, nơi nó chuyển các điểm số thô của mô hình (logits) thành xác suất cho từng lớp. Vì hàm này không có thứ nguyên nên các giá trị đầu vào chỉ là những con số thuần túy, không kèm đơn vị.

Sơ đồ phẳng cho thấy một vектơ ba số thực được biến đổi thành ba cột xác suất có tổng bằng một
Softmax ánh xạ một vектơ số thực thành phân phối xác suất có tổng bằng 1.

Cách dùng máy tính này

Hãy nhập vector của bạn vào ô như một dãy số, phân tách bằng dấu phẩy, khoảng trắng hoặc xuống dòng (ví dụ 1, 2, 3). Các số có thể là số dương, số âm, số 0 hay số thập phân. Nhấn nút tính, bạn sẽ nhận được xác suất softmax cho từng thành phần, tổng các giá trị đầu ra (phải bằng 1) và argmax — chỉ số (bắt đầu từ 1) của xác suất lớn nhất.

Giải thích công thức

Với mỗi thành phần j, công thức softmax là \(\sigma(z)_j = e^{z_j} / \sum_k e^{z_k}\). Việc lấy lũy thừa cơ số e làm cho mọi số hạng đều dương, còn việc chia cho tổng sẽ chuẩn hóa chúng để tổng bằng 1. Để đảm bảo ổn định về mặt số học, máy tính này trừ giá trị lớn nhất \(m\) khỏi từng phần tử trước khi lấy lũy thừa:

$$\sigma(\mathbf{x})_i = \frac{e^{\,x_i - \max(\mathbf{x})}}{\displaystyle\sum_{j=1}^{K} e^{\,x_j - \max(\mathbf{x})}}$$

Thừa số chung \(e^{-m}\) bị triệt tiêu, cho kết quả y hệt nhưng tránh được tràn số khi đầu vào quá lớn.

Quảng cáo
Sơ đồ phẳng về cấu trúc công thức softmax với hàm mũ trên tổng các hàm mũ
Mỗi đầu ra là hàm mũ của một phần tử chia cho tổng các hàm mũ của tất cả các phần tử.

Ví dụ minh họa

Với \(z = (1, 2, 3)\): \(e^{1} = 2{,}71828\), \(e^{2} = 7{,}38906\), \(e^{3} = 20{,}08554\), cộng lại bằng \(30{,}19287\). Chia mỗi giá trị ta được \(\sigma = (0{,}09003,\ 0{,}24473,\ 0{,}66524)\), tổng bằng 1. Argmax là chỉ số 3 — đầu vào lớn nhất — với xác suất \(0{,}66524\).

Câu hỏi thường gặp

Vì sao tổng các giá trị đầu ra luôn bằng 1? Vì mỗi lũy thừa đều được chia cho tổng của tất cả các lũy thừa, nên quá trình chuẩn hóa đảm bảo tổng luôn bằng 1.

Nếu tất cả đầu vào bằng nhau thì sao? Kết quả sẽ là một phân phối đều, trong đó mỗi giá trị đầu ra đều bằng \(1/K\).

Cộng thêm một hằng số vào mọi đầu vào có làm thay đổi kết quả không? Không. Softmax bất biến với phép dịch: cộng cùng một hằng số \(c\) vào tất cả các đầu vào không làm thay đổi kết quả — và đó chính là lý do việc trừ đi giá trị lớn nhất là an toàn.

Cập nhật lần cuối: