Hàm softmax
| Một phần của loạt bài về |
| Học máy và khai phá dữ liệu |
|---|
| Tập tin:Multi-Layer Neural Network-Vector-Blank.svg |
Hàm softmax[1]:184 hay hàm mũ chuẩn hóa,[2]:198[3] là hàm số biến một tuple K số thực thành một phân phối xác suất đối với K khả năng có thể xảy ra. Đây là sự tổng quát hóa của hàm logistic lên nhiều chiều.
Hàm softmax thường được dùng làm hàm kích hoạt ở lớp cuối cùng của mạng thần kinh nhân tạo để chuẩn hóa đầu ra thành phân phối xác suất trên các lớp dự đoán tượng trưng cho sự "tự tin" của mô hình đối với kết quả dự đoán.
Định nghĩa
Hàm softmax nhận đầu vào là một tuple z gồm K số thực, và chuẩn hóa nó thành một phân phối xác suất gồm K xác suất tỉ lệ với lũy thừa cơ số tự nhiên của các số đầu vào. Trước khi áp dụng softmax, các thành phần của z có thể nhỏ hơn 0 hoặc lớn hơn 1, đồng thời không nhất thiết tổng bằng 1; nhưng sau khi áp dụng softmax, mỗi thành phần sẽ nằm trong khoảng và tổng các thành phần sẽ bằng 1, do đó có thể được diễn giải như một giá trị xác suất. Bên cạnh đó, các thành phần đầu vào với giá trị lớn hơn cũng sẽ tương ứng với xác suất lớn hơn sau khi qua hàm softmax.
Hàm softmax chuẩn (đơn vị) , với , nhận bộ và tính mỗi thành phần của véc-tơ theo công thức:
Hàm softmax áp dụng hàm mũ chuẩn cho từng phần tử của bộ đầu vào , rồi chuẩn hóa bằng cách chia cho tổng tất cả các giá trị mũ đó. Bước chuẩn hóa đảm bảo tổng các thành phần của véc-tơ đầu ra bằng 1. Tên gọi "softmax" xuất phát từ tác dụng khuếch đại của hàm mũ đối với các giá trị cực đại trong bộ đầu vào. Ví dụ, softmax chuẩn của xấp xỉ , tức là gần như toàn bộ trọng số được gán cho vị trí của phần tử lớn nhất (là 8).
Thay vì dùng cơ số , người ta có thể dùng cơ số bất kỳ. Nếu , các thành phần đầu vào lớn hơn dẫn đến xác suất đầu ra lớn hơn; nếu , hiệu ứng ngược lại xảy ra. Viết (với thực) cho ra dạng tổng quát:
Đại lượng tỉ lệ nghịch với đôi khi được gọi là nhiệt độ: . Nhiệt độ cao cho ra phân phối đầu ra đồng đều hơn (entropy cao hơn, "ngẫu nhiên hơn"), trong khi nhiệt độ thấp cho ra phân phối sắc nét hơn, tập trung vào một giá trị. Khi (nhiệt độ vô cùng), hàm softmax sẽ đưa ra kết quả thành một phân phối đều .
Lịch sử
Hàm softmax lần đầu xuất hiện trong cơ học thống kê với tên gọi phân phối Boltzmann, được Ludwig Boltzmann giới thiệu năm 1868[4] và được Josiah Willard Gibbs hệ thống hóa trong cuốn sách có ảnh hưởng lớn xuất bản năm 1902.[5]
Trong lý thuyết quyết định, R. Duncan Luce là người đầu tiền sử dụng tiên đề "độc lập với các lựa chọn không liên quan" (tức là việc lựa chọn một trong hai và thì sẽ không phụ thuộc vào một thông tin không liên quan đến hai lựa chọn kia) trong lý thuyết lựa chọn hợp lý (rational choice theory) để suy ra hàm softmax.[6]
Trong học máy, thuật ngữ "softmax" được ghi nhận lần đầu đựoc sử dụng bởi John S. Bridle qua hai bài báo hội thảo năm 1989–1990. Trong bài thứ nhất, Bridle đề xuất dùng "hàm mũ chuẩn hóa" (normalized exponential) như một sự tổng quát hóa nhiều đầu vào của hàm logistic, và đặt tên cho nó là softmax.[3] Trong bài thứ hai, ông chứng minh rằng việc huấn luyện mạng neuron với đầu ra softmax và hàm mất mát cross-entropy giúp mạng có thể đưa ra một "dự đoán" về các giá trị đầu vào, trong đó các giá trị được giữ nguyên thứ hạng về độ lớn đầu vào, đồng thời chỉ có giá trị lớn nhất được chọn làm dự đoán cuối cùng mà lại là một hàm khả vi giúp tối ưu hóa dễ dàng.[7]
Giải thích
Xấp xỉ trơn của arg max
Hàm softmax là một xấp xỉ trơn của hàm arg max—hàm trả về vị trí của phần tử lớn nhất trong một tuple. Tên gọi "softmax" có thể gây hiểu nhầm vì softmax không phải là một hàm tìm một điểm cực trị trơn (smooth maximum) nhằm tìm kiếm giá trị lớn nhất, mà chỉ là vị trí của nó. Thuật ngữ chính xác hơn là "softargmax", dù "softmax" vẫn là quy ước thông dụng trong học máy.[8]
Để thấy rõ mối quan hệ này, hãy biểu diễn arg max dưới dạng mã hóa one-hot: với đầu vào có đúng một phần tử lớn nhất tại vị trí ,
trong đó thành phần thứ bằng 1 và các thành phần còn lại bằng 0. Khi , softmax hội tụ theo từng điểm đến arg max: . Tuy nhiên, sự hội tụ này không đều nhau ở mọi điểm. Để thấy rõ vấn đề, xét tuple hai thành phần : arg max trả về vị trí thứ nhất nếu , vị trí thứ hai nếu , và không xác định nếu . Khi hai thành phần gần bằng nhau—ví dụ so với —một thay đổi rất nhỏ ở đầu vào lại gây ra thay đổi hoàn toàn ở đầu ra arg max, do hàm arg max không liên tục. Do đó, để softmax xấp xỉ được arg max tại những vùng đầu vào như vậy, giá trị của cần rất lớn, khiến mô hình hội tụ rất chậm. Ngược lại, nếu một thành phần áp đảo rõ ràng so với các thành phần còn lại, softmax có thể tiến gần đến arg max ngay cả với không quá lớn.[8]
Cơ học thống kê
Trong cơ học thống kê, hàm softmax tương ứng với phân bố Boltzmann: tập chỉ số là các vi trạng thái (microstate) của hệ; các giá trị đầu vào là năng lượng của từng trạng thái; mẫu số là hàm phân hoạch, thường ký hiệu là ; và hệ số là độ lạnh (hay nhiệt độ nghịch đảo).[9]
Tính chất toán học
Về mặt hình học, hàm softmax ánh xạ không gian vào phần nội của đơn hình chuẩn chiều—tức tập các véc-tơ xác suất dương tổng bằng 1 trong không gian chiều.[10]
Bất biến tịnh tiến. Hàm softmax không thay đổi khi cộng thêm cùng một hằng số vào tất cả các thành phần của đầu vào: . Điều này xảy ra vì phép cộng đó nhân mỗi số hạng với cùng một thừa số , nên tỉ lệ giữa các số hạng không đổi:[10]
Hệ quả thực tiễn của tính chất này là người ta có thể trừ đi giá trị lớn nhất của tuple khỏi tất cả các thành phần trước khi tính softmax mà không làm thay đổi kết quả. Đây là cơ sở của phương pháp safe softmax.:[11]
Ngược lại, softmax không bất biến dưới phép nhân vô hướng: nhân đầu vào với một hằng số làm thay đổi độ sắc nét của phân phối đầu ra, tương đương với việc thay đổi tham số nhiệt độ .
Softmax là gradient của hàm log-sum-exp. Hàm log-sum-exp được định nghĩa là . Đạo hàm riêng của hàm này theo chính là thành phần thứ của softmax:
Ma trận Jacobian. Đạo hàm của thành phần thứ của softmax theo thành phần thứ của đầu vào là:
trong đó là delta Kronecker, bằng 1 nếu và bằng 0 nếu ngược lại. Biểu thức này đối xứng theo và .
Trường hợp đặc biệt . Khi tuple chỉ có hai thành phần, cố định và đặt , thành phần thứ nhất của softmax trở thành:
đây chính là hàm logistic. Như vậy hàm logistic là trường hợp đặc biệt của softmax với hai lớp đầu ra.
Chuẩn hóa softmax
Sigmoidal hay còn gọi là chuẩn hóa softmax là một cách làm giảm sự ảnh hưởng của các giá trị cực và ngoại lai trong dữ liệu mà không phải loại bỏ chúng ra khỏi dải dữ liệu. Đó là những dữ liệu ngoại lai hữu ích mà ta muốn giữ chúng trong dải dữ liệu trong khi vẫn đảm bảo sự ý nghĩa của dữ liệu trong phạm vi sai lệch chuẩn của giá trị trung bình. Dữ liệu được biến đổi phi tuyến sử dụng một trong những hàm sigmoidal sau:
Hàm logistic sigma:[12]
Hàm hyperbolic, tanh:[12]
Hàm sigmoid làm giới hạn phạm vi của giá trị đã được bình thường hóa trong khoảng từ 0 đến 1. Hàm sigmoid gần như là tuyến tính trong phạm vi lân cận giá trị trung bình và là hàm phi tuyến liên tục tại hai cực, đảm bảo rằng tất cả các điểm giá trị đều nằm trong phạm vi giới hạn. Điều này đảm bảo cho độ chính xác của hầu hết giá trị nằm trong phạm vi lệch chuẩn của giá trị trung bình.[12]
Hàm hyperbolic, tanh giới hạn phạm vi của giá trị được bình thường hóa trong khoảng -1 và 1. Hàm hyperbolic gần như là tuyến tính tại lân cận giá trị trung bình, nhưng có đường dốc bằng nửa dốc của hàm sigmoid. Như hàm sigmoid, nó là hàm phi tuyến liên tục, đơn điệu tại hai cực. Cũng giống như hàm sigmoid, nó đảm bảo tính khả vi tại mọi điểm và biểu hiện của đạo hàm (đường cong) không bị ảnh hưởng bởi sự bình thường hóa. Việc này đảm bảo rằng việc tối ưu và các thuật toán tích phân có thể tiếp tục tin cậy vào đạo hàm để ước lượng sự thay đổi của giá trị đầu ra (giá trị được bình thường hóa) điều đó sẽ được sinh ra bởi thay đổi các đầu vào trong khu vực lân cận điểm linearisation.[12]
Ứng dụng
Phân loại đa lớp
Hàm softmax được dùng trong nhiều phương pháp phân loại đa lớp (multiclass classification), bao gồm hồi quy logistic đa thức (multivariate logistic regression, còn gọi là hồi quy softmax), phân tích biệt thức tuyến tính đa lớp (linear discriminant analysis), bộ phân loại Naive Bayes, và mạng thần kinh nhân tạo.[2]:206–209 Trong hồi quy logistic đa thức, đầu vào của softmax là kết quả của hàm tuyến tính riêng biệt, và xác suất dự đoán cho lớp thứ với mẫu đầu vào và véc-tơ trọng số là:
Mạng thần kinh nhân tạo
Hàm softmax thường được dùng ở lớp cuối cùng của mạng thần kinh dùng cho phân loại, để chuyển đổi đầu ra thô của mạng thành phân phối xác suất trên các lớp.[2]:206–209 Mạng thường được huấn luyện với hàm mất mát cross-entropy (hay log loss), cho ra một biến thể phi tuyến của hồi quy logistic đa thức.
Khi số lớp rất lớn, ví dụ trong các mô hình ngôn ngữ lớn với bộ từ vựng hàng triệu từ, việc tính softmax trở nên tốn kém vì cần tính tổng trên toàn bộ phần tử ở mẫu số.[3] Hai hướng tiếp cận chính để giảm chi phí tính toán là:
Softmax phân cấp (hierarchical softmax), được Morin và Bengio đề xuất năm 2005, tổ chức các lớp đầu ra thành cấu trúc cây nhị phân, trong đó các lớp là các lá và các nút trung gian là các "siêu lớp" ẩn. Xác suất của một lớp được tính là tích xác suất dọc theo đường đi từ gốc đến lá tương ứng, giảm độ phức tạp từ xuống khi cây cân bằng.[13] Mô hình word2vec của Google dùng cây Huffman cho mục đích này.[3]
Hàm mất mát xấp xỉ để tránh tính tổng chuẩn hóa đầy đủ, ví dụ bằng cách chỉ lấy mẫu một tập con các lớp âm (negative sampling) hoặc lấy mẫu dựa theo độ quan trọng (importance sampling).[14]
Học tăng cường
Trong học tăng cường, hàm softmax được dùng để chuyển đổi giá trị ước lượng của các hành động thành xác suất lựa chọn:[15]
trong đó là giá trị ước lượng của hành động tại bước thời gian , và là tham số nhiệt độ. Khi , tất cả các hành động có xác suất gần bằng nhau, khiến tác nhân khám phá ngẫu nhiên. Khi , xác suất tập trung hoàn toàn vào hành động có giá trị ước lượng cao nhất, khiến tác nhân sẽ chỉ đi theo những tính toán có sẵn.
Ví dụ
Nếu chúng ta có một đầu vào [1, 2, 3, 4, 1, 2, 3], các softmax đó là [0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]. Đầu ra có trọng số cao nhất là giá trị '4' nằm trong vector đầu vào. Đây là ví dụ về cách thông thường mà hàm softmax được sử dụng: để làm nổi bật giá trị lớn nhất và làm mờ các giá trị bé hơn đáng kể so với giá trị lớn nhất.
Sau đây là ví dụ về phép tính này bằng một đoạn mã Python đơn giản:
>>> import math
>>> z = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]
>>> z_exp = [math.exp(i) for i in z]
>>> print([round(i, 2) for i in z_exp])
[2.72, 7.39, 20.09, 54.6, 2.72, 7.39, 20.09]
>>> sum_z_exp = sum(z_exp)
>>> print(round(sum_z_exp, 2))
114.98
>>> softmax = [round(i / sum_z_exp, 3) for i in z_exp]
>>> print(softmax)
[0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]Tham khảo
- ^ Goodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016). "6.2.2.3 Softmax Units for Multinoulli Output Distributions". Deep Learning. MIT Press. tr. 180–184. ISBN 978-0-262-03561-3.
- ^ a b c Bishop, Christopher M. (2006). Pattern Recognition and Machine Learning. Springer. ISBN 0-387-31073-8.
- ^ a b c d Onal, Kezban Dilek; Zhang, Ye; Altingovde, Ismail Sengor; và đồng nghiệp (2018). "Neural information retrieval: at the end of the early years". Information Retrieval Journal. Quyển 21 số 2. tr. 111–182. doi:10.1007/s10791-017-9321-y.
- ^ Boltzmann, Ludwig (1868). "Studien über das Gleichgewicht der lebendigen Kraft zwischen bewegten materiellen Punkten". Wiener Berichte. Quyển 58. tr. 517–560.
- ^ Gibbs, Josiah Willard (1902). "Elementary Principles in Statistical Mechanics". Nature. Quyển 66 số 1708. tr. 291. doi:10.1038/066291a0.
- ^ Luce, R. Duncan (1959). Individual Choice Behavior: A Theoretical Analysis. New York: Wiley.
- ^ Bridle, John S. (1990). "Training Stochastic Model Recognition Algorithms as Networks can Lead to Maximum Mutual Information Estimation of Parameters". Trong Touretzky, D. S. (biên tập). Advances in Neural Information Processing Systems 2 (NIPS 1989). San Mateo, CA: Morgan Kaufmann. tr. 211–217.
- ^ a b Goodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016). Deep Learning. MIT Press. tr. 183–184. ISBN 978-0-262-03561-3.
- ^ LeCun, Yann; Chopra, Sumit; Hadsell, Raia; Ranzato, Marc'Aurelio; Huang, Fu Jie (2006). "A Tutorial on Energy-Based Learning" (PDF). Trong Bakır, Gökhan (biên tập). Predicting Structured Data. MIT Press. ISBN 978-0-262-02617-8.
- ^ a b Gao, Bolin; Pavel, Lacra (2017). "On the Properties of the Softmax Function with Application in Game Theory and Reinforcement Learning". arXiv:1704.00805 [math.OC].
- ^ Milakov, Maxim; Gimelshein, Natalia (2018). "Online normalizer calculation for softmax". arXiv:1805.02867 [cs.PF].
- ^ a b c d Artificial Neural Networks: An Introduction. 2005. tr. 16–17.
- ^ Morin, Frederic; Bengio, Yoshua (2005). "Hierarchical Probabilistic Neural Network Language Model" (PDF). International Workshop on Artificial Intelligence and Statistics. PMLR. tr. 246–252.
- ^ Chen, Wenlin; Grangier, David; Auli, Michael (2016). "Strategies for Training Large Vocabulary Neural Language Models". Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics. tr. 1975–1985. doi:10.18653/v1/P16-1186.
- ^ Sutton, Richard S.; Barto, Andrew G. (1998). Reinforcement Learning: An Introduction. Cambridge, MA: MIT Press. ISBN 978-0-262-19398-6.