论文翻译1-----DSSM:Deep Structured Semantic Models

说明

  • 论文全部名称:Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
  • 论文中文全称:使用点击数据学习用于web搜索的深度结构化语义模型
  • 论文下载地址:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2013_DSSM_fullversion.pdf
  • 检查了好几遍,原论文中没有公式2,所以大家不要奇怪

摘要

潜在语义模型,比如LSA,打算在基于关键词匹配经常失败的语义级别上将查询映射到其相关的文档。在该研究中,我们努力开发了一系列基于深层结构的新的潜在语义模型,该模型将queries和documents映射到一个公共的低维空间中,在该低维空间中,被给定的query和一个document的相关性是很容易通过它们之间的距离计算得到。本文提出的深度结构语义模型通过使用点击数据最大化给定query的情况下被点击的文档的条件似然估计进行判别训练。为了使我们的模型可被应用在大规模网页搜索中,我们使用了word hashing技术,它能有效地扩展我们的潜在模型以处理这类任务中常见的大规模词汇库。在网页文档排序任务中,新模型通过使用真实世界的数据集来进行评估。结果表明,我们最佳模型明显优于其他潜在语义模型,后者在本文提出之前被认为是性能方面的最佳技术。

关键词:深度学习,潜在模型,点击数据,网页搜索

1. 介绍

现代搜索引擎主要通过将documents中的关键词和搜索queries中的关键词进行匹配来检索web文档。然而,词汇匹配可能不准确,因为在documents和queries中经常使用不用的词汇和语言风格来表达概念。

潜在语义模型,比如潜在语义分析(LSA)有能力在词汇匹配经常失败的语义级别上将查询映射到其相关的文档([6] [15] [2] [8] [21])。这些潜在语义模型通过将在相似上下文中出现的不同名词(terms)归为同一语义簇来解决web文档和搜索查询中的语言差异问题。因此,在低维空间中被表示为两个向量的查询和文档,即使它们没有一个相同的名词,仍然会有很高的相似值。由LSA模型衍生得到的概率主题模型,如PLSA和潜在狄利克雷分布(LDA),也被提出用来做语义匹配。然而,这些模型经常使用目标函数以无监督方式进行训练,目标函数对检索任务使用评估度量是很不严谨的。因此,在web搜索任务中这些模型的效果没有最初预期的好。

最近, 已经进行了两方面的研究来扩展上述潜在语义模型,下面将对其进行简要回顾。

首先,点击数据是由queries及其点击的documents来组成。被用来语义建模以消除搜索queries和web文档之间的差异[9] [10]。例如,Gao等人在[10]中提出使用双语主题模型(BLTMs)和线性判别映射模型(DPMs)在语义级别上进行query-document匹配。这些模型在点击数据上使用适合文档排序任务的目标进行训练。更具体地,BLTM是一个生成式模型,该模型要求query和它的点击documents不仅在主题上共享相同的分布,而且包含分配给每个主题的相似词组。相反,DPM是使用S2Net算法[26]来学习的,该算法遵循[3]中的学习-排序这种范式。在将queries和documents的term向量映射到低维语义空间的概念向量之后,query和它被点击的document之间的概念向量的距离比query和它没有被点击的document之间的距离小。Gao等人在[10]中表示在文档排序任务中,BLTM和DPM的效果优于无监督潜在语义模型(包括LSA、PLSA)。但是,尽管通过使用的点击数据来训练BLTM,但它的目的是最大化对数极大似然,这对于文档排序任务中的评估指标而言不是最优的。另一方面,DPM的训练涉及大规模的矩阵乘法。这些矩阵大小通常会随着词汇量的增加而迅速增长,在web搜索任务中,这可能是百万级别的量。为了使训练时间可以接受,对词汇进行大幅度修剪。尽管词汇量少,使得模型易于训练,但会导致性能欠佳。

第二,Salakhutdinov和Hinton使用深度自动编码器扩展了语义模型[22],他们证明了可以通过深度学习提取嵌入在query和document中的分层语义结构。这个性能优于常规的LSA[22]。然而,他们使用的深度学习方法仍采用无监督学习方法,其中模型参数优化是为了documents的重建,而不是为了区分给定query的相关documents和不相关的documents。因此,深度学习模型并没有显著优于基于关键字匹配的基线检索模型。此外,语义哈希模型同样面临大规模矩阵乘法的可伸缩性挑战。我们将在本文中证明,学习具有大量词汇的语义模型的能力对于在真实世界的web搜索任务中获得良好的结果是至关重要的。

​ 本文研究是在上面提到两个方面研究的基础上进行扩展的,我们提出了一系列用于Web搜索的深度结构化语义模型(DSSM),更具体地,我们的最佳模型使用深度神经网络(DNN)对给定的query的一组documents进行排序。首先,非线性映射将query和documents映射到一个公共语义空间。然后,给定query与每个文档通过计算它们在公共语义空间下向量的余弦相似度来衡量相关性。神经网络模型使用点击数据进行判别训练,以使在给定query的情况下被点击的document的条件似然估计最大化。与之前提到的以无监督方式学习的潜在语义模型不同,我们的模型直接针对Web文档排序进行了优化,因此能提供最优的性能,这将在后面展示。此外,为了处理大规模词汇,我们提出了word hashing方法,通过该方法可以将queries或documents的高维term向量映射到低维的基于n-gram的letter向量,而信息损失很少。我们实验表明,在语义模型中通过增加这个额外的表示层,word hashing 使我们能够有判别地学习具有大词汇量的语义模型,这对于web搜索是必不可少的。我们在web文档排序任务上使用真实数据集来评估提出的DSSM模型。结果显示,我们模型最优,在NDCG@1以2.5-4.3%的显着优势胜过所有竞争方法。

​ 在本文的其余部分,第2节回顾了相关工作,第3节描述了我们用于web搜索的DSSM模型。第4节展示了相关的实验,第5节文章总结。

2. 相关工作

我们的工作是基于最近两个用于信息检索(information retrieval,IR)的潜在语义模型研究的推广。第一个是以有监督的方法利用点击数据学习潜在语义模型[10]。第二个是介绍用于语义建模的深度学习方法[22]。

2.1 潜在语义模型和点击数据的使用

用于query-document匹配的潜在语义模型在信息检索领域是一个长期的研究课题。流行的模型可以被分为两大类:线性映射模型和生成式主题模型。我们将一一介绍。

用于信息检索的最有名的线性映射模型是LSA[6]。通过使用document-term矩阵的奇异值分解(SVD),一个document(或者query)可以被映射到一个低维的概念向量 D ^ = A T D \widehat{D}=A^TD D =ATD,其中A是映射矩阵。在文档搜索中, 根据映射矩阵,假设分别由term向量Q和D表示的query和document之间的相关性分数与相应概念向量 Q ^ \widehat{Q} Q D ^ \widehat{D} D 的余弦相似性分数成正比。

在这里插入图片描述

除了潜在语义模型,在被点击的query-document对上训练的翻译模型为语义匹配提供了另一种方法[9]。与潜在语义模型不同,基于翻译的方法直接学习document中的term与query中的term之间的翻译关系。最近的研究表明,给定大量的点击数据去训练,这种方法能取得非常好的效果[9][10]。在第4节中,我们也将我们的方法和翻译模型进行比较。

2.2 深度学习

最近,深度学习方法已经成功地应用于各种语言和信息检索任务[1,4,7,19,22,23,25]。通过研究深度结构,深度学习技术能够从训练数据中发现对任务有用的不同抽象级别中隐含的结构和特征。在[22]中,Salakhutdinov和Hinton使用深度网络(auto-encoder,自动编码器)扩展LSA模型,以发现嵌入在query和document中的分层语义结构。他们提出了一种语义哈希(SH)方法,该方法利用从深度自动编码器中学习到的bottleneck特征进行信息检索。这些深度模型分两个阶段学习。首先,学习一堆生成式模型(即受限的玻尔兹曼机),以将document的term向量表示逐层映射到低维语义概念向量。其次,模型的参数优化是通过最小化document的原始term向量和重构term向量之间的交叉熵误差。中间层激活作为特征(即bottleneck)被用于文档排序。他们的评估展示了SH在文档检索任务中的效果优于LSA。然而,SH有两个问题,并且比基于检索模型(如使用TF-IDF term权重的余弦相似性)的标准词汇匹配效果差。第一个问题是模型参数优化是为了文档term向量的重构,而不是为了从给定query不相关的documents中区分相关的documents。第二,为了使计算成本可控,documents的term向量仅仅由最为频繁的2000个单词组成。在下一节中,我们将展示针对这两个问题的解决方案。

3. 针对web搜索的深度结构化语义模型

3.1 用于计算语义特征的DNN

我们为将原始的文本特征映射到语义空间中的特征而开发的典型DNN结构如图1所示。DNN的输入(原始的文本特征)是高维的term向量,如未归一化的query或document的term原始计数,DNN的输出是一个映射在低维语义特征空间中的概念向量。该DNN模型用于web文档排序,如下步骤:1)将term向量映射到其对应的语义概念向量;2)计算document和query的语义概念向量的余弦相似度作为它们的相关性分数,如下(3)到(5)等式。

在这里插入图片描述

图1:DSSM的示意图。它使用DNN将高维稀疏文本特征映射到语义空间中的低维稠密特征。第一个具有30000个单元的隐藏层完成了词哈希处理,然后将词哈希处理后的特征映射到多层非线性映射中。该DNN中最后一层的神经活动构成了语义空间中的特征。

更正式地,我们用 x x x表示输入的term向量,用 y y y表示输出的概念向量,用 l i l_i li表示网络的中间隐藏层,其中, i = 1 , . . . , N − 1 i=1,...,N-1 i=1,...,N1 ,用 W i W_i Wi表示第 i i i个权重矩阵,用 b i b_i bi表示第 i i i个偏置项,我们有

在这里插入图片描述

其中,我们用tanh作为输出层和隐藏层 l i l_i li的激活函数, i = 2 , . . . , N − 1 i=2,...,N-1 i=2,...,N1

在这里插入图片描述

query和document之间的语义相关性分数计算公式如下:

在这里插入图片描述

其中 y Q y_Q yQ y D y_D yD 分别是query和document的概念向量。在web搜索中,给定query,document通过他们之间的相关性分数进行排序。

通常,term向量(可以看成是信息检索中原始的bag-of-words特征)的大小与用于索引Web文档集合的词汇大小相同。在实际的Web搜索任务中,词汇量通常是非常大的。因此,当使用term向量作为输入,神经网络输入层的大小在模型训练和推理时变得不可控。为了解决这个问题,我们为DNN的第一层开发了一种称为word hashing方法,如图1的下部所示。这一层仅仅由线性隐藏单元组成,它的大权重矩阵不用学习。在下一小节中,我们详细介绍word hashing方法。

3.2 Word Hashing

这里描述的word hashing方法旨在减少词袋term向量的维度。它是基于字母(letter)的n-gram算法,是专门针对我们任务开发的一种新方法。给定一个单词(如good), 我们首先添加单词的开头和结尾标识(如 #good#)。然后,我们按照字母的n-gram拆分单词(如 tri-grams:#go, goo, ood, od#)。最后,使用字母n-grams的向量表示这个单词。

该方法的一个问题就是冲突,即两个不同的单词可能具有相同的字母n-gram向量表示。表1展示了两个词汇表中word hashing的一些统计信息。对比原始one-hot向量的大小,word hashing允许我们使用更低维的向量表示query或者document。以40K大小的词汇表为例。使用字母tri-gram,每个单词可以使用10306维向量表示,在少量冲突的情况下,维度减少了4倍。当该技术应用于较大的词汇表时,维度的减少甚至更为显着。如表1所示,在500K大小的词汇表中,使用字母tri-gram,每个单词可以表示为30621维向量,在可忽略的冲突率为0.0044%(22 / 500000)的情况下维度减少16倍。

虽然英语单词的数量是无限的,但在英语(或其他相似的语言)中字母n-grams的个数是有限的。此外,word hashing能够将同一单词的形态变化映射到字母n-gram空间中彼此接近的点。更重要的是,虽然在训练集中看不到的单词会给基于单词表示带来困难,但使用基于字母n-gram表示时这就不是问题了。唯一的风险是如图1 所示的轻微表示冲突。因此,基于字母n-gram的word hashing处理对于词汇表外的单词问题具有鲁棒性,这使我们能够将DNN解决方案扩展到具有超大词汇表的Web搜索任务中。我们将在第4节中介绍该技术的优势。

在我们的实现中,基于字母n-gram的word hashing可以看成是一个固定的(即非自适应)线性变换,通过该变换,输入层term向量可以映射到下一层的字母n-gram向量中,如图1所示。由于字母n-gram向量的维度低得多,因此可以有效地进行DNN学习。

在这里插入图片描述
表1:word hashing token大小和冲突数与词汇大小和字母n-gram类型有关

3.3 学习DSSM

点击日志由一系列queries和它们被点击的documents组成。我们假设一个query和因为它被点击的documents是相关的,至少有一部分相关。受到语音和语言处理中的判别式训练方法的启发,我们提出了一种有监督的训练方法,来学习模型参数,即神经网络中的权重矩阵 和偏置向量 ,作为DSSM的基本组成部分,使得给定queries的情况下被点击documents的条件似然概率最大化。

首先,我们通过softmax函数计算在给定query的情况下document的后验概率,该概率来自于它们之间的语义相关性得分:

在这里插入图片描述

其中, γ \gamma γ表示softmax函数的平滑因子,根据经验设置的。 D D D 表示被排序documents候选集。理想地, D D D应该包含所有可能的documents。实际上,对于每个(query,被点击的document)对,表示成 ( Q , D + ) (Q,D^+) (Q,D+) ,其中, Q Q Q 表示query, D + D^+ D+ 表示被点击的document,我们近似 D D D 包含 D + D^+ D+ 和四个随机选择的未点击document(表示为 { D j − ; j = 1 , . . . , 4 } \{D^-_j;j=1,...,4\} {Dj;j=1,...,4} )。在我们初步研究中,通过不同的采样策略选择未点击的document并没有什么不同。

在训练过程中,模型参数通过在训练集中给定query的情况下最大化被点击documents的似然概率估计。相当于,我们需要最小化损失函数,如下所示:

在这里插入图片描述

其中, Λ \Lambda Λ表示神经网络 { W i , b i } \{W_i,b_i\} {Wi,bi} 的参数集合。由于 L ( Λ ) L(\Lambda) L(Λ) 可微,使用基于梯度的数值优化算法进行模型训练。由于篇幅省略了求导的详细过程。

3.4 实现细节

为了得到训练参数并避免过拟合,我们把点击数据分为训练集和验证集两个不重叠的部分。在我们的实验中,使用训练集训练模型,使用验证集优化训练参数。对于DNN实验,我们使用具有三个隐藏层结构,如图1所示。第一个隐藏层是word hashing层,包含30k节点(字母tri-grams的大小,如表1所示)。后面二个隐藏层每个都有300个节点,最后输出层有128个节点。word hashing是基于固定的映射矩阵实现的。相似度度量是基于128维的输出层。根据[20],我们使用均匀分布给网络权重初始化,区间范围在 [ − 6 / ( f a n i n + f a n o u t ) , 6 / ( f a n i n + f a n o u t ) ] [-\sqrt{6/(fanin+fanout)},\sqrt{6/(fanin+fanout)}] [6/(fanin+fanout) ,6/(fanin+fanout) ] ,其中, f a n i n , f a n o u t fanin,fanout fanin,fanout 分别表示输入和输出的单元数。根据经验,我们发现逐层做预训练并不能给模型带来更好的效果。在模型训练阶段,我们使用mini-batch的随机梯度下降(SGD)优化模型。每一个mini-batch由1024个训练样本组成。我们观察到DNN训练通常在整个数据集训练20轮后就收敛了。

4. 实验

我们在web文档排序任务中使用真实的数据评估DSSM模型(在第3节中提出)。在本节中,我们首先描述了用于模型评估的数据集。然后,我们将DSSM模型和其他现存最优的排序模型进行对比分析。我们还研究了第3节中提到的技术的故障影响。

4.1 数据集和评估方法

我们使用大规模的真实数据集来评估检索模型,以下称为评估数据集。评估数据集包含从商业搜索引擎一年的搜索日志文件中采样的16510个英文queries。平均而言,每个query和15个网页文本(URLs)相关联,每个query和title对有一个相关标签,这个标签由人工生成,并且有5个相关性级别,范围是0到4。其中4表示document和query最相关,0表示document和query不相关。所有的queries和documents经过预处理,从而使文本用空格标记,小写、数字保留,没有词干/词形变化。

本研究所有用到的排序模型(即DSSM、主题模型、线性映射模型)包含很多需要根据经验进行估计的自由超参数。在所有的实验中,我们使用2折交叉验证:数据集的一半用来获取结果,另一半用来参数调优。全局的检索结果来自两个数据集的结合。

我们评估的所有排序模型的性能均通过归一化贴现累积增益(NDCG)的平均值来衡量[17],我们将在本节中报告截断级别为1、3、10的NDCG分数。我们还使用了配对t检验进行显著性检验。当p值小于0.05时差异被认为是有统计学意义的。

在我们的实验中,我们假设query和该query下被点击的documents的标题是平行的。我们使用和[11]相似的处理方法从一年的查询日志文件中提取了大量的query-title对进行模型训练。一些之前的研究,如[24,11]展示了query的点击字段,当它有效时,对网页搜索是最有效的信息,其次是标题字段。然而,对于很多URLs点击信息是不可用的,尤其是新URLs和尾部URLs,使它们的点击字段无效(即该字段为空或由于稀疏而不可靠)。本研究中,我们假设评估数据集中每个document要么是新URL,要么是尾URL,因此没有点击信息(它的点击字段是无效的)。我们的研究目标是为了研究如何从这些有大量点击信息的流行URLs中学习潜在语义模型,并应用模型提高对这些尾部URLs或者新URLs的检索。为此,我们的实验仅仅使用网页文本的标题进行排序。为了训练潜在语义模型,我们使用大约1亿对随机抽样的子集,这些子集的documents是非常流行的并且有大量的点击信息。我们对经过训练的模型进行测试,以对不包含点击信息的评估数据集中的文档进行排序。我们以同样的方式对query-title进行预处理作为评估数据以保持数据的一致性。

4.2 实验结果

表2总结了我们实验的主要结果,我们将DSSM模型最好的版本(第12行)和三组baseline模型进行对比。第一组baseline模型包含一对被广泛使用的词汇匹配模型,如TF-IDF(第1行)和BM25(第2行)。第二组baseline模型是一个单词翻译模型(WTM,第3行),其通过学习query的单词和document的单词之间的词汇映射来直接解决query-document语言差异的问题[9,10]。第三组baseline模型包含一组当前最优的潜在语义模型,通过无监督方式学习documents(LSA,PLSA,DAE;第4,5,6行)或者以有监督方式学习点击数据(BLTM-PR,DPM;第7,8行)。为了使结果具有可比性,我们根据[10]中的描述重新实现了这些模型。由于模型复杂度的限制,LSA和DPM模型使用40K词汇训练,其他模型使用500K词汇训练。接下来篇幅描述更详细的细节。

TF-IDF(第1行)是baseline模型,documents和queries使用TF-IDF term权重算法被表示成term向量。然后通过计算query和document的term向量余弦相似度对documents进行排序。我们也将使用BM25(第2行)排序模型作为一个baseline模型。TF-IDF和BM25都是基于term匹配的最前沿的document排序模型。它们在相关的研究中被广泛使用作为baseline模型。

WTM(第3行)是我们根据[9]的描述实现的单词翻译模型,用作模型对比分析。我们可以看到WTM模型比baseline模型(TF-IDF和BM25)效果好很多,证实了[9]中的结论。LSA(第4行)是我们实现的潜在语义分析模型。我们使用PCA替代SVD计算线性映射矩阵。queries和titles被认为是独立的documents,来自点击数据的配对信息(pair information)并没有在这个模型中使用。PLSA(第5行)是我们根据[15]实现的模型,模型训练时仅仅是使用documents(如query-title对中的title)。不同于[15]的是我们实现的PLSA使用如[10]中的MAP估计进行模型学习。DAE(第6行)是我们实现的基于深度自动编码器的语义哈希模型,是Salakhutdinov和Hinton在[22]中提出的模型。由于模型训练的复杂度,输入是基于40K词库的term向量,DAE架构包含4个隐藏层,每层有300个节点,中间的瓶颈层(bottleneck layer)有128个节点。模型使用documents数据进行无监督学习。在微调阶段,我们使用交叉熵误差作为训练标准。中间层激活被用作特征来计算query和document之间的余弦相似度。我们的结果和之前在[22]中报告的结果一致。基于潜在语义模型的DNN效果好于线性映射模型(如LSA)。然而,LSA和DAE都仅仅使用document数据以无监督的方式进行训练。因此,不会好于最先进的词汇匹配排序模型。

在[10]中描述的双语主题模型的不同版本中,BLTM-PR(第7行)是性能最好的。具有后验正则化的BLTM(BLTM-PR)在query-title对上进行模型训练,使用带有约束的EM算法强制将具有相同terms部分的query和title对分配给每个隐藏主题。DPM(第8行)是在[10]中提出的线性判别映射模型,映射矩阵是使用S2Net算法[26]对相关和不相关的query-title对进行判别学习得到的。和BLTM是PLSA的扩展一样,DPM可以看作是LSA的扩展,线性映射矩阵是使用点击数据以有监督的方法学习并以document排序优化得到。我们可以看到,使用点击数据进行模型训练可以提高模型效果。BLTM-PR和DPM模型的效果都比baseline模型(TF-IDF和BM25)好。

第9到12行展示了不同版本DSSM模型的实验结果。DNN(第9行)是没有使用word hashing的DSSM模型。它使用和DAE(第6行)相同的架构,但使用点击数据以有监督的方式进行训练。输入和DAE一样也是基于40k的词汇表的term向量。L-WH linear(第10行)是使用基于字母tri-grams的word hashing建模,然后以有监督的方式训练模型。和L-WH nonlinear(第11行)不同的是我们在它的输出层没有应用任何非线性激活函数,如tanh。L-WH DNN(第12行)是我们最好的基于DNN的语义模型,使用了3个隐藏层(包含带有基于字母tri-grams的word hashing层(L-WH))和输出层,使用query-title对进行判别式训练,如章节3所述。虽然基于字母n-grams的word hashing方法能应用于任意大的词汇表,但是为了和其他模型对比的公平性,我们的模型也使用500K的词汇表。

从表2的结果可以清楚的看到,对点击数据的有监督学习以及为排序而定制的以信息检索为中心的优化标准,对于获得更优的document排序性能是必要的。

Word Hashing允许我们使用大规模的词汇表进行模型训练,例如,第12行的模型使用500K的词汇表(带有单词哈希),效果比第9行使用40K词汇表的模型好。尽管前者的自由参数略少于后者,因为单词哈希层仅包含大约30k个节点。

我们还评估了在query和document中嵌入的语义信息进行建模时,使用深层结构和浅层结构的影响。

结果如表2所示,DAE(第3行)的效果比LSA(第2行)好,而LSA和DAE都是无监督模型。在有监督模型中,我们观察到浅层结构和深层结构有类似的效果。对比第11和12行的模型,我们观察到增加非线性层的数量(从1到3)可以使NDCG得分提高0.4-0.5点,这在统计上是显著的,然而,如果都是一层的浅层模型,在线性和非线性模型之间没有什么不同(第10行 vs 第11行)。

在这里插入图片描述

表2 与现有技术水平和DSSM各种设置的比较结果

5. 结论

我们展示和评估了一系列新的潜在语义模型,特别是那些具有深度结构的模型,我们将其称为DSSM模型。主要贡献在于我们在三个关键方面对先前的潜在语义模型(例如LSA)进行了显着扩展。第一,我们通过直接针对document排序的目标,利用点击数据来训练优化模型所有版本的参数。第二,受最近证明在语音识别中非常成功的深度学习框架的启发[5] [13] [14] [16] [18],我们使用多个隐藏表示层将线性语义模型扩展到非线性语义模型。所采用的深层结构进一步增强了建模能力,因此可以捕获和表示在queries和documents中的更复杂的语义结构。第三,我们使用基于字母n-gram的word hashing技术,该技术被证明有助于扩大深度模型的训练范围,以便在真实的Web搜索中使用非常大的词汇表。在我们的实验中,我们展示了与上述三个方面相关的新技术可以显著提高文档排序任务的性能。这三组新技术的结合产生了一种新的最先进的语义模型,它以显著的优势击败了所有之前开发的竞争模型。

如果本文对你有帮助,记得“点赞、收藏”哦~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值