当前位置: 首页 > news >正文

直播网站创做人才网站开发

直播网站创做,人才网站开发,做神马网站快速排名,自己注册公司有什么弊端高斯过程其在回归任务中的应用我们都很熟悉了#xff0c;但是我们一般介绍的都是针对单个任务的#xff0c;也就是单个输出。本文我们将讨论扩展到多任务gp#xff0c;强调它们的好处和实际实现。 本文将介绍如何通过共区域化的内在模型(ICM)和共区域化的线性模型(LMC)但是我们一般介绍的都是针对单个任务的也就是单个输出。本文我们将讨论扩展到多任务gp强调它们的好处和实际实现。 本文将介绍如何通过共区域化的内在模型(ICM)和共区域化的线性模型(LMC)使用高斯过程对多个相关输出进行建模。 多任务高斯过程 高斯过程是回归和分类任务中的一个强大工具提供了一种非参数方式来定义函数的分布。当处理多个相关输出时多任务高斯过程可以模拟这些任务之间的依赖关系从而带来更好的泛化和预测效果。 数学上高斯过程被定义为一组随机变量其中任何有限数量的变量都具有联合高斯分布。对于一组输入点 X相应的输出值 f(X) 是联合高斯分布的 其中 m(X) 是均值函数k(X, X) 是协方差矩阵。 在多任务环境中目标是建模函数 f: X → R^T这样我们就有 T 个输出或任务f_t(X) 对于 t 1, …, T。这意味着均值函数是 m: X → R^T核函数是 k: X × X → R^{T × T}。 我们如何模拟这些任务之间的相关性 独立多任务高斯过程 一个简单的独立多输出高斯过程模型将每个任务独立建模不考虑任务之间的任何相关性。在这种情况下每个任务都有自己的高斯过程具有自己的均值和协方差函数。数学上可以表达为 这使得协方差矩阵 k(x, x) 是块对角形的即 diag(k_1(x, x), …, k_T(x, x))。 这种方法没有利用任务之间的共享信息可能导致性能不佳尤其是当某些任务的数据有限时。 Intrinsic model of coregionalizationICM ICM共区域化的内在模型方法通过引入核心区域化矩阵 (B) 来推广独立多输出高斯过程该矩阵模型化任务之间的相关性。ICM方法中的协方差函数定义如下 其中 k_input是在输入空间上定义的协方差函数例如平方指数核而 B ∈ R^{T × T} 是捕捉任务特定协方差的核心区域化矩阵。矩阵 (B) 通常参数化为 (B W W^T)其中W ∈ R^{T × r*}* 且 ® 是核心区域化矩阵的秩。这确保了核函数是半正定的。 ICM方法可以学习任务之间的共享结构。任务之间的皮尔逊相关系数可以表示为 Linear model of coregionalization (LMC) 另一种常见的方法是LMC线性核心区域化模型模型它通过允许更多种类的输入核来扩展ICM。在LMC模型中协方差函数定义为 其中 (Q) 是基核的数量k_input^q 是基核而 (B_q) 是每个基核的核心区域化矩阵。通过结合多个基核这个模型可以捕捉任务之间更复杂的相关性。 我们可以通过设置 (Q1) 来恢复ICM模型。或者说ICM是Q1的LMC模型 噪声建模 在多任务高斯过程中我们需要考虑一个多输出似然函数该函数为每个任务模型化噪声。 标准的似然函数通常是多维高斯似然可以表示为 其中 (y) 是观测输出(f(x)) 是潜在函数Sigma是噪声协方差矩阵。 这里的灵活性在于噪声协方差矩阵的选择它可以是对角线Σdiag(σ12,…,σT2)每个任务独立噪声或完整任务间相关噪声。 后者通常表示为 ΣLLT其中 L∈RT×r且 r是噪声协方差矩阵的秩。这允许捕捉不同任务的噪声项之间的相关性。 最终包含噪声的协方巧矩阵则由以下给出 其中 (K) 是没有噪声的协方差矩阵(I) 是单位矩阵⊗表示克罗内克乘积以便将噪声项添加到协方差矩阵的对角块中。 PyTorch实现 我们上面介绍了多任务的高斯过程的数学原理下面开使用’ GPyTorch 与ICM内核实现多任务GP的示例。 首先需要安装所需的软件包包括’ Torch ’ GPyTorch ’ matplotlib ‘和’ seaborn ’ numpy 。 %pip install torch gpytorch matplotlib seaborn numpy pandasimport torchimport gpytorchfrom matplotlib import pyplot as pltimport numpy as npimport seaborn as snsimport pandas as pd然后定义多任务GP模型。使用ICM内核(秩r1)来捕获任务之间的相关性。 我们为两个任务(正弦和移位正弦)生成合成的噪声训练数据以便有相关的输出。 噪声协方差矩阵为 其中σ²1 σ²2 0.1²ρ 0.3。 最后我们通过绘制每个任务的平均预测和置信区间来训练模型并评估其性能。 # Define the kernel with coregionalizationclass MultitaskGPModel(gpytorch.models.ExactGP):def __init__(self, train_x, train_y, likelihood, num_tasks):super(MultitaskGPModel, self).__init__(train_x, train_y, likelihood)self.mean_module gpytorch.means.MultitaskMean(gpytorch.means.ConstantMean(), num_tasksnum_tasks)self.covar_module gpytorch.kernels.MultitaskKernel(gpytorch.kernels.RBFKernel(), num_tasksnum_tasks, rank1)def forward(self, x):mean_x self.mean_module(x)covar_x self.covar_module(x)return gpytorch.distributions.MultitaskMultivariateNormal(mean_x, covar_x)# Training dataf1 lambda x: torch.sin(x * (2 * torch.pi))f2 lambda x: torch.sin((x - 0.1) * (2 * torch.pi))train_x torch.linspace(0, 1, 10)train_y torch.stack([f1(train_x),f2(train_x)]).T# Define the noise covariance matrix with correlation 0.3sigma2 0.1**2Sigma torch.tensor([[sigma2, 0.3 * sigma2], [0.3 * sigma2, sigma2]])# Add noise to the training datatrain_y torch.tensor(np.random.multivariate_normal(mean[0,0], covSigma, sizelen(train_x)))# Model and likelihoodnum_tasks 2likelihood gpytorch.likelihoods.MultitaskGaussianLikelihood(num_tasksnum_tasks, rank1)model MultitaskGPModel(train_x, train_y, likelihood, num_tasks)# Training the modelmodel.train()likelihood.train()optimizer torch.optim.Adam(model.parameters(), lr0.1)mll gpytorch.mlls.ExactMarginalLogLikelihood(likelihood, model)scheduler torch.optim.lr_scheduler.StepLR(optimizer, step_size50, gamma0.5)num_iter 500for i in range(num_iter):optimizer.zero_grad()output model(train_x)loss -mll(output, train_y)loss.backward()optimizer.step()scheduler.step()# Evaluationmodel.eval()likelihood.eval()test_x torch.linspace(0, 1, 100)with torch.no_grad(), gpytorch.settings.fast_pred_var():pred_multi likelihood(model(test_x))# Plot predictionsfig, ax plt.subplots()colors [blue, red]for i in range(num_tasks):ax.plot(test_x, pred_multi.mean[:, i], labelfMean prediction (Task {i1}), colorcolors[i])ax.plot(test_x, [f1(test_x), f2(test_x)][i], linestyle--, labelfTrue function (Task {i1}))lower pred_multi.confidence_region()[0][:, i].detach().numpy()upper pred_multi.confidence_region()[1][:, i].detach().numpy()ax.fill_between(test_x,lower,upper,alpha0.2,labelfConfidence interval (Task {i1}),colorcolors[i])ax.scatter(train_x, train_y[:, 0], colorblack, labelfTraining data (Task 1))ax.scatter(train_x, train_y[:, 1], colorgray, labelfTraining data (Task 2))ax.set_title(Multitask GP with ICM)ax.legend(loclower center, bbox_to_anchor(0.5, -0.2),ncol3, fancyboxTrue)在使用 GPyTorch时通过使用 MultitaskMean、 MultitaskKernel和 MultitaskGaussianLikelihood类ICM模型的实现非常简单。这些类可以处理多任务结构、噪声和核心区域化矩阵允许我们专注于模型定义和训练。 训练的循环也与标准高斯过程类似以负边际对数似然作为损失函数并使用优化器来更新模型参数。 在训练过程中添加了一个调度器来降低学习率这可以帮助稳定优化过程。 W model.covar_module.task_covar_module.covar_factorB W W.Tfig, ax plt.subplots()sns.heatmap(B.detach().numpy(), annotTrue, axax, cbarFalse, squareTrue)ax.set_xticklabels([Task 1, Task 2])ax.set_yticklabels([Task 1, Task 2])ax.set_title(Coregionalization matrix B)fig.show()L model.likelihood.task_noise_covar_factor.detach().numpy()Sigma L L.Tfig, ax plt.subplots()sns.heatmap(Sigma, annotTrue, axax, cbarFalse, squareTrue)ax.set_xticklabels([Task 1, Task 2])ax.set_yticklabels([Task 1, Task 2])ax.set_title(Noise covariance matrix)fig.show()下面的图展示了模型学习的核心区域化矩阵 B 以及噪声协方差矩阵 Σ。 这张图捕捉了任务之间的相关性。如我们所见B 的非对角线元素是正的。 这个图代表每个任务的噪声水平。注意到模型已经正确学习了噪声相关性。 比较 为了突出使用ICM方法对相关输出建模的优势我们可以将其与独立处理每个任务、忽略任务之间任何潜在相关性的模型进行比较。 为每个任务定义一个单独的GP训练它们并在测试数据上评估它们的性能。 class IndependentGPModel(gpytorch.models.ExactGP):def __init__(self, train_x, train_y, likelihood):super(IndependentGPModel, self).__init__(train_x, train_y, likelihood)self.mean_module gpytorch.means.ConstantMean()self.covar_module gpytorch.kernels.ScaleKernel(gpytorch.kernels.RBFKernel())def forward(self, x):mean_x self.mean_module(x)covar_x self.covar_module(x)return gpytorch.distributions.MultivariateNormal(mean_x, covar_x)# Create models and likelihoods for each tasklikelihoods [gpytorch.likelihoods.GaussianLikelihood() for _ in range(num_tasks)]models [IndependentGPModel(train_x, train_y[:, i], likelihoods[i]) for i in range(num_tasks)]# Training the independent modelsfor i, (model, likelihood) in enumerate(zip(models, likelihoods)):model.train()likelihood.train()optimizer torch.optim.Adam(model.parameters(), lr0.1)mll gpytorch.mlls.ExactMarginalLogLikelihood(likelihood, model)scheduler torch.optim.lr_scheduler.StepLR(optimizer, step_size50, gamma0.5)for _ in range(num_iter):optimizer.zero_grad()output model(train_x)loss -mll(output, train_y[:, i])loss.backward()optimizer.step()scheduler.step()# Evaluationfor model, likelihood in zip(models, likelihoods):model.eval()likelihood.eval()with torch.no_grad(), gpytorch.settings.fast_pred_var():pred_inde [likelihood(model(test_x)) for model, likelihood in zip(models, likelihoods)]# Plot predictionsfig, ax plt.subplots()for i in range(num_tasks):ax.plot(test_x, pred_inde[i].mean, labelfMean prediction (Task {i1}), colorcolors[i])ax.plot(test_x, [f1(test_x), f2(test_x)][i], linestyle--, labelfTrue function (Task {i1}))lower pred_inde[i].confidence_region()[0]upper pred_inde[i].confidence_region()[1]ax.fill_between(test_x,lower,upper,alpha0.2,labelfConfidence interval (Task {i1}),colorcolors[i])ax.scatter(train_x, train_y[:, 0], colorblack, labelTraining data (Task 1))ax.scatter(train_x, train_y[:, 1], colorgray, labelTraining data (Task 2))ax.set_title(Independent GPs)ax.legend(loclower center, bbox_to_anchor(0.5, -0.2),ncol3, fancyboxTrue)在性能方面比较多任务GP与ICM和独立GP在测试数据上预测的均方误差(MSE)。 mean_multi pred_multi.mean.numpy()mean_inde np.stack([pred.mean.numpy() for pred in pred_inde]).Ttest_y torch.stack([f1(test_x), f2(test_x)]).T.numpy()MSE_multi np.mean((mean_multi - test_y) ** 2)MSE_inde np.mean((mean_inde - test_y) ** 2)df pd.DataFrame({Model: [ICM, Independent],MSE: [MSE_multi, MSE_inde]})df可以看到由于共区域化矩阵学习到的共享结构ICM在MSE方面略优于独立gp。当处理更复杂的任务或有限的数据时这种改进可能更为显著。 在独立GP的场景中每个GP从一个较小的10个点的数据集中学习这可能会导致过拟合或次优泛化。具有ICM的多任务GP使用所有20个点来学习指数核参数的平方。这种共享信息有助于改进对这两个任务的预测。 https://avoid.overfit.cn/post/f804e93bd5dd4c4ab9ede5bf1bc9b6c8 作者Andrea Ruglioni
http://www.hkea.cn/news/14532053/

相关文章:

  • 石家庄做网站科技公司开鲁网站seo转接
  • 交友深圳网站建设html网站地图制作
  • 西宁网站设计制作网站服务器要多少钱
  • 企业网站维护国外免费iphone网站
  • 质量检测中心培训网站做网站去哪里做好
  • 摄影网站首页设计电子商城网站建设报告
  • 分类信息系统网站模板网站建设需要提供的资料文档
  • wordpress页面模板位置优化大师软件大全
  • 网站建设会议记录如何改变网站首页栏目
  • 企业网站建设成本微信开放平台小程序
  • 网站备案证书在哪里下载潍坊seo网站推广
  • 衡水网站制作费用网站兼容所有浏览器
  • 手机网站设计公司只找亿企邦大良营销网站建设机构
  • 济南网站优化推广公司vs2017移动网站开发
  • 网站服务器 内存图书馆网站建设的意义
  • 分析某个网站建设长春市网站制作
  • 网站建立网络优化泉州最专业手机网站建设哪家好
  • 海外注册域名的网站好网站分析工具有哪些
  • 淘客网站如何做个人养老金
  • 魔方 网站苏州网站制作开发公司
  • 网站建设珠江摩尔王占山事迹
  • 吉林平台网站建设多少钱用jsp做网站的难点
  • 电子商务网站建设管理答案网站开通告知书
  • 网站开发有哪几种语言国外ps网站
  • 正规网站建设咨询电话wordpress个人展示
  • 新手做网站教程青岛建设集团建兴工程有限公司
  • 网站建设是怎么赚钱营销网站的成功案例
  • 网站的视频做gifwordpress 做值班表
  • 黑龙江建设网站网页网页设计班
  • 丹阳网站设计建设银行河北招聘网站