2011年2月7日,星期一

有序值和机械特克:第二部分

在一个 以前的帖子,我概述了给定序标签的众包标签生成的生成模型。该模型包括建模图像难度($ \ alpha_j $)和评估者偏差($ \ tau_ {ik})$的参数,但与 我的名义标签模型 没有任何术语可以反映评分者的准确性。这是一个明显的遗漏,因为从直觉上讲,生成模型的一个目标是识别准确的评分者并为其标签赋予更高的权重。因此,我使用每个评估者($ \ lambda_i $)建模评估者准确性的附加参数以及超优先级的单个附加参数($ \ rho $)扩展了先前的模型。完整的模型如下所示:\ [
\ begin {aligned}
\ gamma_k&\ sim N(k-\ frac {1} {2},1),\\
\ tau_ {ik}&\ sim N(\ gamma_k,1),\\
\ kappa&\ sim N(1,1),\\
\ log \ alpha_j&\ sim N(\ kappa,1),\\
\ rho&\ sim N(0,1),\\
\ log \ lambda_i&\ sim N(\ rho,1),\\
P(L_ {ij} = 0 | Z_j,\ alpha_j,\ lambda_i,\ tau_i)&\ propto 1,\\
P(L_ {ij} = l | Z_j,\ alpha_j,\ lambda_i,\ tau_i)&\ propto \ exp \ left(\ sum_ {k = 1} ^ l \ alpha_j \ lambda_i(Z_j-\ tau_ {ik}) \对)。
\ end {aligned}
\]其中\ [
\ begin {array} {c | c}
\ mbox {变量}和\ mbox {说明} \\ \ hline
k,l和\ mbox {索引标签} \\
j&\ mbox {为图片建立索引} \\
i&\ mbox {为工作者编制索引} \\
\ lambda_i和\ mbox {每个员工的可靠性} \\
\ rho和\ mbox {每个员工的可靠性优先级} \\
\ alpha_j和\ mbox {每个图片的难度} \\
\ kappa和\ mbox {每张图片的难度过高的平均值} \\
\ tau_ {ik}和\ mbox {每个工人标签对阈值} \\
\ gamma_k和\ mbox {每个标签的阈值超均值} \\
L_ {ij}和\ mbox {观察到的由工作人员分配给图像的标签} \\
Z_j和\ mbox {与图片关联的未知真实标签}
\ end {array}
\]最新发布 有序标签提取nincompoop 实现上述模型。

好的,因此模型有所不同,但是更好吗?为了评估这一点,我手工标记了100张图像。这使我意识到这项任务有多么困难。在完成前一个任务(种族识别)后,我觉得如果我花时间在每个示例上仔细研究与照片相关的信息,我将非常准确。但是,根据年龄估算,我觉得即使给出了完整的信息,我仍然只是在猜测。尽管如此,我可能比典型的众包工作者更关心我,我当然花了更多时间,并且跳过了我认为确实很困难的实例。因此,我的手部标签并不完美,但它们相当不错。

这是生成模型的两个版本的堆叠方式,一个来自上一篇文章(没有建模评分器精度$ \ lambda $)和一个上述版本。我还针对奥林匹克评判算法进行了测试,该算法类似于多数投票者对有序变量的投票:最高和最低值将被丢弃,其余值将被平均。由于我正在分类,因此在求平均值后,我将最接近的标签作为类别(例如2.4 = 2、2.6 = 3)。 \ [
\ begin {array} {c | c | c}
\ mbox {算法}&\ mbox {同意我}&\ mbox {不同意} \\ \ hline
\ mbox {奥林匹克评委}&48&51 \\
\ mbox {序号,否} \ lambda&66&34 \\
\ mbox {序号,}} \ lambda&72&28 \\
\ end {array}
\]请注意,奥林匹克裁判的启发式方法有时无法产生标签(如果评分低于3),因此总计不等于100。

我没有在上面的比较中使用夹紧,即我没有将生成的真实标签告知生成模型(尽管我在ordinallabelextract中实现了夹紧)。尽管如此,生成模型的行为更像我,而带有$ \ lambda $的更复杂的生成模型的行为最像我。如果众包的目的是付钱给人们制作与我自己制作的标签相同的标签,那么生成模型绝对是一个胜利。另外,此时我无需做出实际的分类决策:我可以采用生成模型输出的$ p(Z_j)$向量,并将其用于训练成本敏感的多类分类器。这种表示基本事实不确定性的能力是生成模型相对于简单启发法的优势。

2011年2月4日,星期五

有序值和机械特克

是时候使用Mechanical Turk获得更多乐趣了。今天,我有兴趣通过照片和一些相关信息来估算人们的年龄。由于这最终与广告相关,因此我并不关心它们的确切年龄,而是将它们放在几个年龄段中,例如15、15至19岁以下,等等。我可以考虑将这些存储桶分为一组隐藏标签并使用在 以前的帖子 估计隐藏的标签。但是,这忽略了标签的结构:标签的自然整体排序很自然,这很可能与工作人员所犯错误的类型有关。用统计学的话来说 测量水平,标签不仅是名义上的,而且是顺序上的。

建模工人为实例分配特定标签的可能性的自然起点是 多模型Rasch模型,\ [
\ begin {aligned}
P (L_{ij} = l > 0 | \beta_j, \tau_i) &= \frac{\exp (\sum_{k=1}^l (\beta_j - \tau_{ik}))}{1 + \sum_{x=1}^{|K|} \exp (\sum_{k=1}^x (\beta_j - \tau_{ik}))}, \\
P(L_ {ij} = l = 0 | \ beta_j,\ tau_i)&= \ frac {1} {1 + \ sum_ {x = 1} ^ {| K |} \ exp(\ sum_ {k = 1} ^ x(\ beta_j-\ tau_ {ik}))}。
\ end {aligned}
\]这里,$ \ beta_j $是与图像关联的标量潜在值,而$ \ tau_i $是与每个工作程序关联的潜在值的向量。当$ \ beta_j = \ tau_ {ik} $等于$ k $时,工人同样有可能分配标签$(k-1)$和$ k $(除了也有可能分配其他标签)。尽管该模型没有强制单调增加$ \ tau_ {ik} $,但如果不对阈值进行排序,这是工作人员不一致的迹象。例如,这可以用于识别对抗性工作人员并拒绝其工作。

Polytomous Rasch would be a great choice when the latent space is fundamentally unobservable. For instance, if I were asking Mechanical Turk to rate people's 在 tractiveness, I wouldn't care much about the magnitudes of the latent variables $\beta_j$, only their relative order, deciles, etc. After all there is no objective sense in which someone is actually ``a 7''. However in my case there is an actual true age associated with the subject of each photo and using polytomous Rasch directly would leave me with the problem of relating the scalar latent value $\beta_j$ to the true age bucket $Z_j$ (which so far does not appear 在里面 likelihood term 在 all). To circumvent this problem I'll force the relationship between the two, $\beta_j = \alpha_j Z_j$, where $\alpha_j > 0$ is a per-image scaling parameter. I'll scale the $\tau$ by the same $\alpha_j$ to ease the prior specification, in which case $\alpha_j$ is essentially an image difficulty parameter. Now my label likelihood is given by \[
\ begin {aligned}
P (L_{ij} = l > 0 | Z_j, \alpha_j, \tau_i) &= \frac{\exp \left( \sum_{k=1}^l \alpha_j (Z_j - \tau_{ik}) \right)}{1 + \sum_{x=1}^{|K|} \exp \left( \sum_{k=1}^x \alpha_j (Z_j - \tau_{ik}) \right)}, \\
P(L_ {ij} = l = 0 | Z_j,\ alpha_j,\ tau_i)&= \ frac {1} {1 + \ sum_ {x = 1} ^ {| K |} \ exp \ left(\ sum_ { k = 1} ^ x \ alpha_j(Z_j-\ tau_ {ik})\ right)}。
\ end {aligned}
\]现在我可以重用相同的策略 标称提取物,在E步骤中优化$ Z_j $并
M步骤中的其他参数。我还将介绍一个高于$ \ tau $和$ \ alpha $的hyperprior,其原因类似于名义情况。完整的模型如下所示:\ [
\ begin {aligned}
\ gamma_k&\ sim N(k-\ frac {1} {2},1),\\
\ tau_ {ik}&\ sim N(\ gamma_k,1),\\
\ kappa&\ sim N(1,1),\\
\ log \ alpha_j&\ sim N(\ kappa,1),\\
P(L_ {ij} = l | Z_j,\ alpha_j,\ tau_i)&\ propto \ exp \ left(\ sum_ {k = 1} ^ l \ alpha_j(Z_j-\ tau_ {ik})\ right)。
\ end {aligned}
\]上一学期的$ 1/2 $是因为阈值是标签发出概率在$(k-1)$和$ k $之间相等的位置。

比较我用来提取名义标签的模型中的参数数量与该模型中的序列标签的参数数量是很有趣的。如果有$ | I | $个评估者,$ | J | $个图像和$ | K | $个标签,则名义模型具有$ O(| I | | K ^ 2 | + | J |)$个参数,而顺序模型具有$ O(| I | | K | + | J |)$参数。参数的减少是基于这样的假设,即答案的总排序对评估者很重要,并且会影响他们可能犯的错误。

我还没有解决一个剩下的问题,我对此感到不满意。在任何数据集中,总会有垃圾,因此我想给Mechanical Turkers一个“我不知道”的选项。当将标签发射建模为标称时,这只是另一个答案,但是当将标签建模为标称时,这是一个问题,因为该答案无法与其他答案进行比较。我怀疑有一种方法可以扩展上述模型,以便在标签空间中添加一个不参与订购的附加标签,但是目前,我只是丢弃工人选择“我不知道”的所有等级。如果每个工作人员都说“我不知道”,那么我将最终获得该图像标签的先验分布,并且如果某些工作人员说“我不知道”,那将导致标签的后验分布成为因此,我认为这是合理的,但是当我尝试使用标签来训练分类器时,我会看到。

我将上述模型实现为 有序标签提取 在里面 nincompoop 项目。