关于人工智能:基于深度学习的短文本相似度学习与行业测评

40次阅读

共计 4661 个字符,预计需要花费 12 分钟才能阅读完成。

文本类似度计算作为 NLP 的热点钻研方向之一,在搜寻举荐、智能客服、闲聊等畛域失去的宽泛的利用。在不同的应用领域,也存在着肯定的差别,例如在搜寻畛域大多是计算 query 与 document 的类似度;而在智能客服、聊天畛域更重视的是 query 与 query 之间的匹配,即短文本之间的类似度计算。

不同的文本长度,类似度的计算计划也存在差别,长文本匹配更多重视文本的关键词或者主题的匹配,业界应用的较多的算法如:TF-IDF、LSA、LDA;而短文本匹配更多的是句子整体的语义一致性,业界较为支流的算法有:word2vec、esim、abcnn、bert 等深度模型。

相比于长文本的类似度计算,短文本的类似度计算存在更大的挑战。其一,短文本能够利用的上下文信息无限,语义刻画不够全面;其二,短文本通常状况下,口语化水平更高,存在缺省的可能性更大;第三,短文本更重视文本整体语义的匹配,对文本的语序、句式等更为敏感。

query1query2
我要打给你 我要打你
你叫什么 你叫我什么
我叫小布 我不叫小布
你有男票吗 你是独身狗吗
你真搞笑 你是个逗比啊
我喜爱看动漫 你不晓得我喜爱看动漫吗

不同文本类似度算法的得分散布不统一,无奈通过评分来对算法进行评估。因而对于不同的算法计划,能够设定特定的得分门限,得分高于门限,可判断为语义雷同;否则,判断为语义不同。对于一个给定标签的数据集,能够通过准确率来掂量类似度计算的成果。罕用的中文评估语料有:LCQMC、BQ Corpus、PAWS-X (中文)、afqmc 等。

1. 支流计划

业界罕用的短文本类似度计算计划大抵能够分为两类:监督学习与无监督学习,通常状况下,监督学习效果绝对较好。在没有足够的训练数据须要冷启动的状况下,可优先思考应用无监督学习来进行上线。

1.1 无监督学习

最简略无效的无监督学习计划就是预训练的形式,应用 word2vec 或者 bert 等预训练模型,对工作畛域内的无标签数据进行预训练。应用失去的预训练模型,获取每个词以及句子的语义示意,用于类似度的计算。

Word2vec 是 nlp 畛域一个划时代的产物,将 word 的表征从离散的 one-hot 的形式转化成间断的 embedding 的模式,不仅升高了计算维度,各个工作上的成果也获得了质的飞跃。Word2vec 通过对大规模语料来进行语言模型(language model)的建模,使得语义相近的 word,在 embedding 的示意上,也具备很强的相关性。

通过 cbow 或者 max-pooling 的形式,应用句子中每个词的 word embedding 计算失去 sentence embedding,能够使得语义类似的句子在 sentence embedding 的示意上也具备较高的相关性,相比于传统的 TF-IDF 等类似度计算具备更好的泛化性。然而 cbow 的形式来计算 sentence embedding,句子中所有 word 应用雷同的权重,无奈精确获取句子中的 keyword,导致语义计算的准确率无限,难以达到上线规范。


尽管 Word2vec 提供了肯定的泛化性,但其最大的弱点是在不同的语境下,同一个 word 的表征完全相同,无奈满足丰盛的语言变动。gpt、bert 等大规模预训练模型的呈现,彻底解决了这个问题,做到了 word 的表征与上下文相干,同时也一直刷新了各个领域工作的榜单。

但试验证实间接应用 bert 输入的 token embedding 来计算句子的 sentence embedding,无论应用 cbow 的形式对所有 token embedding 求均匀或者间接应用 [CLS] token 的 embedding 来示意,语义计算的成果都不佳,甚至不如 GloVe。究其原因,在 bert 的预训练过程中,高频词之间共现概率更大,MLM 工作训练使得它们之间语义表征更加靠近,而低频词之间的散布更为稠密。语义空间散布的不平均,导致低频词四周中存在很多语义的“hole”,因为这些“hole”的存在,导致语义计算的类似度存在偏差。

为了解决 bert 语义空间不平均的问题,CMU 与字节跳动单干的 bert-flow 提出将 bert 的语义空间映射到一个规范的高斯隐空间,因为规范高斯分布满足各向同性,区域内不存在“hole”,不会毁坏语义空间的连续性。

Bert-flow 的训练过程就是学习一个可逆的映射 f,把遵从高斯分布的变量 z 映射到 BERT 编码的 u,那就能够把 u 映射到平均的高斯分布,这时咱们最大化从高斯分布中产生 BERT 示意的概率,就学习到了这个映射:

试验表明,通过 bert-flow 的形式来进行语义表征与类似度计算的成果,要远远优于 word2vec 以及间接应用 bert 的形式。

1.2 监督学习

Bert-flow 的呈现使得无监督学习在文本类似度计算方面获得了较大提高,然而在特定工作上相比于监督学习,成果还存在肯定的差距。监督学习罕用的类似度计算模型大抵能够分为两类:语义表征模型,语义交互式模型。语义表征模型罕用于海量 query 召回,交互式模型更多应用于语义排序阶段。

DSSM 是搜寻畛域最罕用的语义表征模型之一,而在短文本匹配畛域,应用最多的网络结构是孪生网络,罕用的孪生网络包含:siamese cbow,siamese cnn,siamese lstm 等。孪生网络训练时,所有 query 应用雷同模型来进行语义表征,通过余弦类似度等形式来计算 query 间的类似度,一直最大化正样本之间的相关性,克制负样本之间的相关性。预测时,每个 query 通过语义模型独自获取语义向量,用来计算 query 之间的类似度得分。因为 query 语义表征仅与自身无关,因而在进行 query 检索时,能够提前对语料库中 query 构建语义索引,大大晋升零碎的检索效率。

相比于语义表征模型,交互式语义模型具备更好的匹配成果,模型构造往往也更加简单,罕用的交互式语义模型有 ABCNN、ESIM 等。交互式模型在计算 query 之间的语义类似度时,不仅对单个 query 的语义特色进行建模,还须要 query 之间的交互特色。交互式模型通常应用二分类的工作来进行训练,当模型输出的两个 query 语义统一,label 为“1”,反之,label 为“0”。在预测时,可通过 logits 来作为置信度判断。


大规模预训练模型的呈现,也横扫了文本类似度工作的各项榜单。Bert 将 lcqmc 数据集的 SOTA 带到了 86% 的程度。随后,Roberta、albert、ernie 等新的预训练模型层出不穷,也一直刷新着匹配准确率的 SOTA 程度。

2. 业务利用

在语义问答的业务中,通常会应用召回 + 排序的算法架构,在咱们的闲聊业务中,咱们也应用了相似的架构。应用 siamese cnn 语义表征模型来进行语义召回,用蒸馏后的 transformer 语义交互模型来做排序。

在语义表征模型的 loss 构建上,咱们参考了人脸识别畛域的损失函数设计。这个两个工作在实质上是类似的,人脸识别是将人脸图片用向量示意,而文本检索式将文本用向量来进行示意,都冀望正样本之间有足够高的相关性,负样本之间足够好辨别。

在应用 Siamese cnn 进行语义建模时,咱们应用了 1 个规范 query,1 个正样本,5 个负样本(尝试过其余负样本数量,在咱们的数据上成果不如 5 个负样本),训练过程其实是在这 6 个样本中,辨认出对应正样本的地位,因而可将其转化为分类工作来进行训练,每个正负样本别离对应一个类别。应用每个样本与规范 query 之间的类似度,来作为对应类别的 logits,对 logits 进行归一化并构建 loss 函数。传统的 softmax 归一化构建的分类边界使得类别之间可分,为了更好的语义表征成果,须要使得类内更加汇聚,类间更加扩散。ASoftmax、AMSoftmax、ArcFace 等归一化形式,提出将所有 query 映射到一个球面,query 之间的类似度通过他们之间的夹角来计算,夹角越小类似度越高,通过在角度域增加 margin 的形式,使得类内更汇聚,类间更可分,达到更好的语义表征成果。

咱们比照了 softmax、Asoftmax、AMSoftmax、Arcface 等不同归一化形式,其中,Softmax 没有增加任何 margin,ASoftmax 通过倍角的形式在角度域增加 margin,AMSoftmax 则是在余弦域增加 margin,而 Arcface 则是间接在角度域增加固定 margin。

咱们应用 30W 的语料库来构建索引,应用 12900 条线上 query(语料库中不蕴含完全相同的 query)来进行召回测试,应用雷同的向量索引工具,比照发现 AMSoftmax、Arcface 召回成果上有很大晋升,在咱们的业务中失去了利用。

在排序模型方面,咱们尝试了 ABCNN、ESIM、transformer 等交互式语义模型,但成果相比于 bert 等预训练模型,还存在肯定的差距。咱们团队自研的预训练模型 Xbert,在与 Roberta large 同规模的状况下,融入了自研常识图谱数据,增加了 WWM(whole word MLM)、DAE、Entity MLM 等工作,应用 LAMB 优化器进行优化。咱们应用 XBert 在业务数据上进行了测试,相比于同规模的 Roberta large 准确率有靠近 0.9% 的晋升。为了满足上线需要,咱们参考 tiny bert 的形式,用 Xbert 蒸馏了一个 4 层的 transformer model 用于线上推断。

咱们在外部的问答数据集上对不同排序计划做了的成果比照,应用 12900 条线上用户实在 query,进行全链路的成果比照测试。用语义召回 top1 的准确率来评估语义表征模型的成果,并且通过消歧模块进一步晋升应答准确率;测试排序模型成果时,咱们应用了多路召回,共召回 30 个候选,应用排序模型对候选排序,抉择排序后的 top1 作为最终答案。若通过消歧模块,所有候选均被消歧掉,或排序后的 top1 候选排序得分不满足应答门限时,则该 query 零碎无应答。因而,咱们应用应答率与应答准确率来作为零碎最终的评测指标,来评估不同计划的成果。

为了测试自研的 Xbert 在公开的语义类似度数据集上的成果,在 lcqmc 数据集上,单模型准确率 88.96%,较 Roberta large 单模型 87.9% 的准确率,晋升了 1%;通过应用正样本之间的传递性以及负样本采样的形式,来进行数据加强以及 FGM 反抗训练的形式,准确率晋升至 89.23%;通过 ensemble 的形式,将准确率进一步晋升至 90.47%。通过雷同的形式,在 bq_corpus 上达到了 87.17%,在 paws- x 工作上达到了 88%,在 afqmc 数据集上也达到了 77.234%,在百度举办的千言文本类似度较量中实现登顶。

3. 总结与瞻望

短文本类似度在咱们的闲聊畛域失去了利用,应用语义表征学习来进行召回 + 交互模型排序的算法架构,在保证系统性能的前提下,获得了不错的业务成果。在语义表征模型上,咱们应用人脸识别畛域的 loss 来晋升召回成果;在语义排序方面,咱们也利用了大规模预训练模型以及模型蒸馏,来进一步晋升业务成果。在大规模预训练语言模型方面,咱们积极探索与改良,相比于现有开源预训练模型,咱们的 Xbert 在业务上以及公开数据集上的评测成果,都有了进一步的晋升。

在今后的工作中,咱们会利用好预训练模型这个核武器,在咱们 Xbert 的根底上致力优化冲破,将文本的类似度匹配工作带新的台阶。在解决单轮类似度匹配的状况下,咱们也会持续摸索联合上下文的多轮匹配以及多轮生成等工作,来进一步晋升咱们闲聊业务的体验。

正文完
 0