Bạn có bao giờ tự hỏi làm thế nào các hệ thống AI có thể dự đoán giá nhà hoặc doanh số bán hàng trong tương lai không? Câu trả lời thường bắt đầu từ một thuật toán cơ bản, mạnh mẽ và trực quan: Hồi Quy Tuyến Tính (Linear Regression - LR).
LR là một trong những nền tảng của Machine Learning. Mục tiêu của nó rất đơn giản: tìm một đường thẳng (hoặc mặt phẳng) phù hợp nhất với dữ liệu đầu vào để dự đoán một kết quả đầu ra liên tục.
1. Mô Hình Hóa: Công Thức Cơ Bản và Tính Toán Đầu Ra
Trong hồi quy tuyến tính, chúng ta cố gắng mô hình hóa mối quan hệ tuyến tính giữa các đặc trưng đầu vào (Features) và nhãn đầu ra (Label).
Công thức Linear Regression
Đối với việc dự đoán giá nhà dựa trên diện tích, công thức có dạng:$$\hat{y} = w \cdot x + b$$
- $x$ (ví dụ: area): Đặc trưng đầu vào.
- $\hat{y}$ (ví dụ: price): Giá trị dự đoán (predicted value).
- $w$ (Weight/Trọng số) và $b$ (Bias/Độ lệch): Là các tham số của mô hình mà chúng ta cần tìm.

Mã nguồn: Hàm Dự đoán (Forward Propagation)
Bước đầu tiên là tính toán giá trị dự đoán ($\hat{y}$) từ các tham số hiện có ($w, b$) và dữ liệu đầu vào ($x$):
def predict(x, w, b):
# Công thức tuyến tính cơ bản: y_hat = w*x + b
return x * w + b
Mục tiêu của chúng ta là tìm ra bộ tham số $(w, b)$ tối ưu nhất để đường thẳng này đi gần nhất với tất cả các điểm dữ liệu.
2. Hàm Mất Mát: Định Lượng Độ Sai Lệch (MSE)
Làm thế nào để biết đường thẳng nào là "tốt nhất"? Chúng ta cần một thước đo để định lượng khoảng cách giữa giá trị dự đoán ($\hat{y}$) và giá trị thực tế ($y$). Thước đo đó là Hàm Mất Mát (Loss Function).
Trong Hồi quy Tuyến tính cơ bản, chúng ta thường sử dụng Lỗi Bình Phương Trung bình (Mean Squared Error - MSE), hay còn gọi là Squared Loss:$$\text{Loss} = L(\hat{y}, y) = (\hat{y} - y)^2$$
- Hàm mất mát này tính toán bình phương sự khác biệt giữa $\hat{y}$ và $y$. Bằng cách bình phương lỗi, MSE đảm bảo rằng tất cả các lỗi đều là số dương và phạt rất nặng những lỗi dự đoán lớn (outliers).
- Mục tiêu của toàn bộ quá trình là điều chỉnh $w$ và $b$ sao cho tổng (hoặc trung bình) của hàm mất mát trên toàn bộ dữ liệu là nhỏ nhất.

Mã nguồn: Tính Loss
Hàm này tính toán mức độ sai lệch của dự đoán hiện tại.
def compute_loss(y_hat, y):
# Loss = (y_hat - y)**2
return (y_hat - y)**2
3. Tối Ưu Hóa: Thuật Toán Gradient Descent
Sau khi tính toán được lỗi, chúng ta phải sửa $w$ và $b$ để giảm lỗi. Đây là lúc thuật toán Gradient Descent (GD) phát huy tác dụng.

Hãy hình dung hàm mất mát là một thung lũng (parabola) và bạn đang đứng trên đó. Công việc của bạn là tìm con đường dốc nhất để đi xuống đáy (điểm cực tiểu):
A. Tính Đạo Hàm (Gradient)
Gradient là đạo hàm của hàm mất mát theo từng tham số ($w$ và $b$). Đạo hàm cho ta biết hướng dốc nhất mà lỗi đang tăng lên:
- Đạo hàm theo $w$: $\frac{\partial L}{\partial w} = 2x(\hat{y} - y)$
- Đạo hàm theo $b$: $\frac{\partial L}{\partial b} = 2(\hat{y} - y)$
Mã nguồn: Tính Gradient (Đạo hàm)
def compute_gradient(y_hat, y, x):
# Đạo hàm theo w (trọng số)
dw = 2 * x * (y_hat - y)
# Đạo hàm theo b (độ lệch)
db = 2 * (y_hat - y)
return dw, db
B. Cập nhật Tham số
Để giảm lỗi, chúng ta phải di chuyển theo hướng ngược lại của gradient. Công thức cập nhật là:$$\text{Parameter}_{new} = \text{Parameter}_{old} - \eta \cdot \frac{\partial L}{\partial \text{Parameter}}$$
- $\eta$ (Learning Rate): Là tốc độ học, kiểm soát kích thước bước đi xuống dốc.
Quá trình này (Compute $\hat{y} \rightarrow$ Compute Loss $\rightarrow$ Compute Gradient $\rightarrow$ Update Parameters) được lặp đi lặp lại hàng nghìn lần cho đến khi tham số $w$ và $b$ hội tụ về giá trị tối ưu.
4. Tối Ưu Hóa Tốc Độ: Sức Mạnh của Vector Hóa
Trong thực tế, khi đối mặt với hàng triệu điểm dữ liệu (N-samples), việc lặp qua từng mẫu sẽ mất rất nhiều thời gian. Vector hóa (Vectorization) là kỹ thuật sử dụng đại số tuyến tính để tính toán trên toàn bộ tập dữ liệu cùng một lúc, tăng tốc độ xử lý hàng trăm lần.
Công thức Vector Hóa
Thay vì tính toán cho từng mẫu $(x^i,y^i)$, chúng ta chuyển mô hình sang dạng ma trận/vector: $$\hat{y} = X\theta \quad \text{và} \quad \nabla_{\theta}L = X^T \cdot 2(\hat{y} - y)$$
- $\hat{y}$: Vector chứa tất cả các giá trị dự đoán.
- $X$: Ma trận chứa tất cả các đặc trưng đầu vào (kèm cột 1 cho $b$).
- $\theta$: Vector chứa tất cả các tham số ($w$'s và $b$).
Mã nguồn: Vector Hóa (Batch Gradient Descent)
# Giả sử X là ma trận Feature (có thêm cột bias),
# theta là vector chứa [w, b], y là vector nhãn thực tế, N là số mẫu
import numpy as np
# 1. Tính Output (y_hat)
y_hat = X.dot(theta)
# 2. Tính Gradient (Đạo hàm)
# k = 2 * (y_hat - y)
# gradients = X.T.dot(k) / N
gradients = X.T.dot(2 * (y_hat - y)) / N
# 3. Cập nhật tham số
learning_rate = 0.01
theta = theta - learning_rate * gradients
Kết Luận: Linear Regression không chỉ là một công cụ thống kê mà còn là một quy trình tối ưu hóa hoàn chỉnh. Bằng cách kết hợp mô hình tuyến tính, Hàm Mất Mát MSE, thuật toán Gradient Descent, và kỹ thuật Vector Hóa, chúng ta có thể tìm ra "Đường Thẳng Tốt Nhất" để đưa ra dự đoán chính xác nhất có thể.
Tài liệu tham khảo:
AI Viet Nam - AIO25
Chưa có bình luận nào. Hãy là người đầu tiên!