Bối cảnh và vấn đề
Tôi đang sử dụng Gaussian Processes (GP) để hồi quy và tối ưu hóa Bayes (BO) tiếp theo. Để hồi quy tôi sử dụng gói gpml cho MATLAB với một số sửa đổi tùy chỉnh, nhưng vấn đề là chung.
Một thực tế nổi tiếng là khi hai đầu vào đào tạo quá gần trong không gian đầu vào, ma trận hiệp phương sai có thể trở nên không xác định (có một số câu hỏi về nó trên trang web này). Do đó, việc phân tách Cholesky của ma trận hiệp phương sai, cần thiết cho các tính toán GP khác nhau, có thể không thành công do lỗi số. Điều này đã xảy ra với tôi trong một số trường hợp khi thực hiện BO với các hàm mục tiêu tôi đang sử dụng và tôi muốn sửa nó.
Đề xuất giải pháp
AFAIK, giải pháp tiêu chuẩn để giảm bớt tình trạng điều hòa không khí là thêm một sườn núi hoặc nugget vào đường chéo của ma trận hiệp phương sai. Đối với hồi quy GP, số tiền này cộng thêm (hoặc tăng, nếu đã có) nhiễu quan sát.
Càng xa càng tốt. Tôi đã sửa đổi mã cho suy luận chính xác của gpml để bất cứ khi nào phân tách Cholesky không thành công, tôi cố gắng sửa ma trận hiệp phương sai thành ma trận xác định dương tính đối xứng (SPD) gần nhất theo định mức Frobenius, lấy cảm hứng từ mã MATLAB này bởi John d'Errico. Lý do là để giảm thiểu can thiệp vào ma trận ban đầu.
Cách giải quyết này thực hiện công việc, nhưng tôi nhận thấy rằng hiệu suất của BO giảm đáng kể đối với một số chức năng - có thể bất cứ khi nào thuật toán cần phóng to ở một số khu vực (ví dụ: vì nó gần đến mức tối thiểu hoặc do tỷ lệ chiều dài của vấn đề trở nên nhỏ không đồng đều). Hành vi này có ý nghĩa vì tôi đang tăng tiếng ồn một cách hiệu quả mỗi khi hai điểm đầu vào quá gần, nhưng tất nhiên nó không lý tưởng. Ngoài ra, tôi chỉ có thể loại bỏ các điểm có vấn đề, nhưng một lần nữa, đôi khi tôi cần các điểm đầu vào được đóng.
Câu hỏi
Tôi không nghĩ rằng các vấn đề về số với hệ số Cholesky của ma trận hiệp phương sai của GP là một vấn đề mới, nhưng thật ngạc nhiên, tôi không thể tìm thấy nhiều giải pháp cho đến nay, ngoài việc tăng tiếng ồn hoặc loại bỏ các điểm quá gần nhau. Mặt khác, đúng là một số chức năng của tôi hoạt động khá tệ, nên có lẽ tình huống của tôi không quá điển hình.
Bất kỳ đề nghị / tài liệu tham khảo có thể hữu ích ở đây?