Hồi quy quá trình gaussian ví dụ python

Đối tượng của hướng dẫn này là những người muốn sử dụng GP nhưng không cảm thấy thoải mái khi sử dụng nó. Điều này xảy ra với tôi sau khi đọc xong hai chương đầu tiên của cuốn sách Gaussian Process for Machine Learning []. Có một khoảng cách giữa việc sử dụng GP và cảm thấy thoải mái khi sử dụng nó do những khó khăn trong việc hiểu lý thuyết. Khi tôi đọc giáo trình và xem các video hướng dẫn trên mạng, tôi có thể làm theo số đông mà không gặp quá nhiều khó khăn. Loại nội dung có ý nghĩa với tôi. Nhưng ngay cả khi tôi đang cố gắng tự nói với mình GP là gì, bức tranh toàn cảnh vẫn bị mờ. Sau khi tiếp tục cố gắng hiểu GP từ nhiều nguồn khác nhau, bao gồm sách giáo khoa, bài đăng trên blog và mã nguồn mở, tôi sắp xếp những hiểu biết của mình và tóm tắt chúng theo quan điểm của tôi

Một điều tôi nhận ra những khó khăn trong việc hiểu GP là do nền tảng khác nhau, mỗi người có kiến ​​thức khác nhau. Để hiểu GP, thậm chí ở mức độ trực quan, cần biết Gaussian đa biến, hạt nhân, xác suất có điều kiện. Nếu bạn quen thuộc với những điều này, hãy bắt đầu đọc từ. Trình độ sơ cấp hoặc trung bình trong học sâu [cấp độ ứng dụng], không có hiểu biết vững chắc về lý thuyết học máy, thậm chí còn gây ra nhiều nhầm lẫn hơn trong việc hiểu GP

[10]

I. Động lực

Trước hết, tại sao lại sử dụng Quy trình Gaussian để thực hiện hồi quy? . Hồi quy có thể được thực hiện với các đa thức và thông thường có nhiều hơn một hàm có thể phù hợp với dữ liệu được quan sát. Bên cạnh việc nhận dự đoán bằng chức năng, chúng tôi cũng muốn biết mức độ chắc chắn của những dự đoán này. Hơn nữa, định lượng sự không chắc chắn là cực kỳ có giá trị để đạt được một quá trình học tập hiệu quả. Các khu vực ít chắc chắn nhất nên được khám phá nhiều hơn

Nói một cách dễ hiểu, GP có thể được sử dụng để đưa ra dự đoán tại các điểm dữ liệu mới và có thể cho chúng tôi biết mức độ chắc chắn của những dự đoán này

[2]

II. Khái niệm cơ bản

A. Phân phối Gaussian [Bình thường]

Hãy nói về Gaussian

Một biến ngẫu nhiên được gọi là có phân phối chuẩn với giá trị trung bình và phương sai nếu hàm mật độ xác suất của nó

Ở đây, đại diện cho các biến ngẫu nhiên và là đối số thực. Phân phối Gaussian hoặc Chuẩn của thường được biểu thị bằng .

A Gaussian PDF được vẽ dưới đây. Chúng tôi tạo ra số điểm mẫu ngẫu nhiên ________0____1 từ một phân phối Gaussian trên trục

# Plot 1-D gaussian
n = 1         # n number of independent 1-D gaussian 
m= 1000       # m points in 1-D gaussian 
f_random = np.random.normal[size=[n, m]] 
# more information about 'size': //www.sharpsightlabs.com/blog/numpy-random-normal/ 
#print[f_random.shape]

for i in range[n]:
    #sns.distplot[f_random[i], hist=True, rug=True, vertical=True, color="orange"]
    sns.distplot[f_random[i], hist=True, rug=True]

plt.title['1 random samples from a 1-D Gaussian distribution']
plt.xlabel['x']
plt.ylabel['P[x]']
plt.show[]
2.

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

# Plot 1-D gaussian
n = 1         # n number of independent 1-D gaussian 
m= 1000       # m points in 1-D gaussian 
f_random = np.random.normal[size=[n, m]] 
# more information about 'size': //www.sharpsightlabs.com/blog/numpy-random-normal/ 
#print[f_random.shape]

for i in range[n]:
    #sns.distplot[f_random[i], hist=True, rug=True, vertical=True, color="orange"]
    sns.distplot[f_random[i], hist=True, rug=True]

plt.title['1 random samples from a 1-D Gaussian distribution']
plt.xlabel['x']
plt.ylabel['P[x]']
plt.show[]

Chúng tôi đã tạo các điểm dữ liệu tuân theo phân phối chuẩn. Mặt khác, chúng ta có thể lập mô hình các điểm dữ liệu, giả sử các điểm này là Gaussian, mô hình hóa dưới dạng một hàm và thực hiện hồi quy bằng cách sử dụng nó. Như được hiển thị ở trên, mật độ hạt nhân và biểu đồ của các điểm được tạo đã được ước tính. Ước tính mật độ hạt nhân có vẻ là một phân phối bình thường do có rất nhiều

# Plot 1-D gaussian
n = 1         # n number of independent 1-D gaussian 
m= 1000       # m points in 1-D gaussian 
f_random = np.random.normal[size=[n, m]] 
# more information about 'size': //www.sharpsightlabs.com/blog/numpy-random-normal/ 
#print[f_random.shape]

for i in range[n]:
    #sns.distplot[f_random[i], hist=True, rug=True, vertical=True, color="orange"]
    sns.distplot[f_random[i], hist=True, rug=True]

plt.title['1 random samples from a 1-D Gaussian distribution']
plt.xlabel['x']
plt.ylabel['P[x]']
plt.show[]
3 điểm quan sát để có được bản PDF trông Gaussian này. Trong hồi quy, ngay cả khi chúng ta không có nhiều dữ liệu quan sát như vậy, chúng ta có thể mô hình hóa dữ liệu dưới dạng một hàm tuân theo phân phối chuẩn nếu chúng ta giả sử một Gaussian trước

Định dạng Gaussian PDF được đặc trưng hoàn toàn bởi hai tham số và , chúng có thể được lấy từ

Chúng tôi có tập dữ liệu được tạo ngẫu nhiên trong . Chúng tôi đã lấy mẫu tập dữ liệu đã tạo và nhận được đường cong hình chuông Gaussian.

Bây giờ, nếu chúng ta chiếu tất cả các điểm trên trục x sang một không gian khác. Trong không gian này, Chúng tôi coi tất cả các điểm là một vectơ và vẽ biểu đồ trên axis at .

n = 1         # n number of independent 1-D gaussian 
m= 1000       # m points in 1-D gaussian  
f_random = np.random.normal[size=[n, m]]

Xshow = np.linspace[0, 1, n].reshape[-1,1]   # n number test points in the range of [0, 1]

plt.clf[]
plt.plot[Xshow, f_random, 'o', linewidth=1, markersize=1, markeredgewidth=2]
plt.xlabel['']
plt.ylabel['']
plt.show[]

Rõ ràng vectơ là Gaussian. Có vẻ như chúng ta không làm gì ngoài việc vẽ các điểm vectơ theo chiều dọc . Tiếp theo, chúng ta có thể vẽ nhiều Gaussian độc lập trong tọa độ. Ví dụ: đặt vectơ tại và một vectơ khác tại .

n = 2          
m = 1000
f_random = np.random.normal[size=[n, m]]

Xshow = np.linspace[0, 1, n].reshape[-1,1]   # n number test points in the range of [0, 1]

plt.clf[]
plt.plot[Xshow, f_random, 'o', linewidth=1, markersize=1, markeredgewidth=2]
plt.xlabel['']
plt.ylabel['']
plt.show[]

Hãy nhớ rằng cả vectơ và đều là Gaussian.

Hãy làm điều gì đó thú vị. Hãy nối các điểm của và bằng các đường. Hiện tại, chúng tôi chỉ tạo 10 điểm ngẫu nhiên cho và , sau đó nối chúng thành 10 dòng. Hãy ghi nhớ, 10 điểm được tạo ngẫu nhiên này là Gaussian.

n = 2          
m = 10
f_random = np.random.normal[size=[n, m]]

Xshow = np.linspace[0, 1, n].reshape[-1,1]   # n number test points in the range of [0, 1]

plt.clf[]
plt.plot[Xshow, f_random, '-o', linewidth=2, markersize=4, markeredgewidth=2]
plt.xlabel['']
plt.ylabel['']
plt.show[]

Quay lại suy nghĩ về hồi quy. Những dòng này trông giống như các chức năng cho mỗi cặp điểm. Mặt khác, đồ thị cũng giống như chúng ta đang lấy mẫu vùng với 10 hàm tuyến tính thậm chí chỉ có hai điểm trên mỗi đường. Ở góc độ lấy mẫu, miền là vùng quan tâm của chúng tôi, tôi. e. khu vực cụ thể chúng tôi thực hiện hồi quy. Việc lấy mẫu này thậm chí còn rõ ràng hơn nếu chúng ta tạo ra nhiều Gaussian độc lập hơn và các điểm kết nối theo thứ tự theo đường.

________số 8_______

Đợi một chút, chúng tôi đang cố gắng làm gì bằng cách kết nối các điểm Gaussian độc lập được tạo ngẫu nhiên? . Nếu là không gian đầu vào của chúng ta, thì các hàm này vô nghĩa đối với tác vụ hồi quy. Chúng tôi không thể dự đoán bằng cách sử dụng các chức năng này. Các chức năng phải mượt mà hơn, nghĩa là các điểm đầu vào gần nhau sẽ có các giá trị tương tự của chức năng.

Do đó, các chức năng bằng cách kết nối Gaussian độc lập không phù hợp với hồi quy, chúng ta cần Gaussian tương quan với nhau. Làm thế nào để mô tả chung Gaussian?

B. Phân phối chuẩn đa biến [MVN]

Trong một số trường hợp, một hệ thống [tập hợp dữ liệu] phải được mô tả bằng nhiều biến tính năng hơn và các biến này có mối tương quan với nhau. Nếu chúng ta muốn mô hình hóa tất cả dữ liệu trong một lần dưới dạng Gaussian, chúng ta cần Gaussian đa biến. Dưới đây là các ví dụ về Gaussian. Một trung tâm dữ liệu được theo dõi bởi tải CPU và sử dụng bộ nhớ . [3]

Gaussian có thể được hình dung dưới dạng đường cong hình chuông 3D với các độ cao biểu thị mật độ xác suất.

Đi đến nếu bạn muốn tạo hình ảnh bên trái

Chính thức, Gaussian đa biến được thể hiện dưới dạng [4]

____________4 là vectơ 2d , là giá trị trung bình độc lập của từng biến và .

Ma trận hiệp phương sai của Gaussian là . Các số hạng chéo là phương sai độc lập của từng biến, và . Các điều khoản offdiagonal đại diện cho mối tương quan giữa hai biến. Một thành phần tương quan biểu thị mức độ liên quan của một biến với một biến khác.

A Gaussian có thể được biểu diễn dưới dạng

Khi chúng ta có Gaussian, ma trận hiệp phương sai là và element is . The là một ma trận đối xứng và lưu trữ hiệp phương sai theo cặp của tất cả các biến ngẫu nhiên được mô hình hóa chung.

Chơi xung quanh với ma trận hiệp phương sai để xem mối tương quan giữa hai Gaussian

import pandas as pd
import seaborn as sns

mean, cov = [0., 0.], [[1., -0.6], [-0.6, 1.]]
data = np.random.multivariate_normal[mean, cov, 1000]
df = pd.DataFrame[data, columns=["x1", "x2"]]
g = sns.jointplot["x1", "x2", data=df, kind="kde"]

#[sns.jointplot["x1", "x2", data=df].plot_joint[sns.kdeplot]]

g.plot_joint[plt.scatter, c="g", s=30, linewidth=1, marker="+"]

#g.ax_joint.collections[0].set_alpha[0]
g.set_axis_labels["", ""];

g.ax_joint.legend_.remove[]
plt.show[]

Một hình ảnh trực quan MVN tốt khác là Multivariante Gaussians and Mixtures of Gaussians [MoG]

Bên cạnh xác suất chung, chúng tôi quan tâm nhiều hơn đến xác suất có điều kiện. Nếu chúng ta cắt một lát trên đường cong hình chuông 3D hoặc vẽ một đường trên đường viền hình elip, chúng ta sẽ nhận được phân phối xác suất có điều kiện$P[x_1 \vert , x_2]$. Phân phối có điều kiện cũng là Gaussian

C. nhân

Chúng tôi muốn làm mịn các hàm lấy mẫu bằng cách xác định các hàm hiệp phương sai. Xem xét thực tế rằng khi hai vectơ giống nhau, giá trị đầu ra sản phẩm chấm của chúng cao. Rất rõ ràng để thấy điều này trong phương trình tích vô hướng , trong đó là góc giữa hai vectơ. Nếu một thuật toán chỉ được xác định theo các tích bên trong trong không gian đầu vào thì nó có thể được đưa vào không gian đặc trưng bằng cách thay thế các lần xuất hiện của các tích bên trong đó bằng ; . a kernel function [1].

Một hàm hiệp phương sai phổ biến [còn gọi là hàm nhân] là nhân hàm mũ bình phương, còn được gọi là nhân hàm cơ sở xuyên tâm [RBF] hoặc nhân Gaussian, được định nghĩa là

Hãy vẽ lại 20 Gaussian độc lập và các điểm kết nối theo thứ tự bằng các đường. Thay vì tạo ra 20 Gaussian độc lập trước đây, chúng tôi thực hiện đồ thị của một Gaussian với ma trận đồng biến đồng nhất.

n = 20 
m = 10

mean = np.zeros[n]
cov = np.eye[n]

f_prior = np.random.multivariate_normal[mean, cov, m].T

plt.clf[]

#plt.plot[Xshow, f_prior, '-o']
Xshow = np.linspace[0, 1, n].reshape[-1,1]   # n number test points in the range of [0, 1]

for i in range[m]:
    plt.plot[Xshow, f_prior, '-o', linewidth=1]
    
plt.title['10 samples of the 20-D gaussian prior']
plt.show[]

Chúng tôi có chính xác cốt truyện như mong đợi. Bây giờ, hãy nhân các funciton của chúng ta bằng cách sử dụng RBF làm phương sai của chúng ta

# Define the kernel
def kernel[a, b]:
    sqdist = np.sum[a**2,axis=1].reshape[-1,1] + np.sum[b**2,1] - 2*np.dot[a, b.T]
    # np.sum[ ,axis=1] means adding all elements columnly; .reshap[-1, 1] add one dimension to make [n,] become [n,1]
    return np.exp[-.5 * sqdist]

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
0

Chúng tôi nhận được các đường nét mượt mà hơn và thậm chí trông giống các hàm hơn. Khi số chiều của Gaussian lớn hơn, không cần kết nối các điểm. Khi kích thước trở thành vô cùng, có một điểm đại diện cho bất kỳ đầu vào có thể. Hãy vẽ đồ thị của ________0____5 mẫu của

# Plot 1-D gaussian
n = 1         # n number of independent 1-D gaussian 
m= 1000       # m points in 1-D gaussian 
f_random = np.random.normal[size=[n, m]] 
# more information about 'size': //www.sharpsightlabs.com/blog/numpy-random-normal/ 
#print[f_random.shape]

for i in range[n]:
    #sns.distplot[f_random[i], hist=True, rug=True, vertical=True, color="orange"]
    sns.distplot[f_random[i], hist=True, rug=True]

plt.title['1 random samples from a 1-D Gaussian distribution']
plt.xlabel['x']
plt.ylabel['P[x]']
plt.show[]
6Gaussian để cảm nhận về các hàm có tham số vô hạn.

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
1

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
2

Như chúng ta có thể thấy ở trên, khi chúng ta tăng kích thước của Gaussian lên vô cùng, chúng ta có thể lấy mẫu tất cả các điểm có thể có trong vùng quan tâm của chúng ta

Một hình ảnh động trực quan tuyệt vời về hiệp phương sai của các "hàm" [10]

Ở đây chúng ta nói một chút về mô hình tham số và phi tham số. Bạn có thể bỏ qua phần này mà không ảnh hưởng đến sự hiểu biết Quy trình Gaussian của bạn

Các mô hình tham số giả định rằng phân phối dữ liệu có thể được mô hình hóa theo một tập hợp các tham số số hữu hạn. Đối với hồi quy, chúng tôi có một số điểm dữ liệu và chúng tôi muốn đưa ra dự đoán về giá trị của với một cụ thể. Nếu chúng ta giả sử một mô hình hồi quy tuyến tính, , thì chúng ta cần tìm các tham số và để xác định đường. Trong nhiều trường hợp, giả định mô hình tuyến tính không được giữ, cần có một mô hình đa thức với nhiều tham số hơn, chẳng hạn như . Chúng tôi sử dụng tập dữ liệu huấn luyện của quan sát, để huấn luyện mô hình, tôi. e. ánh xạ đến thông qua các tham số . Sau quá trình đào tạo, chúng tôi giả định rằng tất cả thông tin của dữ liệu được thu thập bởi các tham số tính năng , do đó dự đoán không phụ thuộc vào dữ liệu đào tạo . Nó có thể được biểu thị dưới dạng , trong đó là dự đoán được đưa ra tại một điểm không quan sát được . Như vậy, khi tiến hành hồi quy bằng mô hình tham số, độ phức tạp hay tính linh hoạt của mô hình bị giới hạn bởi số lượng tham số. Thật tự nhiên khi nghĩ đến việc sử dụng một mô hình mà số lượng tham số tăng theo kích thước của tập dữ liệu và đó là mô hình phi tham số Bayesian. Mô hình phi tham số Bayes không có nghĩa là không có tham số, mà là vô hạn tham số.

Để tạo các mẫu ngẫu nhiên phân phối chuẩn tương quan, trước tiên người ta có thể tạo các mẫu không tương quan, sau đó nhân chúng với ma trận L sao cho , trong đó K là ma trận hiệp phương sai mong muốn. L có thể được tạo ra, ví dụ, bằng cách sử dụng phân tách Cholesky của K.

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
3

III. Toán học

Đầu tiên, một lần nữa, quay lại hồi quy nhiệm vụ của chúng ta. Có một chức năng chúng tôi đang cố gắng lập mô hình cho một tập hợp các điểm dữ liệu [dữ liệu đào tạo/dữ liệu quan sát hiện có] từ chức năng chưa biết . The traditional non-linear regression machine learning methods typically give one function that it considers to fit these observations the best. But, as shown at the begining, there can be more than one funcitons fit the observations equally well.

Thứ hai, hãy xem lại những gì chúng ta đã nhận được từ MVN. Chúng tôi có cảm giác rằng khi số chiều của Gaussian là vô hạn, chúng tôi có thể lấy mẫu tất cả các vùng quan tâm bằng các hàm ngẫu nhiên. Các hàm ngẫu nhiên vô hạn này là MVN vì đó là giả định của chúng tôi [trước]. Chính thức hơn, phân phối trước của các hàm ngẫu nhiên vô hạn này là MVN. Phân phối trước đại diện cho kết quả đầu ra loại mà chúng tôi dự kiến ​​sẽ thấy trên một số đầu vào mà thậm chí không cần quan sát bất kỳ dữ liệu nào.

Khi chúng ta có các điểm quan sát, thay vì các hàm ngẫu nhiên vô hạn, chúng ta chỉ giữ các hàm phù hợp với các điểm này. Bây giờ chúng tôi đã có niềm tin hiện tại dựa trên những quan sát hiện có. Khi chúng tôi có nhiều điểm quan sát hơn, chúng tôi sử dụng phần sau của chúng tôi làm phần trước, sử dụng những quan sát mới này để cập nhật phần sau của chúng tôi

Đây là quá trình Gaussian

Một quy trình Gaussian là một phân phối xác suất trên các hàm có thể phù hợp với một tập hợp các điểm

Bởi vì chúng tôi có phân phối xác suất trên tất cả các chức năng có thể, chúng tôi có thể tính toán phương tiện dưới dạng hàm và tính toán phương sai để cho thấy mức độ tin cậy khi chúng tôi đưa ra dự đoán bằng cách sử dụng hàm

Ghi nhớ,

  • Các chức năng [sau] cập nhật với các quan sát mới
  • Giá trị trung bình được tính bằng phân phối sau của các hàm có thể là hàm được sử dụng để hồi quy

Rất khuyến khích đọc Phụ lục A. 1 và A. 2 [3] trước khi tiếp tục. Toán học cơ bản

Hàm này được mô hình hóa bởi một Gaussian đa biến như

ở đâu , và . là hàm trung bình và thường được sử dụng vì các bác sĩ đa khoa đủ linh hoạt để mô hình hóa giá trị trung bình một cách tùy ý. là hàm hạt nhân xác định dương hoặc hàm hiệp phương sai. Do đó, một quá trình Gaussian là một phân phối trên các chức năng có hình dạng [độ mịn,. ] được xác định bởi . Nếu các điểm và được hạt nhân coi là giống nhau thì các giá trị hàm tại các điểm này, và , can be expected to be similar too.

Vì vậy, chúng tôi có các quan sát và chúng tôi có các hàm ước tính với các quan sát này. Bây giờ, giả sử chúng ta có một số điểm mới mà chúng ta muốn dự đoán .

Phân phối chung của và có thể được lập mô hình như.

ở đâu , và . Và

Đây là mô hình phân phối chung , nhưng chúng tôi chỉ muốn phân phối có điều kiện trên , đó là . Quá trình suy diễn từ phân phối chung đến phân phối có điều kiện sử dụng phân phối Biên và phân phối có điều kiện của định lý MVN [5].

Chúng tôi có eqn. 2. 19 [1]

Các tình huống lập mô hình thực tế là chúng tôi không có quyền truy cập vào chính các giá trị của hàm mà chỉ có các phiên bản ồn ào của chúng . Giả sử nhiễu Gaussian phân bố đồng nhất độc lập với phụ gia có phương sai , giá trị ưu tiên của các quan sát nhiễu trở thành . Sự phân phối chung của các giá trị mục tiêu được quan sát và các giá trị chức năng tại các vị trí thử nghiệm trước đó là [1]

Lấy phân phối có điều kiện tương ứng với phương trình. 2. 19 ta được phương trình tiên đoán [phương trình. 2. 22, eqn. 2. 23, và phương trình. 2. 24] [1] cho hồi quy quá trình Gaussian như

ở đâu,

IV. mã

Chúng tôi làm ví dụ hồi quy giữa -5 và 5. Các điểm dữ liệu quan sát [tập dữ liệu traing] được tạo từ phân phối đồng đều giữa -5 và 5. Điều này có nghĩa là bất kỳ giá trị điểm nào trong khoảng đã cho [-5, 5] đều có khả năng được rút ra bằng đồng nhất. Các chức năng sẽ được đánh giá tại

# Plot 1-D gaussian
n = 1         # n number of independent 1-D gaussian 
m= 1000       # m points in 1-D gaussian 
f_random = np.random.normal[size=[n, m]] 
# more information about 'size': //www.sharpsightlabs.com/blog/numpy-random-normal/ 
#print[f_random.shape]

for i in range[n]:
    #sns.distplot[f_random[i], hist=True, rug=True, vertical=True, color="orange"]
    sns.distplot[f_random[i], hist=True, rug=True]

plt.title['1 random samples from a 1-D Gaussian distribution']
plt.xlabel['x']
plt.ylabel['P[x]']
plt.show[]
1 điểm cách đều nhau giữa -5 và 5. Chúng tôi làm điều này để hiển thị một hàm hồi quy liên tục trong vùng chúng tôi quan tâm [-5, 5]. Đây là một ví dụ đơn giản để thực hiện hồi quy GP. Nó giả định một GP trung bình bằng 0 trước đó. Mã mượn rất nhiều từ Dr. Bài giảng quy trình Gaussian của Nando de Freitas cho hồi quy phi tuyến tính [6]

Thuật toán thực hiện như sau

Giáo trình GPML, P19. [1]

Tiến sĩ. Nando de Freitas, Giới thiệu về quy trình Gaussian. [6]

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
4

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
5

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
6

Chúng tôi sử dụng Hạt nhân lũy thừa bình phương chung, còn được gọi là Hạt nhân chức năng cơ sở xuyên tâm hoặc Hạt nhân Gaussian

trong đó và là siêu tham số. Thông tin thêm về các siêu đường kính có thể được tìm thấy sau các mã.

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
7

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
8

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
2

Chúng tôi đã vẽ các mẫu

# Plot 1-D gaussian
n = 1         # n number of independent 1-D gaussian 
m= 1000       # m points in 1-D gaussian 
f_random = np.random.normal[size=[n, m]] 
# more information about 'size': //www.sharpsightlabs.com/blog/numpy-random-normal/ 
#print[f_random.shape]

for i in range[n]:
    #sns.distplot[f_random[i], hist=True, rug=True, vertical=True, color="orange"]
    sns.distplot[f_random[i], hist=True, rug=True]

plt.title['1 random samples from a 1-D Gaussian distribution']
plt.xlabel['x']
plt.ylabel['P[x]']
plt.show[]
8 từ Quy trình Gaussian sau cùng với hàm trung bình để dự đoán và các điểm dữ liệu quan sát [tập dữ liệu huấn luyện]. Rõ ràng là tất cả các chức năng phía sau sụp đổ ở tất cả các điểm quan sát

Hạt nhân RBF chung

trong đó và là siêu tham số. [7]

Các chức năng hạt nhân phức tạp hơn có thể được chọn để phụ thuộc vào các tác vụ cụ thể. Thông tin thêm về việc chọn hàm kernel/hiệp phương sai cho quy trình Gaussian có thể được tìm thấy trong

# Plot 1-D gaussian
n = 1         # n number of independent 1-D gaussian 
m= 1000       # m points in 1-D gaussian 
f_random = np.random.normal[size=[n, m]] 
# more information about 'size': //www.sharpsightlabs.com/blog/numpy-random-normal/ 
#print[f_random.shape]

for i in range[n]:
    #sns.distplot[f_random[i], hist=True, rug=True, vertical=True, color="orange"]
    sns.distplot[f_random[i], hist=True, rug=True]

plt.title['1 random samples from a 1-D Gaussian distribution']
plt.xlabel['x']
plt.ylabel['P[x]']
plt.show[]
9 [8]

V. Gói GP

Có một số gói hoặc khung có sẵn để tiến hành Hồi quy quy trình Gaussian. Trong phần này, tôi sẽ tóm tắt ấn tượng ban đầu của mình sau khi thử một vài trong số chúng được viết bằng Python

Một cái nhẹ là sklearn. gaussian_process, việc triển khai đơn giản như ví dụ trên có thể được tiến hành nhanh chóng. Chỉ để hiểu thêm về triển khai GP sau ví dụ triển khai đơn giản ở trên. Nó quá mơ hồ để hiểu mục đích lý thuyết GP

GPR đắt về mặt tính toán trong không gian nhiều chiều [có hơn vài chục tính năng] do thực tế là nó sử dụng toàn bộ mẫu/tính năng để thực hiện dự đoán. Càng nhiều quan sát, càng cần nhiều tính toán để dự đoán. Một gói bao gồm các triển khai thuật toán hiện đại được ưu tiên để triển khai hiệu quả các tác vụ GPR phức tạp

Một trong những khung GP nổi tiếng nhất là GPy. GPy đã được phát triển khá hoàn thiện với các giải thích được ghi chép đầy đủ. GPy sử dụng NumPy để thực hiện tất cả các tính toán của nó. Đối với các tác vụ không yêu cầu tính toán nặng và triển khai thuật toán cập nhật, GPy là đủ và càng ổn định

Đối với các tác vụ GPR yêu cầu tính toán lớn hơn, khả năng tăng tốc GPU được ưu tiên đặc biệt. GPflow có nguồn gốc từ GPy và phần lớn giao diện tương tự. GPflow tận dụng TensorFlow làm chương trình phụ trợ tính toán của nó. Sự khác biệt kỹ thuật khác giữa khung GPy và GPflow là

GPyTorch là một khung khác cung cấp khả năng tăng tốc GPU thông qua PyTorch. Nó chứa các thuật toán GP rất cập nhật. Tương tự như GPflow, GPyTorch cung cấp độ dốc tự động. Vì vậy, các mô hình phức tạp như nhúng NN sâu vào mô hình GP có thể được phát triển dễ dàng hơn

Sau khi xem nhanh các tài liệu và triển khai các hướng dẫn GPR cơ bản của GPyTorch và GPflow, ấn tượng của tôi là sử dụng GPyTorch tự động hơn và GPflow có nhiều điều khiển hơn. Ấn tượng cũng có thể đến từ trải nghiệm sử dụng với TensorFlow và PyTorch

Kiểm tra và chạy các hướng dẫn GPR đã sửa đổi của tôi về

  • GPyTorch

  • GPflow

VI. Tóm lược

Một quy trình Gaussian [GP] là một phân phối xác suất trên các hàm có thể phù hợp với một tập hợp các điểm. [1] GP là các mô hình phi tham số mô hình hóa hàm trực tiếp. Do đó, GP cung cấp một phân phối [với độ không chắc chắn] cho giá trị dự đoán thay vì chỉ một giá trị như dự đoán. Trong quá trình học tập của robot, việc định lượng độ không chắc chắn có thể cực kỳ có giá trị để đạt được một quá trình học tập hiệu quả. Các khu vực ít chắc chắn nhất nên được khám phá tiếp theo. Đây là ý tưởng chính đằng sau tối ưu hóa Bayesian. [9] Ngoài ra, kiến ​​thức và thông số kỹ thuật trước đó về hình dạng của mô hình có thể được thêm vào bằng cách chọn các chức năng hạt nhân khác nhau. [1] Các ưu tiên có thể được chỉ định dựa trên các tiêu chí bao gồm liệu mô hình có trơn tru hay không, liệu nó có thưa thớt không, liệu nó có thể thay đổi mạnh mẽ hay không và liệu nó có cần phải khác biệt hay không

Thêm từ

  1. Để đơn giản và dễ hiểu, tôi bỏ qua nhiều cuộc nói chuyện về toán học và kỹ thuật. Đọc hai chương đầu tiên của sách giáo khoa

    n = 1         # n number of independent 1-D gaussian 
    m= 1000       # m points in 1-D gaussian  
    f_random = np.random.normal[size=[n, m]]
    
    Xshow = np.linspace[0, 1, n].reshape[-1,1]   # n number test points in the range of [0, 1]
    
    plt.clf[]
    plt.plot[Xshow, f_random, 'o', linewidth=1, markersize=1, markeredgewidth=2]
    plt.xlabel['']
    plt.ylabel['']
    plt.show[]
    0 [] serveral lần để hiểu rõ về GPR. Chẳng hạn như **Hồi quy quá trình Gaussian là một tuyến tính mượt mà hơn. **

  2. Một trong những phần khó nhất để hiểu GP là phép chiếu ánh xạ giữa các không gian. Từ không gian đầu vào đến không gian [tính năng] tiềm ẩn và quay lại không gian đầu ra. Bạn có thể có một số cảm giác về không gian bằng cách đọc

    n = 1         # n number of independent 1-D gaussian 
    m= 1000       # m points in 1-D gaussian  
    f_random = np.random.normal[size=[n, m]]
    
    Xshow = np.linspace[0, 1, n].reshape[-1,1]   # n number test points in the range of [0, 1]
    
    plt.clf[]
    plt.plot[Xshow, f_random, 'o', linewidth=1, markersize=1, markeredgewidth=2]
    plt.xlabel['']
    plt.ylabel['']
    plt.show[]
    1

Thẩm quyền giải quyết

[1]C. e. Rasmussen và C. k. Tôi. Williams, quy trình Gaussian cho máy học. Nhà xuất bản MIT, 2006

[2] R. Turner, “Hướng dẫn ML. Quy trình Gaussian - YouTube,” 2017. [Trực tuyến]. Có sẵn. https. //www. youtube. com/watch?v=92-98SYOdlY&feature=emb_title

[3] Một. Ng, “Phân phối Gaussian đa biến - Đại học Stanford. Khóa học,” 2015. [Trực tuyến]. Có sẵn. https. //www. khóa học. org/learning/machine-learning/lecture/Cf8DF/multivariate-gaussian-distribution

[4] D. Lee, “Phân phối Gaussian đa biến - Đại học Pennsylvania. Khóa học,” 2017. [Trực tuyến]. Có sẵn. https. //www. khóa học. org/learning/robotics-learning/lecture/26CFf/1-3-1-multivariate-gaussian-distribution

[5] F. Dai, Machine Learning Cheat Sheet. Các phương trình và sơ đồ cổ điển trong học máy. 2017

[6] N. de Freitas, “Học máy - Giới thiệu về quy trình Gaussian - YouTube,” 2013. [Trực tuyến]. Có sẵn. https. //www. youtube. com/watch?v=4vGiHC35j9s&t=1424s

[7] Y. Shi, “Quá trình Gaussian, không hoàn toàn dành cho người mới bắt đầu,” 2019. [Trực tuyến]. Có sẵn. https. //yugeten. github. io/bài đăng/2019/09/GP/

[8] Đ. Duvenaud, “Sách dạy nấu ăn hạt nhân,” 2014. [Trực tuyến]. Có sẵn. https. //www. cs. toronto. edu/~duvenaud/sách dạy nấu ăn/

[9] Y. Gal, “Mô hình sâu của tôi không biết điều gì. ”, 2015. [Trực tuyến]. Có sẵn. http. // mlg. tiếng anh. cam. AC. anh/yarin/blog_3d801aa532c1ce. html

[10] J. Hensman, "Gaussian. " 2019. [Trực tuyến]. Có sẵn. https. //github. com/mlss-2019/slides/blob/master/gaussian_processes/presentation_links. md

[11] Z. Dai, "GPSS2019 - GPs hiệu quả về mặt tính toán" 2019. [Trực tuyến]. Có sẵn. https. //www. youtube. com/watch?list=PLZ_xn3EIbxZHoq8A3-2F4_rLyy61vkEpU&v=7mCfkIuNHYw

Chủ Đề