Chuyển đến nội dung chính

Giải thích Hàm Mục Tiêu: Định nghĩa, Ví dụ và Tối ưu hóa

Tìm hiểu hàm mục tiêu là gì, cách hoạt động trong tối ưu hóa và machine learning, và cách định nghĩa, diễn giải với các ví dụ thực tế.
Đã cập nhật 4 thg 5, 2026  · 11 phút đọc

Mỗi mô hình machine learning bạn huấn luyện đều đang giải một bài toán tối ưu hóa - và thứ bạn thực sự cố gắng tối ưu được gọi là hàm mục tiêu.

Nói đơn giản, đó là một hàm toán học đo lường một nghiệm “tốt” đến mức nào. Nó nhận một tập đầu vào và trả về một điểm số duy nhất. Mục tiêu luôn là tìm các giá trị làm điểm số đó lớn nhất hoặc nhỏ nhất. Bạn sẽ thấy hàm mục tiêu ở trung tâm của mọi thứ, từ lập trình tuyến tính đến deep learning. Khi hiểu cách chúng hoạt động, bạn sẽ thấy chúng ở khắp nơi.

Trong bài viết này, tôi sẽ giải thích hàm mục tiêu là gì, khác gì với hàm loss và hàm cost, và cách chúng được dùng trong machine learning và tối ưu hóa.

Tìm một lộ trình học deep learning chuyên sâu vẫn còn phù hợp vào năm 2026? Hãy đăng ký khóa Deep Learning in Python của chúng tôi để xây dựng portfolio với PyTorch.

Hàm Mục Tiêu là gì?

Hàm mục tiêu là một hàm toán học dùng để đánh giá một nghiệm tốt đến mức nào.

Bạn đưa vào nó một tập đầu vào - tham số mô hình, biến quyết định - và nó trả về một con số. Con số đó cho biết nghiệm hiện tại của bạn hoạt động tốt ra sao. Số đó càng cao (hoặc càng thấp), nghiệm của bạn càng tốt (hoặc càng tệ).

Nhân tiện, hãy bàn về tối ưu hóa nói chung.

Đó là quá trình tìm các đầu vào đẩy con số đó theo đúng hướng. Nếu bạn đang tối thiểu hóa, bạn muốn giá trị nhỏ nhất có thể. Nếu bạn đang tối đa hóa, bạn muốn giá trị lớn nhất. Dù thế nào, hàm mục tiêu là thước đo bạn dùng để so sánh.

Hiểu nôm na, hãy coi nó như một hệ thống chấm điểm. Mỗi nghiệm ứng viên nhận một điểm số, và nhiệm vụ của bạn là tìm nghiệm có điểm tốt nhất.

Hàm Mục Tiêu vs Hàm Loss vs Hàm Cost

Ba thuật ngữ này thường bị dùng lẫn cho nhau - nhưng chúng không hoàn toàn giống nhau.

Thuật ngữ hàm mục tiêu là rộng nhất. Đó là bất kỳ hàm nào bạn cố gắng tối đa hóa hoặc tối thiểu hóa. Nó không nhất thiết liên quan đến lỗi hay dự đoán - nó chỉ định nghĩa “tốt hơn” nghĩa là gì cho bài toán của bạn.

Một hàm loss đo lường lỗi cho một ví dụ huấn luyện đơn lẻ - mức sai lệch giữa dự đoán của mô hình và giá trị thực. Ví dụ, sai số bình phương trung bình cho một điểm dữ liệu là một hàm loss.

Một hàm cost tổng hợp loss trên toàn bộ tập dữ liệu, thường bằng cách lấy trung bình. Vì vậy, hàm cost là thứ bạn thực sự tối thiểu hóa trong quá trình huấn luyện - nó tóm tắt hiệu năng mô hình trên tất cả ví dụ, không chỉ một.

Trên thực tế, hầu hết các framework và bài báo ML dùng các thuật ngữ này khá thoải mái. Bạn sẽ thấy dùng “loss” ở chỗ “cost” chính xác hơn, và “objective” để chỉ cả ba.

Sự khác biệt này quan trọng khi bạn đọc các bài nghiên cứu. Ngữ cảnh sẽ cho biết tác giả thực sự nói đến cái nào.

Để có so sánh cụ thể hơn, hãy xem bảng dưới đây:

Bảng so sánh hàm Objective/Loss/Cost

Bảng so sánh hàm Objective/Loss/Cost

Hàm Mục Tiêu trong Tối Ưu Hóa

Mỗi bài toán tối ưu hóa đều có một mục tiêu và một tập ràng buộc.

Hàm mục tiêu định nghĩa mục tiêu - thứ bạn đang cố gắng tối đa hóa hoặc tối thiểu hóa. Các ràng buộc định nghĩa giới hạn - các biên mà nghiệm của bạn phải nằm trong đó. Cùng nhau, chúng tạo khung cho bài toán.

Xét một ví dụ phân bổ nguồn lực đơn giản.

Giả sử bạn vận hành một nhà máy sản xuất hai sản phẩm và muốn tối đa hóa lợi nhuận. Hàm mục tiêu của bạn biểu diễn tổng lợi nhuận theo số đơn vị của mỗi sản phẩm bạn sản xuất. Các ràng buộc biểu diễn các giới hạn - nguyên liệu thô sẵn có, giờ máy, năng lực lao động. Hàm mục tiêu cho biết bạn tối ưu cái gì và các ràng buộc cho biết bạn có gì để làm việc.

Quy hoạch tuyến tính là một bối cảnh phổ biến áp dụng điều này. Đó là phương pháp tối ưu hóa một hàm mục tiêu tuyến tính với các ràng buộc tuyến tính. Nó được dùng ở khắp nơi, từ logistics, lập lịch, chuỗi cung ứng, đến tài chính. Toán học đã được hiểu rõ, và các solver có thể xử lý bài toán với hàng nghìn biến.

Lưu ý quan trọng là hàm mục tiêu không thay đổi việc tồn tại ràng buộc nào - nó chỉ nói cho solver biết cần theo đuổi điều gì. Nếu bạn thay đổi hàm mục tiêu, bạn sẽ nhận được nghiệm hoàn toàn khác, dù ràng buộc giữ nguyên.

Hàm Mục Tiêu trong Machine Learning

Trong machine learning, hàm mục tiêu định nghĩa mô hình của bạn thực sự đang học làm gì.

Mỗi lần bạn huấn luyện một mô hình, bạn đang chạy một thuật toán tối ưu (như gradient descent, Adam, RMSProp) điều chỉnh tham số mô hình để tối thiểu hoặc tối đa hóa hàm mục tiêu. Mô hình không biết gì về bài toán của bạn. Nó chỉ biết điểm số mà hàm mục tiêu cho, và cố gắng cải thiện điểm đó sau mỗi lần cập nhật.

Điều này có nghĩa lựa chọn hàm mục tiêu định hình kết quả. Nên thử vài lựa chọn để xem cái nào hiệu quả nhất cho trường hợp của bạn.

Sai số bình phương trung bình (hồi quy)

Mean Squared Error (MSE) là hàm mục tiêu mặc định cho các bài toán hồi quy. Nó đo lường chênh lệch bình phương trung bình giữa dự đoán của mô hình và giá trị mục tiêu thực.

Công thức MSE

Công thức MSE

Bình phương sai lệch làm mọi lỗi dương và phạt lỗi lớn nhiều hơn lỗi nhỏ. Một dự đoán lệch 10 sẽ đóng góp 100 vào tổng - không chỉ 10. Điều này khiến MSE nhạy với ngoại lệ, điều bạn cần lưu ý với dữ liệu thực tế lộn xộn.

import numpy as np

y_true = np.array([3.0, 5.0, 2.5, 7.0])
y_pred = np.array([2.8, 5.2, 2.0, 6.5])

mse = np.mean((y_true - y_pred) ** 2)
print(f"MSE: {mse:.4f}")

Kết quả MSE

Kết quả MSE

Hàm loss cross-entropy (phân loại)

Cross-Entropy Loss là hàm mục tiêu tiêu chuẩn cho các bài toán phân loại. Nó đo mức chênh lệch giữa phân phối xác suất dự đoán của mô hình và phân phối lớp đúng.

Hàm loss Cross-Entropy

Hàm loss Cross-Entropy

Nếu mô hình gán xác suất cao cho lớp đúng, loss sẽ thấp. Nếu tự tin nhưng sai, loss sẽ cao và bị phạt nặng. Đây là điều thúc đẩy mô hình dự đoán đúng lớp và tự tin về điều đó.

import numpy as np

# True labels (one-hot encoded)
y_true = np.array([1, 0, 0])

# Model's predicted probabilities
y_pred = np.array([0.7, 0.2, 0.1])

cross_entropy = -np.sum(y_true * np.log(y_pred))
print(f"Cross-Entropy Loss: {cross_entropy:.4f}")

Kết quả Cross-Entropy

Kết quả Cross-Entropy

Log-likelihood

Log-likelihood phổ biến trong các mô hình xác suất và thống kê. Hàm này tối đa hóa xác suất rằng các tham số của mô hình đã tạo ra dữ liệu bạn quan sát.

Công thức log-likelihood

Công thức log-likelihood

Bạn làm việc với log của likelihood thay vì chính likelihood vì nó biến tích các xác suất thành tổng, dễ tính và dễ tối ưu hơn nhiều.

Trong thực tế, hầu hết các framework tối thiểu hóa negative log-likelihood (NLL) thay vì tối đa hóa log-likelihood. Về bản chất là như nhau - chỉ đảo dấu để gradient descent có thể hoạt động.

import numpy as np
from scipy.stats import norm

# Observed data
data = np.array([1.2, 2.3, 1.8, 2.1, 1.9])

# Assumed model parameters
mu, sigma = 2.0, 0.5

# Compute negative log-likelihood
nll = -np.sum(norm.logpdf(data, loc=mu, scale=sigma))
print(f"Negative Log-Likelihood: {nll:.4f}")

Kết quả log-likelihood

Kết quả log-likelihood

Về cốt lõi, huấn luyện chỉ là tối ưu hóa. Mỗi lần lan truyền thuận tính giá trị của hàm mục tiêu. Mỗi lần lan truyền ngược tính gradient. Và mỗi cập nhật tham số đưa mô hình theo hướng cải thiện điểm số.

Hàm Mục Tiêu Lồi và Không Lồi

Không phải mọi hàm mục tiêu đều như nhau. Hình dạng của chúng quyết định mức độ khó để tối ưu và độ tin cậy của nghiệm bạn tìm được.

Hàm mục tiêu tuyến tính

Hàm mục tiêu tuyến tính cho mối quan hệ đường thẳng giữa đầu vào và đầu ra. Khi bạn thay đổi bất kỳ đầu vào nào một lượng cố định, đầu ra cũng thay đổi một lượng cố định.

Các hàm tuyến tính được dùng trong quy hoạch tuyến tính, nơi cả hàm mục tiêu và ràng buộc đều tuyến tính. Điều này khiến chúng là lớp hàm mục tiêu dễ tối ưu nhất, vì các solver có thể tin cậy tìm được nghiệm tối ưu toàn cục, ngay cả với bài toán lớn.

Hàm mục tiêu phi tuyến

Hàm mục tiêu phi tuyến có mối quan hệ phức tạp hơn giữa đầu vào và đầu ra. Hầu hết các bài toán thực tế - và gần như mọi mô hình machine learning - thuộc nhóm này.

MSE là phi tuyến. Cross-entropy là phi tuyến. Bề mặt loss của mạng nơ-ron là phi tuyến. Độ phức tạp tăng giúp các hàm này nắm bắt mối quan hệ phức tạp trong dữ liệu, nhưng cũng khiến tối ưu khó hơn.

Hàm lồi so với không lồi

Đây là nơi mọi thứ trở nên thú vị.

Một hàm lồi có dạng giống chiếc bát. Bất kỳ đoạn thẳng nối hai điểm trên đường cong đều nằm phía trên hoặc trùng với đường cong. Điều này đảm bảo mọi cực tiểu cục bộ cũng là cực tiểu toàn cục - nghĩa là nếu bộ tối ưu tìm thấy “đáy”, đó chính là đáy thực sự.

Một hàm không lồi có hình dạng bất quy tắc hơn - nhiều thung lũng, cao nguyên và điểm yên. Bộ tối ưu có thể bị kẹt tại cực tiểu cục bộ, một thung lũng trông như đáy nhưng không phải. Mạng nơ-ron sâu có bề mặt loss rất không lồi, đó là lý do huấn luyện chúng đòi hỏi tinh chỉnh cẩn thận tốc độ học, bộ tối ưu và khởi tạo.

Bài toán lồi được giải chính xác, còn bài toán không lồi được giải xấp xỉ. Chất lượng nghiệm phụ thuộc vào chiến lược tối ưu hóa của bạn.

Với những ai thiên về trực quan, đây là so sánh giữa các hàm mục tiêu tuyến tính, phi tuyến, lồi và không lồi:

So sánh loại hàm mục tiêu

So sánh loại hàm mục tiêu

Cách Tối Ưu Hóa Hàm Mục Tiêu

Khi đã có hàm mục tiêu, bạn cần một cách để tối thiểu hoặc tối đa hóa nó. Đó là lúc các thuật toán tối ưu phát huy tác dụng.

Cách phổ biến nhất là gradient descent. Ý tưởng là tính gradient của hàm mục tiêu theo các tham số mô hình, rồi bước một bước nhỏ theo hướng làm giảm giá trị. Sau đó lặp lại cho đến khi giá trị ngừng cải thiện.

Gradient chính là đạo hàm của hàm mục tiêu.

Nó cho bạn biết độ dốc tại vị trí hiện tại và hướng “lên dốc”. Để tối thiểu hàm, bạn đi theo hướng ngược lại. Để tối đa, bạn đi cùng hướng.

Quá trình này là lặp, nghĩa là để đến nghiệm, bạn thực hiện một chuỗi cập nhật nhỏ, mỗi lần đưa các tham số tiến gần đến điểm tối ưu. Kích thước mỗi bước được điều khiển bởi tốc độ học. Quá lớn sẽ vượt quá điểm tối ưu, quá nhỏ khiến huấn luyện kéo dài.

Trong thực tế, hầu hết các framework ML dùng biến thể của gradient descent nhanh và ổn định hơn phiên bản cơ bản:

  • Stochastic Gradient Descent (SGD) tính gradient trên một ví dụ ngẫu nhiên mỗi bước thay vì toàn bộ tập dữ liệu
  • Mini-batch gradient descent dùng một lô nhỏ ví dụ mỗi bước - là lựa chọn trung gian giữa SGD và full-batch
  • Adam điều chỉnh tốc độ học cho từng tham số, giúp dễ tinh chỉnh hơn

Hàm mục tiêu cần khả vi, hoặc ít nhất gần như khả vi, để các phương pháp dựa trên gradient hoạt động. Không có đạo hàm thì không có gradient, đồng nghĩa bộ tối ưu không có gì để lần theo. Đó là điều quan trọng cần nhớ.

Ví dụ về Hàm Mục Tiêu

Hãy cụ thể hóa bằng một bài toán hồi quy tuyến tính đơn giản.

Giả sử bạn dự đoán giá nhà dựa trên diện tích (square footage). Bạn có một tập dữ liệu nhà với giá đã biết, và muốn khớp một đường thẳng qua dữ liệu sao cho sai số dự đoán nhỏ nhất. Hàm mục tiêu của bạn là Mean Squared Error (MSE) mà bạn đã biết công thức.

Đầu vào là các tham số của mô hình - hệ số góc và hệ số chặn của đường. Đầu ra là một con số - sai số bình phương trung bình trên tất cả dự đoán. Trong trường hợp này, càng thấp càng tốt.

Đây là một cài đặt Python minh họa có thể trông như sau:

import numpy as np

np.random.seed(42)

# Generate some fake housing data
square_footage = np.random.uniform(500, 3000, 100)
true_price = 150 * square_footage + 50000 + np.random.normal(0, 15000, 100)

def predict(x, slope, intercept):
    return slope * x + intercept

def mse(y_true, y_pred):
    return np.mean((y_true - y_pred) ** 2)

# Try two different parameter sets
slope_a, intercept_a = 150, 50000  # good fit
slope_b, intercept_b = 80, 100000  # bad fit

pred_a = predict(square_footage, slope_a, intercept_a)
pred_b = predict(square_footage, slope_b, intercept_b)

print(f"MSE (good fit):  {mse(true_price, pred_a):,.2f}")
print(f"MSE (poor fit):  {mse(true_price, pred_b):,.2f}")

MSE khớp tốt so với khớp kém

MSE khớp tốt so với khớp kém

Bộ tham số đầu tiên tạo ra MSE thấp hơn nhiều, nghĩa là khớp dữ liệu tốt hơn. Đó chính xác là điều bộ tối ưu dùng để quyết định hướng di chuyển.

Với những ai thiên về trực quan, hãy xem hình sau:

Ví dụ MSE

Ví dụ MSE

Bạn có thể thấy cả hai đường khớp so với dữ liệu, và cả bề mặt MSE theo một dải giá trị hệ số góc để thấy chính hàm mục tiêu.

Biểu đồ bên trái cho thấy hai bộ tham số khớp dữ liệu ra sao. Biểu đồ bên phải cho thấy bề mặt MSE theo các giá trị hệ số góc - hàm mục tiêu như một đường cong, với một điểm cực tiểu rõ ràng mà bộ tối ưu đang cố tìm. Mỗi bước của gradient descent di chuyển dọc theo đường cong này về phía cực tiểu đó.

Ràng Buộc và Hàm Mục Tiêu

Hàm mục tiêu cho bạn biết cần tối ưu điều gì. Ràng buộc cho bạn biết bạn được phép làm gì.

Trong hầu hết các bài toán thực tế, bạn không thể cứ tối đa hoặc tối thiểu tùy ý. Bạn làm việc trong những giới hạn, như ngân sách, khung thời gian, hay năng lực vật lý. Những giới hạn này gọi là ràng buộc, và chúng xác định tập nghiệm hợp lệ mà bộ tối ưu của bạn có thể chọn.

Xét một ví dụ sản xuất.

Giả sử bạn muốn tối đa hóa lợi nhuận cho hai dòng sản phẩm. Không có ràng buộc, câu trả lời là sản xuất càng nhiều càng tốt. Nhưng bạn có 500 giờ máy và 1.000 đơn vị nguyên liệu thô sẵn có. Đó là các ràng buộc. Hàm mục tiêu vẫn vậy (tối đa hóa lợi nhuận), nhưng bộ tối ưu chỉ được tìm kiếm trong vùng mà các ràng buộc đó cho phép.

Khi bạn thay đổi các ràng buộc, nghiệm tối ưu cũng thay đổi, dù hàm mục tiêu không đổi.

Cấu trúc gồm một hàm mục tiêu với một tập ràng buộc là nền tảng của tối ưu hóa có ràng buộc. Đây là cách quy hoạch tuyến tính hoạt động, cách tối ưu danh mục đầu tư hoạt động, và cách nhiều bài toán lập kế hoạch thực tế được mô hình hóa.

Kết luận

Mọi bài toán tối ưu hóa - dù bạn đang huấn luyện mạng nơ-ron, phân bổ nguồn lực, hay khớp một mô hình hồi quy - đều quy về một điều: một hàm bạn đang cố tối thiểu hoặc tối đa hóa.

Hàm mục tiêu chính là hàm đó. Nó định nghĩa “tốt hơn” nghĩa là gì, dẫn dắt mọi cập nhật tham số, và quyết định mô hình của bạn thực sự học được gì. Nếu chọn đúng, mô hình sẽ giải được bài toán bạn có. Nhưng nếu chọn sai, nó sẽ giải một bài toán hoàn toàn khác - thường mà không có lỗi hiển nhiên nào để cảnh báo bạn.

Chọn đúng hàm mục tiêu là một quyết định thiết kế trong khoa học dữ liệu, vì nó định hình mọi thứ theo sau. Với vai trò người thực hành, hãy mạnh dạn thử nghiệm - có rất nhiều hàm mục tiêu để lựa chọn.

Chưa biết bắt đầu từ đâu? Khóa Model Validation in PythonHyperparameter Tuning in Python của chúng tôi đều là điểm khởi đầu tuyệt vời cho các nhà khoa học dữ liệu từ mới bắt đầu đến trung cấp.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Chuyên gia Khoa học Dữ liệu Cấp cao, làm việc tại Croatia. Tác giả Công nghệ Hàng đầu với hơn 700 bài viết đã xuất bản, đạt trên 10 triệu lượt xem. Tác giả cuốn sách Tự động hóa Machine Learning với TPOT.

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

Hàm mục tiêu là gì?

Hàm mục tiêu là một hàm toán học đo lường mức độ tốt của một nghiệm. Bạn đưa vào nó một tập đầu vào, như tham số mô hình và biến quyết định, và nó trả về một con số. Mục tiêu luôn là tìm các đầu vào làm cho con số đó cao nhất hoặc thấp nhất có thể.

Khác biệt giữa hàm mục tiêu và hàm loss là gì?

Hàm loss là một loại cụ thể của hàm mục tiêu dùng trong machine learning để đo lỗi dự đoán cho một ví dụ huấn luyện đơn lẻ. Hàm mục tiêu là thuật ngữ rộng hơn - có thể chỉ bất kỳ hàm nào bạn đang tối thiểu hoặc tối đa hóa, không chỉ lỗi dự đoán. Trên thực tế, hai thuật ngữ này thường được dùng thay thế nhau, nhưng sự phân biệt quan trọng khi bạn đọc các bài nghiên cứu.

Hàm mục tiêu được dùng ở đâu?

Hàm mục tiêu xuất hiện trong mọi bài toán liên quan đến tối ưu hóa - machine learning, quy hoạch tuyến tính, phân bổ nguồn lực, tài chính, logistics, và hơn thế nữa. Trong machine learning, hàm mục tiêu định nghĩa điều mô hình học trong quá trình huấn luyện. Ngoài ML, nó định nghĩa mục tiêu trong mọi bài toán tối ưu có hoặc không có ràng buộc.

Vì sao lựa chọn hàm mục tiêu lại quan trọng trong machine learning?

Hàm mục tiêu quyết định mô hình của bạn thực sự tối ưu điều gì trong quá trình huấn luyện. Nếu chọn sai, mô hình sẽ tối thiểu hóa sai thứ - và nó sẽ làm điều đó rất tốt, khiến vấn đề khó phát hiện hơn. Ví dụ, dùng MSE cho một bài toán phân loại không chỉ cho kết quả kém, mà còn kém một cách “tự tin”, điều này còn tệ hơn.

Một hàm mục tiêu có thể có nhiều cực tiểu không?

Có - và đây là một trong những thách thức cốt lõi khi huấn luyện mô hình deep learning. Các hàm mục tiêu không lồi có nhiều cực tiểu cục bộ, nghĩa là bộ tối ưu có thể bị kẹt trong một thung lũng không phải là tốt nhất toàn cục. Đó là lý do tại sao khởi tạo trọng số, lập lịch tốc độ học và lựa chọn bộ tối ưu đều quan trọng - chúng ảnh hưởng đến việc bộ tối ưu có tìm được nghiệm tốt cuối cùng hay không.

Chủ đề

Học cùng DataCamp

Courses

Tìm hiểu về Khoa học Dữ liệu

2 giờ
848.4K
Giới thiệu về Khoa học dữ liệu mà không cần lập trình.
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow
Có liên quan

blogs

Claude Opus 4.6: Tính năng, điểm chuẩn, các bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu bảng xếp hạng về mã hóa theo hướng tác nhân và suy luận phức tạp. Thêm nữa, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem thêmXem thêm