我的问题是:我有一组预测变量,每个预测变量都会在一组类上产生分布。
我想做的是首先对这个标签分布的样子有一个非信息性的先验,然后用对集合中每个成员的预测来更新这个先验。
因此,我考虑使用非信息性 Dirichlet 先验,然后使用作为预测的每个样本分布对其进行更新。
我的问题是:这种方法是否有效,如果是,我将如何更新我的先验,以便随着更多样本的积累而变得更加明确?
我的问题是:我有一组预测变量,每个预测变量都会在一组类上产生分布。
我想做的是首先对这个标签分布的样子有一个非信息性的先验,然后用对集合中每个成员的预测来更新这个先验。
因此,我考虑使用非信息性 Dirichlet 先验,然后使用作为预测的每个样本分布对其进行更新。
我的问题是:这种方法是否有效,如果是,我将如何更新我的先验,以便随着更多样本的积累而变得更加明确?
Dirichlet 先验是适当的先验,是多项分布之前的共轭。但是,将其应用于多项逻辑回归的输出似乎有点棘手,因为这种回归的输出是 softmax,而不是多项分布。但是,我们可以做的是从多项式中采样,其概率由 softmax 给出。
如果我们把它画成一个神经网络模型,它看起来像:
我们可以很容易地从中采样,在向前的方向上。如何处理向后的方向?我们可以使用 Kingma 的“自动编码变分贝叶斯”论文https://arxiv.org/abs/1312.6114中的重新参数化技巧,换句话说,我们将多项绘制建模为确定性映射,给定输入概率分布,并从标准高斯随机变量中抽取:
其中:
所以,我们的网络变成:
因此,我们可以前向传播小批量数据示例,从标准正态分布中提取,并通过网络反向传播。这是相当标准的并且被广泛使用,例如上面的 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 技巧公式给出以下输出分布:
这里的是各种类别的先验概率,您可以对其进行调整,以将您的初始分布推向您认为最初可以如何分布的分布。
因此,我们有一个模型:
编辑:
所以,问题问:
“当我们对单个样本(来自一组学习者)进行多个预测(并且每个预测都可以是一个 softmax,如上所示)时,是否可以应用这种技术。” (见下面的评论)
所以:是的:)。这是。使用多任务学习之类的东西,例如http://www.cs.cornell.edu/~caruana/mlj97.pdf和https://en.wikipedia.org/wiki/Multi-task_learning。除了多任务学习有一个单一的网络和多个头。我们将有多个网络和一个头。
“头”包括一个提取层,它处理网络之间的“混合”。请注意,您需要在“学习者”和“混合”层之间建立非线性关系,例如 ReLU 或 tanh。
你暗示给每个“学习”它自己的多项式绘制,或者至少是softmax。总的来说,我认为先有混合层,然后是单个softmax和多项式绘制会更标准。这将产生最小的差异,因为更少的平局。(例如,您可以查看“variational dropout”论文,https://arxiv.org/abs/1506.02557,它明确地合并了多个随机抽取,以减少方差,他们称之为“局部重新参数化”的技术)
这样的网络看起来像:
那么它具有以下特点:
顺便注意,这不是组合学习者的唯一方法。我们还可以将它们组合成更多“高速公路”类型的方式,有点像 boosting,比如:
在最后一个网络中,每个学习者都学会解决迄今为止由网络引起的任何问题,而不是创建自己的相对独立的预测。这种方法可以很好地工作,即Boosting等。