Tracks
Machine learning và các thuật toán, kỹ thuật liên quan về bản chất là thiết kế, triển khai và huấn luyện các thuật toán để nhận dạng mẫu trong dữ liệu đã quan sát và thực hiện dự đoán hoặc phân loại.
Thuật toán machine learning học theo nhiều phương pháp khác nhau, nhưng một thành phần cốt lõi trong quá trình học của các thuật toán và mô hình là hàm mất mát. Hàm mất mát là một quá trình toán học định lượng biên độ sai số giữa dự đoán của mô hình và giá trị mục tiêu thực tế. Ở phần sau của bài viết, chúng ta sẽ tìm hiểu chi tiết về hàm mất mát.
Tóm tắt nhanh
- Hàm mất mát đo lường khoảng cách giữa dự đoán của mô hình và các giá trị mục tiêu thực, qua đó dẫn hướng thuật toán điều chỉnh trọng số để cải thiện độ chính xác.
- Với hồi quy, dùng MSE khi bạn muốn phạt nặng các lỗi lớn, MAE khi ngoại lệ nên được đối xử công bằng, hoặc Huber Loss để cân bằng cả hai.
- Với phân loại, Binary Cross-Entropy dùng cho bài toán hai lớp, Categorical Cross-Entropy cho đa lớp, và Hinge Loss cho các bộ phân loại dựa trên biên như SVM.
- Thư viện như scikit-learn, TensorFlow và PyTorch đã tích hợp sẵn hầu hết các hàm mất mát phổ biến.
Hàm mất mát tóm lược
Hàm mất mát là cách đo lường hiệu năng và độ chính xác của một mô hình machine learning. Trong trường hợp này, hàm mất mát đóng vai trò dẫn hướng cho quá trình học trong một mô hình hay thuật toán machine learning.
Vai trò của hàm mất mát rất quan trọng trong quá trình huấn luyện mô hình và bao gồm:
- Đo lường hiệu năng: Hàm mất mát đưa ra thước đo rõ ràng để đánh giá hiệu năng bằng cách định lượng chênh lệch giữa dự đoán và kết quả thực.
- Định hướng cải thiện: Hàm mất mát dẫn hướng cải thiện mô hình bằng cách chỉ đạo thuật toán điều chỉnh tham số (trọng số) lặp đi lặp lại để giảm mất mát và cải thiện dự đoán.
- Cân bằng bias và variance: Hàm mất mát hiệu quả giúp cân bằng độ lệch (đơn giản hóa quá mức) và phương sai (quá khớp), điều thiết yếu để mô hình tổng quát hóa tốt cho dữ liệu mới.
- Ảnh hưởng hành vi mô hình: Một số hàm mất mát có thể ảnh hưởng hành vi mô hình, chẳng hạn tăng độ bền trước ngoại lệ dữ liệu hoặc ưu tiên một số loại lỗi nhất định.
Hãy cùng khám phá vai trò của từng hàm mất mát cụ thể ở các phần sau và xây dựng trực giác hiểu biết chi tiết về hàm mất mát.
Hàm mất mát là gì?
Hàm mất mát, còn gọi là hàm lỗi, là thành phần trọng yếu trong machine learning dùng để định lượng chênh lệch giữa đầu ra dự đoán của thuật toán và các giá trị mục tiêu thực tế.
Ví dụ, trong một bài toán hồi quy dự đoán giá xe dựa trên dữ liệu lịch sử, hàm mất mát sẽ đánh giá dự đoán của mạng neuron dựa trên một mẫu huấn luyện. Hàm mất mát định lượng khoảng cách hay biên độ sai số giữa giá xe mà mạng dự đoán với giá thực tế.
Giá trị thu được, tức loss, phản ánh độ chính xác của dự đoán. Trong quá trình huấn luyện, một thuật toán học như lan truyền ngược sử dụng gradient của hàm mất mát theo các tham số mô hình để điều chỉnh những tham số này nhằm tối thiểu hóa loss, từ đó cải thiện hiệu năng của mô hình trên tập dữ liệu.

Thường thì các thuật ngữ loss function và cost function được dùng thay thế cho nhau; tuy vậy, chúng có định nghĩa khác biệt:
Như đã đề cập, hàm mất mát (hàm lỗi) định lượng mức độ tốt của một dự đoán đơn lẻ so với giá trị mục tiêu thực. Điểm mấu chốt là hàm mất mát áp dụng cho một mẫu huấn luyện đơn và là một phần trong quá trình học tổng thể, cung cấp tín hiệu để thuật toán học của mô hình cập nhật trọng số và tham số.
Cost function, đôi khi gọi là objective function, là trung bình của hàm mất mát trên toàn bộ tập huấn luyện gồm nhiều mẫu. Cost function định lượng hiệu năng của mô hình trên toàn bộ tập dữ liệu huấn luyện.
Giờ hãy đi sâu hơn vào cách hàm mất mát hoạt động.
Hàm mất mát hoạt động như thế nào
Dù có nhiều loại hàm mất mát, về cơ bản chúng đều hoạt động bằng cách định lượng chênh lệch giữa dự đoán của mô hình và giá trị mục tiêu trong tập dữ liệu. Thuật ngữ chính thức cho sự định lượng số này là lỗi dự đoán. Thuật toán học và các cơ chế trong mô hình được tối ưu để giảm lỗi dự đoán, tức là sau khi tính toán giá trị hàm mất mát (được quyết định bởi lỗi dự đoán), thuật toán học tận dụng thông tin này để cập nhật trọng số và tham số, qua đó ở lượt huấn luyện kế tiếp sẽ dẫn tới lỗi dự đoán thấp hơn.
Khi tìm hiểu về hàm mất mát, thuật toán machine learning và quá trình học trong mạng neuron, chủ đề Empirical Risk Minimization (ERM) thường được nhắc tới. ERM là cách chọn các tham số tối ưu của thuật toán sao cho cực tiểu hóa rủi ro thực nghiệm. Ở đây, rủi ro thực nghiệm chính là tập dữ liệu huấn luyện.
Thành phần tối thiểu hóa rủi ro của ERM là quá trình thuật toán học nội bộ giảm lỗi dự đoán của mô hình trên một tập dữ liệu đã biết, với kỳ vọng mô hình đạt hiệu năng và độ chính xác nhất định khi áp dụng cho dữ liệu chưa thấy nhưng có thể có phân phối thống kê tương tự tập dữ liệu ban đầu đã huấn luyện.
Các loại hàm mất mát
Hàm mất mát trong machine learning có thể được phân loại theo tác vụ áp dụng. Phần lớn hàm mất mát áp dụng cho các bài toán hồi quy và phân loại. Với hồi quy, mô hình dự đoán giá trị đầu ra liên tục. Với phân loại, mô hình đưa ra nhãn rời rạc tương ứng với lớp của tập dữ liệu.
Dưới đây là các hàm mất mát chuẩn và cách phân loại chúng theo loại bài toán phù hợp. Hầu hết các hàm này sẽ được trình bày chi tiết ở phần sau.
|
Hàm mất mát |
Áp dụng cho Phân loại |
Áp dụng cho Hồi quy |
|
Mean Square Error (MSE) / L2 Loss |
✖️ |
✔️ |
|
Mean Absolute Error (MAE) / L1 Loss |
✖️ |
✔️ |
|
Binary Cross-Entropy Loss / Log Loss |
✔️ |
✖️ |
|
Categorical Cross-Entropy Loss |
✔️ |
✖️ |
|
Hinge Loss |
✔️ |
✖️ |
|
Huber Loss / Smooth Mean Absolute Error |
✖️ |
✔️ |
|
Log Loss |
✔️ |
✖️ |
Hàm mất mát cho Hồi quy
Mean Square Error (MSE) / L2 Loss
Mean Square Error (MSE) hay L2 loss là hàm mất mát định lượng độ lớn sai số giữa dự đoán của thuật toán và đầu ra thực bằng cách lấy trung bình bình phương chênh lệch giữa dự đoán và giá trị mục tiêu. Việc bình phương chênh lệch khiến các sai lệch lớn bị phạt nặng hơn. Lấy trung bình giúp chuẩn hóa tổng sai số theo số mẫu trong tập dữ liệu hay quan sát.
Công thức toán học cho Mean Square Error (MSE) hay L2 Loss là:
MSE = (1/n) * Σ(yᵢ - ȳ)²
Trong đó:
- n là số mẫu trong tập dữ liệu
- yᵢ là giá trị dự đoán cho mẫu thứ i
- ȳ là giá trị mục tiêu cho mẫu thứ i
Khi nào nên dùng MSE
Hiểu khi nào nên dùng MSE là rất quan trọng trong phát triển mô hình. MSE là hàm mất mát tiêu chuẩn được dùng trong hầu hết tác vụ hồi quy vì nó hướng mô hình tối ưu để giảm bình phương sai khác giữa giá trị dự đoán và mục tiêu.
MSE được khuyến nghị trong các tình huống cần phạt mạnh sự xuất hiện của ngoại lệ. Tuy nhiên, đặc tính này không phải lúc nào cũng phù hợp khi ngoại lệ bắt nguồn từ nhiễu dữ liệu thay vì tín hiệu dương.
Một ví dụ dùng MSE là dự đoán giá bất động sản hay rộng hơn là mô hình hóa dự đoán. Giá nhà thường phân phối gần chuẩn trong một khu vực, nên mục tiêu phạt ngoại lệ là thiết yếu để mô hình dự đoán chính xác.
Một sai số phần trăm nhỏ cũng có thể tương đương số tiền lớn. Ví dụ, 5% sai lệch với căn nhà 200.000 đô là 10.000 đô, rất đáng kể. Do đó, bình phương lỗi (như trong MSE) giúp gán trọng số cao hơn cho lỗi lớn, qua đó thúc đẩy mô hình chính xác hơn với các tài sản giá trị cao.
Mean Absolute Error (MAE) / L1 Loss
Mean Absolute Error (MAE), hay L1 Loss, là hàm mất mát dùng trong hồi quy tính trung bình chênh lệch tuyệt đối giữa giá trị dự đoán và mục tiêu thực. Khác với MSE, MAE không bình phương sai khác, nên coi mọi lỗi với trọng số như nhau bất kể độ lớn.
Công thức toán học cho Mean Absolute Error (MAE) hay L1 Loss là:
MAE = (1/n) * Σ|yᵢ - ȳ|
Trong đó:
- n là số mẫu trong tập dữ liệu
- yᵢ là giá trị dự đoán cho mẫu thứ i
- ȳ là giá trị mục tiêu cho mẫu thứ i
Khi nào nên dùng MAE
MAE đo trung bình chênh lệch tuyệt đối giữa dự đoán và thực tế. Không bình phương sai khác khiến MAE ít nhạy với ngoại lệ hơn. So với MSE, MAE vốn dĩ ít nhạy với ngoại lệ vì gán trọng số như nhau cho mọi lỗi, bất kể độ lớn.
Điều này có nghĩa là một ngoại lệ có thể làm lệch MSE đáng kể do bị bình phương, nhưng tác động lên MAE nhỏ hơn nhiều. Ảnh hưởng của ngoại lệ lên thước đo lỗi tổng thể là tối thiểu khi dùng MAE. Ngược lại, MSE khuếch đại hiệu ứng của ngoại lệ vì bình phương hạng lỗi, ảnh hưởng tới ước lượng lỗi của mô hình nhiều hơn.

Một tình huống phù hợp với MAE là khi bạn không muốn phạt ngoại lệ quá nhiều, ví dụ dự đoán thời gian giao đồ ăn.
Một công ty giao đồ như UberEats, Deliveroo, hay DoorDash có thể xây dựng mô hình ước tính thời gian để tăng sự hài lòng của khách. Thời gian giao chịu ảnh hưởng bởi nhiều yếu tố như thời tiết, tai nạn, thi công đường, v.v.
Xử lý các yếu tố này rất quan trọng để ước tính thời gian. Một cách là coi các sự kiện này là ngoại lệ nhưng quyết định không để chúng ảnh hưởng tới mô hình. MAE phù hợp vì sẽ xử lý các điểm dữ liệu ngoại lệ do thi công hay sự kiện hiếm với mức độ nhẹ hơn, giảm tác động của ngoại lệ lên thước đo lỗi và quá trình học.
Đáng chú ý, MAE gán trọng số lỗi đồng đều cho mọi điểm dữ liệu; trong bối cảnh trên, phạt mạnh các ngoại lệ có thể dẫn đến ước tính thời gian quá cao hoặc quá thấp.
Huber Loss / Smooth Mean Absolute Error
Huber Loss hay Smooth Mean Absolute Error là hàm mất mát kết hợp ưu điểm của MAE và MSE vào một hàm duy nhất. Tính lai của Huber khiến nó ít nhạy với ngoại lệ như MAE, đồng thời vẫn phạt các lỗi nhỏ như MSE. Huber Loss cũng được dùng trong các tác vụ hồi quy.
Công thức toán học của Huber Loss như sau:
L(δ, y, f(x)) = (1/2) * (f(x) - y)^2 if |f(x) - y| <= δ
= δ * |f(x) - y| - (1/2) * δ^2 if |f(x) - y| > δ
Trong đó:
- L là hàm Huber Loss
- δ là tham số delta, quyết định ngưỡng chuyển giữa thành phần bậc hai và tuyến tính của hàm
- y là giá trị thực hay mục tiêu
- f(x) là giá trị dự đoán
Khi nào nên dùng Huber Loss / Smooth Mean Absolute Error
Huber Loss kết hợp hai thành phần xử lý lỗi khác nhau, với điểm chuyển giữa chúng do ngưỡng δ xác định:
- Thành phần bậc hai cho lỗi nhỏ: Với lỗi nhỏ hơn δ, dùng thành phần bậc hai
(1/2) * (f(x) - y)^2 - Thành phần tuyến tính cho lỗi lớn: Với lỗi lớn hơn δ, dùng thành phần tuyến tính
δ * |f(x) - y| - (1/2) * δ^2
Huber Loss hoạt động ở hai chế độ, chuyển đổi dựa trên độ lớn chênh lệch giữa giá trị mục tiêu và dự đoán. Thuật ngữ then chốt là delta (δ), ngưỡng xác định ranh giới số học để áp dụng tính toán bậc hai hay tuyến tính.
Thành phần bậc hai của Huber thể hiện ưu điểm của MSE trong việc phạt ngoại lệ; trong Huber, điều này áp dụng cho lỗi nhỏ hơn delta, đảm bảo dự đoán chính xác hơn.
Nếu lỗi (chênh giữa thực và dự đoán) lớn hơn delta, Huber dùng tính toán tuyến tính giống MAE, ít nhạy với độ lớn lỗi hơn để tránh mô hình bị phạt quá nặng cho lỗi lớn, đặc biệt khi dữ liệu có ngoại lệ hay mẫu hiếm gặp.
Hàm mất mát cho Phân loại
Binary Cross-Entropy Loss / Log Loss
Binary Cross-Entropy Loss (BCE) là thước đo hiệu năng cho các mô hình phân loại đưa ra dự đoán dạng xác suất, thường trong khoảng 0 đến 1, biểu thị khả năng một mẫu thuộc về một lớp. Với BCE, có hai lớp phân biệt. Đáng chú ý, một biến thể là Categorical Cross-Entropy áp dụng cho phân loại đa lớp.
Để hiểu BCE (còn gọi là Log Loss), hữu ích khi xét các thành phần thuật ngữ:
- Loss: Định lượng toán học biên/khác biệt giữa dự đoán của thuật toán và giá trị mục tiêu.
- Entropy: Đo lường mức độ ngẫu nhiên hay hỗn loạn trong một hệ.
- Cross Entropy: Thuật ngữ trong lý thuyết thông tin, đo khác biệt giữa hai phân phối xác suất có thể dùng để nhận dạng một quan sát.
- Binary: Biểu diễn bằng hai trạng thái 0 hoặc 1. Mở rộng ra phân loại nhị phân, ta phân biệt hai lớp (A và B) bằng biểu diễn nhị phân, gán A = 0 và B = 1.
Binary Cross Entropy Loss (hay Log Loss) định lượng khác biệt giữa dự đoán của thuật toán và mục tiêu thực bằng giá trị âm của tổng log các xác suất dự đoán chia cho tổng số mẫu. BCE thường dùng trong các bài toán hồi quy logistic và khi huấn luyện mạng neuron nhân tạo dự đoán khả năng một mẫu thuộc về một lớp và dùng hàm kích hoạt sigmoid bên trong.
Công thức toán học của Binary Cross-Entropy (Log Loss) là:
L(y, f(x)) = -[y * log(f(x)) + (1 - y) * log(1 - f(x))]
Trong đó:
- L là hàm Binary Cross-Entropy
- y là nhãn nhị phân thực (0 hoặc 1)
- f(x) là xác suất dự đoán của lớp dương (giữa 0 và 1)
Khi nào nên dùng Binary Cross-Entropy / Log Loss
Công thức trên áp dụng cho kịch bản mô hình phân loại giữa hai lớp, tức phân loại nhị phân.
Như ký hiệu âm: ‘-’, BCE tính loss bằng cách lấy giá trị âm của hai hạng tử, và với nhiều dự đoán/mẫu, lấy trung bình của hai hạng tử âm sau:
- Log xác suất dự đoán của mô hình khi lớp dương hiện diện: y * log(f(x))
- Log của 1 trừ xác suất dự đoán của lớp âm: (1 - y) * log(1 - f(x))
BCE phạt các dự đoán không chính xác, tức dự đoán khác xa lớp dương hoặc có độ bất định (entropy) cao. Khi dùng trong thuật toán học, BCE khuyến khích mô hình tinh chỉnh các dự đoán xác suất đúng lớp trong quá trình huấn luyện.
Hinge Loss
Hinge Loss là hàm mất mát dùng để huấn luyện các bộ phân loại tối ưu hóa nhằm tăng khoảng cách biên giữa các điểm dữ liệu và biên quyết định. Vì vậy, nó chủ yếu được dùng cho phân loại biên tối đa. Để đảm bảo biên tối đa giữa điểm dữ liệu và ranh giới, hinge loss phạt các dự đoán bị phân loại sai (nằm phía sai của ranh giới biên) và cả những dự đoán đúng nhưng nằm quá gần biên quyết định.
Đặc tính này giúp mô hình dự đoán đúng nhãn với độ tự tin vượt ngưỡng biên quyết định. Cách tiếp cận này tăng khả năng tổng quát hóa, giúp phân loại chính xác với độ chắc chắn cao.
Công thức toán học của Hinge Loss là:
L(y, f(x)) = max(0, 1 - y * f(x))
Trong đó:
- L là Hinge Loss
- y là nhãn thực hay giá trị mục tiêu (-1 hoặc 1)
- f(x) là giá trị dự đoán hay đầu ra hàm quyết định
Chọn hàm mất mát phù hợp
Chọn đúng hàm mất mát cho một thuật toán machine learning là điều cốt yếu, vì hiệu năng mô hình phụ thuộc lớn vào khả năng thuật toán học hoặc điều chỉnh trọng số bên trong để phù hợp với dữ liệu.
Hiệu năng của mô hình/thuật toán được xác định bởi hàm mất mát sử dụng, chủ yếu vì thành phần này ảnh hưởng tới thuật toán tối ưu dùng để giảm giá trị mất mát hay cost function. Về bản chất, hàm mất mát tác động tới khả năng học và điều chỉnh trọng số bên trong để phù hợp với các mẫu trong dữ liệu.
Khi được chọn phù hợp, hàm mất mát giúp thuật toán học hội tụ hiệu quả tới mức mất mát tối ưu trong giai đoạn huấn luyện và tổng quát hóa tốt cho dữ liệu chưa thấy. Một hàm mất mát phù hợp đóng vai trò như kim chỉ nam, dẫn dắt thuật toán học tới độ chính xác và độ tin cậy, đảm bảo mô hình nắm bắt các mẫu tiềm ẩn trong dữ liệu đồng thời tránh quá khớp hoặc thiếu khớp.
Các yếu tố cần cân nhắc khi chọn hàm mất mát
Hiểu loại bài toán machine learning đang xử lý giúp xác định nhóm hàm mất mát cần dùng. Các hàm khác nhau phù hợp với các bài toán khác nhau.
Phân loại so với Hồi quy
Bài toán phân loại thường gán điểm dữ liệu vào một nhãn cụ thể. Đầu ra thường là tập xác suất biểu thị khả năng điểm dữ liệu thuộc về từng nhãn.
Hàm cross-entropy thường dùng cho phân loại. Với hồi quy, nơi mục tiêu là mô hình đưa ra dự đoán dựa trên bộ đầu vào, các hàm như MSE hoặc MAE phù hợp hơn.
Nhị phân so với Đa lớp
Phân loại nhị phân chia mẫu vào hai nhóm, còn đa lớp là nhiều hơn hai. Với bài toán hai lớp, nên dùng binary cross-entropy. Khi có hơn hai lớp mục tiêu, nên dùng categorical cross-entropy.
Độ nhạy
Một yếu tố khác là độ nhạy của hàm mất mát với ngoại lệ. Trong vài kịch bản, mong muốn phạt ngoại lệ và mẫu làm lệch phân phối tổng thể trong quá trình huấn luyện; khi đó, các hàm như MSE phù hợp.
Ngược lại có kịch bản cần ít nhạy với ngoại lệ, khi chúng là “sự kiện không bao giờ” hay hiếm gặp. Khi đó phạt ngoại lệ có thể khiến mô hình kém hiệu năng. MAE phù hợp trong các trường hợp này. Để dung hòa, có thể xem xét Huber Loss, vốn kết hợp phạt lỗi nhỏ và giảm nhạy với lỗi lớn.
Hiệu quả tính toán
Tài nguyên tính toán là hàng hóa trong lĩnh vực machine learning cả thương mại lẫn nghiên cứu. Khả năng tính toán lớn cho phép thử nghiệm với dữ liệu lớn và bài toán phức tạp. Một số hàm mất mát tốn kém tính toán hơn, nhất là khi số lượng dữ liệu lớn. Do đó, hiệu quả tính toán là yếu tố cần cân nhắc khi chọn hàm mất mát.
|
Yếu tố |
Mô tả |
|
Loại bài toán học |
Phân loại vs Hồi quy; Nhị phân vs Đa lớp. |
|
Độ nhạy với ngoại lệ |
Một số hàm nhạy hơn với ngoại lệ (vd., MSE), số khác bền vững hơn (vd., MAE). |
|
Hành vi mô hình mong muốn |
Ảnh hưởng cách mô hình hành xử, ví dụ hinge loss trong SVM tập trung tối đa hóa biên. |
|
Hiệu quả tính toán |
Một số hàm tốn tài nguyên hơn, ảnh hưởng lựa chọn dựa trên nguồn lực sẵn có. |
|
Tính hội tụ |
Độ trơn và tính lồi của hàm có thể ảnh hưởng độ dễ và tốc độ huấn luyện. |
|
Quy mô tác vụ |
Với tác vụ quy mô lớn, cần hàm mất mát có khả năng mở rộng và tối ưu hiệu quả. |
Tác động của ngoại lệ và phân phối dữ liệu
Ngoại lệ là các mẫu nằm ngoài phân phối thống kê tổng thể của tập dữ liệu; đôi khi được gọi là bất thường hay dị biệt. Cách quản lý ngoại lệ quyết định hiệu năng và độ chính xác của mô hình đã huấn luyện.
Như đã nêu, ngoại lệ ảnh hưởng tới các giá trị lỗi dùng trong hàm mất mát, tùy theo loại hàm. Tác động này lan truyền tới kết quả của quá trình học, có thể dẫn tới hành vi mong muốn hoặc không mong muốn của thuật toán hay mô hình.
Ví dụ, MSE phạt ngoại lệ vì tạo ra các hạng lỗi lớn; tức là trong huấn luyện, trọng số mô hình sẽ được điều chỉnh để “điều tiết” các ngoại lệ này. Nếu đây không phải hành vi mong muốn, mô hình cuối cùng sẽ tổng quát hóa kém với dữ liệu chưa thấy. Với kịch bản cần giảm tác động của ngoại lệ, các hàm như MAE và Huber phù hợp hơn.
|
Hàm mất mát |
Áp dụng cho Phân loại |
Áp dụng cho Hồi quy |
Độ nhạy với Ngoại lệ |
|
Mean Squared Error (MSE) |
✖️ |
✔️ |
Cao |
|
Mean Absolute Error (MAE) |
✖️ |
✔️ |
Thấp |
|
Cross-Entropy |
✔️ |
✖️ |
Trung bình |
|
Hinge Loss |
✔️ |
✖️ |
Thấp |
|
Huber Loss |
✖️ |
✔️ |
Trung bình |
|
Log Loss |
✔️ |
✖️ |
Trung bình |
Triển khai hàm mất mát
Ví dụ triển khai các hàm mất mát phổ biến
Triển khai MAE trong Python
# Python implementation of Mean Absolute Error (MAE)
def mean_absolute_error(actual:list, predicted:list) -> float:
"""
Calculate the Mean Absolute Error between actual and predicted values
:param actual: list, actual values
:param predicted: list, predicted values
:return: float, the calculated MAE
"""
# Ensure the length of the two lists are the same
if len(actual) != len(predicted):
raise ValueError("The length of actual values and predicted values must be the same")
# Calculate the absolute differences
absolute_diffs = [abs(act - pred) for act, pred in zip(actual, predicted)]
# Calculate the mean of the absolute differences
mae = sum(absolute_diffs) / len(actual)
return mae
# Example usage:
# actual values
y_true = [3, -0.5, 2, 7]
# predicted values
y_pred = [2.5, 0.0, 2, 8]
# Calculate MAE
mae_value = mean_absolute_error(y_true, y_pred)
print(mae_value)
# 0.5
Triển khai MSE trong Python
# Python implementation of Mean Squared Error (MSE) / L2 Loss
def mean_squared_error(actual:list, predicted:list) -> float:
"""
Calculate the Mean Squared Error between actual and predicted values
:param actual: list, actual values
:param predicted: list ,predicted values
:return: float, the calculated MSE
"""
# Ensure the length of the two lists are the same
if len(actual) != len(predicted):
raise ValueError("The length of actual values and predicted values must be the same")
# Calculate the squared differences
# (yᵢ - ȳ)²
squared_diffs = [(act - pred) ** 2 for act, pred in zip(actual, predicted)]
# Calculate the mean of the squared differences
mse = sum(squared_diffs) / len(actual)
return mse
# Example usage:
# actual values
y_true = [1, 2, 3, 4, 5]
# predicted values
y_pred = [1.1, 2.2, 2.9, 4.1, 4.9]
# Calculate MSE
mse_value = mean_squared_error(y_true, y_pred)
print(mse_value)
# 0.015999999999999993
Sử dụng thư viện để triển khai hàm mất mát
Mặc dù có thể tự viết hàm mất mát, và các thư viện deep learning như TensorFlow, PyTorch hỗ trợ loss tùy biến trong triển khai mạng neuron, các thư viện như Scikit-learn, TensorFlow và PyTorch cung cấp sẵn các hàm mất mát thường dùng.
Những chức năng tích hợp sẵn này giúp sử dụng dễ dàng và che giấu bớt phức tạp khi triển khai, đơn giản hóa quá trình phát triển mô hình.
Dùng các thư viện deep learning có ưu thế so với triển khai thuần Python, gồm:
- Dễ sử dụng
- Hiệu quả và tối ưu
- Hỗ trợ GPU và tính toán song song
- Cộng đồng phát triển hỗ trợ
Mean Absolute Error (MAE) với thư viện scikit-learn
from sklearn.metrics import mean_absolute_error
# actual values
y_true = [3, -0.5, 2, 7]
# predicted values
y_pred = [2.5, 0.0, 2, 8]
# Calculate MAE using scikit-learn
mae_value = mean_absolute_error(y_true, y_pred)
print(mae_value)
#0.5
Mean Squared Error (MSE) với thư viện scikit-learn
from sklearn.metrics import mean_squared_error
# actual values
y_true = [1, 2, 3, 4, 5]
# predicted values
y_pred = [1.1, 2.2, 2.9, 4.1, 4.9]
# Calculate MSE using scikit-learn
mse_value = mean_squared_error(y_true, y_pred)
print(mse_value)
# 0.016
Kết luận
Tóm lại, chọn đúng hàm mất mát là yếu tố then chốt để huấn luyện mô hình machine learning hiệu quả. Bài viết đã nêu bật các hàm mất mát chủ chốt, vai trò của chúng trong thuật toán, và sự phù hợp cho từng tác vụ. Từ MSE đến Huber Loss, mỗi hàm có ưu điểm riêng, từ xử lý ngoại lệ đến cân bằng bias và variance.
Quyết định dùng hàm tự viết hay hàm dựng sẵn từ Scikit-learn, TensorFlow, PyTorch phụ thuộc nhu cầu dự án, hiệu quả tính toán và chuyên môn người dùng. Các thư viện này mang lại sự dễ triển khai, hỗ trợ cộng đồng và cập nhật thường xuyên.
Dù machine learning liên tục phát triển, tầm quan trọng của hàm mất mát vẫn không đổi. Xu hướng tương lai có thể mang đến nhiều hàm chuyên biệt hơn, nhưng các nguyên lý nền tảng nhiều khả năng vẫn giữ nguyên. Để tìm hiểu sâu hơn về machine learning và ứng dụng, hãy khám phá lộ trình Machine Learning Scientist with Python của DataCamp.
Câu hỏi thường gặp
Tôi có thể dùng các hàm mất mát khác nhau cho cùng một bài toán machine learning không?
Có. Bạn có thể thử nghiệm các hàm mất mát khác nhau cho cùng một vấn đề để xem hàm nào cho kết quả tốt nhất. Ví dụ, trong hồi quy, bạn có thể thử cả Mean Squared Error (MSE) và Huber Loss để cân bằng giữa độ nhạy với ngoại lệ và hiệu năng tổng thể. Việc lựa chọn phụ thuộc vào đặc điểm cụ thể của dữ liệu và bài toán.
Hàm mất mát ảnh hưởng thế nào đến sự hội tụ của mô hình khi huấn luyện?
Lựa chọn hàm mất mát ảnh hưởng đến độ trơn tru và tốc độ hội tụ trong quá trình huấn luyện. Chẳng hạn, các hàm có gradient không lồi hoặc gián đoạn có thể khiến huấn luyện bị khựng hoặc hội tụ tới nghiệm kém tối ưu. Ngược lại, các hàm có gradient trơn và "đẹp" như MSE hoặc Cross-Entropy có thể giúp tối ưu hóa dễ dàng hơn với các phương pháp dựa trên gradient.
Quy mô dữ liệu đầu ra đóng vai trò gì trong việc chọn hàm mất mát?
Quy mô của dữ liệu đầu ra có thể ảnh hưởng đáng kể tới việc chọn hàm mất mát. Ví dụ, nếu giá trị mục tiêu ở thang rất lớn hoặc rất nhỏ, các hàm như MSE (bình phương lỗi) có thể làm nhấn mạnh quá mức các giá trị lớn. Khi đó, chuẩn hóa dữ liệu hoặc dùng các hàm ít phụ thuộc thang đo như MAE hay Huber Loss có thể giúp tối ưu cân bằng hơn.
Richmond Alake là Chuyên gia Vận động Phát triển tại MongoDB, nơi anh tập trung vào các công nghệ AI/ML. Anh tạo nội dung giáo dục dành cho nhà phát triển và người dùng MongoDB, hỗ trợ họ xây dựng giải pháp AI tận dụng các khả năng của MongoDB, bao gồm tìm kiếm vector và mô hình ngôn ngữ lớn (LLM). Richmond có nền tảng vững chắc về AI, thị giác máy tính và phát triển phần mềm. Anh cũng đã viết nhiều bài viết kỹ thuật và giảng dạy các khóa học liên quan đến AI. Trước khi gia nhập MongoDB, anh là Kiến trúc sư Machine Learning tại Slalom Build, Trưởng chương trình tại Emeritus, và Kỹ sư Thị giác Máy tính tại Loveshark.
