SigOpt, công ty làm về Bayesian Optimization mà có lần mình làm chung vài thứ linh tinh, có hẳn một booth trong KDD năm nay. Nói như Nando de Freitas: “Bayesian Optimization is a thing“, thành ra mình nghĩ nên viết vài bài nghiêm túc về món này.
Hai bài đầu tiên sẽ điểm qua vài công thức cơ bản của Gaussian và Gaussian Process. Bài cuối cùng sẽ nói về lí thuyết Bayesian Optimization và một số chi tiết khác hay gặp trong thực tế.
1. Sample a Gaussian
Cái này phù hợp để làm một câu hỏi phỏng vấn được (cho vị trí nào thì chưa biết): cho 1 hàm lấy số ngẫu nhiên theo phân phối đều trong khoảng [0, 1). Định nghĩa (hoặc viết thuật toán cho) hàm lấy số ngẫu nhiên trong các trường hợp sau:
, với x là scalar value.
, với x là scalar value.
, với
, với
Câu 1 rất đơn giản. Kĩ thuật chuẩn mực để làm việc này gọi là Inverse Transform Sampling. Ý tưởng chính là dùng phân phối cummulative của phân phối Gaussian, như hình sau:
Do hàm cummulative của phân phối Gaussian có miền giá trị là [0, 1] nên ta sẽ lấy mẫu từ phân phối đều ( và
trong hình), sau đó dùng hàm ngược của hàm cummulative để tìm giá trị tương ứng
và
.
Lưu ý rằng ta chỉ làm được việc này do hàm cummulative là hàm đơn ánh, và ta tính được chính xác hàm ngược của nó. Trong trường hợp hàm ngược không tính được, ta cần tới các phương pháp phức tạp hơn như Rejection sampling hoặc Gibbs sampling.
Gọi là kết quả của câu 1, thì ta có thể dễ dàng có kết quả của câu hỏi 2 bằng cách tính
.
Với câu hỏi 3, để ý rằng ma trận covariance là ma trận đơn vị, nên các thành phần trong vector
là uncorrelated. Thành ra ta có thể lấy mẫu từng phần tử
như trong câu 1, và ghép chúng lại thành vector
.
Với câu hỏi 4, để thực hiện lại trick mà ta đã dùng trong câu 2, ta cần cách nào đó để tính “căn bậc 2” của ma trận covariance . Ta biết rằng phân tích Cholesky có thể biến đổi
, nên trick này có thể được dùng lại:
,
với được lấy mẫu như trong câu 3.
2. Multivariate Gaussian Theorem
Giả sử ta có một phân phối Gaussian trong không gian 2 chiều, và hàm phân phối của nó được vẽ như sau:
Hai đường màu xanh thể hiện hàm phân phối xác suất đang nói. Phân phối này sẽ có dạng hình nón, với đỉnh nón khá tròn. Tưởng tượng ta dùng 1 con dao để bổ dọc cái nón này theo một đường song song với trục , tại vị trí mà
(mặt phẳng màu đen trong hình), thì mặt cắt của cái nón trên mặt phẳng vẫn sẽ là một phân phối Gaussian một chiều.
Đây là intuition quan trọng để hiểu một trong những định lí quan trọng nhất của phân phối Gaussian (cho đến khi mình biết định lí khác quan trọng hơn). Định lí này nói rằng nếu vector tuân theo phân phối Gaussian 2 chiều thì phân phối có điều kiện của
cho trước
cũng là một Gaussian. Một cách tổng quát, định lí phát biểu như sau:
Giả sử
tuân theo phân phối Gaussian với tham số:
thì các phân phối lề (marginals) là Gaussian:
và phân phối có điều kiện cũng là Gaussian:
Nói chung toàn là Gaussian cả.
Định lí này được chứng minh trong các sách ML kinh điển, chẳng hạn quyển này. Đây cũng là nền tảng của Gaussian process, mà ta sẽ xem trong phần sau.
