我们如何将新信息合并到 Dirichlet 先验分布中?

机器算法验证 贝叶斯 集成学习 狄利克雷分布
2022-03-22 03:34:44

我的问题是:我有一组预测变量,每个预测变量都会在一组类上产生分布。

我想做的是首先对这个标签分布的样子有一个非信息性的先验,然后用对集合中每个成员的预测来更新这个先验。

因此,我考虑使用非信息性 Dirichlet 先验,然后使用作为预测的每个样本分布对其进行更新。

我的问题是:这种方法是否有效,如果是,我将如何更新我的先验,以便随着更多样本的积累而变得更加明确?

1个回答

Dirichlet 先验是适当的先验,是多项分布之前的共轭。但是,将其应用于多项逻辑回归的输出似乎有点棘手,因为这种回归的输出是 softmax,而不是多项分布。但是,我们可以做的是从多项式中采样,其概率由 softmax 给出。

如果我们把它画成一个神经网络模型,它看起来像:

在此处输入图像描述

我们可以很容易地从中采样,在向前的方向上。如何处理向后的方向?我们可以使用 Kingma 的“自动编码变分贝叶斯”论文https://arxiv.org/abs/1312.6114中的重新参数化技巧,换句话说,我们将多项绘制建模为确定性映射,给定输入概率分布,并从标准高斯随机变量中抽取:

xout=g(xin,ϵ)

其中:ϵN(0,1)

所以,我们的网络变成:

在此处输入图像描述

因此,我们可以前向传播小批量数据示例,从标准正态分布中提取,并通过网络反向传播。这是相当标准的并且被广泛使用,例如上面的 Kingma VAE 论文。

一个细微的差别是,我们从多项分布中提取离散值,但 VAE 论文只处理连续实际输出的情况。不过最近有一篇论文,Gumbel技巧,https: //casmls.github.io/general/2017/02/01/GumbelSoftmax.html ,即https://arxiv.org/pdf/1611.01144v1.pdf,和https://arxiv.org/abs/1611.00712,它允许从离散的多项式论文中提取。

Gumbel 技巧公式给出以下输出分布:

pα,λ(x)=(n1)!λn1k=1n(αkxkλ1i=1nαixiλ)

这里的是各种类别的先验概率,您可以对其进行调整,以将您的初始分布推向您认为最初可以如何分布的分布。αk

因此,我们有一个模型:

  • 包含多项逻辑回归(线性层后跟 softmax)
  • 最后添加多项式采样步骤
  • 其中包括概率的先验分布
  • 可以使用随机梯度下降或类似方法进行训练

编辑:

所以,问题问:

“当我们对单个样本(来自一组学习者)进行多个预测(并且每个预测都可以是一个 softmax,如上所示)时,是否可以应用这种技术。” (见下面的评论)

所以:是的:)。这是。使用多任务学习之类的东西,例如http://www.cs.cornell.edu/~caruana/mlj97.pdfhttps://en.wikipedia.org/wiki/Multi-task_learning除了多任务学习有一个单一的网络和多个头。我们将有多个网络和一个头。

“头”包括一个提取层,它处理网络之间的“混合”。请注意,您需要在“学习者”和“混合”层之间建立非线性关系,例如 ReLU 或 tanh。

你暗示给每个“学习”它自己的多项式绘制,或者至少是softmax。总的来说,我认为先有混合层,然后是单个softmax和多项式绘制会更标准。这将产生最小的差异,因为更少的平局。(例如,您可以查看“variational dropout”论文,https://arxiv.org/abs/1506.02557,它明确地合并了多个随机抽取,以减少方差,他们称之为“局部重新参数化”的技术)

这样的网络看起来像:

在此处输入图像描述

那么它具有以下特点:

  • 可以包括一个或多个独立的学习者,每个学习者都有自己的参数
  • 可以包括输出类分布的先验
  • 将学习在不同的学习者之间进行混合

顺便注意,这不是组合学习者的唯一方法。我们还可以将它们组合成更多“高速公路”类型的方式,有点像 boosting,比如:

在此处输入图像描述

在最后一个网络中,每个学习者都学会解决迄今为止由网络引起的任何问题,而不是创建自己的相对独立的预测。这种方法可以很好地工作,即Boosting等。