众包知识获取的预算任务调度

作者

Tao Han1,2, Hailong Sun1,2(B), Yangqiu Song3, Zizhe Wang1,2, Xudong Liu1,2
1State Key Laboratory of Software Development Environment
2School of Computer Science and Engineering, Beihang University, Beijing, China
3Department of Computer Science and Engineering,
Hong Kong University of Science and Technology, Clear Water Bay, Hong Kong
{hantao,sunhl,wangzz,liuxd}@act.buaa.edu.cn,yqsong@cse.ust.hk

摘要

知识获取(例如通过标签)是众包中最成功的应用之一。在实践中,通过众包收集尽可能具体的知识是非常有用的,因为如果我们有一个知识库,特异的知识可以很容易地被概括,但是从一般的知识中很难推断出具体的知识。同时,获得更具体知识的任务对工人来说可能更困难,因此需要更多的答案来推断高质量的结果。在预算有限的情况下,将工人分配到困难的任务将更有效地实现特异知识获取的目标。然而,现有的众包任务调度不能包含工人答案的特殊性。本文提出了一种预算有限的任务调度新框架,旨在为更具体的知识获取提供一种有效的解决方案。我们提出了一种新的标准来评估特异性相关答案的质量,并提出了结果推理算法,以在预算约束下聚合更具体的答案。我们已经使用真正的众包数据和平台实施了我们的框架,与现有方法相比,我们已经取得了显著的性能改进。

CCS CONCEPTS:Information systems→Crowdsourcing;

关键词:众包、任务调度、知识获取

1 介绍

众包[10]在学术界和工业界都受到越来越多的关注。已经有许多公共众包平台,如Amazon Mechanical Turk和CrowdFlower提供了一个劳动力市场,请求者雇用工人来处理各种任务。众包的核心问题之一是,众包工人并不总是可靠的。例如,一些工人可能由于缺乏专业知识而提供不正确的答案,在更糟的情况下,一些作弊者可能故意给出错误的答案。因此,请求者通常会从工人那里得到不可靠的任务答案。为了解决这个问题,请求者通常同时将相同的任务冗余地分配给一定数量的工人。然后根据推理算法对返回的答案进行汇总,如多数投票、DS(Dawid和Skene[5])、GLAD[18]、极小化极大熵[21、23]等。

大多数最先进的推理算法在聚合答案和正确标签之间使用最小的错误率来衡量有效性。直观地说,增加冗余可以降低错误率,Gao等人[7]给出经典DS模型下的上下界,该模型测量方法的极限,不管冗余度有多大。但是,更多的冗余任务会导致更多的成本。由于众包预算总是有限的,所以有必要合理分配预算。直观地说,较难的任务需要更多的冗余,而较容易的任务则需要更少的冗余。因此,我们需要对不同的任务进行适当的冗余,以达到低错误率和低成本的目的。我们称之为预算任务调度问题,在该问题中,有必要评估任务响应的质量,并在将任务调度给更多工人时动态考虑剩余的预算。在典型的预算任务调度问题中,请求者提交一组任务和一定数量的预算,调度程序通过决定在每个循环中运行哪些任务来逐步使用预算,直到预算用完。例如,khetan和oh[12]以及lahuti和hassibi[13]提出了一个众包任务调度,以在有限的预算内实现最小的错误率。

任务调度机制对于有效解决预算约束下的众包问题具有重要意义。然而,传统的任务调度方法只是以错误率为标准来估计任务的回答质量。对于知识获取任务,作为众包最常见的任务类型之一,仅仅用错误率来定义结果质量是不合适的。

以图像标记任务为例。一般来说,我们认为这样的任务是一个分类问题。然而,类在概念上可以被组织为一个具有上下关系的层次分类法。例如,如果图像中的对象是美国猎狐犬(walker hound),在传统的错误率视图中,猎狐犬(foxhound)或猎犬(hound)是一个错误类。但如图1所示,我们知道美国猎狐犬是猎狐犬的一种,而猎狐犬是猎犬的一种。因此,我们不能简单地将猎犬或猎狐犬视为不正确的结果。因此,结合对这种概念关系的认识,可以有效地提高对工人答案的评估。另一方面,在众包任务中,人们希望工人们能给标记特异的概念,而不是一般的概念。显然,美国猎狐犬是比上面例子中的其他两个标签更好的选择。这是因为,如果我们知道美国猎狐犬是猎狐犬的一种,我们可以很容易地将贴有美国猎狐犬标签的猎犬概括为猎狐犬,但我们不能将猎狐犬概括为美国猎狐犬。由于错误率不能用来衡量结果质量,因此现有的预算任务调度问题解决方案不能直接用于该方案。

图1:标签分类的示例
图1:标签分类的示例

在这项工作中,我们关注的是众包知识获取的预算任务调度(Budgeted Task Scheduling
for Crowdsourced Knowledge Acquisition ,BTSK
)。要解决BTSK问题,主要有两个挑战。第一个挑战是如何衡量推理方法的性能。为了解决这个挑战,我们定义了两个新的性能指标,包括命中率(hit rate)和一致率(coherence),与准确率(accuracy)一起测量推理结果质量。第二个挑战是如何估计每个任务的答案质量,以确定哪些任务应该分配给更多的工人进行处理。为此,我们设计了一个自适应的调度框架,可以自动确定哪些任务需要获取更多的标签,并且我们提供了基于二次形(Quadratic Form)的估计方法,可以利用标签之间的关系很好地评估答案的质量。同时,我们改进了现有的结果推理算法,将新的性能指标纳入到我们的框架中。然后,我们在CrowdFlower1中进行了一系列广泛的实际众包实验,并分析了工人在众包过程中的行为。我们还评估了改进的推理算法的性能,并与现有技术进行了比较。

我们的主要贡献如下。

  • 我们首先对众包知识获取问题的预算任务调度进行了形式化,并在此背景下定义了衡量结果质量的新标准。
  • 利用两种改进的推理算法和考虑标签间关系的二次型估计方法,设计了一个启发式模型来解决BTSK问题。
  • 我们进行了一组真实的众包实验,以证明标准的可靠性,并与最先进的方法相比,展示了我们方法的优势。

本文的其余部分组织如下。第2节描述了这项工作中所研究的问题,并提出了三个衡量聚集众包结果质量的新指标。在第3节中,我们介绍了我们的方法框架和三个核心组件。第4节描述了实验评估。在第5节中,我们分析了相关的工作,第6节结束了这项工作。

2 问题公式化

在本节中,我们首先制定了预算任务调度问题,然后介绍了两个新的性能指标。

2.1 预算任务调度

我们考虑一个典型的众包流程。请求者首先给出预算 B B B和需要标记的任务集 T = { t i ∣ i = 1 , 2 , . . . , n } \mathcal{T}=\{t_i|i=1,2,...,n\} T={tii=1,2,...,n}。然后将任务集发送到一个众包平台,该平台提供一个工人集 W = { w j ∣ j = 1 , 2 , . . . , m } \mathcal{W}=\{w_j|j=1,2,...,m\} W={wjj=1,2,...,m}。对于一个微任务 t i t_i ti,它需要由不同的工人标记 r r r次。这里 r r r被称为冗余,通常由请求者提供。如果工人 w j w_j wj从标签域集合 D = { x g ∣ g = 1 , 2 , . . . k } \mathcal{D}=\{x_g|g=1,2,...k\} D={xgg=1,2,...k}给任务 t i t_i ti一个标签 l i j l_{ij} lij,工人 w j wj wj将得到付款 p p p其中

(1) p = B r n . p=\frac{B}{rn}.\tag{1} p=rnB.(1)

当标签过程完成后,我们假设消耗所有预算,得到一个由冗余 r r r控制的矩阵 L r = ( l i j ) n × m \mathbf{L}_r=(l_{ij})_{n\times m} Lr=(lij)n×m,当 l i j l_{ij} lij没有定义时,我们用0填充标签矩阵。最后,利用函数 f : D n × m → D n f:D^{n\times m}\rightarrow D^n f:Dn×mDn,如多数投票法,推理出 ∀ t i ∈ T \forall t_i\in \mathcal{T} tiT的正确标签 y i y_i yi,其推理结果用 y ^ i \hat{y}_i y^i表示。后将结果集 Y ^ = ( y ^ 1 , y ^ 2 , … , y ^ n ) = f ( L r ) \hat{\mathbf{Y}}=(\hat{y}_1,\hat{y}_2,…,\hat{y}_n)=f(\mathbf{L}_r) Y^=(y^1,y^2,,y^n)=f(Lr)返回给请求者,我们通常使用错误率或准确率表示为 v a ( Y ^ , Y ) v_a(\hat{\mathbf{Y}},\mathbf{Y}) va(Y^,Y)作为性能指标来测量推断结果的质量。

然而,由于不同的任务具有不同的难度水平,因此为每个任务设置相同的冗余度 r r r对于预算消耗优化是不合理的。提出了预算任务调度问题:

定义1(预算任务调度问题)。我们用 T = { t i ∣ i = 1 , 2 , . . . , n } \mathcal{T}=\{t_i|i=1,2,...,n\} T={tii=1,2,...,n}表示大小为 n n n的任务集,用 W = { w j ∣ j = 1 , 2 , . . . , m } \mathcal{W}=\{w_j|j=1,2,...,m\} W={wjj=1,2,...,m}表示大小为 m m m的工人集,用 D = { x g ∣ g = 1 , 2 , . . . k } \mathcal{D}=\{x_g|g=1,2,...k\} D={xgg=1,2,...k}表示大小为 k k k的标签域。给定预算 B B B、每个标签的付款 p p p、推理方法函数 f ( ⋅ ) f(·) f()和推理性能度量函数 v ( ⋅ ) v(·) v(),预算任务调度任务是逐步获取标签矩阵 L R \mathbf{L_R} LR,确定冗余度 R ^ = { r ^ 1 , r ^ 2 , . . . , r ^ n } \hat{\mathbf{R}}=\{\hat{r}_1,\hat{r}_2,...,\hat{r}_n\} R^={r^1,r^2,...,r^n}以满足

(2) ∑ i = 1 n r ^ i = B p , \sum_{i=1}^n \hat{r}_i=\frac{B}{p},\tag{2} i=1nr^i=pB,(2)

其中

(3) R ^ = arg ⁡ max ⁡ R v ( f ( L R ) , Y ) . \hat{\mathbf{R}}=\mathop{\arg\max}\limits_R v(f(\mathbf{L_R}),\mathbf{Y}).\tag{3} R^=Rargmaxv(f(LR),Y).(3)

在实践中,不同激励方式下,不同任务的报酬是可变的,公式(2)应为 B = ∑ i j r ^ i p i j B=\sum_{ij}\hat{r}_ip_{ij} B=ijr^ipij。然而,大多数采用统一支付和激励方式的众包平台在不同情况下几乎没有一致性表现。因此,为了简单起见,我们在整个工作中使用统一的支付方案。

直观地说,较难的任务需要更大的冗余度。因此,预算任务调度问题本质上是估计任务的难度,然后为较难的任务设置更大的冗余度。但准确估计任务难度需要更多的标签,这将导致剩余的可访问冗余较少,这是预算任务调度问题的主要问题。此外,对于知识获取场景,如何定义“难”仍是一个问题。性能指标 v v v还需要一个适当的定义,这将在下一节中讨论。

2.2 性能指标

在典型的众包过程中,我们经常使用错误率/准确率作为推理性能度量。但是,当包含额外的知识时,这是不合适的。当可选标签具有上下关系(参见图1)时,在讨论之前,我们首先将分类树上的关系表示为一个二进制函数:

(4) M ( x g , x h ) = { 1 i f   x g = x h   o r   x g ∈ h y p e r n y m ( x h ) 0 o t h e r w i s e , M(x_g,x_h)= \left\{\begin{matrix} 1&if \ x_g=x_h \ or \ x_g\in hypernym(x_h)\\ 0& otherwise \end{matrix}\right.,\tag{4} M(xg,xh)={10if xg=xh or xghypernym(xh)otherwise,(4)

其中函数 h y p e r n y m ( ⋅ ) hypernym(·) hypernym()遵循参考文献[8]中的定义。在我们的BTSK问题中,例如在图1中,如果我们假设正确标签是“英国猎狐犬”,那么传统上只有工人提供的标签“英国猎狐犬”才被认为是正确的,并且所有其他标签都将被视为错误。实际上,“猎狐犬”这个标签并不是完全无用的,它与正确的“英国猎狐犬”这个标签在更高层次的概念上是一致的,因此仅仅把它当作一个错误是不合理的。针对BTSK问题的这一特点,我们提出了一种新的性能指标,即命中率(hit rate),用二元函数(4)来放宽精度(accuracy)准则。当一个标签是正确标签或正确标签的上级标签,我们说它是一个命中标签,可以是正确的。命中率标准的定义如下:

(5) v h ( Y ^ , Y ) = 1 n ∑ i = 1 n M ( y ^ i , y i ) . v_h(\hat{\mathbf{Y}},\mathbf{Y})=\frac{1}{n}\sum_{i=1}^nM(\hat{y}_i,y_i).\tag{5} vh(Y^,Y)=n1i=1nM(y^i,yi).(5)

然而,命中率并不能说明标签的好坏。对于知识获取,我们需要获得特异的知识。因此有必要确定特异性评分。直观地说,真值标签应该位于分类树的一个叶节点上,它具有最大的特异性得分。根据这种直觉,我们在下面定义了特异性得分(specificity score)。

(6) S ( x g ) = D ( x g ) D ( x g ) + H ( x g ) , S(x_g)=\frac{D(x_g)}{D(x_g)+H(x_g)},\tag{6} S(xg)=D(xg)+H(xg)D(xg),(6)

其中 D ( x g ) D(x_g) D(xg)是标签节点 x g x_g xg和根节点之间的长度,定义如下:

(7) D ( x g ) = { D ( φ ( x g ) ) + 1 i f   φ ( x g ) ≠ ∅ 1 o t h e r w i s e , D_(x_g)= \left\{\begin{matrix} D(\varphi(x_g))+1&if \ \varphi(x_g)\neq \emptyset\\ 1&otherwise \end{matrix}\right.,\tag{7} D(xg)={D(φ(xg))+11if φ(xg)̸=otherwise,(7)

其中, φ ( x g ) \varphi(x_g) φ(xg)是返回 x g x_g xg的父节点的函数; H ( x g ) H(x_g) H(xg) x g x_g xg x g x_g xg的下级标签之间的最大长度,定义为

(8) H ( x g ) = { max ⁡ x h ∈ ϕ ( x g ) H ( x h ) + 1 i f   ϕ ( x g ) ≠ ∅ 0 o t h e r w i s e , H(x_g)= \left\{\begin{matrix} \max_{x_h\in\phi(x_g)}H(x_h)+1&if\ \phi(x_g)\neq\emptyset\\ 0&otherwise \end{matrix}\right.,\tag{8} H(xg)={maxxhϕ(xg)H(xh)+10if ϕ(xg)̸=otherwise,(8)

其中 ϕ ( x g ) \phi(x_g) ϕ(xg)是返回 x g x_g xg的子集合的函数。

定理1。 ∀ x g ∈ D \forall x_g\in\mathcal{D} xgD,我们有 S ( x g ) ∈ ( 0 , 1 ] S(x_g)\in(0,1] S(xg)(0,1]。和 ∀ x h ∈ h y p e r n y m ( x g ) \forall x_h\in hypernym(x_g) xhhypernym(xg),我们有 S ( x h ) &lt; S ( x g ) S(x_h)&lt;S(x_g) S(xh)<S(xg)

证明。从函数 D ( ⋅ ) D(·) D() H ( ⋅ ) H(·) H()的定义来看,我们得到 ∀ x g ∈ D \forall x_g \in \mathcal{D} xgD D ( x g ) ≥ 1 D(x_g)\geq 1 D(xg)1 H ( x g ) ≥ 0 H(x_g)\geq 0 H(xg)0。根据公式6,我们可以很容易地证明 S ( x g ) ∈ ( 0 , 1 ] S(x_g)\in (0,1] S(xg)(0,1]。然后我们表示 ∀ x g ∈ D , φ ( x g ) = x g ′ \forall x_g \in\mathcal{D},\varphi(x_g)=x_{g&#x27;} xgD,φ(xg)=xg,我们得到 x g ∈ ϕ ( x g ′ ) x_g\in\phi(x_{g&#x27;}) xgϕ(xg)。根据定义,我们得到 D ( x g ′ ) &lt; D ( x g ) D(x_{g&#x27;})&lt;D(x_g) D(xg)<D(xg) H ( x g ′ ) &gt; H ( x g ) H(x_{g&#x27;})&gt;H(x_g) H(xg)>H(xg)。所以:

(9) S ( x g ′ ) = D ( x g ′ ) D ( x g ′ ) + H ( x g ′ ) &lt; D ( x g ′ ) D ( x g ′ ) + H ( x g ) &lt; D ( x g ) D ( x g ) + H ( x g ) = S ( x g ) . S(x_{g&#x27;})=\frac{D(x_{g&#x27;})}{D(x_{g&#x27;})+H(x_{g&#x27;})}&lt;\frac{D(x_{g&#x27;})}{D(x_{g&#x27;})+H(x_g)}\\ &lt;\frac{D(x_g)}{D(x_g)+H(x_g)}=S(x_g).\tag{9} S(xg)=D(xg)+H(xg)D(xg)<D(xg)+H(xg)D(xg)<D(xg)+H(xg)D(xg)=S(xg).(9)

它表示 S ( x g ′ ) &lt; S ( x g ) S(x_{g&#x27;})&lt;S(x_g) S(xg)<S(xg)。由于上级标签的传递性,我们有 ∀ x h ∈ h y p e r n y m ( x g ) \forall x_h \in hypernym(x_g) xhhypernym(xg) S ( x h ) &lt; S ( x g ) S(x_h)&lt;S(x_g) S(xh)<S(xg)

定理1中的性质对于描述特异性概念非常有用。根据特异性得分的定义,我们可以通过以下方法来测量标签 x g x_g xg与节点 x h x_h xh的匹配程度:

(10) M S ( x g , x h ) = { S ( x g ) / S ( x h ) i f   M ( x g , x h ) = 1 0 o t h e r w i s e , M_S(x_g,x_h)= \left\{\begin{matrix} S(x_g)/S(x_h)&amp; if \ M(x_g,x_h)=1\\ 0&amp;otherwise \end{matrix}\right.,\tag{10} MS(xg,xh)={S(xg)/S(xh)0if M(xg,xh)=1otherwise,(10)

同时,我们提出了一种新的推理方法的性能指标,称为一致率,定义如下:

(11) v c ( Y ^ , Y ) = 1 n ∑ i = 1 n M S ( y ^ i , y i ) . v_c(\hat{\mathbf{Y}},\mathbf{Y})=\frac{1}{n}\sum_{i=1}^n M_S(\hat{y}_i,y_i).\tag{11} vc(Y^,Y)=n1i=1nMS(y^i,yi).(11)

3 方法描述

在本节中,我们介绍了基于知识的迭代调度框架来处理BTSK问题。并分别阐述了质量评估、任务选择和结果推理三个关键问题。

3.1 基于知识的迭代调度框架

基于知识的迭代调度框架如图2所示。请求者首先向调度系统提交预算和未标记的任务。调度过程包括五个步骤:

  • 初始化: 用每个任务的最小冗余标签初始化调度程序。

  • 答案收集: 收集和存储众包员工的答案。

  • 质量评估: 在有预算的情况下评估收到的答案的质量。

  • 任务选择: 确定在下一次迭代中,哪些任务应进一步发送以获得更多标签。

  • 结果推断: 如果所有预算都用完了,通过汇总工人的答案来推断真相标签。

图2:基于知识的迭代调度框架
图2:基于知识的迭代调度框架

调度系统与众包平台交互。它们都注入了知识库,以捕获可替换标签之间的关系,帮助工人和调度系统更好地工作。众包调度框架的细节如算法1所示。输入的是总预算 B B B、每个标签的付款 p p p、任务集 T \mathcal{T} T、最小冗余数 r m i n r_{min} rmin、最大冗余数 r m a x r_{max} rmax、关系二进制函数 M M M(公式4)和参数范围 α \alpha α,调整另一次需要进行迭代的任务的比率以获得新的标签。输出是每个任务的正确标签的推断结果。首先,我们用每个任务的 r m i n r_{min} rmin个标签初始化状态 S \mathcal{S} S。然后我们执行迭代,直到预算用完。函数“QualityEstimation”是质量估计部分的实现,返回到估计分数向量 E \mathbf{E} E。函数“TaskSelection”是任务选择的实现,它返回任务集 T ( r ) \mathcal{T^{(r)}} T(r),以便在 r \mathcal{r} r次迭代中再获得一个标签。函数“Crowdsourcing”是众包平台获取标签的过程。函数“InputData””只是将众包平台的回答集 R ( r ) \mathcal{R^{(r)}} R(r)输入到状态模块 S r − 1 \mathcal{S}^{r-1} Sr1经过迭代后返回 S r \mathcal{S}^{r} Sr,函数“Inference”实现结果推理模块,为请求者生成最终结果。

算法1:基于知识的迭代调度
算法1:基于知识的迭代调度

3.2 质量评估

质量评估是计算每个任务的工人回答的质量。一个简单的想法是计算标签 l i j l_{ij} lij的权重 γ i j \gamma_{ij} γij,然后用加权和得到任务 t i t_i ti的估计分数:

(12) e i = ∑ j = 1 m γ i j . e_i=\sum_{j=1}^m\gamma_{ij}.\tag{12} ei=j=1mγij.(12)

考虑到特异性的测量,我们可以用特异性作为权重: γ i j S = S ( l i j ) \gamma_{ij}^S=S(l_{ij}) γijS=S(lij)。如果 l i j = 0 l_{ij}=0 lij=0,也就是说 w j w_j wj没有给 t i t_i ti加标签,我们设置 S ( l i j ) = 0 S(l_{ij})=0 S(lij)=0 γ i j S = 0 \gamma_{ij}^S=0 γijS=0。因此,我们可以得到任务 t i t_i ti的权重矢量 Γ i = ( γ i 1 , γ i 2 , . . . , γ i m ) \Gamma_i=(\gamma_{i1},\gamma_{i2},...,\gamma_{im}) Γi=(γi1γi2,...,γim)。同时,我们可以考虑工人对他们答案的信心: γ i j C = C i j \gamma_{ij}^C=C_{ij} γijC=Cij,其中 C i j C{ij} Cij表示工人 w j w_j wj对任务 t i t_i ti的置信度。无标签表示 C i j = 0 C_{ij}=0 Cij=0。然而,我们发现,工人倾向于给出高度具体的标签,而他们对此表示不太自信,这将在第4.1节中讨论。因此,我们可以将这两个因素结合起来得到权重: γ i j S C = S ( l i j ) C i j \gamma_{ij}^{SC}=S(l_{ij})C_{ij} γijSC=S(lij)Cij

在BTSK问题中,如果两个标签有上下关系,我们将它们视为推断特异标签的好象征。但是,如果两个标签位于分类树的两个分支中,如图1中所示的“小灵犬”(“Whippet”)和“猎犬”(“Walker hound”),则会使推理混淆。基于以上考虑,我们提出了基于二次型的估计得分。对于 ∀ t i ∈ T \forall t_i\in\mathcal{T} tiT定义矩阵 A ( i ) = ( a j j ′ i ) m × m \mathbf{A}^{(i)}=(a_{jj&#x27;}^i)_{m\times m} A(i)=(ajji)m×m,实现标签之间的关系:

(13) a j j ′ i = M ( l i j , l i j ′ ) , a_{jj&#x27;}^i=M(l_{ij},l_{ij&#x27;}),\tag{13} ajji=M(lij,lij),(13)

其中M(·,·)为公式(4)定义。然后我们得到 t i ∈ T t_i\in\mathcal{T} tiT的基于二次型的估计得分:

(14) e i = Γ i A ( i ) Γ i T , e_i=\Gamma_i\mathbf{A}^{(i)}\Gamma_i^T,\tag{14} ei=ΓiA(i)ΓiT,(14)

其中每个标签的权重是特异性和置信度的产物。通过这种方式,我们高度重视答案的质量,标签中包含了上下关系,可以很容易地揭示任务中的具体知识。

3.3 任务选择

在这一步中,我们需要确定哪些任务应该用于另一个众包的迭代。为此,我们要在为下一次迭代选择的任务数和处理所有任务的总迭代数之间进行权衡。然后引入一个控制参数 α \alpha α,使下一次迭代的规模为百分之 α \alpha α任务。算法2详细说明了如何使用 α \alpha α来控制它。

算法2:任务选择
算法2:任务选择
输入是来自评估模块的评估向量 E \mathbf{E} E、冗余向量 R \mathbf{R} R、最大冗余数 r m a x r_{max} rmax、范围 α \alpha α。输出是包含要进行另一次迭代的任务集 T \mathcal{T} TisTaskValid是找出哪个任务对于获得另一次迭代是有效的,除非它已经获得了 r m a x r_{max} rmax个标签。 N N N是另一次迭代的任务数量。在第6行中,我们将 N N N设置为 [ α n ] [\alpha n] [αn],并确保 N N N不超过有效任务的数量。然后在第7行中,我们确保在任何迭代中选择一个任务。最后,我们从任务集中选择质量分数最低的 N N N个任务。

3.4 结果推理

本模块的目的是利用多数投票、DS(Dawid和Skene[5])、GLAD [18]、极小化极大熵[21,23]和知情多数投票(Majority Voting With Knowledge,MWK)和具有外部知识的简单能力评估模型(SEEK)[8]等推理方法来推断正确标签。在第2.2节中,我们提出了特异性指标。一方面,高度特异的标签意味着错误标签的高风险;另一方面,较不特异的标签不能提供足够的知识,尽管它通常意味着高命中率。因此,我们有以下设计来改进最先进的方法。

3.4.1 MWK+

在MWK算法[8]中,每个标签的权重通过其上下义词来显示更具体的标签。我们设置了传导率系数 β ∈ [ 0 , 1 ] \beta\in[0,1] β[0,1]来调整算法3第7行所示的传输过程。在该算法中, M M M是公式(4)中定义的二元函数关系。传导率 β \beta β越大,获得特异标签的意愿就越大。特别是,当 β = 1 \beta=1 β=1时,它减少到MWK方法,当 β = 0 \beta=0 β=0时,它减少到多数投票方法或其变体[8]。

算法3:利用外部知识改进多数投票
算法3:利用外部知识改进多数投票

3.4.2 ProFull

我们还提出了一种概率推理算法,我们称之为ProFull。从概率的角度来看,正确标签的评估是基于标签上的后验概率。事实上,对于特异的任务,正确标签的概率应该分布在叶节点中。但在[8]中,标签域中的所有标签都是由工人给出的。因此会导致以下后果。例如,在图1中,正确标签是“美国猎狐犬”(“Walker hound”),两名工人贴上“猎狐犬”(“Foxhound”)标签,一名工人贴上“英国猎狐犬”(“English foxhound”)标签。工人们没揭示“美国猎狐犬”,所以“猎狐犬”是最好的标签。当然,如果我们能够得到完整的分类树,那么正确标签应该分布在叶节点中。因此,我们提出了一种基于标签完整分类树的概率方法。我们假设某个工人 w j w_j wj有一个命中率参数 π j \pi_j πj,这意味着标记一个标签有 w j w_j wj概率 π j \pi_j πj命中正确标签。标签 l i j l_{ij} lij覆盖正确标签概率公式如下:

(15) P ( l i j ∣ y i , π j ) = { π j / H ( y i ) i f   M ( l i j , y i ) = 1 ( 1 − π j ) / ( k − H ( y i ) ) i f   M ( l i j , y i ) = 0 . \mathbb{P}(l_{ij}|y_i,\pi_j)= \left\{\begin{matrix} \pi_j/H(y_i)&amp;if\ M(l_{ij},y_i)=1\\ (1-\pi_j)/(k-H(y_i))&amp;if\ M(l_{ij},y_i)=0 \end{matrix}\right..\tag{15} P(lijyi,πj)={πj/H(yi)(1πj)/(kH(yi))if M(lij,yi)=1if M(lij,yi)=0.(15)

然后我们用EM算法解决这个问题:

E-步骤:我们计算 ∀ y i ∈ D \forall yi \in\mathcal{D} yiD的概率 P ( y i ∣ L , π ) \mathbb{P}(y_i|\mathbf{L},\pi) P(yiL,π)

(16) P ( y i ∣ L , π ) ∝ P ( y i ) ∏ i P ( l i j ∣ y i , π j ) , \mathbb{P}(y_i|\mathbf{L},\pi)\propto\mathbb{P}(y_i)\prod_i\mathbb{P}(l_{ij}|y_i,\pi_j),\tag{16} P(yiL,π)P(yi)iP(lijyi,πj),(16)

其中 P ( y i ) \mathbb{P}_(y_i) P(yi)为均匀分布;

M-步骤:我们通过计算得出参数 π \pi π

(17) π = arg ⁡ max ⁡ π Q ( π o l d , π ) , \pi=\mathop{\arg\max}\limits_\pi Q(\pi^{old},\pi),\tag{17} π=πargmaxQ(πold,π),(17)

其中 Q Q Q是标准辅助函数

(18) Q ( π o l d , π ) = ∑ i j ∑ y i ∈ D P ( y i ∣ L , π o l d ) ln ⁡ P ( l i j ∣ y i , π j ) . Q(\pi^{old},\pi)=\sum_{ij}\sum_{y_i\in\mathcal{D}}\mathbb{P}(y_i|\mathbf{L},\pi^{old})\ln\mathbb{P}(l_{ij}|y_i,\pi_j).\tag{18} Q(πold,π)=ijyiDP(yiL,πold)lnP(lijyi,πj).(18)

∂ Q ∂ π j = 0 \frac{\partial Q}{\partial\pi_j}=0 πjQ=0,我们得到

(19) π j = ∑ i ∑ M ( l i j , y i ) = 1 P ( y i ∣ L , π o l d ) ∑ i I i j , \pi_j=\frac{\sum_i\sum_{M(l_{ij},y_i)=1}\mathbb{P}(y_i|\mathbf{L},\pi^{old})}{\sum_i I_{ij}},\tag{19} πj=iIijiM(lij,yi)=1P(yiL,πold),(19)

其中, I i j I_{ij} Iij是工人 w j w_j wj是否为任务 t i t_i ti提供标签的指示变量。

如果叶节点上的正确标签分布是分散的,那么推导就很难可靠。我们最好得到命中概率较高的同名词,尤其是根节点的命中概率为1。因此,我们设置了一个参数 σ \sigma σ,它是我们需要的结果的最小命中概率。较小的 σ \sigma σ表示放松约束以推断更具体的标签,而较大的 σ \sigma σ表示命中率优先于特异性。

4 评估

在本节中,我们将介绍实验结果。我们介绍了我们使用的真实数据,并分析了第4.1节中的工人行为。关于推理方法,我们测试了我们的MWK+和ProFull算法的性能,并与第4.2节中的其他推理方法进行了比较。接下来,我们对我们的调度进行了一系列的实验,以证明我们在4.3节中的二次型调度的有效性,以及在4.4节中通过范围参数进行的鲁棒性。最后,我们讨论了预算问题,并证明我们的工作可以在第4.5节中显著节省预算。

4.1 数据集

我们首先从ImageNet[6]中提取一个分类树,其中149个节点的根节点是“狗”(“dog”)。我们从树的叶节点获取图像作为标记数据。在众包平台CrowdFlower2中,我们总共获得984张图片来执行众包标签任务。为了解决自适应冗余问题,我们为每个图像获取19个有效标签,303名工人参与了标签任务。同时,我们要求工作人员给出他或她的信任的,分类树中的标签,我们需要的标签应该最好地描述图像并尽可能具体。

我们计算了18696个标签的特异性和它们在图3中的置信度。每个任务的标签特异性平均值的分布接近高斯分布,但每个工人的标签特异性平均值却不是高斯分布。工人似乎倾向于给出高特异性的标签。同时,工人的置信均值趋向于中心。标签特异性和工作人员对每个工作人员的置信度的乘积的平均值又回到了高斯分布。这意味着低置信度的高特异性标签具有高概率。它从另一个角度证明生成的特异性和置信度的有效性。

图3:真实数据的特异性和置信度分布
图3:真实数据的特异性和置信度分布

4.2 结果质量评估

我们将我们的方法与其他几种方法进行了比较。MV(多数投票)和MWW(权重多数投票)是众包的基本推论。MWK(知情多数投票)是Han等人[8]提出的方法结合外部知识处理BTSK问题中的推理问题。Han等人提出的SEEK方法[8]很难调整参数并且总是随时间变化,并且证明DS或极小化极大熵不适合BTSK问题。因此,我们不与SEEK、DS和极小化极大熵方法进行比较。MWK+是我们基于MWK的方法。MWC(置信多数投票)使用置信度作为权重。ProFull是我们使用完全分类树的概率方法,用EM算法求解。

如第3.4节所述,我们将两个参数分别纳入我们的推理方法MWK+和ProFull中。第一个参数是传导率 β \beta β。在图4的左图中,虚线表示MWK方法的性能,实线表示MWK+方法的性能。我们可以看出,当 β ∈ ( 0.8 , 1 ) \beta\in(0.8,1) β(0.8,1)时,MWK+的准确度、一致率和命中率均优于MWK。当 β = 1 \beta=1 β=1时,MWK+的性能与MWK相同。当 β = 0 \beta=0 β=0,即标签之间没有权重传导时,MWK+等于MWK。第二个是可靠率 σ \sigma σ。在图4的右图中,当 σ \sigma σ增加时,精度降低,命中率增加。当 σ = 0 \sigma=0 σ=0时,命中率和精度相交,而当σ=1时,命中率等于1,准确度等于0,这时我们需要最可靠的标签,即始终适合任务的根标签。

图4:MWK+和ProFull的性能及其参数
图4:MWK+和ProFull的性能及其参数

图5显示了六种比较方法在准确率、一致率和命中率方面的性能。对于MWK+和ProFull,我们分别设置 β = 0.8 \beta=0.8 β=0.8β=0.8和 σ = 0.5 \sigma=0.5 σ=0.5。在准确率方面,MWK+几乎一直表现最佳。MWK方法在精度上也有很好的表现,当冗余数在8到10之间时表现最好。在一致率方面,ProFull在冗余数小于9时表现最好,而当冗余数大于9时,MWK+方法表现最好。MWK方法与MWK+方法有着很好的性能。但在命中率方面,除MWC方法外,MWK和MWK+方法的命中率均较其他方法差。当冗余数大于8时,MWW方法表现最佳,多数表决次之。当数字小于8时,ProFull方法的性能最好。

4.3 质量评估的影响

通过对推导方法行为的分析,采用6种推导方法分别实现了6种方式的整体调度,如表1所示。每种推导方法都有三个衡量标准:准确度、一致率和命中率。我们为MWK+和ProFull设定了合适的参数,其中MWK+中传导率 β = 0.8 \beta=0.8 β=0.8,ProFull中可靠率 σ = 0.5 \sigma=0.5 σ=0.5

表1:推导算法的调度方法性能与无调度方法比较( r m e a n = 10 r_{mean}=10 rmean=10 α = 0.5 \alpha=0.5 α=0.5
表1:推导算法的调度方法性能与无调度方法比较(r_mean=10,α=0.5)

表中所有实验的预算可以得到10×984个标签,用于任务的调度,这意味着每个实验具有相同的冗余平均值10。标题为“Uniform”(统一)的列是没有调度过程的基准,每个任务只分配10个冗余。此列显示每个推理方法的性能度量值。剩下的五列显示了五种调度方法,其中百分比是在没有“Uniform””调度方法的基础上增加或减少的。“Random”(随机)调度是随机分配冗余的。我们分别执行10次,得到结果的平均值。S-weight(S-权重)调度是指用特异权重进行质量估计。C-weight(C-权重)调度是指置信权重,SC-weight(SC-权重)是指特定置信产品的权重。QF(Quadratic Form,二次型)调度方法采用二次型基本质量估计,考虑了标签之间的语义关系。对于所有的众包调度方法,我们使用相同的任务选择部分,其范围参数为 α = 0.5 \alpha=0.5 α=0.5。从表1可以看出,“随机”调度比没有“统一”调度方法更糟,“S-weight”调度和“C-weight”调度有一半左右的改进,一半左右的退步。“SC-weight”调度在大多数推理算法的基础上得到了改进。然而,以上这些都不考虑标签的语义关系,而“QF”调度考虑标签的语义关系。“QF”调度的性能优于其他调度方法,并在除MWW外的所有推理方法的基础上证明了其最佳效果。在传统的无调度精度测量中,MWK+的测量结果最好为0.352,“QF”的测量结果提高了12.72%。同时,MWK+的一致率最好,0.405,“QF”提高了5.67%。在命中率测量中,MWW得到了最好的结果0.547,“QF”也提高了1.67%。实验结果表明,“QF”评价具有显著的改进和稳定的性能。

4.4 任务选择的效果

在质量评估部分,实际上,我们想推断出哪项任务更有潜力通过另一个标签来提高对地面真实性的推断。如果对“潜力”的预测具有很高的概率精度,我们将得到一个很好的质量估计部分。此外,由于要求更严格,在下一次迭代中预测最有潜力的前25%任务要比预测前50%任务更困难。然而,范围参数 α \alpha α起着要求的作用。较小的 α \alpha α意味着应该进行另一次迭代以获得每个任务的标签的任务更少。同时,它也带来了更细致的调度,以估计每个任务的应答质量。如果对“潜力”的预测足够准确,则表明 α \alpha α越小,性能越好,否则会产生不可预见的噪声,以抵消这种趋势。

在图6中,我们将 α \alpha α的范围从0.1扩展到1,任务选择模块将决定哪个 α \alpha α百分比的任务应该得到另一个标签。当 α \alpha α等于1时,意味着所有的任务都将进行下一次迭代,直到消耗预算最后每个任务都将得到相同的冗余。因此,当 α = 1 \alpha=1 α=1时,调度具有相同的“统一”性能。从图6中我们可以看到,除MWW外,所有方法的性能在 α \alpha α增加期间或多或少降低,特别是MWK、MWK+和MWC。“QF”按预期做出了良好的预测。然而,当 α \alpha α小于0.5时,没有任何改善的迹象。此外,图6中左下角的子图显示迭代次数与范围参数 α \alpha α呈负相关。迭代依赖于众包平台,迭代需要相当长的时间。因此,过小的 α \alpha α不是一个好的选择,因为迭代次数不断增加。我们需要设置一个合适的范围参数来显著改善结果,并且很少增加迭代次数。

图6:二次型调度在α范围内的性能(r_mean=10)
图6:二次型调度在 α \alpha α范围内的性能( r m e a n = 10 r_{mean}=10 rmean=10

4.5 成本评估

在本节中,我们介绍了预算问题的相关结果,这是众包中一个非常重要的问题。在第4.3节和第4.4节中,我们展示了“QF”调度的良好性能,以在预算有限的情况下改进众包聚合结果。换句话说,它意味着要达到相同的结果质量,“QF”调度比其他方法需要更少的预算。我们设定了基准预算,为每项任务提供10个冗余,使用“Uniform”方法从众包中获得10×984标签。在图7中,虚线使用基准预算作为基线,我们使用“QF”调度将冗余平均值设置为7到12,以绘制范围参数 α = 0.5 \alpha=0.5 α=0.5的实线。相同颜色的虚线和实线(箭头所指)的交点表示使用“QF”调度并使结果质量相同的冗余。基准是有10个冗余,箭头指向x轴小于10的值意味着我们可以节省预算,反之亦然。在图中,我们可以看到除了MWW之外,其余的推理方法或多或少地节省了预算。在MWC推理方法中,我们的调度在任何三个性能指标中都节省了大约10%的预算。请注意,使用CrowdFlower等商业平台时,平台中的交易费用为预算的20%。因此,通过比较,我们的工作可以在BTSK问题上获得显著的节省效果。

图7:与Uniform方法相比,二次型调度的预算节省(α=0.5,Uniform:r=10)
图7:与Uniform方法相比,二次型调度的预算节省( α = 0.5 \alpha=0.5 α=0.5,Uniform: r = 10 r=10 r=10

5 相关工作

在众包中,任务冗余是以增加支付为代价提高结果质量的常用方法。因此,在一定的预算量下,如何安排任务在很大程度上影响结果的质量。在预算约束下,众包任务调度方面已经做出了若干努力[2、11、16、17、20]。Bansal等人[2]提出了一种主动的文档选择学习方案,旨在通过利用系统范围内的标签方差估计和相互信息,最大限度地提高给定预算中可用相关性判断的总体相关性标签预测准确率。Karger 等人[11]在考虑任务分配和推理的情况下,提出了一般众包的概率模型。他们的主要贡献是对总预算的理论分析,以达到一定的集体素质。Yu 等人[20]提出一种新的质量和预算意识的空间任务分配方法,该方法联合考虑了工人的声誉和接近任务地点的情况,以在有限的预算内最大限度地提高结果的预期质量。Tran-Thanh等人[16]提出了一种称为BudgetFix的算法,它确定了相互依赖的微任务的数量以及给定预算约束的每个任务的支付价格。Tran-Thanh等人[17]提出了一种称为Budgeer的算法来解决在预算约束下具有多个复杂工作流的众包系统中的任务分配问题,该算法计算出了一种有效的将预算分配给每个工作流的方法。然而,现有的工作要么针对一般的众包应用,要么专门关注特定的众包任务,这些任务不能直接用于解决考虑到特定知识的标记任务。

由于标记是最可行的适合众包的任务类型之一,大量现有的众包工作[1、5、14、19、22]都将标记作为目标任务。大多数现有的方法都将每个答案视为真或假。实际上,工作人员的答案之间可能存在层次语义关系,在这种情况下,简单地将答案分类为二进制不利于获取特定的知识。关于获取二元关系以构建概念分类法以及使用分类法基于多标签分类法对项目进行分类[3]的一些研究[4,15]。Han 等人[9]进一步建议明确使用专一性来衡量众包任务处理的结果质量。然而,现有的标记任务的研究不支持预算有限的任务调度,因此无法在质量和成本之间找到最佳的权衡。

在这项工作中,我们考虑到知识获取任务的预算限制,设计了一个任务调度框架。我们的工作是第一次尝试考虑预算任务调度在处理特定的知识获取问题与众包。

6 结论

预算任务调度问题是众包中最重要的问题。大多数现有的方法都使用错误率或准确度来衡量结果质量,这不适用于众包任务,如本工作所涉及的知识获取。我们首先将众包知识获取(BTSK)问题的预算任务调度形式化。在此基础上,提出了在BTSK问题背景下衡量应答质量的新标准。接下来,我们提出了一个基于知识的迭代调度框架来解决BTSK问题。在我们的框架中,主要要解决三个关键问题。其中,推理是根据从工人那里得到的答案来推断最终结果的,我们在这方面设计了两种算法,包括MWK+和ProFull。第二,质量估计涉及到对任务潜在质量的估计,以确定是否需要从额外的工作人员那里获得更多的答案,我们通过考虑答案的语义特异性和标签之间的语义关系,提出了一种基于二次型的质量估计方法。第三,在任务选择中,我们使用范围参数 α \alpha α来调整调度,以在很少迭代的情况下获得更好的结果。我们在真正的众包平台上实现了我们的调度框架,并对数据进行了分析。我们发现,平台中几乎一半的工人经常给出最具体的标签,但信心不足。我们与最先进的方法进行了广泛的评估,结果表明我们的方法在知识获取任务的背景下具有优势和有效性。

致谢

This work was supported partly by the National Basic Research 973 Program of China under Grant No(s) 2014CB340304, 2015CB358700, and the State Key Laboratory of Software Development Environment under Grant No. SKLSDE-2017ZX-14. And the authors would thank the anonymous reviewers for the helpful comments and suggestions to improve this paper. The corresponding author of this paper is Hailong Sun.

参考文献

[1] Yoram Bachrach, Thore Graepel, Tom Minka, and John Guiver. 2012. How To Grade a Test Without Knowing the Answers—A Bayesian Graphical Model for Adaptive Crowdsourcing and Aptitude Testing. arXiv preprint arXiv:1206.6386 (2012).

[2] Piyush Bansal, Carsten Eickhoff, and Thomas Hofmann. 2016. Active Content- Based Crowdsourcing Task Selection. In Proceedings of the 25th ACM International on Conference on Information and Knowledge Management. ACM, 529–538.

[3] Jonathan Bragg, Mausam, and Daniel S. Weld. 2013. Crowdsourcing Multi- Label Classification for Taxonomy Creation. In AAAI Conference on Human Computation and Crowdsourcing (HCOMP).

[4] Lydia B Chilton, Greg Little, Darren Edge, Daniel S Weld, and James A Landay. 2013. Cascade: Crowdsourcing taxonomy creation. In SIGCHI Conference on Human Factors in Computing Systems. ACM, 1999–2008.

[5] Alexander Philip Dawid and Allan M Skene. 1979. Maximum likelihood estimation of observer error-rates using the EM algorithm. Applied statistics (1979), 20–28.

[6] Jia Deng, Wei Dong, Richard Socher, Li-Jia Li, Kai Li, and Li Fei-Fei. 2009. Imagenet: A large-scale hierarchical image database. In CVPR. 248–255.

[7] Chao Gao, Yu Lu, and Dengyong Zhou. 2016. Exact exponent in optimal rates for crowdsourcing. In International Conference on Machine Learning (ICML).

[8] Tao Han, Hailong Sun, Yangqiu Song, Yili Fang, and Xudong Liu. 2016. Incorporating External Knowledge into Crowd Intelligence for More Specific Knowledge Acquisition. In Proceedings of the Twenty-Fifth International Joint Conference on Artificial Intelligence (IJCAI-16).

[9] Tao Han, Hailong Sun, Yangqiu Song, Yili Fang, and Xudong Liu. 2016. Incorporating External Knowledge into Crowd Intelligence for More Specific Knowledge Acquisition. In Proceedings of the Twenty-Fifth International Joint Conference on Artificial Intelligence, IJCAI 2016, New York, NY, USA, 9-15 July 2016. 1541–1547.

[10] Jeff Howe. 2006. The rise of crowdsourcing. Wired magazine 14, 6 (2006), 1–4.

[11] David R Karger, Sewoong Oh, and Devavrat Shah. 2014. Budget-optimal task allocation for reliable crowdsourcing systems. Operations Research 62, 1 (2014), 1–24.

[12] Ashish Khetan and Sewoong Oh. 2016. Achieving budget-optimality with adaptive schemes in crowdsourcing. In Advances in Neural Information Processing Systems. 4844–4852.

[13] Farshad Lahouti and Babak Hassibi. 2016. Fundamental Limits of Budget-Fidelity Trade-off in Label Crowdsourcing. In Advances in Neural Information Processing Systems. 5059–5067.

[14] Mahyar Salek, Yoram Bachrach, and Peter Key. 2013. Hotspotting-A Probabilistic Graphical Model For Image Object Localization Through Crowdsourcing… In AAAI.

[15] Yuyin Sun, Adish Singla, Dieter Fox, and Andreas Krause. 2015. Building Hierarchies of Concepts via Crowdsourcing. In IJCAI. 844–851.

[16] Long Tran-Thanh, Trung Dong Huynh, Avi Rosenfeld, Sarvapali D Ramchurn, and Nicholas R Jennings. 2014. BudgetFix: budget limited crowdsourcing for interdependent task allocation with quality guarantees. In Proceedings of the 2014 international conference on Autonomous agents and multi-agent systems. International Foundation for Autonomous Agents and Multiagent Systems, 477– 484.

[17] Long Tran-Thanh, Trung Dong Huynh, Avi Rosenfeld, Sarvapali D Ramchurn, and Nicholas R Jennings. 2015. Crowdsourcing Complex Workflows under Budget Constraints… In AAAI. 1298–1304.

[18] Jacob Whitehill, Ting-fan Wu, Jacob Bergsma, Javier R Movellan, and Paul L Ruvolo. 2009. Whose vote should count more: Optimal integration of labels from labelers of unknown expertise. In Advances in neural information processing systems. 2035–2043.

[19] Jacob Whitehill, Ting-fan Wu, Jacob Bergsma, Javier R Movellan, and Paul L Ruvolo. 2009. Whose vote should count more: Optimal integration of labels from labelers of unknown expertise. In NIPS. 2035–2043.

[20] Han Yu, Chunyan Miao, Zhiqi Shen, and Cyril Leung. 2015. Quality and budget aware task allocation for spatial crowdsourcing. In Proceedings of the 2015 International Conference on Autonomous Agents and Multiagent Systems. International Foundation for Autonomous Agents and Multiagent Systems, 1689–1690.

[21] Denny Zhou, Sumit Basu, Yi Mao, and John C Platt. 2012. Learning from the wisdom of crowds by minimax entropy. In Advances in Neural Information Processing Systems. 2195–2203.

[22] Dengyong Zhou, Sumit Basu, Yi Mao, and John C Platt. 2012. Learning from the wisdom of crowds by minimax entropy. In NIPS. 2195–2203.

[23] Dengyong Zhou, Qiang Liu, John Platt, and Christopher Meek. 2014. Aggregating ordinal labels from crowds by minimax conditional entropy. In International Conference on Machine Learning. 262–270.

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值