Ma trận hiệp phương sai điều hòa trong hồi quy GP để tối ưu hóa Bayes


12

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?


Bạn có thể xem xét việc hình thành các mục của ma trận hiệp phương sai, cũng như tính toán hoặc cập nhật hệ số Cholesky của nó, với độ chính xác cao hơn, ví dụ, độ chính xác quad hoặc thậm chí cao hơn. Ngoài rắc rối, các tính toán có thể là các đơn đặt hàng có cường độ chậm hơn. Có các tiện ích chính xác tùy ý cho MATLAB. Tôi không nói điều này là lý tưởng, nhưng nó có thể là một lựa chọn. Tôi không biết họ chơi với gpml tốt như thế nào, nhưng nếu bạn có thể thay đổi mã nguồn gpml (m file), có lẽ bạn có thể làm điều đó.
Mark L. Stone

Bạn đã thử thêm một jitter nhỏ vào đường chéo của ma trận hiệp phương sai chưa?
Zen

@ MarkL.Stone Cảm ơn lời đề nghị. Thật không may, tôi cần mã đào tạo phải nhanh, vì vậy các số có độ chính xác cao có lẽ sẽ không phải là một lựa chọn tốt cho ứng dụng của tôi.
lacerbi

2
Câu hỏi này thực sự thú vị. Khi thêm các hiệu ứng nugget để bạn covaraince ma trận như làm bạn tối ưu hóa sigma trong khả năng của bạn, hoặc là σ nhất định. Tôi đã nhận thấy rằng tối ưu hóa hiệu ứng nugget thu được tiếng ồn đo lường và giúp anh ta xử lý gausssianσ2Iσ
Wis

1
Tôi thường tối ưu hóa. Trong một vài trường hợp, tôi đã cố gắng vượt qua nó, nhưng không nhận được nhiều sự tối ưu hóa cải tiến (tôi cho rằng hậu thế rất hẹp).
lacerbi

Câu trả lời:


7

Một lựa chọn khác là về cơ bản trung bình các điểm gây ra - ví dụ: nếu bạn có 1000 điểm và 50 vấn đề gây ra, bạn có thể lấy xấp xỉ thứ hạng thấp tối ưu bằng cách sử dụng 950 vectơ / vectơ đầu tiên. Tuy nhiên, điều này không còn xa nữa khi loại bỏ các điểm dữ liệu gần nhau mà bạn nói rằng bạn không muốn làm. Xin lưu ý rằng mặc dù khi bạn thêm jitter, bạn sẽ giảm mức độ tự do - tức là mỗi điểm ảnh hưởng đến dự đoán của bạn ít hơn, vì vậy điều này có thể tồi tệ hơn việc sử dụng ít điểm hơn.

dxk(x,x)dxdxk(x,x)

Biên tập:

Dựa trên các ý kiến ​​tôi nghĩ rằng tôi sẽ giải thích những gì tôi muốn nói bằng cách bao gồm các quan sát phái sinh. Nếu chúng ta sử dụng hạt nhân gaussian (làm ví dụ),

kx,x=k(x,x)=σexp((xx)2l2)

dẫn xuất của nó là,

kdx,x=dk(x,x)dx=2(xx)l2σexp((xx)2l2)

kdx,dx=d2k(x,x)dxdx=2l22(xx)l4σexp((xx)2l2)

{xi,yi;i=1,...,n}x1m1

Y=[m1,y1,,yn]

K=(kdx0,dx0kdx0,x0kdx0,xnkdx0,x0kx0,x0kx0,xnkdx0,xnkx0,xnkxn,xn)

Phần còn lại của GP vẫn giống như bình thường.


Bạn có quan tâm đến việc mở rộng các chi tiết về việc sử dụng thông tin độ dốc gần đúng được đề xuất của bạn không?
Mark L. Stone

@j Cảm ơn - Tôi đã nghĩ đến việc thực hiện xấp xỉ thứ hạng thấp, tôi có thể thử lại (tránh nó cho đến nay vì tôi có thể phải viết lại phần lớn mã). Về việc kết hợp hai điểm thành một, tôi đã đề xuất nó trong một câu hỏi trước đó , nhưng tôi không nghĩ đến việc lấy thông tin phái sinh. Về nguyên tắc nghe có vẻ gọn gàng nhưng tôi không chắc mình sẽ sử dụng nó như thế nào vì tôi chỉ có một vài quan sát phái sinh (tương ứng với các điểm đã hợp nhất), với gánh nặng thêm một GP cho mỗi chiều đầu vào.
lacerbi

@j Cảm ơn đã giải thích thêm. Điều này trông rất gọn gàng thực sự. Bạn có tài liệu tham khảo cho phương pháp này (hoặc một cái gì đó tương tự đủ)?
lacerbi

2
Kiểm tra luận án của Mike Ostern trang 67 ( robot.ox.ac.uk/~mosb/public/pdf/136/full_thesis.pdf ) - ông giới thiệu các quan sát phái sinh và tích phân. Hy vọng nó sẽ giúp :)
j__ 8/1/2016

4

Một giải pháp mà chúng tôi đã đá xung quanh tại văn phòng là chỉ thay đổi những điểm rắc rối. Điều này có thể có hình thức xóa thẳng hoặc một cái gì đó tinh vi hơn. Về cơ bản, quan sát là các điểm gần nhau rất dư thừa: trên thực tế, dư thừa đến mức chúng làm giảm thứ hạng của ma trận hiệp phương sai. Cùng một mã thông báo, dù sao đi nữa, một điểm sẽ đóng góp ít thông tin cho vấn đề, do đó, loại bỏ cái này hoặc cái kia (hoặc làm một cái gì đó khác, như lấy trung bình chúng hoặc "nảy" một điểm từ điểm kia đến một khoảng cách tối thiểu có thể chấp nhận được) không thực sự thay đổi giải pháp của bạn nhiều như vậy.

Tôi không chắc làm thế nào để đánh giá tại điểm nào hai điểm trở nên "quá gần". Có lẽ đây có thể là một tùy chọn điều chỉnh để lại cho người dùng.

(Rất tiếc! Sau khi tôi đăng bài này, tôi đã tìm thấy câu hỏi của bạn ở đây nhằm nâng cao câu trả lời này cho một giải pháp phức tạp hơn nhiều. Tôi hy vọng rằng bằng cách liên kết với nó từ câu trả lời của mình, tôi sẽ giúp SEO ...)


Điều này khá hữu ích, bạn có thể vui lòng làm sáng tỏ điều này nếu có thể.
GENIVI-LEARNER
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.