Lỗi ước lượng tham số có thể đc phân thành 2 loại là khớp quá (over-fitting) and chưa khớp (under-fitting) với tập huấn luyện. Trong bài này sẽ nói về cách thức theo dõi and hạn chế những lỗi này ra sao. Trọng tâm của bài này sẽ tập trung chủ yếu vào kĩ thuật chính quy hoá (regularization) để giải quyết vấn đề khớp quá của tham số.Mục lục1. Giới thiệu2. Theo dõi lỗi3. Xử lý lỗi4. Kĩ thuật chính quy hoá

1. Ra mắt

Quy mô của ta sau khi huấn luyện có thể đạt hiệu quả không cực tốt khi dự đoán với một dữ liệu mới. Chuyện này xảy ra là do quy mô của ta chưa tổng quát hoá đc với tất cả tập dữ liệu. Nguyên nhân cũng tương đối dễ hiểu khi mà tập huấn luyện của ta chỉ là một tập bé dại chưa thể thay mặt cho toàn thể dữ liệu đc and hơn nữa có thể nó còn bị nhiễu nữa. Người ta chia nguyên nhân ra làm 2 loại chính là chưa khớp hoặc quá khớp.

Bạn đang xem: Regularization là gì

Bài Viết: Regularization là gì

*
Hình 1: y=sin(2πx) model. Underfit: degree 1 (left); Goodfit: degree 3 (center); Overfit: degree 15 (right)


Nội Dung


1.1. Chưa khớp (Underfitting)

Quy mô đc coi là chưa khớp nếu nó chưa đc chưa phù hợp với tập dữ liệu huấn luyện đến cả những mẫu mới khi dự đoán. Nguyên nhân có thể là do quy mô chưa đủ độ nan giải thiết yếu để bao quát đc tập dữ liệu. Ví dụ như hình 1 phía bên trái ở trên cao. Tập dữ liệu huấn luyện loanh quanh khúc $y=sin(2pi x)$ thế nhưng quy mô của ta chỉ là một đường thẳng mà thôi. Cụ thể như thế thì nó không các đã không còn ước lượng đc giá cả của $y$ với $x$ mới mà còn không hiệu quả với tất cả tập dữ liệu $(x,y)$ có sẵn.

1.2. Quá khớp (Overfitting)

Quy mô rất hợp lý, rất khớp với tập huấn luyện nhưng khi đem ra dự đoán với dữ liệu mới thì lại không phù hợp. Nguyên nhân có thể do ta chưa đủ dữ liệu để Reviews hoặc do quy mô của ta quá nan giải. Quy mô bị quá nan giải khi mà quy mô của ta dùng cả các nhiễu to trong tập dữ liệu để học, dấn tới mất tính tổng quát của quy mô. Ví dụ như ở hình 1 phía ở bên phải ở trên cao. Quy mô của ta gần như nhu yếu bao đc hết toàn bộ những điểm để cho biên độ dao động của nó to quá mức. Quy mô này mà dự đoán với 1 giá cả mới của $x$ thì khả năng $y$ sẽ bị lệch đi rất đông.

1.3. Vừa khớp (Good Fitting)

Quy mô này tọa lạc giữa 2 quy mô chưa khớp and quá khớp cho ra kết quả hợp lý với tất cả tập dữ liệu huấn luyện and những giá cả mới, tức là nó mang đc tính tổng quát như hình 1 ở chính giữa ở bên trên. Lý tưởng nhất là khớp đc với nhiều dữ liệu mẫu đến cả những dữ liệu mới. Tuy vậy trên thực tiễn đc quy mô như thế rất hiếm.


2. Theo dõi lỗi

Với định nghĩa như trên ta cần cách để Reviews đc quy mô trước khi có thể nêu ra đc biện pháp đổi mới. Đầu tiên ta quy tắc một số thông số lỗi để Ship hàng cho việc Reviews quy mô.

2.1. Reviews lỗi

Ở đây ta sẽ lấy trung bình lỗi của tất cả tập dữ liệu để Reviews:$$E(theta)=frac{1}{m}sum_{i=1}^m err(hat y^{(i)},y^{(i)})$$

Trong số đó $E(theta)$ là lỗi ứng với tham số $theta$ ước lượng đc của tập dữ liệu gồm có $m$ mẫu. $err(hat y,y)$ biểu hiện cho sự khác biệt giữa giá cả dự đoán $hat y$ and giá cả thực tiễn $y$. Dĩ nhiên là nếu $hat y=y$ thì $err(hat y^{(i)},y^{(i)})=0$. Thường người ta lấy $err(hat y^{(i)},y^{(i)})=Vert hat y^{(i)}-y^{(i)}Vert_2^2$ tựa như những hàm lỗi của quy mô. Khi đó lỗi của ta đc gọi là lỗi trung bình bình phương (MSE – Mean Squared Error):$$E(theta)=frac{1}{m}sum_{i=1}^mVert hat y^{(i)}-y^{(i)}Vert_2^2$$

Như đã đề cập trong phần quá trình của học máy thì dữ liệu của ta để được phân chia làm 3 phần là tập huấn luyện (training set) 60%, tập kiểm chứng (cross validation set) 20% and tập check (test set) 20%. Ứng với mỗi phần ta sẽ nêu ra thông số lỗi tương ứng:

Tập huấn luyện: $displaystyle E_{train}(theta)=frac{1}{m_{train}}sum_{i=1}^{m_{train}}err(hat y_{train}^{(i)},y_{train}^{(i)})$Tập kiểm chứng: $displaystyle E_{CV}(theta)=frac{1}{m_{CV}}sum_{i=1}^{m_{CV}}err(hat y_{CV}^{(i)},y_{CV}^{(i)})$Tập check: $displaystyle E_{test}(theta)=frac{1}{m_{test}}sum_{i=1}^{m_{test}}err(hat y_{test}^{(i)},y_{test}^{(i)})$

Với quy mô hồi quy tuyến tính ta có thể lấy luôn hàm lỗi $displaystyle J(theta)=frac{1}{2m}sum_{i=1}^m(hat y^{(i)}-y^{(i)})^2$ để Reviews lỗi. Dĩ nhiên là ứng với mỗi phần dữ liệu ta phải dùng dữ liệu của phần tương ứng để Reviews:$$begin{cases}E_{train}(theta)=displaystylefrac{1}{2m_{train}}sum_{i=1}^{m_{train}}(hat y_{train}^{(i)}-y_{train}^{(i)})^2 crE_{CV}(theta)=displaystylefrac{1}{2m_{CV}}sum_{i=1}^{m_{CV}}(hat y_{CV}^{(i)}-y_{CV}^{(i)})^2 crE_{test}(theta)=displaystylefrac{1}{2m_{test}}sum_{i=1}^{m_{test}}(hat y_{test}^{(i)}-y_{test}^{(i)})^2end{cases}$$

2.2. Phán định lỗi

Với cách thức định nghĩa lỗi như trên thì một quy mô:

Chưa khớp: Cả $E_{train},E_{CV},E_{test}$ đều to.Quá khớp: $E_{train}$ bé dại còn $E_{CV},E_{test}$ lại to.Vừa khớp: Cả $E_{train},E_{CV},E_{test}$ đều bé dại.

Tuy vậy khi huấn luyện bạn không cho phép sờ tới tập check, nên ta dùng 2 tập huấn luyện and kiểm chứng để dự đoán kiểu lỗi. Ví dụ hình bên dưới đây biểu đạt lỗi đồ thị của $E_{train}(theta)$ and $E_{CV}(theta)$.

*
Hình 2: Đồ thị của những lỗi. Source: https://www.coursera.org/learn/machine-learning/

Ở hình trên ta cảm thấy rằng, trước điểm $d$ – bậc của đa thức hợp lý thì cả 2 lỗi đều có chiều hướng giảm dần, nhưng vượt qua điểm đó thì lỗi tập huấn luyện vẫn tiếp tục bé dại đi còn tập kiểm chứng lại vọt lên. Điều ấy chứng tỏ rằng phía trước $d$ ta thu đc lỗi chưa khớp and sau $d$ là lỗi quá khớp, còn ở $d$ là vừa khớp.

Một cách thức tổng quát, ta có thể dựa vào sự biến thiên của $E_{train}$ and $E_{CV}$ như trên để có phán định về nổi bật của lỗi:

$E_{train}$ and $E_{CV}$ đều to: Chưa khớp$E_{train}$ and $E_{CV}$ đều bé dại: Vừa khớp$E_{train}$ bé dại còn $E_{CV}$ to: Khớp quá3. Xử lý lỗi

3.1. Điểm hợp lý

Đồ thị trên còn cho ta một gợi ý rất quan trọng là ta có thể đoán đc điểm hợp lý để tạm dừng khi huấn luyện. Điểm dừng ở đây chính là điểm mà đồ thị của $E_{CV}$ đổi hướng. Khi ban đầu cảm thấy $E_{CV}$ đổi hướng sau một số vòng lặp nào đó thì ta sẽ dừng việc huấn luyện lại and chọn lấy điểm ban đầu có sự đổi hướng này làm điểm hợp lý cho tham số and siêu tham số. Nếu bạn cần tham khảo thêm về việc dừng này thì có thể đọc ở phần tình huống dừng ở phần tối ưu hàm lỗi.


3.2. Chưa khớp

Như đã đề cập chuyện này xảy ra khi mà quy mô của ta chưa đủ nan giải. Như thế ta cần phải tăng độ nan giải của quy mô lên. Để tăng độ nan giải ta có thể lấy thêm công dụng cho mẫu bằng cách thức thêm những $phi(mathbf{x})$ khác nhau. Ví dụ, tăng bậc của đa thức lên có thể cứu ta khớp hơn với tập dữ liệu chẳng hạn. Chi tiết thì bạn có xem lại ví dụ 2 của bài về hồi quy tuyến tính.

Khi xảy ra lỗi chưa khớp thì ta cần chăm chú tới một điểm quan trọng là tăng dữ liệu không cứu quy mô cực tốt hơn. Tại sao lại thế thì ta sẽ cùng bàn về lý thuyết thăng bằng giữa phương sai vào độ lệch ở bài viết sau.

3.3. Quá khớp

Khi xảy quá khớp ta có thể bỏ bớt công dụng đi để giảm độ nan giải quy mô. Hoặc có thể lấy thêm dữ liệu để quy mô có thể học đc một cách thức tổng quát hơn. Thật khó nêu ra đc một cách thức rõ nét ngoài việc kết hợp của toàn bộ những kiểu xử lý trên lại cùng với nhau sau đó nêu ra Reviews rõ nét sau.

Ngoài ra, ta còn tồn tại một kĩ thuật nữa rất thịnh hành trong học máy là chính quy hoá mà ta sẽ cùng xem xét ở phần ngay bên dưới đấy.

4. Kĩ thuật chính quy hoá

4.1. Định nghĩa

Chính quy hoá (regularization) là một kĩ thuật cứu giảm lỗi khớp quá bằng cách thức thêm 1 phần chính quy hoá vào hàm lỗi như sau:$$J(theta)=E_X(theta)+lambda E_theta(theta)$$

$E_X(theta)$ là hàm lỗi mở màn and cụm $lambda E_theta(theta)$ mới thêm vào là số hạng chính quy hoá đóng vai trò như 1 biện pháp phạt lỗi (penalization).

*
Hình 3: y=sin(2πx) L2. Without Ridge: λ=0 (left); Ridge: λ=1e-4 (center); Ridge: λ=1 (right)

Trong số đó, hệ số chính quy hoá $lambda$ đc chọn từ trước để thăng bằng giữa $E_X(theta)$ and $E_theta(theta)$. $lambda$ càng to thì ta càng coi trọng $E_theta(theta)$, ít coi trọng tham số cho hàm lỗi mở màn hơn, dẫn tới việc những tham số $theta$ ít có liên quan tới quy mô hơn. Hay nói cách thức khác là quy mô bớt nan giải đi cứu ta đỡ việc lỗi quá khớp.

$E_theta(theta)$ ở đây sẽ không kể cả độ lệch $theta_0$ and thường sẽ có dạng như sau:$$E_theta(theta)=frac{1}{p}VertthetaVert_p^p=frac{1}{p}sum_{i=1}^n|theta_i|^p$$

Khi đó, hàm lỗi có thể viết lại như sau:$$J(theta)=E_X(theta)+lambdafrac{1}{p}sum_{i=1}^n|theta_i|^p$$

$p$ thường đc chọn là 2 (L2 Norm) and 1 (L1 Norm hay còn đc gọi là Lasso trong đo đạc).

Với L2, hàm lỗi có dạng:$$J(theta)=E_X(theta)+frac{lambda}{2}theta^{intercal}theta$$

Với L1, hàm lỗi có dạng:$$J(theta)=E_X(theta)+lambdasum_{i=1}^n|theta_i|$$

Phương thức chính quy hoá này còn tồn tại tên là cắt trọng số (weight decay) vì nó để cho những trọng số (tham số $theta$) bị tiêu biến dần về 0 trong khi học. Còn trong đo đạc, cách này mang tên là co tham số (parameter shrinkage) vì nó làm co lại những giá cả tham số dần về 0.

4.2. Công thức chuẩn

Với hàm lỗi của hồi quy tuyến tính thì ta thường chia lấy trung bình của toàn mẫu nên số hạng chính quy hoá cũng để được chia giống như. Ngoài ra ta cũng thường lấy L2 để tiến hành việc chính quy hoá, nên:$$J(theta)=frac{1}{2m}sum_{i=1}^mBig(theta^{intercal}phi(mathbf{x}_i)-y_iBig)^2+frac{lambda}{2m}theta^{intercal}theta$$

Khi đó, công thức chuẩn đc viết lại như sau:$$hattheta=(lambdamathbf{I}+Phi^{intercal}Phi)^{-1}Phi^{intercal}mathbf{y}$$


4.3. Tính đạo hàm

Việc tính đạo hàm nhằm tiến hành giải thuật tối ưu với Gradient Descent.

Đạo hàm khi có số hạng chính quy hoá với:

L2 : $dfrac{partial E_X(theta)}{partialtheta_i}+lambdatheta_i$L1 : $dfrac{partial E_X(theta)}{partialtheta_i}+lambdatext{sgn}(theta_i)$

Để ý: đạo hàm này không tính cho $theta_0$. Nói cách thức khác $theta_0$ không đc thêm số hạng chính quy hoá.

Tình huống của bài toán hồi quy tuyến tính:

$$frac{partial}{partialtheta_i}=frac{1}{m}sum_{j=1}^m(theta^{intercal}phi(mathbf{x}_j)-y_j)mathbf{x_j}+begin{cases}0 &text{for }i=0crfrac{lambda}{m}theta_i &text{for }i>0end{cases}$$

Gradient có dạng sau:$$Delta_theta J(theta)=frac{1}{m}(theta^{intercal}Phi-y)Phi+frac{lambda}{m}theta$$

Dĩ nhiên là khi tính số hạng chính quy hoá ta gắn $theta_0triangleq 0$ để tiêu biến số hạng đó đi.

4.4. Setup

Hệ số chính quy hoá $lambda$ thường bé dại để không quá liên quan nhiều tới việc tối ưu lỗi cổ điển. Thường người ta sẽ chọn lấy 1 danh sách những $lambda$ để huấn luyện and lấy một giá cả tối ưu nhất. Tuy vậy, chăm chú rằng hệ số này không cần sử dụng cho tập kiểm chứng khi đối chiếu để Reviews quy mô.

Chi tiết quá trình setup như sau:

Tạo danh sách những $lambda$.Tạo những quy mô tương ứng với những $phi(mathbf{x})$ tương ứng. Ví dụ như bậc của đa thức hay co giãn những thuộc tính chẳng hạn.Học tham số $theta$ ứng với từng $lambda$ một.Tính lỗi với tập kiểm chứng $E_{CV}(theta)$ ứng với tham số $theta$ học đc (hiên giờ đặt $lambda=0$).Chọn lấy quy mô ứng với tham số and $lambda$ cho ít lỗi nhất với tập kiểm chứng.Lấy $theta$ and $lambda$ tương ứng rồi tính lỗi cho tập check $E_{test}(theta)$ and Reviews quy mô.

Nếu hứng thú bạn cũng có thể xem ví dụ setup thuật toán với chính quy hoá tại đây nhé.

5. Kết luận

Reviews quy mô có thể phân thành 3 dạng chưa khớp khi nó chưa đủ độ nan giải, quá khớp khi nó quá nan giải and vừa khớp khi mà nó vừa đủ để tổng quát hoá. Khi huấn luyện ta có thể dùng tập huấn luyện and tập kiểm chứng để Reviews quy mô đang ở tình trạng nào. Nếu $E_{train},E_{CV}$ đều to thì ta bảo rằng nó chưa khớp, còn $E_{train}$ bé dại and $E_{CV}$ to thì ta bảo rằng nó bị quá khớp.

Bài toán chưa khớp thì ta có thể giải quyết bằng cách thức nan giải hoá quy mô lên còn với bài toán quá khớp thì ta có thể dùng cách chính quy hoá để giải quyết:$$J(theta)=E_X(theta)+lambda E_theta(theta)$$

Hệ số $lambda$ càng to thì quy mô sẽ càng dễ chơi đi từ đó cứu né đc chuyện quá khớp nhưng cũng dẫn tới việc chưa khớp. Nên ta cần phải chọn đc giá cả $lambda$ hợp lý. Thường ta sẽ nêu ra 1 danh sách những hệ số $lambda$ rồi chạy lần lượt and chọn lấy một giá cả cực tốt nhất. Tuy vậy ta cần phải hãy nhờ rằng cụm chuẩn hoá này không cần sử dụng cho tập kiểm chứng khi huấn luyện.

Xem thêm: Cân Bằng Phương Trình Hóa Học Bằng Phương Pháp Thăng Bằng Electron

Mặc dù qua bài này còn đôi chỗ hơi khó hiểu and mơ hồ nhưng nhìn chung nếu chỉ lập trình thì ta nhớ lấy hệ số $lambda$ là đc. Nếu bạn hứng thú thăm dò tận gốc vấn đề thì ta sẽ cùng xem trong bài viết tới về vấn đề thăng bằng giữa phương sai and độ lệch của quy mô.