Lần đầu tiên (xin lỗi / lỗi) tôi đã xem qua các quy trình của Gaussian , và cụ thể hơn, đã xem video này của Nando de Freitas . Các ghi chú có sẵn trực tuyến ở đây .
Tại một số điểm, anh ta rút ra mẫu ngẫu nhiên từ một thông thường đa biến được tạo bằng cách xây dựng ma trận hiệp phương sai dựa trên nhân Gaussian (hàm mũ của khoảng cách bình phương trong trục ). Các mẫu ngẫu nhiên này tạo thành các lô mịn trước đó trở nên ít lan truyền hơn khi dữ liệu có sẵn. Cuối cùng, mục tiêu là dự đoán bằng cách sửa đổi ma trận hiệp phương sai và thu được phân phối Gaussian có điều kiện tại các điểm quan tâm.
Toàn bộ mã có sẵn tại một bản tóm tắt xuất sắc của Kinda Bailey tại đây , đến lượt nó ghi nhận một kho lưu trữ mã của Nando de Freitas tại đây . Tôi đã đăng nó mã Python ở đây để thuận tiện.
Nó bắt đầu với (thay vì ở trên) các chức năng trước đó và giới thiệu một "tham số điều chỉnh".10
Tôi đã dịch mã sang Python và [R] , bao gồm các lô:
Đây là đoạn mã đầu tiên trong [R] và biểu đồ kết quả của ba đường cong ngẫu nhiên được tạo thông qua nhân Gaussian dựa trên độ gần của các giá trị trong tập kiểm tra:
Đoạn mã thứ hai của mã R là hairier và bắt đầu bằng cách mô phỏng bốn điểm dữ liệu huấn luyện, điều này cuối cùng sẽ giúp thu hẹp sự lây lan giữa các đường cong có thể (trước) xung quanh các khu vực nơi các điểm dữ liệu đào tạo này nằm. Mô phỏng giá trị cho các điểm dữ liệu này là hàm . Chúng ta có thể thấy "thắt chặt các đường cong xung quanh các điểm":tội lỗi ( )
Đoạn thứ ba của mã R liên quan đến việc vẽ đường cong của các giá trị ước tính trung bình (tương đương với đường hồi quy), tương ứng với giá trị (xem tính toán bên dưới) và khoảng tin cậy của chúng:
HỎI: Tôi muốn yêu cầu một lời giải thích về các hoạt động diễn ra khi đi từ GP trước đến sau.
Cụ thể, tôi muốn hiểu phần này của mã R (trong đoạn thứ hai) để lấy phương tiện và sd:
# Apply the kernel function to our training points (5 points):
K_train = kernel(Xtrain, Xtrain, param) #[5 x 5] matrix
Ch_train = chol(K_train + 0.00005 * diag(length(Xtrain))) #[5 x 5] matrix
# Compute the mean at our test points:
K_trte = kernel(Xtrain, Xtest, param) #[5 x 50] matrix
core = solve(Ch_train) %*% K_trte #[5 x 50] matrix
temp = solve(Ch_train) %*% ytrain #[5 x 1] matrix
mu = t(core) %*% temp #[50 x 1] matrix
Có hai hạt nhân (một trong các tàu ( ) v. Train ( ), hãy gọi nó là , với Cholesky ( ), , tô màu cam cho tất cả các Cholesky từ đây trở đi, và thử nghiệm thứ hai của tàu ( ) v ( ) , hãy gọi nó là ) và để tạo ra các phương tiện ước tính cho điểm trong thử nghiệm, thao tác là:một Σ một một L một một một e Σ một e μ 50K_train
Ch_train
K_trte
# Compute the standard deviation:
tempor = colSums(core^2) #[50 x 1] matrix
# Notice that all.equal(diag(t(core) %*% core), colSums(core^2)) TRUE
s2 = diag(K_test) - tempor #[50 x 1] matrix
stdv = sqrt(s2) #[50 x 1] matrix
Cái này hoạt động ra sao?
Cũng không rõ ràng, là phép tính cho các vạch màu (Posterior GP) trong âm mưu " Ba mẫu từ GP sau " ở trên, trong đó Cholesky của các bộ kiểm tra và huấn luyện dường như kết hợp với nhau để tạo ra các giá trị thông thường, cuối cùng được thêm vào :
Ch_post_gener = chol(K_test + 1e-6 * diag(n) - (t(core) %*% core))
m_prime = matrix(rnorm(n * 3), ncol = 3)
sam = Ch_post_gener %*% m_prime
f_post = as.vector(mu) + sam