Khóa học Machine Learning online trên Coursera miễn phí – Andrew NG
Kiến thức trong phần này không phải nói về thuật toán, mà là kỹ năng, rồi những thứ cần chú ý khi áp dụng Machine Learning. Và tất nhiên của khi áp dụng Deep Learning nữa.
Khi áp dụng Machine Learning để giải quyết vấn đề, thì một 2 việc được lặp đi lắm lại là :
Chạy -> Đánh giá -> Thử cải tiến -> Chạy tiếp -> Đánh giá …
Đầu tiên là đánh giá, từ đánh giá đó ta sẽ xác định nên làm gì tiếp theo để cải tiến.
Một số hành động thường được làm:
– Lấy thêm dữ liệu
– Thử với tập đặc trưng nhỏ hơn
– Tìm thêm đặc trưng
– Thử thêm đặc trưng đa thức
– Tăng hoặc giảm learning rate (tốc độ học)
Một số hành động ở trên có thể không tốn quá nhiều công sức, nhưng đánh giá hệ thống hiện tại để đưa ra hành động hợp lý giúp nâng cao hiệu quả sẽ là tốt nhất.
Bước đánh giá, 2 thống số được xem xét để đánh giá chính là : giá trị lỗi khi thực hiện đoán các dữ liệu trong tập Train và Tập set.
Đầu tiên, xem xét các điểm bị lỗi trong tập Test, phân tích nó để biết tại sao lại lỗi.
Về cơ bản, một model dự đoán (fit) tốt với tập traing, thì không có nghĩa là nó là một model tốt. Số lỗi mà thấy được trên tập traing thường ít hơn trên các tập khác.
Giả sử ta cần chọn nào là tốt nhất cho vấn đề của chúng ta.
- Với trường hợp không sử dụng tập Validation: chỉ có tập dữ liệu để train và để test (được khuyên là không nên sử dụng)
- Tối ưu hệ số trong model bằng tập training cho mỗi bậc.
- Tìm bậc cho lỗi nhỏ nhất trên trập test
- Tính lỗi trên tập test bằng cách tính Cost Function, kí hiệu là J.
Vì sử dụng tập test để tìm giá trị bậc phù hợp nên model được chọn có thể gây lỗi lớn trên tập khác tập test này.
- Với trường hợp sử dụng tập Validation : ta có tập train, tập validation, và tập test.
Để giải quyết vấn đề còn lại ở cách làm trên, người ta đưa thêm một tập nữa gọi là Cross-Validation (kí hiệu : CV). Tỉ lệ cho lượng data ở mỗi tập có thể theo tỉ lệ : 6:2:2
Với cách làm nay
- Tối ưu hệ số trong model bằng tập train cho mỗi bậc
- Tìm bậc đa thức của model có lỗi nhỏ nhất trên tập Cross-Validation
- Đánh giá lỗi trên trập Test bằng cách tìm giá trị hàm Cost Function J.
Với các này, cả việc train và chọn bậc đều không liên quan gì đến tập Test.
Có một chú ý: Tập CV đã sử dụng để chọn bậc đa thức rồi thì không nên sử dụng chính nó khi lambda nữa
Tiếp theo, đến phân tích Bias và Variance
Đầu tiên, là nhận biết xem bias hoặc variance có liên quan đến việc dự đoán kém của hệ thống không?
– High bias sẽ sinh ra Underfitting (Underfitting là dự đoán kém trên cả tập train và test, tức là J(train) và J(test) đều cao.)
– High variance sẽ sinh ra Overfitting (Overfitting là dự đoán rất tốt trên tập train, nhưng dự đoán rất kém trên tập test, tức là J(train) thâp, J(test) cao.).
Chúng ta cần cân bằng giữa **Bias và Variance.
Khi bậc tăng lên, thì training error sẽ có xu hướng giảm xuống nhanh hơn.
Cùng lúc khi tăng bậc thì validation error sẽ giảm cho đến một điểm, thì nó sẽ tăng khi bậc tăng lên.
Regularization và Bias/Variance
Tham số lambda trong Regularization ảnh hưởng đến Bias.
– Lambda quá cao : gây ra High bias
– Lambda vừa : đủ đẹp
– Lambda quá thấp : gây ra Overfitting
Lamda cao sẽ phạt nặng tất cả các tham số của model, tức là làm đơn giản hóa dường biểu diễn ranh giới kết quả, dẫn đến Underfitting.
Sự ảnh hưởng của lambda lên kết quả dự đoán tập train và tập validation như sau:
– Lambda thấp: J(train) thấp, J(CV) sẽ cao. (dẫn đến High variance hay Overfitting)
– Lambda trung bình: Nói chung cả J(train) và J(CV) đều thâp, xấp xỉ nhau.
– Lambda lớn: J(train) và J(CV) đều cao. (dẫn đến Underfitting hay High bias)
Cách chọn giá trị lambda phù hợp:
1. Tao một list các lambda có thể.
2. Tạo một tập các model tương ứng với nhiều bậc khác nhau.
3. Thủ lần lượt mỗi lambda cho tất cả các model để tìm ra tập trọng số tối ưu.
4. Tinh giá trị lỗi trên tập validation J(CV) khi không sử dụng Regularization (hay lambda = 0).
Leave a Reply