Softmax Function là gì? Tổng quan về Softmax Function

Softmax Function là một khái niệm toán học. Nó được sử dụng phổ biến trong lĩnh vực công nghệ thông tin, cụ thể là Machine Learning (Học máy). Hãy cùng Got It tìm hiểu về Softmax Function nhé.

1. Khái niệm Softmax Function

Softmax Function dịch ra Tiếng Việt là hàm trung bình mũ. Hàm softmax tính toán xác suất xảy ra của một sự kiện. Nói một cách khái quát, hàm softmax sẽ tính khả năng xuất hiện của một class trong tổng số tất cả các class có thể xuất hiện. Sau đó, xác suất này sẽ được sử dụng để xác định class mục tiêu cho các input. 

Cụ thể, hàm softmax biến vector k chiều có các giá trị thực bất kỳ thành vector k chiều có giá trị thực có tổng bằng 1. Giá trị nhập có thể dương, âm, bằng 0 hoặc lớn hơn 1, nhưng hàm softmax sẽ luôn biến chúng thành một giá trị nằm trong khoảng (0:1].

Như vậy, chúng có thể được gọi là “xác suất”. Nếu một trong các giá trị nhập rất nhỏ hoặc âm, hàm softmax biến chúng thành 1 xác suất nhỏ. Còn nếu một giá trị nhập lớn thì nó sẽ được chuyển thành một xác suất lớn. Nhưng xác suất luôn lớn hơn 0 và nhỏ hơn 1, hoặc bằng 1. 

  • Hàm Softmax được sử dụng trong mô hình hồi quy logistic phân loại. 
  • Trong xây dựng neural network (mạng thần kinh nhân tạo), hàm softmax được sử dụng trong nhiều lớp.

2. Lịch sử hàm Softmax

Hàm Softmax được sử dụng lần đầu trước cả sự xuất hiện của Machine Learning. Thực chất, nó được mượn từ cơ học vật lý và cơ học thống kê. Ở hai môn học này, hàm Softmax được biết đến với tên gọi phân phối Boltzmann và phân phối Gibbs. Nó được trình bày bởi nhà vật lý học và triết học người Úc Ludwig Boltzmann năm 1868.  

3. Tính chất của hàm Softmax

Từ định nghĩa về hàm softmax, chúng ta có thể đoán được tính chất của nó. Dưới đây là một vài tính chất của hàm softmax:

  • Xác suất sẽ luôn nằm trong khoảng (0:1].
  • Tổng tất cả các xác suất bằng 1.

4. Lợi ích của Softmax Function

  • Hàm softmax là tối ưu khi tính toán xác suất tối đa trong tham số mô hình.
  • Tính chất của hàm softmax khiến hàm phù hợp với sự thông dịch xác suất, rất hữu ích trong Machine Learning (Học máy).
  • Chuẩn hóa softmax là một cách để giảm thiểu ảnh hưởng của những giá trị cực trị hay dữ liệu ngoại lai trong dữ liệu mà không phải chỉnh sửa dữ liệu ban đầu. 

5. Công thức hàm Softmax

Nguyên lý đằng sau hàm Softmax khá đơn giản. Với một vài số cho trước

  • Tính hàm lũy thừa số e, với số mũ là những số đã cho
  • Tính tổng các lũy thừa đó. Đó sẽ là mẫu số.
  • Sử dụng lũy thừa của mỗi số là tử số
  • Xác suất sẽ là tử số/mẫu số

Viết ngắn gọn lại, ta được công thức hàm Softmax: 

Công thức Softmax Function
Công thức hàm Softmax
Kí hiệuÝ nghĩa
Giá trị vector nhập vào cho hàm softmax, (từ z0 đến zk)
Tất cả các giá trị z đều là giá trị vector nhập cho hàm softmax. Chúng có thể là bất cứ số thực nào, số dương, số âm hay số 0. Ví dụ một mạng thần kinh nhân tạo có thể có giá trị vector ra là (-0.62, 8.12, 2.53). Đây không phải là phân phối xác suất đúng. Đó là vì sao ta cần đến hàm softmax. 
Hàm lũy thừa tiêu chuẩn được áp dụng cho mỗi giá trị nhập. Nó sẽ đưa ra một giá trị dương lớn hơn 0. Giá trị này sẽ rất nhỏ nếu giá trị nhập là âm, và rất lớn nếu giá trị nhập dương. Tuy nhiên, nó sẽ không cố định trong khoảng (0:1]. Đây là yêu cầu của một xác suất. 
Dòng phía dưới của công thức là một cụm chuẩn hóa. Nó đảm bảo rằng tổng của các giá trị ra sẽ luôn bằng 1 và nằm trong khoảng (0:1]. Như vậy, sẽ xuất hiện phân phối xác suất chính xác. 
Số class trong một phân loại nhiều class. 

6. Ví dụ

Giả sử ta có các số -1, 0, 3 và 5. Trước hết ta tính mẫu số: 

Mẫu số của softmax

Sau đó, chúng ta tính các tử số và xác suất:

Tính toán xác suất Softmax Function
Bảng tính toán từng xác suất

Có thể thấy, x càng lớn thì xác suất của nó càng lớn. Ngoài ra, tổng các xác suất bằng 1, như đã nói ở trên. 

7. Khai triển Softmax Function 

Khi triển khai bằng ngôn ngữ Python, ta sử dụng Numpy, thư viện cho Python:

Khai triển Softmax Function bằng Python
Ví dụ khai triển Softmax Function bằng Python

Còn đây là hình ảnh code khi triển khai Softmax Function bằng ngôn ngữ Julia:

Khai triển Softmax Function bằng Julia
Ví dụ khai triển Softmax Function bằng Julia

Khi sử dụng ngôn ngữ R:

Khai triên Softmax Function bằng R
Khai triển Softmax Function bằng ngôn ngữ R

8. Ứng dụng của Softmax Function

Vì hàm softmax tính toán sự phân phối xác suất của một vector nên nó thường được sử dụng trong những phương thức phân loại đa lớp trong lĩnh vực Machine Learning, Deep Learning và Data Science (Khoa học dữ liệu). Softmax function tính toán xác suất của một lớp trên tổng số các lớp. Xác suất tính được sẽ giúp quyết định lớp chính xác cho một giá trị đầu vào. Softmax function được sử dụng nhiều nhất trong:

  • Hồi quy logistic, hay còn gọi là hồi quy softmax.
  • Mạng nơ-ron nhân tạo.

Got It hy vọng rằng với những thông tin trên đây, bạn đã hiểu rõ về Softmax Function hay hàm trung bình mũ. Chúc các bạn thành công trên con đường của mình.


Got It Vietnam – Tham khảo: DeepAI, Victor Zhou, Dataaspirant

Nếu bạn quan tâm, hãy xem các vị trí đang tuyển dụng của Got It tại: bit.ly/gotit-hanoi và đọc thêm về quy trình tuyển dụng tại đây.

Khanh Chi
Khanh Chi
February 09, 2021
0
Share this post to:
Tags:
0 Comments
Inline Feedbacks
View all comments
Các bài viết liên quan
Callback Function là gì? Tổng quan về Callback Function

Callback Function là gì? Tổng quan về Callback Function

Nếu bạn đã học lập trình, chắc hẳn bạn biết thế nào là function. Nhưng bạn đã nghe đến Callback Function bao giờ chưa? Callback Function là một phần quan trọng của JavaScript. Một khi bạn hiểu rõ về , bạn sẽ thành thạo JavaScript hơn rất nhiều.  Mục lục1. Callback Function là gì?2. Tại […]
Softmax Function là gì? Tổng quan về Softmax Function

Softmax Function là gì? Tổng quan về Softmax Function

Softmax Function là một khái niệm toán học. Nó được sử dụng phổ biến trong lĩnh vực công nghệ thông tin, cụ thể là Machine Learning (Học máy). Hãy cùng Got It tìm hiểu về Softmax Function nhé. Mục lục1. Khái niệm Softmax Function2. Lịch sử hàm Softmax3. Tính chất của hàm Softmax4. Lợi ích […]
Tìm hiểu Sigmoid Function và lịch sử hình thành của nó

Tìm hiểu Sigmoid Function và lịch sử hình thành của nó

Sigmoid Function là một khái niệm quen thuộc trong Deep Learning. Bài viết sẽ trình bày sơ bộ về Sigmoid Function và lịch sử hình thành của nó. Mục lụcSigmoid Function là gì?Sigmoid Function dùng để làm gì?Lịch sử của Sigmoid FunctionHàm Sigmoid trước năm 1975Hàm Sigmoid sau năm 1975 Sigmoid Function là gì? Sigmoid […]
Function là gì? Những kiến thức cơ bản về Function trong lập trình

Function là gì? Những kiến thức cơ bản về Function trong lập trình

Bước vào thế giới lập trình, hẳn ai cũng sẽ thắc mắc Function là gì? Bài viết này sẽ giúp bạn làm rõ khái niệm này, đồng thời trình bày một số loại hàm cơ bản. Mục lụcFunction là gì?Các loại hàm trong lập trình1. Hàm Void2. Hàm yêu cầu giá trị đầu vào3. Hàm […]
Arrow Function trong ES6 – khi nào nên và không nên dùng?

Arrow Function trong ES6 – khi nào nên và không nên dùng?

Arrow Function là một trong những tính năng đặc biệt của ES6, nhưng vẫn chưa phổ biến với nhiều người. Bài viết này sẽ trình bày một số đặc điểm của Arrow Function và khi nào bạn nên hoặc không nên sử dụng nó. Mục lụcArrow Function trong ES6 có gì hay?Đặc điểm của Arrow […]
Inverse Function là gì? Tổng quan về hàm ngược

Inverse Function là gì? Tổng quan về hàm ngược

Inverse Function là một khái niệm trong toán học. Nó được sử dụng khá phổ biến trong lĩnh vực công nghệ thông tin, cụ thể là lập trình. Hôm nay hãy cùng Got It tìm hiểu về Inverse Function nhé. Mục lục1. Khái niệm Inverse Function2. Ví dụ về hàm ngược3. Tính chất của Inverse […]