2011年1月18日,星期二

机械突厥建模

有一篇不错的论文 Welinder等。等 在今年的NIPS上,关于建立Mechanical Turkers的统计模型的目的是为了更好地推断出监督学习算法通常使用的``地面事实''。啊哈!当我意识到自己一直在使用Mechanical Turk时,并没有对自己的工作进行深入思考,这一刻对我来说很重要。在下一次不得不使用Mechanical Turk的时候,我决心做得更好,而这个场合已经到来。

我的(子)问题基本上是根据某人的头像来确定该人的种族。可接受的选择是``黑色'',``白色'',``亚洲'',``西班牙裔'',``其他'',或者拒绝将照片视为不是真实人物的真实头像(例如任何数据集,我的生意都很有趣)。我制作了一个简单的图像标签为HIT,将5000张图像加载到Mechanical Turk中,并要求每个图像由5位唯一的工人进行标记。

事实证明,在过去的几年中,已经有多篇有关总体众包的论文,尤其是关于Mechanical Turk的论文。我将重点关注描述GLAD框架的早期论文。 怀特希尔(Whitehill)等等 其目的类似于Welinder等。等纸。这有三个原因。首先,我找到了Whitehill等。等容易理解并适应多类情况。其次,Whitehill等。等提供参考软件实现,在实现多类版本时可以用作有用的一致性检查。第三,Whitehill等人的一位作者。等本文是我的前顾问。

经验绩效,二元案例

尽管我的问题是多类的,但我还是决定从它的二进制版本开始,以建立直觉并测试参考实现。所以目前我将要讨论``这是黑人的照片吗?''
多数投票
下表总结了多数投票启发式方法的性能。 \ [
\ begin {array} {c | c | c | c}
\ mbox {标准}&\ mbox {正面标签}&\ mbox {误报}&\ mbox {累积标签} \\ \ hline
\ mbox {恰好是5之5}&\mbox{ 920 } &\mbox{ 0/100 } &\mbox{ 920 } \\
\ mbox {恰好是5中的4}&\mbox{ 460 } &\mbox{ 0/100 } &\mbox{ 1380 } \\
\ mbox {恰好是5中的3}&\mbox{ 221 } &\mbox{ 4/100 } &\mbox{ 1601 } \\
\ mbox {恰好是5中的2}&\mbox{ 41 } &\mbox{ 6/41 } &\mbox{ 1642 }
\ end {array}
\]对于误报列,我从相关集合中选择了100个随机示例,并手动为其打了标签。对于``5分之2''标准,我要求没有其他标签获得超过1个标签(严格来说,这要求访问原始的多类别评分而不是它们的二进制版本)。

总体上多数投票的表现不错。如果我坚持5分之4或更高,则误报的数量预计会很低。这是一张类似的表格,但要查找否定标签。 \ [
\ begin {array} {c | c | c | c}
\ mbox {标准}&\ mbox {负标签}&\ mbox {错误否定}&\ mbox {累积标签} \\ \ hline
\ mbox {完全是0之5}&\mbox{ 2849 } &\mbox{ 1/100 } &\mbox{ 2849 } \\
\ mbox {恰好是5之1}&\mbox{ 351 } &\mbox{ 6/50 } &\mbox{ 3200 }
\ end {array}
\]和以前一样,否定否定列实际上是我手动标记满足条件的子集。看起来高质量的负标签仅在``5分中的0分''级别可用。为正数选择``5中有4个或更多'',为负数选择``5中有0之多''时,正例与负例的比率大约为1:2。它还留下了771张未标记的图像,这意味着训练集中正例与负例的真实比例可能高达3:4,而最低为2:9。关于相对频率的错误会在分类器中表现出来,这是由于对这些数据进行训练而导致的,导致对假阴性或假阳性的偏见。
高兴
现在,对于GLAD估算策略,我使用了 可下载的参考实现。我尝试从$ p(Z = 1)$中选择与多数表决策略的覆盖点相对应的阈值。这是肯定标签的表格。 \ [
\ begin {array} {c | c | c | c}
\ mbox {标准}&\ mbox {正面标签}&\ mbox {误报}&\ mbox {累积标签} \\ \ hline
\ mbox {$ p(Z = 1)= 1 $}&\mbox{ 923 } &\mbox{ see below } &\mbox{ 923 } \\
$ 0.9869 \ leq p(Z = 1)< 1$ &\mbox{ 460 } &\mbox{ see below } &\mbox{ 1383 } \\
$ 0.6 \ leq p(Z = 1)< 0.9869$ &\mbox{ 219 } &\mbox{ see below } &\mbox{ 1602 } \\
$ 0.395 \ leq p(Z = 1)< 0.6$ &\mbox{ 41 } &\mbox{ 6/41 } &\mbox{ 1642 } \\
\ end {array}
\]设置为“正好5分之5”和“ $ p(Z = 1)= 1 $”是相同的
除了后者包含3个额外的图像。我发现检查了另外3张图像,它们都是真实的阳性结果。 ``正好是5中的4''和``$ 0.9869 \ leq p(Z = 1)''<1 $''相差13张图片(共26张),因此我手动标记了这些图片。所有这些都是真正的积极。 ``恰好5之3''和``$ 0.6 \ leq p(Z = 1)<0.9869 $''的设置共享201张普通图片,因此我手动标记了差异。 20张图片中有2张在``恰好5张照片中有3张''设置中为假阳性,而18张图片中有0张在``$ 0.6 \ leq p(Z = 1)''中是错误肯定<0.9869 $''集。 ``正好5分之2''设置和``$ 0.395 \ leq p(Z = 1)''<0.6 $''的设置仅共享13张普通图像,因此我在后者中标记了所有图像。假阳性率是相同的,即使在两组之间仅共享1个假阳性。

这是一张否定标签表。 \ [
\ begin {array} {c | c | c | c}
\ mbox {标准}&\ mbox {负标签}&\ mbox {错误否定}&\ mbox {累积标签} \\ \ hline
\ mbox {$ p(Z = 1)= 0 $}&\mbox{ 2850 } &\mbox{ see below } &\mbox{ 2850 } \\
\ mbox {$ 0< p (Z = 1) < 0.022$ } &\mbox{ 351 } &\mbox{ see below } &\mbox{ 3201 }
\ end {array}
\]设置“完全5分之0”和设置“ $ p(Z = 1)= 0 $”相同,除了后者包含一个额外的图像。我发现检查了多余的图像,这是一个真正的负面。设置为``5分之1''和``$ 0< p (Z = 1) <0.022 $''相差17张图片(总共34张),所以我手动为其添加了标签。 ``恰好5个中的1个''唯一性中有17个中有10个是假负数,而``$ 0''中有17个中有6个是假负数< p (Z = 1) <0.022 $''的唯一性是假阴性。

总体而言,GLAD策略显示该数据集在多数表决中略微提高了精确度。如果需要1601个阳性标签,那么GLAD估计将有7个假阳性,而多数投票的9个假阳性。同时,如果需要3200个否定标签,那么GLAD估计将有38个错误否定,占多数投票的42个。

泛化为多类

高兴 技术的核心是关于错误概率\ [
p(L_ {ij} = Z_j | \ alpha_i,\ beta_j)= \ frac {1} {1 + e ^ {-\ alpha_i \ beta_j}}
\]等效于假设形式为[[
p(L_ {ij} = k | Z_j = l,\ alpha_i,\ beta_j)\ prope e ^ {-\ alpha_i ^ {(k,l)} \ beta_j}:\; k,l \ in \ {0,1 \},
\]其中$ \ alpha_i ^ {(k,k)} = 0 $和$ \ alpha_i ^ {(k,l)} = \ alpha_i ^ {(l,k)} $。后者的对称性从本质上说,评估者同样有可能将负数与正数混淆,将正数与负数混淆,这是Welinder等人的假设。等放松。

混淆矩阵的公式表明对$ k $和$ l $的范围不仅限于$ 0 $和$ 1 $的多类情况的简单概括。我将对称性假设放在$ \ alpha $中,以便能够对每个评估者的偏见建模。尽管我无权访问此论文,但我怀疑此模型与由...提出的模型相同 戴维德和斯凯恩 1979年(显然是关于病历的错误:他们是否可以预见30年后将如何应用其模型?)。与原始GLAD一样,培训通过``贝叶斯EM''进行(请参阅 软件发布 下面)。

实际上,这是$ | K |。当存在$ | K | $标签时,每个评估者的(| K |-1)$参数,可能会使模型过于复杂。在我的数据集中,我的5000张图像中有167个工人,每个工人的平均评分为71。在我收集的25000个评分中,具有71个或更多评分的工人负责22960个。如果像这样的数字很典型,那么每个评估者肯定有更大的模型参数空间,因此对于二元基础事实,丢弃对称性假设和模型每个评估者的偏差大概总是有益的。

但是,当类$ | K | $变得非常大时,具有$ | K |如果没有其他假设,每个评估者的(| K |-1)$参数将无用。一种可能性是假设所有错误与 韦林德和佩罗纳,但这与我在数据中看到的错误模式不符。我怀疑在这一领域还有更多的论文空间,可以为多类观察详细说明有用的分层先验,其中每个评估者$ \ alpha $将通过总体水平估计混淆两个类的概率甚至具有特殊的混淆矩阵。我将把这种改进留给将来。 (但将来不会太远:我可以从抽查数据中得知,大多数工人正在犯同样的错误)。
经验表现
对于我的多类数据,我尝试了多数投票(5分之3)和GLAD的多类归纳。 \ [
\ begin {array} {c | c | c | c | c | c | c | c}
\ mbox {方法}&\mbox{ Asian } &\mbox{ Black } &\mbox{ Hispanic } &\mbox{ Other } &\mbox{ White } &\mbox{ Invalid } &\ mbox {没有标签} \\ \ hline
\ mbox {Multiclass 高兴 (all)}&\mbox{ 941 } &\mbox{ 1690 } &\mbox{ 490 } &\mbox{ 217 } &\mbox{ 914 } &\mbox{ 748 } &\mbox{ n/a } \\
\ mbox {多数投票}&\mbox{ 950 } &\mbox{ 1601 } &\mbox{ 137 } &\mbox{ 27 } &\mbox{ 818 } &\mbox{ 676 } &\mbox{ 793 } \\
\ mbox {多类GLAD(阈值)}&\mbox{ 724 } &\mbox{ 1599 } &\mbox{ 325 } &\mbox{ 148 } &\mbox{ 794 } &\mbox{ 617 } &\mbox{ 793 } \\
\ mbox {MV} \ bigcap \ mbox {M-GLAD(阈值)}&\mbox{ 686 } &\mbox{ 1579 } &\mbox{ 115 } &\mbox{ 27 } &\mbox{ 742 } &\mbox{ 586 } &\mbox{ 423 }
\ end {array}
\]除非3位评分者同意,否则多数投票无法分配标签,从而导致793张图像未分配标签。对于Multiclass 高兴 (阈值),我选择最小标签概率为0.8461,以便分配带有该标签的图像。这导致未分配相同数量的图像标签。我还强迫Multiclass 高兴 为每个图像分配标签,结果表明,与标签置信度高的图像相比,标签置信度较低的图像上的标签``黑色''的可能性较小。

对于每个标签,我随机抽取了由该标签专门通过多类GLAD(阈值)或多数表决给出的图像样本(即,我忽略了两种算法都分配了相同标签的图像)。我手动标记了这些标记,以便评估差异集上的错误率。 \ [
\ begin {array} {c | c | c | c | c | c | c | c}
\ mbox {标签}&\ Delta \ mbox {MV错误率}&\ Delta \ mbox {M-GLAD错误率} \\ \ hline
\ mbox {亚洲}&\mbox{ 1/38 } &\mbox{ 1/38 } \\
\ mbox {黑色}&\mbox{ 4/22 } &\mbox{ 1/20 } \\
\ mbox {西班牙文}&\mbox{ 15/22 } &\mbox{ 18/22 } \\
\ mbox {白色}&\mbox{ 11/20 } &\mbox{ 6/20 } \\
\ mbox {其他}&\mbox{ n/a } &\mbox{ 10/20 }
\ end {array}
\]总体而言,对于Mechanical Turk社区来说,区分西班牙裔和亚裔是非常困难的(在某些情况下,我只能做得更好,因为我可以访问与照片相关的辅助信息)。由于“多数投票”分配的西班牙裔标签较少,并且差异标签样本的错误率较低,因此做得更好。这可能是Mechanical Turkers生成模型的``夹紧''功能的良好应用,其中手动标记语料库的子集会将隐藏变量转换为已知变量,并有助于确定评估者的参数。特别是,我应该实施夹紧,然后手动标记由Multiclass 高兴 标记为西班牙裔的图像的子集。

在Mechanical Turk社区中,很难区分白人和西班牙裔以及白人和亚洲人。由于多数投票将分配更多这些标签,并且差异标签样本的错误率更高,因此做得更糟。

多类GLAD在多数票投票次数的严格超集上分配``其他''标签。此处的错误率非常高:虽然有很多阿拉伯人使用此标签,但也有很多照片最好分配给四个主要标签之一。

在实践中,由于我将这些标签用作有监督学习问题中的训练数据,因此我现在不必做出离散的决定。相反,我可以采用每个图像的$ p(Z = k)$向量,并使用它构建一个成本敏感的多类分类实例。


软件发布


我正在发布 初始版本 我曾使用多类GLAD软件的Google Code来获得上述结果,希望其他人会发现它有用。在Google Code上,它被称为nominallabelextract,并且是 nincompoop 项目。

总体而言,上述多类GLAD扩展看起来很有希望,但绝对不能比多数投票更好,而且我仍然没有足够高质量的数据来应对我的原始问题。一个可能的方向是实施夹紧并做一些手工贴标签,以更好地估计容易混淆的标签(例如,西班牙裔和亚洲裔);另一个是在混淆矩阵上引入分层先验。如果我做这些事情,我将使Google代码保持最新状态。

5条评论:

  1. I'我很好奇AllLookSame数据库会带来什么样的结果。

    http://alllooksame.com/exam_room.php

    rr ...我不知道'记得记得要报名参加中国,日本和韩国的考试。

    回复删除
  2. If you want access to the code for the Dawid-Skene algorithm, I have implemented it and made it available 在 : http://code.google.com/p/get-another-label/

    An online demo is also available 在 http://qmturk.appspot.com/

    回复删除
  3. @Allen:您是个人意思还是机械特克加上标签回收算法?一世'd可能很糟糕。但是,将问题提交给Mechanical Turk会很有趣,尤其是如果工人具有地理资格,以便我们可以量化多少"all look the same"取决于位置。

    回复删除
  4. 高兴的实现是用于二进制分类。在哪里可以找到用于多类标签的令人高兴的代码。另外,我能否访问您从众包Twitter种族任务中获得的数据?非常感谢您的帮助。我是该领域的学生,偶然发现了该博客。竖起大拇指!!

    回复删除
    回覆
    1. At this point I would recommend playerpiano (http://code.google.com/p/nincompoop/downloads/list?can=2&q=playerpiano&colspec=Filename+Summary+Uploaded+ReleaseDate+Size+DownloadCount) which can handle multiclass and is reasonably well documented. What I'd really like to do is implement crowdsourced labels as a reduction in vw but I haven't had time.

      回复:种族分类,数据和HIT代码是我前雇主的财产。只需10,000美元和一点点Javascript工作,您就可以在mturk上的HIT上运行,这将产生大约10万个带有标签的配置文件,足以构成一个扎实的(英语)种族模型。祝好运!

      删除