Python sau này

approxposterior là một gói Python để suy luận Bayesian gần đúng hiệu quả và tối ưu hóa Bayesian của các mô hình tốn kém về mặt tính toán. approxposterior đào tạo một chất thay thế quy trình Gaussian (GP) cho mô hình đắt tiền về mặt tính toán và sử dụng phương pháp học tập tích cực để cải thiện lặp đi lặp lại hiệu suất dự đoán của GP đồng thời giảm thiểu số lượng lệnh gọi đến mô hình đắt tiền cần thiết để tạo tập huấn luyện của GP

approxposterior triển khai cả phương pháp Bayesian Active Learning để ước tính hậu thế (BAPE, Kandasamy et al. (2017)) và các thuật toán xấp xỉ quy trình Gaussian thích ứng cho suy luận Bayes với các hàm khả năng đắt tiền (AGP, Wang & Li (2018)) để ước tính phân phối xác suất hậu nghiệm để sử dụng với các vấn đề suy luận với các mô hình tốn kém về mặt tính toán. Trong những tình huống như vậy, mục tiêu là suy ra các phân phối xác suất sau cho các tham số mô hình, được cung cấp một số dữ liệu, với ràng buộc bổ sung là giảm thiểu số lượng đánh giá mô hình chuyển tiếp với chi phí tính toán giả định lớn của mô hình. approxposterior đào tạo mô hình thay thế Quy trình Gaussian (GP) để đánh giá khả năng xảy ra bằng cách lập mô hình hiệp phương sai trong không gian xác suất log (logprior + loglikelihood). approxposterior sau đó sử dụng GP này trong bộ lấy mẫu MCMC cho từng đánh giá khả năng để thực hiện suy luận. approxposterior cải thiện lặp đi lặp lại hiệu suất dự đoán của GP bằng cách tận dụng tính không chắc chắn vốn có trong các dự đoán của GP để xác định các vùng có khả năng xảy ra cao trong không gian tham số nơi GP không chắc chắn. approxposterior sau đó đánh giá mô hình chuyển tiếp tại các điểm này để mở rộng tập huấn luyện trong các vùng không gian tham số có liên quan, đào tạo lại GP để tối đa hóa khả năng dự đoán của nó trong khi giảm thiểu kích thước của tập huấn luyện. Kiểm tra bài báo BAPE của Kandasamy et al. (2017) và bài báo AGP của Wang & Li (2018) để biết các mô tả chuyên sâu về các thuật toán tương ứng

Tài liệu

Tham khảo tài liệu tại https. //dflemin3. github. io/approxposterior/ để được giải thích sâu hơn về mã, ghi chú API chi tiết, nhiều ví dụ có số liệu

Cài đặt

Sử dụng conda

conda install -c conda-forge approxposterior

sử dụng pip

pip install approxposterior

Bước này có thể thất bại nếu george (gói Quy trình Gaussian của Python) không được cài đặt và biên dịch đúng cách. Để cài đặt george, hãy chạy

conda install -c conda-forge george

từ nguồn

git clone https://github.com/dflemin3/approxposterior.git
cd approxposterior
python setup.py install

Một ví dụ đơn giản

Dưới đây là một ứng dụng đơn giản của approxposterior dựa trên ví dụ của Wang & Li (2017)

from approxposterior import approx, gpUtils, likelihood as lh, utility as ut
import numpy as np

# Define algorithm parameters
m0 = 50                           # Initial size of training set
m = 20                            # Number of new points to find each iteration
nmax = 2                          # Maximum number of iterations
bounds = [(-5,5), (-5,5)]         # Prior bounds
algorithm = "bape"                # Use the Kandasamy et al. (2017) formalism
seed = 57                         # RNG seed
np.random.seed(seed)

# emcee MCMC parameters
samplerKwargs = {"nwalkers" : 20}        # emcee.EnsembleSampler parameters
mcmcKwargs = {"iterations" : int(2.0e4)} # emcee.EnsembleSampler.run_mcmc parameters

# Sample design points from prior
theta = lh.rosenbrockSample(m0)

# Evaluate forward model log likelihood + lnprior for each theta
y = np.zeros(len(theta))
for ii in range(len(theta)):
    y[ii] = lh.rosenbrockLnlike(theta[ii]) + lh.rosenbrockLnprior(theta[ii])

# Default GP with an ExpSquaredKernel
gp = gpUtils.defaultGP(theta, y, white_noise=-12)

# Initialize object using the Wang & Li (2018) Rosenbrock function example
ap = approx.ApproxPosterior(theta=theta,
                            y=y,
                            gp=gp,
                            lnprior=lh.rosenbrockLnprior,
                            lnlike=lh.rosenbrockLnlike,
                            priorSample=lh.rosenbrockSample,
                            bounds=bounds,
                            algorithm=algorithm)

# Run!
ap.run(m=m, nmax=nmax, estBurnin=True, nGPRestarts=3, mcmcKwargs=mcmcKwargs,
       cache=False, samplerKwargs=samplerKwargs, verbose=True, thinChains=False,
       onlyLastMCMC=True)

# Check out the final posterior distribution!
import corner

# Load in chain from last iteration
samples = ap.sampler.get_chain(discard=ap.iburns[-1], flat=True, thin=ap.ithins[-1])

# Corner plot!
fig = corner.corner(samples, quantiles=[0.16, 0.5, 0.84], show_titles=True,
                    scale_hist=True, plot_contours=True)

# Plot where forward model was evaluated - uncomment to plot!
fig.axes[2].scatter(ap.theta[m0:,0], ap.theta[m0:,1], s=10, color="red", zorder=20)

# Save figure
fig.savefig("finalPosterior.png", bbox_inches="tight")

Bản phân phối cuối cùng sẽ trông giống như thế này

Python sau này

Các điểm màu đỏ được chọn bởi approxposterior bằng cách tối đa hóa chức năng tiện ích BAPE. Tại mỗi điểm màu đỏ, approxposterior chạy mô hình chuyển tiếp để đánh giá khả năng thực sự và thêm cặp khả năng đầu vào này vào tập huấn luyện của GP. Chúng tôi đào tạo lại GP mỗi lần để cải thiện khả năng dự đoán của nó. Lưu ý cách các điểm được chọn trong các vùng có mật độ sau cao, chính xác là nơi chúng tôi muốn tối đa hóa khả năng dự đoán của GP. Bằng cách sử dụng lược đồ chọn điểm BAPE, approxposterior không lãng phí tài nguyên tính toán bằng cách đánh giá mô hình chuyển tiếp ở các vùng có khả năng xảy ra thấp

Kiểm tra thư mục ví dụ để biết các ví dụ và giải thích về Jupiter Notebook. Kiểm tra tài liệu đầy đủ để được giải thích sâu hơn về các lớp, phương thức, biến và cách sử dụng mã

Sự đóng góp

Nếu bạn muốn đóng góp cho mã này, vui lòng rẽ nhánh kho lưu trữ, thực hiện một số chỉnh sửa và mở yêu cầu kéo. Nếu bạn tìm thấy lỗi, có đề xuất, v.v., vui lòng mở một vấn đề

hậu thế trong quy tắc Bayes là gì?

Xác suất sau, trong thống kê Bayes, là xác suất được sửa đổi hoặc cập nhật của một sự kiện xảy ra sau khi xem xét thông tin mới . Xác suất sau được tính bằng cách cập nhật xác suất trước bằng định lý Bayes.

Chế độ sau là gì?

Ước tính điểm thường thu được bằng cách tính toán giá trị trung bình hoặc trung vị (hoặc chế độ) của phân phối sau . Chúng được gọi là "trung bình sau" hoặc "trung bình sau" (hoặc "chế độ sau").

Hậu thế trong học máy là gì?

Sau này. Phân phối xác suất có điều kiện thể hiện những thông số nào có thể xảy ra sau khi quan sát đối tượng dữ liệu . khả năng. Xác suất rơi vào một danh mục hoặc lớp cụ thể.

Xác suất trước và sau là gì?

Xác suất biết trước, trong thống kê Bayes, là khả năng xảy ra trước của một sự kiện trước khi xem xét bất kỳ thông tin (sau) mới nào . Xác suất sau được tính bằng cách cập nhật xác suất trước bằng định lý Bayes.