Overfitting là cái quái gì

2018/03/29

Đây là cuộc hành trình của mình tìm về bản chất của câu chuyện overfiting, underfitting và các khái niệm lung tung xung quanh như bias-variance tradeoff.

Tài liệu tham khảo chính được lấy từ 2 cuốn sách:

Nếu ai đó nói về hiện tượng overfitting, người nào học machine learning nghiêm chỉnh sẽ nói overfitting là khi mô hình có low bias và high variance. Trong khi đó thì underfitting là khi mà mô hình có high bias và low variance. Tuy nhiên, 2 khái niệm quái quỷ này xuất phát từ đâu.

Ta quay trở lại với câu chuyện về machine learning, mà theo bản thân mình, đây chính là “thống kê hiện đại”. Nào bắt đầu.

Đặt bối cảnh là học có giám sát (supervised learning), ta có một tập dữ liệu input và đồng thời thông tin được gán nhãn $(x, y)$. Trong đa số các thuật toán học giám sát, bản chất của các mô hình chính là việc tìm ta hàm $f(x)$ sao cho hàm này có thể xấp xỉ được y. Bởi ta không thể lấy toàn bộ mẫu của không gian x, nên ta không thể xây dựng chính xác được $f(x)$, đó là lí do ta gọi $f(x)$ là xấp xỉ.

Tuy nhiên, nếu giả sử vì 1 điều nhiệm màu nào đó, và với 1 mô hình huyền bí nào đó, ta thực sự có được $F(x)$, tức với mọi $x$, $F(x)$ tính chính xác được $y$. Tuy nhiên ta có 1 điều cần lưu ý, bởi sự gán nhãn, hay y, không phải luôn luôn đúng, nên thay vì $y = F(x)$, ta có:

$$y = F(x) + eps$$

Với eps là nhiễu với mean = 0, variance = $\sigma^2$.

Và giờ đây là lúc điều kì diệu bắt đầu xuất hiện. Trong đa số các mô hình giám sát, ta muốn tối thiểu độ lỗi của hàm xấp xỉ $f(x)$ và nhãn của dữ liệu. Một độ lỗi phổ biến chính là MSE, ta muốn tối ưu kỳ vọng của MSE này (lý do dùng kỳ vọng bởi ta tính MSE thông qua tập dữ liệu có trong tay):

$MSE = E[ (y - f(x)) ^ 2]$ , giờ là lúc trò mèo khai triển bắt đầu, để cho gọn thì $f(x) = f$, và $F(x) = F$. Bởi $F$ xác định (bởi đây là hàm duy nhất và tính chính xác quan hệ của x, y), nên $E[F] = F$. Đồng thời ta có $E[y] = E[F(x) + eps] = E[F(x)] + E[eps] = F + 0 = F$.

Công thức quan trọng nhất trong các khai triển sau: $Var[A] = E[A^2] - E[A]^2$. (*)

Ta cũng có biểu thức sau:

$$ Var[y] = E[(y - E[y])^2] = E[(F + eps - F)^2] = E[eps^2] = Var[eps] +E[eps]^2 = Var[eps] = \sigma^2 $$

$$ MSE = E[ y^2 - 2yf + f^2] = E[y^2] + E[f^2] - E[2yf] $$

$$ = Var[y] + E[y]^2 + Var[f] + E[f]^2 - 2yE[f]$$ (Công thức * và y deterministic). $$= \sigma^2 + Var[f] + E[f]^2 - 2FE[f] + F^2$$ (bình tĩnh khai triển) $$= \sigma^2 + Var[f] + (F - E[f])^2$$ $$= \sigma^2 + Var[f] + Bias^2$$

Tạm thời bỏ qua nhiễu của nhãn, ta có 2 hạng tử:

Và giờ ta có thể thực sự hình dung một cách “trực quan” mô hình của mình thực sự tốt thế nào.

Nếu ta cố gắng fit mọi điểm trong data đang có, ta sẽ khiến bias nó thực sự thấp (bởi dùng rất điểm ra kq chính xác, nó sẽ rất gần với F “thực sự”), nhưng đồng thời đây variance lên cao, hiện tượng overfitting xuất hiện. Điều ngược lại của sẽ dễ thấy, nếu ta dùng quá ít data, f sẽ di chuyển ít (variance thấp), tuy nhiên f ta ước tính sẽ rất xa F thực sự (bias cao).

Điều này giúp ta trực quan hơn về các mô hình học:

Biết được bản chất của bias và variance, ta có thể phân tích “trực quan” mô hình đề xuất, qua đó có cái nhìn chính xác hơn với mô hình.