Chuẩn hóa đặc trưng
Chuẩn hóa đặc trưng
Đưa mọi đặc trưng về cùng một thang để mặt lỗi tròn lại và gradient descent đi thẳng về đáy.
Trong một tập dữ liệu thật, các đặc trưng hiếm khi cùng thang. Số phòng của căn nhà nằm cỡ 0 tới 10, còn diện tích nằm cỡ vài trăm tới vài nghìn. Mô hình hồi quy nhân mỗi đặc trưng với một trọng số, nên đặc trưng nào có giá trị lớn sẽ kéo mặt lỗi dốc đứng theo hướng trọng số của nó, còn đặc trưng nhỏ chỉ tạo một sườn thoai thoải. Kết quả là mặt lỗi biến thành một thung lũng dài và dẹt.
Chuẩn hóa xử lý đúng chỗ đó. Với mỗi đặc trưng, ta lấy từng giá trị trừ đi trung bình rồi chia cho độ lệch chuẩn: z = (v - mean) / std. Sau phép này mọi đặc trưng đều có trung bình 0 và độ lệch chuẩn 1, tức là cùng một thang. Thung lũng dẹt co lại thành một cái bát tròn, và như bạn sắp thấy, gradient descent đi thẳng xuống đáy thay vì lượn zigzag.
Thử ngay
Panel trái vẽ hai đặc trưng lên cùng một trục ngang. Panel phải vẽ mặt lỗi hồi quy hai tham số bằng các đường đồng mức, kèm đường đi của gradient descent. Bấm nút để đổi giữa dữ liệu thô và dữ liệu đã chuẩn hóa.
Thử điều này:
- Ở chế độ
Thô, nhìn panel trái: đặc trưngx1dồn hết về mép trái vì thang của nó quá nhỏ so vớix2. Nhìn panel phải: đường đồng mức là những elip dẹt. - Bấm
Chuẩn hóa. Cả hai đặc trưng giờ trải đều quanh giữa trục, và đường đồng mức tròn lại thành hình bát. - Đọc số bước ở ô kết quả: thô cần rất nhiều bước, chuẩn hóa chỉ cần vài bước. Cùng một thuật toán, chỉ khác cách bày dữ liệu.
- Bấm
Chạy các bướcở mỗi chế độ để xem đường đi hiện ra từ từ: zigzag dài khi thô, một đường gần thẳng khi chuẩn hóa.
Vì sao nhanh hơn
Gradient descent luôn đi vuông góc với đường đồng mức. Khi đường đồng mức tròn, hướng vuông góc đó chỉ thẳng về tâm, nên mỗi bước tiến thẳng tới đáy. Khi đường đồng mức là elip dẹt, hướng vuông góc gần như trỏ ngang qua thung lũng chứ không dọc theo nó, nên thuật toán nảy qua nảy lại giữa hai vách và tiến về đáy rất chậm. Một tốc độ học duy nhất phải đủ nhỏ để không vọt khỏi hướng dốc đứng, thành ra hướng thoai thoải chỉ nhích được từng chút một.
Chuẩn hóa đặc trưng không đổi bài toán mà chỉ làm mặt lỗi tròn lại, nhờ đó gradient descent đi thẳng về đáy thay vì zigzag qua một thung lũng dẹt.
- 1Chuẩn hóa một đặc trưng bằng công thức z = (v - mean) / std sẽ cho đặc trưng mới có tính chất gì?
- 2Khi hai đặc trưng lệch thang mạnh, đường đồng mức của mặt lỗi trông thế nào và gradient descent đi ra sao?
- 3Vì sao một tốc độ học duy nhất lại gây chậm khi các đặc trưng lệch thang?