1. Giới Thiệu Về Loss Function

1.1. Định nghĩa

Trong Trí tuệ nhân tạo và Học máy, loss function (hay hàm mất mát) là một khái niệm trung tâm, dùng để đo lường mức độ sai khác giữa dự đoán của mô hình và giá trị mục tiêu thực tế. Nói một cách trực quan, loss function cho ta biết mô hình đang “sai bao nhiêu”: nếu mô hình dự đoán càng gần với nhãn thật thì giá trị loss càng nhỏ; ngược lại, nếu dự đoán càng lệch xa so với thực tế thì loss sẽ càng lớn. Vì vậy, loss function chính là thước đo chất lượng tức thời của mô hình trong quá trình học.

Về mặt tổng quát, loss function có thể được định nghĩa thông qua ánh xạ sau:

$$ \begin{matrix} \mathcal{L} : \mathcal{Y} \times \widehat{\mathcal{Y}} \rightarrow \mathbb{R}_{\geq 0} \\[1ex] (y, \hat{y}) \mapsto \mathcal{L}(y, \hat{y}) \end{matrix} $$
Trong đó:
- $\mathcal{L}$: Ký hiệu của loss function.
- $y \in \mathcal{Y}$: Giá trị thực tế (true label/ground truth), và $\mathcal{Y}$ là tập chứa tất cả các giá trị thực tế.
- $\hat{y} \in \hat{\mathcal{Y}}$: Giá trị do mô hình dự đoán ra (predicted value), và $\hat{\mathcal{Y}}$ là tập chứa tất cả các giá trị do mô hình dự đoán ra.

Nói một cách dễ hiểu, loss function là một hàm số mà ánh xạ cặp giá trị thực tế, và tương ứng với nó là giá trị dự đoán của mô hình sang một số thực không âm.

Trên thực tế, khi huấn luyện mô hình, mục tiêu của thuật toán học hỏi là tìm ra được một bộ tham số $\theta$ sao cho giá trị loss trên toàn bộ tập dữ liệu là nhỏ nhất. Nếu xét trên $N$ mẫu quan sát của tập dữ liệu, ta sẽ có bài toán tối ưu tổng quát thường được viết như sau:
$$ \min_{\theta} \frac{1}{N} \sum_{i=1}^{N} \mathcal{L}(y_i, f_\theta(x_i)) $$

Trong đó, $f_{\theta}(x_i)$ là dự đoán của mô hình với đầu vào $x_i$. Biểu thức trên cũng chính là nền tảng của phạm trù Empirical Risk Minimization trong Machine Learning, tức ta sẽ tăng khả năng học hỏi của mô hình bằng cách giảm thiểu sai số trung bình trên toàn bộ tập dữ liệu quan sát được.

1.2. Ý nghĩa

Ý nghĩa của loss function trong AI/ML là vô cùng quan trọng, bởi nó không đơn thuần chỉ đóng vai trò đánh giá sai số, mà còn đóng vai trò định hướng việc học cho mô hình. Trong quá trình huấn luyện, mô hình không thể phân biệt một dự đoán như thế nào là "tốt, như thế nào là "tệ"; lúc này, loss function sẽ cung cấp sự phân biệt đó cho mô hình.

Thông qua gradient của hàm loss, các thuật toán tối ưu (như Gradient Descent hay Adam) sẽ liên tục cập nhật trọng số, dẫn dắt mô hình đi theo hướng giảm thiểu sai số đến mức cực tiểu. Nếu chọn sai Loss Function, mô hình có thể hội tụ tốt về mặt toán học nhưng lại hoàn toàn vô giá trị khi áp dụng vào thực tế, bởi nó đã bị dạy sai mục tiêu cốt lõi của bài toán ngay từ đầu.

1.3. Cách xác định loss function phù hợp

Về bản chất, việc xác định hay lựa chọn một loss function không đơn thuần chỉ là chọn một công thức phổ biến theo bài toán một cách rập khuôn, mà là xác định xem mô hình cần học điều gì, dạng sai số nào cần bị phạt "mạnh tay", và đại lượng đánh giá (metric) nào phản ánh đúng mục tiêu của bài toán. Nói cách khác, một loss function phù hợp phải được xây dựng hoặc lựa chọn sao cho nó mã hóa đúng bản chất của nhiệm vụ học máy đang xét.

Thông thường, quá trình xác định một loss function có thể được tiếp cận theo các câu hỏi sau:

i. Đầu ra của bài toán là gì?

Loss Function trước hết phải tương thích tuyệt đối với cấu trúc toán học của không gian đầu ra (output space).

  • Bài toán Hồi quy (Regression): Khi đầu ra là các giá trị liên tục, ta quan tâm đến khoảng cách số học. Các hàm đo lường như Mean Squared Error (MSE) hoặc Mean Absolute Error (MAE) là lựa chọn tiêu chuẩn.

  • Bài toán Phân loại (Classification): Khi đầu ra là các nhãn rời rạc, ta quan tâm đến phân phối xác suất dự đoán đúng lớp. Tiêu biểu nhất trong nhóm này là hàm Cross-Entropy.

ii. Loại sai số nào cần bị phạt nặng nhất?

Không phải mọi sai số đều có mức độ nghiêm trọng như nhau. Trong một số bài toán, việc dự đoán sai ở một vài khía cạnh sẽ không gây ảnh hưởng đáng kể đến hiệu quả của mô hình, nhưng lại gây hậu quả không lường trước được ở một vài khía cạnh khác; điển hình là trong các bài toán y sinh học, việc bỏ sót một vài pixel tổn thương nhỏ (False Negative) sẽ nghiêm trọng hơn việc nhận diện dư thừa một vài pixel nền (False Positive) không liên quan.

iii. Loss function có phù hợp với các metric đánh giá hay không?

Ở một số bài toán như Classification, các metric dùng để đánh giá mô hình hầu như không bao giờ trùng khớp với loss function. Chính vì vậy, khi chọn loss function cho một bài toán bất kỳ, ta cần phải đảm bảo giữa loss function và các metric được chọn phải có một mối tương quan đơn điệu chặt chẽ (tức khi loss giảm thì chất lượng mô hình theo metric phải tăng).

Chẳng hạn, nếu chất lượng bài toán phân vùng (Segmentation) được đánh giá bằng chỉ số Dice Score, việc sử dụng trực tiếp Dice Loss trong lúc huấn luyện sẽ giúp mô hình bám sát nhất với mục tiêu nghiệm thu: khi loss giảm, Metric thực tế chắc chắn sẽ tăng.

iv. Loss function có thể được tối ưu một cách ổn định không?

Ngoài các khía cạnh liên quan đến bài toán đang xét, loss function được chọn cũng cần phải ổn định về mặt toán học. Một loss function tốt thường phải có gradient hữu ích, đạo hàm đủ trơn hoặc ít nhất đủ ổn định để các thuật toán tối ưu có thể học một cách hiệu quả. Trên thực tế, có những hàm loss rất đúng về mặt trực giác nhưng khó tối ưu về mặt toán học hay về mặt điện toán, đặc biệt khi dữ liệu bị mất cân bằng mạnh, hoặc khi đầu ra có cấu trúc phức tạp.

Chính vì thế, việc lựa chọn loss function luôn là sự cân bằng giữa hai yêu cầu:
- Phản ánh đúng mục tiêu bài toán.
- Cho phép tối ưu hiệu quả trong quá trình huấn luyện.

2. Các Loss Function Phổ Biến Cho Bài Toán Image Segmentation

2.1. Giới Thiệu Về Bài Toán Image Segmentation

Image Segmentation là bài toán gán nhãn cho từng pixel trong ảnh, sao cho các pixel có cùng ý nghĩa ngữ nghĩa được gom vào cùng một vùng. Khác với bài toán phân loại ảnh thông thường, nơi mô hình chỉ cần dự đoán một nhãn duy nhất cho toàn bộ ảnh, segmentation yêu cầu mô hình đưa ra một bản đồ dự đoán dày đặc (dense prediction), tức là tại mỗi vị trí pixel đều phải quyết định pixel đó thuộc lớp nào. Có thể nói, đây chính là một trong những bài toán nền tảng của thị giác máy tính hiện đại, do tính ứng dụng cao và rộng rãi trong nhiều lĩnh vực như: y sinh học, xe tự hành, giám sát, ảnh vệ tinh,...

Mô phỏng IoU Loss

Hình - Hai lớp bài toán con của Image Segmentation (Semantic vs. Instance Segmentation) - Anurag Arnab, Shuai Zheng et. al 2018 (nguồn: IEEE)

Nếu xét ảnh đầu vào có kích thước $ H \times W$, thì trong bài toán segmentation đa lớp với $C$ lớp, giá trị ground-truth có thể được biểu diễn dưới dạng:
$$ y \in \{0, 1, \dots, C - 1\}^{H \times W} $$
trong đó mỗi pixel mang một nhãn lớp. Tương ứng, đầu ra của mô hình thường là một tensor xác suất:
$$ \hat{y} \in [0, 1]^{H \times W \times C} $$
với ràng buộc:
$$ \sum_{c=1}^{C} \hat{y}_{ijc} = 1 \quad \forall (i, j) $$
Nghĩa là, với mỗi pixel $(i, j)$, mô hình sẽ đưa ra một phân phối xác suất trên $C$ lớp.

Tuy nhiên, bài toán segmentation không chỉ đơn thuần là phân loại đúng trên từng pixel, mà trên thực tế, một kết quả segmentation tốt còn cần phải đảm bảo rằng vùng dự đoán có hình dạng hợp lý, bám sát đối tượng, và tái hiện đúng ranh giới (boundary) của từng vật thể. Đây là lý do vì sao việc lựa chọn loss function trong segmentation trở nên quan trọng hơn nhiều so với nhiều bài toán học máy khác. Có thể nói, hiệu quả của mô hình segmentation không chỉ phụ thuộc vào kiến trúc của mạng, mà còn phụ thuộc mạnh vào hàm mục tiêu (objective function), tức loss function được chọn để huấn luyện. Sự quan trọng của loss function trong bài toán Image Segmentation càng được thể hiện rõ nét hơn khi mà các thách thức như mất cân bằng lớp, đối tượng nhỏ, biên phức tạp, hay nhãn nhiễu luôn xuất hiện thường xuyên trong các bài toán thực tế (đặc biệt là y sinh).

2.2. Loss Function Cho Bài Toán Image Segmentation

Trong Semantic Segmentation, loss function có thể được hiểu là cầu nối giữa mask dự đoán và mask thực tế, vì nó cho biết mô hình đang sai đến mức nào, đồng thời cung cấp tín hiệu gradient để điều chỉnh tham số trong quá trình huấn luyện. Tuy nhiên, không phải mọi loss function đều “nhìn” bài toán segmentation theo cùng một cách. Có những loss tập trung vào độ đúng ở mức từng pixel; có những loss lại quan tâm đến mức độ chồng lấp giữa toàn bộ vùng dự đoán và vùng thật.

Theo Azad et al., các loss function trong Image Segmentation được phân loại thành ba dạng phổ biến sau:
- Pixel-level loss functions: tính toán ở mức pixel-wise, tức đo sai khác độc lập giữa dự đoán và ground-truth tại mỗi pixel.
- Region-level loss functions: tập trung vào mức độ khớp tổng thể giữa mask dự đoán và mask thật, nhấn mạnh vào mức độ overlap hơn là từng pixel đơn lẻ.
- Boundary-level loss functions: chuyên xử lý độ chính xác của ranh giới đối tượng.

Trong bài blog này, ta sẽ chỉ tập trung vào ba loss function phổ biến sau:
- Cross-Entropy LossFocal Loss như hai loss tiêu biểu của nhóm pixel-level,
- IoU Loss như một loss tiêu biểu của nhóm region-level.

2.2.1. Pixel-level Loss Function

Theo Azad et al., nhóm Pixel-level Loss hoạt động trực tiếp ở mức độ từng điểm ảnh (pixel) riêng lẻ. Mục tiêu cốt lõi của chúng là đảm bảo việc phân loại chính xác cho từng pixel bên trong các vùng phân đoạn.

Cụ thể, nhóm hàm mất mát này sẽ tính toán sự sai lệch (discrepancy) giữa giá trị dự đoán của mô hình và nhãn thực tế (ground-truth) một cách hoàn toàn độc lập trên từng pixel. Về bản chất, Pixel-level Loss nhìn nhận bài toán phân vùng ảnh như một bài toán phân loại dày đặc (dense classification). Nhờ sự tập trung mạnh mẽ vào độ chính xác vi mô (fine-grained pixel-wise accuracy), chúng cực kỳ xuất sắc trong các bài toán yêu cầu nhận diện đối tượng chi tiết (ví dụ: phát hiện các khối u có tỷ lệ phủ rất thấp so với ảnh nền trong y sinh học).

Ưu điểm nổi bật:
- Tín hiệu học trực tiếp và ổn định: Việc tính toán sai số ngay trên từng pixel cung cấp cho mô hình các giá trị gradient cực kỳ rõ ràng. Mô hình nhận biết chính xác điểm ảnh nào đang bị phân loại sai để điều chỉnh trọng số kịp thời, giúp quá trình hội tụ diễn ra trơn tru. Nhờ sự dễ dàng trong việc triển khai và tối ưu, chúng thường được sử dụng làm baseline tiêu chuẩn cho hầu hết các bài toán segmentation.
- Linh hoạt xử lý hiện tượng mất cân bằng lớp (Class Imbalance): Mặc dù tính toán độc lập trên từng pixel, nhóm này cung cấp các biến thể can thiệp độ ưu tiên rất sắc bén. Điển hình như Weighted Cross-Entropy Loss, cho phép phân bổ trọng số nghịch đảo với tần suất xuất hiện của lớp, giúp các lớp thiểu số (như khối u nhỏ) có trọng số cao hơn để mô hình không được phép phớt lờ chúng . Mặt khác, Focal Loss lại đóng vai trò như một bộ lọc, chủ động giảm bớt mức độ ảnh hưởng của các mẫu dễ đoán và ép mô hình phải dồn toàn bộ tài nguyên để học các mẫu khó.

Hạn chế và hướng khắc phục:
- Bỏ qua cấu trúc hình học tổng thể: Vì bản chất là cộng dồn sai số cục bộ, nhóm loss này không phản ánh được chất lượng hình học hay tính toàn vẹn của toàn bộ vùng đối tượng. Việc tối ưu hóa dựa trên các số liệu thống kê tổng thể của từng pixel có thể khiến các đường biên phân đoạn trở nên mờ nhạt (softer segmentation boundaries) . Do đó, thay vì đứng đơn độc, Pixel-level Loss thường được tích hợp vào một phương pháp tiếp cận kết hợp (Combo Loss), hòa trộn cùng Region-level hoặc Boundary-level để tạo ra sự cân bằng hoàn hảo giữa độ chính xác của từng pixel và chất lượng của toàn bộ đối tượng.

2.2.1.1. Cross-Entropy Loss

Cross-Entropy Loss là một trong những loss function cơ bản và phổ biến nhất trong các bài toán phân loại, bao gồm cả Image Segmentation. Theo Azad et al., Cross-Entropy đo sự khác biệt giữa hai phân phối xác suất: phân phối nhãn thật và phân phối xác suất dự đoán của mô hình. Trong segmentation, sau khi áp dụng hàm softmax, mô hình sẽ sinh ra một pixel-wise probability map, tức là tại mỗi pixel, mô hình sẽ dự đoán xác suất một pixel thuộc từng lớp nào. Loss function sau đó sẽ được tính bằng cách lấy negative logarithm của xác suất tương ứng với lớp đúng tại mỗi pixel. Khi xác suất của lớp đúng tiến gần về $1$, Cross-Entropy sẽ tiến gần về $0$.

Với ký hiệu $t_n$ là one-hot vector biểu diễn nhãn thật của pixel thứ $n$, và $y_n$ là vector xác suất dự đoán tại pixel đó, công thức của Cross-Entropy Loss được viết như sau:
$$ \mathcal{L}_{CE}(y, t) = -\sum_{n=1}^{N} \log(t_n \cdot y_n) $$

Do $t_n$ là one-hot vector, nên trong thực tế chỉ xác suất của lớp đúng mới ảnh hưởng đến loss. Điều này có nghĩa là mô hình sẽ bị phạt nặng nếu nó gán xác suất thấp cho lớp đúng, và sẽ được “thưởng” khi gán xác suất cao cho lớp đúng.

Trực giác của Cross-Entropy là khá rõ ràng: nó buộc mô hình trở nên tự tin hơn khi đoán đúng, đồng thời bị phạt mạnh khi tự tin nhưng lại đoán sai. Vì vậy, Cross-Entropy là một lựa chọn rất tự nhiên khi chúng ta xem bài toán Image Segmentation như một bài toán phân loại nhãn cho từng pixel. Đây cũng là lý do vì sao Cross-Entropy thường được xem là một baseline mạnh, ổn định và có tính khái quát cao.

Trong trường hợp dữ liệu bị mất cân bằng lớp, ta có thể dùng Weighted Cross-Entropy, trong đó mỗi lớp được gán một trọng số khác nhau để cân bằng mức độ ảnh hưởng của chúng lên loss của toàn cục. Công thức của biến thể này là:
$$ \mathcal{L}_{WCE}(y, t, w) = -\sum_{n=1}^{N} t_n \cdot w \log(t_n \cdot y_n) $$

Ở đây, $w$ là vector trọng số của các lớp. Nếu tất cả trọng số đều bằng 1, ta thu được Cross-Entropy thông thường. Ý nghĩa của biến thể này là những lớp hiếm hơn có thể được gán trọng số lớn hơn để mô hình không bị thiên lệch về bất kỳ lớp chiếm ưu thế nào trong bộ dữ liệu. Trong các bài toán segmentation thực tế, đặc biệt là ảnh y sinh học hoặc ảnh vệ tinh, đây là một kỹ thuật rất quan trọng để giảm tác động của vấn đề class imbalance.

Tóm lại, Cross-Entropy có ưu điểm ở sự đơn giản, tính ổn định và khả năng tối ưu tốt. Tuy nhiên, vì vẫn hoạt động ở mức từng pixel độc lập, nó chưa trực tiếp tối ưu mức độ khớp giữa hai mask ở cấp độ toàn vùng. Đây cũng chính là động lực để các biến thể như Focal Loss ra đời.

2.2.1.2. Focal Loss

Focal Loss được đề xuất như một mở rộng của Cross-Entropy nhằm xử lý tốt hơn hiện tượng mất cân bằng dữ liệu và sự áp đảo của các mẫu dễ. Có thể nói, Focal Loss là một phiên bản sửa đổi của Cross-Entropy, trong đó các mẫu dễ — tức là những pixel đã được phân loại đúng với xác suất cao — sẽ bị giảm trọng số, còn các mẫu khó hoặc đang bị phân loại sai sẽ được nhấn mạnh hơn. Nhờ cơ chế này, mô hình sẽ không cần tốn chất xám vào những pixel vốn đã dễ, mà thay vào đó sẽ tập trung hơn vào những vùng thực sự khó phân đoạn.

Công thức của Focal Loss là:
$$ \mathcal{L}_{Focal}(y, t, \gamma) = -\sum_{n=1}^{N} (1 - t_n \cdot y_n)^\gamma \log(t_n \cdot y_n) $$

Trong đó, $\gamma \ge 0$ là một siêu tham số có thể điều chỉnh được, thường được gọi là focusing parameter. Thành phần $(1 - t_n \cdot y_n)^\gamma$ chính là yếu tố làm thay đổi hành vi của Focal Loss so với Cross-Entropy thông thường.

Mô phỏng IoU Loss

Hình - Đồ thị Focal Loss và đồ thị Cross-Entropy Loss ($\gamma$ = 0)

Trực giác của Focal Loss là như sau: nếu một pixel đã được mô hình dự đoán là khá đúng, nghĩa là xác suất dành cho lớp đúng đã cao, thì $(1 - t_n \cdot y_n)$ sẽ nhỏ, kéo theo hệ số điều chỉnh cũng sẽ nhỏ theo. Khi đó, đóng góp của pixel này vào tổng loss sẽ được giảm xuống. Ngược lại, nếu một pixel bị dự đoán sai hoặc mô hình còn không chắc chắn về dự đoán của mình, xác suất của lớp đúng sẽ nhỏ hơn, khiến hệ số điều chỉnh lớn hơn và làm pixel đó bị phạt mạnh hơn. Điều này khiến Focal Loss có xu hướng tập trung mạnh hơn vào những pixel khó, những vùng hiếm, hoặc những đối tượng nhỏ và khó tách khỏi nền.

Một tính chất quan trọng là khi:
$$ \gamma = 0 $$
thì Focal Loss sẽ trở thành Cross-Entropy. Chính vì lẽ này, có thể xem Focal Loss như là một dạng tổng quát của Cross-Entropy, trong đó, hệ số $\gamma$ sẽ quyết định mức độ ưu tiên dành cho các mẫu khó.

Trong Image Segmentation, Focal Loss đặc biệt hữu ích khi dữ liệu có class imbalance mạnh, hoặc khi có quá nhiều pixel nền dễ phân loại khiến mô hình nhanh chóng “hài lòng” với những vùng dễ mà bỏ qua các vùng khó hơn. Với những bộ dữ liệu như ảnh y sinh học, ảnh vệ tinh, hoặc các bài toán có đối tượng nhỏ, Focal Loss thường giúp cải thiện đáng kể chất lượng dự đoán trên những vùng khó và những lớp thiểu số. Tuy nhiên, đổi lại, hiệu quả của nó phụ thuộc khá nhiều vào việc lựa chọn giá trị $\gamma$, nên đây là một loss function cần được tinh chỉnh cẩn thận trong thực nghiệm.

2.2.2. Boundary-level Loss Function

Khác với Pixel-level Loss chỉ tập trung đánh giá sai số cục bộ trên từng điểm ảnh độc lập, Region-level Loss nhìn nhận bài toán ở một góc độ vĩ mô hơn. Theo nghiên cứu của Azad et al., nhóm hàm mất mát này ưu tiên độ chính xác của toàn bộ vùng đối tượng (object completeness), bằng cách tối đa hóa sự liên kết và chồng lấp (overlap) giữa mặt nạ dự đoán (prediction mask) và mặt nạ thực tế (ground-truth mask).

Nói cách khác, thay vì đếm xem có bao nhiêu pixel đúng/sai, chúng đánh giá chất lượng và tính toàn vẹn của toàn bộ vùng phân đoạn tổng thể.

Cách tiếp cận này mang lại những ưu điểm vượt trội cho bài toán Image Segmentation:
- Phản ánh đúng bản chất đánh giá thực tế: Trong thực tế, các bài toán phân vùng thường được nghiệm thu bằng các độ đo (metric) dựa trên độ chồng lấp. Việc sử dụng trực tiếp Region-level Loss giúp quá trình huấn luyện bám sát chặt chẽ với mục tiêu đánh giá cuối cùng.
- Xử lý mất cân bằng lớp (Class Imbalance) một cách tự nhiên: Một mô hình đánh giá theo điểm ảnh rất dễ bị "đánh lừa" khi dự đoán đúng vùng nền (background) khổng lồ nhưng lại làm hỏng vùng đối tượng chính. Region-level Loss giải quyết vấn đề này bằng cách xem xét tập hợp pixel như một khối thống nhất, buộc mô hình không được phớt lờ các lớp thiểu số hay các đối tượng có kích thước siêu nhỏ.
- Biên phân đoạn sắc nét hơn: Bằng cách tập trung vào sự đồng thuận giữa vùng dự đoán và thực tế, nhiều hàm loss trong nhóm này giúp tạo ra các đường biên sắc nét và chi tiết hơn so với các phương pháp pixel-level.

Tuy nhiên, sức mạnh nào cũng đi kèm với thách thức:
- Khó hội tụ và kém ổn định: Hạn chế lớn nhất của nhóm Region-level là quá trình tối ưu hóa (optimization) sẽ khó khăn hơn. Đặc biệt ở giai đoạn đầu của huấn luyện, nếu vùng dự đoán của mô hình và vùng ground-truth gần như chưa chạm vào nhau (minimal overlap), hiện tượng triệt tiêu đạo hàm (vanishing gradient) rất dễ xảy ra, khiến mô hình bị mất phương hướng học tập.

Để hiểu rõ hơn về cách toán học hóa độ chồng lấp này, đại diện tiêu biểu nhất của nhóm Region-level mà chúng ta sẽ đi sâu vào tìm hiểu chính là IoU Loss (hay Jaccard Loss).

2.3. IoU Loss

IoU Loss bắt nguồn từ độ đo Intersection over Union (IoU), một chỉ số phổ biến còn được biết đến với tên gọi là Jaccard Index. Trong bài toán Semantic Segmentation, IoU là một trong những thước đo quan trọng và khắt khe nhất vì nó đánh giá trực tiếp mức độ chồng lấp thực tế giữa mask dự đoán (prediction mask) và mask thực tế (ground-truth mask).

Về mặt định nghĩa toán học, chỉ số IoU được tính bằng tỷ lệ giữa kích thước phần giao (Intersection) và kích thước phần hợp (Union) của hai vùng này. Ta có công thức cơ bản:
$$ IoU = \frac{|Y \cap T|}{|Y \cup T|} $$
trong đó:
- $Y$ là mask dự đoán
- $T$ là mask thực tế

Trong segmentation đa lớp, IoU thường được tính riêng cho từng lớp rồi lấy trung bình, tạo thành mean IoU ($mIoU$). Vì đây là metric được dùng rất phổ biến để đánh giá chất lượng segmentation, việc xây dựng một loss dựa trực tiếp trên IoU là một hướng tiếp cận rất tự nhiên.

Tuy nhiên, chỉ số $mIoU$ thuần túy không thể trực tiếp dùng làm loss function để huấn luyện mô hình vì nó chỉ đơn thuần là đếm các pixel nhị phân ($0$ hoặc $1$), dẫn đến việc không thể tính đạo hàm. Để giải quyết vấn đề này, IoU Loss (được đề xuất bởi Rahman et al.) đã ra đời như một phiên bản xấp xỉ (relaxed) và khả vi (differentiable) của $mIoU$.

Công thức của nó là:
$$ \mathcal{L}_{IoU} = 1 - \frac{1}{C} \sum_{c=0}^{C-1} \frac{\sum_{n=1}^{N} t_n^c y_n^c}{\sum_{n=1}^{N} (t_n^c + y_n^c - t_n^c y_n^c)} $$
trong đó:
- $C$ là tổng số lớp mà mô hình cần phân loại.
- $N$ là tổng số pixel có trong bức ảnh đang xét.
- $t_n^c$: Nhãn chuẩn (ground-truth). Đây là một giá trị nhị phân: nó sẽ bằng 1 nếu pixel thứ $n$ thực sự thuộc về lớp $c$, và bằng 0 nếu ngược lại.
- $y_n^c$: Giá trị dự đoán (prediction). Đây là xác suất do mô hình xuất ra (thường nằm trong khoảng từ 0 đến 1) cho thấy mức độ tự tin rằng pixel thứ $n$ thuộc về lớp $c$.

Thay vì đặt câu hỏi ở mức vi mô rằng "Pixel này là đúng hay sai?", IoU Loss tiếp cận bài toán bằng một tư duy vĩ mô hơn: "Toàn bộ vùng được dự đoán (prediction) này có khớp với vùng thực tế (ground-truth) hay không?". Tư duy này hoàn toàn đồng nhất với cách con người đánh giá chất lượng của một mask phân vùng (segmentation mask) bằng mắt thường. Cơ chế hoạt động rất trực quan: nếu vùng dự đoán (prediction) và vùng chuẩn (ground-truth) chồng lấp tốt, chỉ số IoU sẽ cao và giá trị loss sẽ trả về mức thấp. Ngược lại, nếu hai vùng lệch nhau nhiều khiến phần giao quá nhỏ so với phần hợp, loss sẽ tăng lên để phạt mô hình.

3. Demo Các Loss Function

3.1. Giới thiệu bộ dữ liệu: Semantic Segmentation of Aerial Imagery (Dubai Aerial Dataset)

Bộ dữ liệu được lựa chọn cho phần demo này là Semantic Segmentation of Aerial Imagery, gọi ngắn gọn là Dubai Aerial Dataset. Đây là bộ dữ liệu phân vùng ngữ nghĩa (semantic segmentation) trên ảnh chụp vệ tinh/aerial của thành phố Dubai, được công bố bởi Humans in the Loop hợp tác cùng Trung tâm Không gian Mohammed Bin Rashid (MBRSC).

Dữ liệu bao gồm 72 ảnh vệ tinh chất lượng cao, được chia thành 8 tile lớn. Mỗi ảnh đều đi kèm với nhãn segmentation (mặt nạ phân vùng) được gán tỉ mỉ ở cấp độ từng pixel.

Các lớp ngữ nghĩa (Semantic Classes)

Đặc điểm nổi bật nhất của Dubai Aerial Dataset là việc gán nhãn đa lớp. Mỗi pixel trong ảnh được phân loại vào một trong 6 lớp ngữ nghĩa khác nhau, bao gồm:
- Building (Tòa nhà)

  • Land (unpaved area - Khu vực đất không được lát đá)

  • Road (Đường giao thông)

  • Vegetation (Cây cối/Thảm thực vật)

  • Water (Nguồn nước)

  • Unlabeled (Chưa được gán nhãn)

Dưới đây là minh họa hình ảnh input - ground-truth:

Mô phỏng IoU Loss

Hình - Ảnh input (bên trái) và ảnh ground-truth (bên phải)

3.2. So sánh kết quả dự đoán theo các hàm loss

Trong phần demo này, chúng ta sẽ cùng nhau so sánh kết quả dự đoán của từng hàm loss được trình bày trong blog này. Mô hình được sử dụng sẽ là UNet, với số N_EPOCHS = 100, BATCH_SIZE = 16. Link demo notebook sẽ được để ở đây.

Khi so sánh trực tiếp kết quả segmentation của ba mô hình sử dụng Cross-Entropy Loss, Focal Loss và IoU Loss, có thể thấy rằng mỗi hàm loss tạo ra một kiểu dự đoán khác nhau, phản ánh đúng bản chất tối ưu của chúng. Trong ba phương pháp, IoU Loss cho kết quả trực quan tốt nhất. Các mask dự đoán từ mô hình sử dụng IoU Loss có độ phủ cao hơn, bám vùng đối tượng đầy đủ hơn, đồng thời các vùng phân đoạn nhìn mượt và liền mạch hơn so với hai loss còn lại. Điều này là hợp lý vì IoU Loss là một region-level loss, tức là nó tối ưu trực tiếp mức độ chồng lấp giữa mask dự đoán và ground-truth. Chính vì được thiết kế để quan tâm đến chất lượng vùng ở cấp độ tổng thể, IoU Loss có xu hướng cho ra các vùng phân đoạn đầy đặn, ổn định và có hình dạng tự nhiên hơn.

Mô tả ảnh 1


Mô tả ảnh 2

Hình - Kết quả dự đoán dùng IoU Loss với ảnh đầu vào (bên trái ngoài cùng), ảnh ground-truth (giữa), ảnh dự đoán (bên phải ngoài cùng).

Đối với Focal Loss với tham số
$$ \gamma = 0.75 $$
mô hình cho thấy khả năng nhận diện khá tốt ở những pixel khó, đồng thời ranh giới giữa các vùng dự đoán cũng được thể hiện rõ hơn so với IoU Loss. Nói cách khác, Focal Loss có vẻ nhạy hơn với các chi tiết khó phân loại và có xu hướng làm nổi bật các biên đối tượng tốt hơn. Tuy nhiên, điểm hạn chế là dù biên nhìn rõ hơn, mô hình vẫn còn xảy ra hiện tượng gán nhãn sai ở một số vùng. Điều này cho thấy Focal Loss thực sự giúp mô hình tập trung vào các pixel khó và giảm ảnh hưởng của những vùng quá dễ, nhưng sự tập trung đó chưa chắc đã chuyển hóa hoàn toàn thành chất lượng phân đoạn tổng thể tốt hơn. Kết quả là mask dự đoán của Focal nhìn khá đẹp, đặc biệt ở mức chi tiết cục bộ, nhưng vẫn còn thiếu sự ổn định về mặt ngữ nghĩa so với IoU Loss. Điều này hoàn toàn là dễ hiểu khi mà sự mất cân bằng nhãn ở mỗi ảnh là khá cao, trong khi cỡ mẫu của bộ dữ liệu còn bị hạn chế (chỉ có 72 ảnh).

Mô tả ảnh 1


Mô tả ảnh 2

Hình - Kết quả dự đoán dùng Focal Loss với ảnh đầu vào (bên trái ngoài cùng), ảnh ground-truth (giữa), ảnh dự đoán (bên phải ngoài cùng).

Trong khi đó, Cross-Entropy Loss cho kết quả kém thuyết phục hơn hai loss còn lại. Mô hình sử dụng Cross-Entropy vẫn có thể nhận ra sự tồn tại của những vùng khó hoặc những pixel phức tạp trong ảnh, nhưng lại không thể hiện tốt khả năng phân biệt ranh giới giữa các lớp. Các vùng dự đoán vì thế thường kém sắc nét hơn, dễ bị nhòe biên và thiếu tính nhất quán về mặt hình học. Đây cũng là một đặc điểm khá điển hình của Cross-Entropy trong segmentation: vì là một pixel-level loss, nó tối ưu theo từng pixel độc lập, nên dù có thể học được thông tin phân loại cục bộ, nó không trực tiếp khuyến khích mô hình tạo ra những vùng phân đoạn có độ phủ tốt hay có cấu trúc mượt và rõ ràng ở cấp độ toàn vùng.

Mô tả ảnh 1


Mô tả ảnh 2

Hình - Kết quả dự đoán dùng Cross-Entropy Loss với ảnh đầu vào (bên trái ngoài cùng), ảnh ground-truth (giữa), ảnh dự đoán (bên phải ngoài cùng).

Từ các quan sát trên, có thể thấy rằng IoU Loss và Focal Loss đều cho ra kết quả dự đoán đẹp hơn rõ rệt so với Cross-Entropy Loss, nhưng theo hai cách khác nhau. IoU Loss nổi bật ở khả năng tạo ra các vùng segmentation có độ phủ tốt, liền mạch và tự nhiên hơn, trong khi Focal Loss nổi bật ở khả năng nhấn mạnh các pixel khó và làm rõ ranh giới hơn. Nếu xét tổng thể, hai loss này đều cho kết quả trực quan tốt và có thể xem là tương đối ngang nhau về mặt thẩm mỹ của prediction, nhưng IoU Loss có ưu thế hơn về độ phủ và sự mượt mà của vùng dự đoán. Ngược lại, Cross-Entropy Loss tỏ ra lép vế hơn vì tuy vẫn nhận ra được các vùng khó, nhưng chưa đủ mạnh để tạo ra các mask có biên rõ và cấu trúc phân đoạn tốt như hai loss còn lại.

Tóm lại, trong thực nghiệm này, có thể kết luận rằng IoU Loss và Focal Loss đều phù hợp hơn cho bài toán segmentation so với Cross-Entropy Loss. Nếu ưu tiên một kết quả phân đoạn có độ phủ tốt, vùng dự đoán đầy đủ và mượt, thì IoU Loss là lựa chọn nổi bật hơn. Nếu quan tâm nhiều hơn đến việc làm rõ các pixel khó và ranh giới đối tượng, thì Focal Loss cũng cho thấy ưu thế đáng chú ý. Trong khi đó, Cross-Entropy Loss chủ yếu đóng vai trò như một baseline hợp lý, nhưng chưa đạt được chất lượng segmentation trực quan tốt bằng hai loss còn lại.

Tài Liệu Tham Khảo

[1] VinBigData, "Phân vùng ảnh: Các thuật toán và cơ sở dữ liệu mã nguồn mở hữu ích," vinbigdata.com, 2021. [Online]. Available: https://vinbigdata.com/camera-ai/phan-vung-anh-cac-thuat-toan-va-co-so-du-lieu-ma-nguon-mo-huu-ich.html. [Accessed: 15-Mar-2024].

[2] R. Azad et al., "Medical Image Segmentation Review: The Success of U-Net," arXiv preprint arXiv:2312.05391, 2023. [Online]. Available: https://arxiv.org/abs/2312.05391.

[3] S. S. Maicas, G. Carneiro, A. P. Bradley, J. C. Nascimento, and J. Belagiannis, "Deep learning for medical image segmentation: A review," Medical Image Analysis, vol. 70, p. 102035, May 2021. doi: 10.1016/j.media.2021.102035.

[4] A. Heydarian, "U-Net for Semantic Segmentation on Unbalanced Aerial Imagery," Towards Data Science, Oct. 3, 2021. [Online]. Available: https://towardsdatascience.com/u-net-for-semantic-segmentation-on-unbalanced-aerial-imagery-3474fa1d3e56/. [Accessed: 15-Mar-2026].