CIKM Cup 2018阿里小蜜短文本匹配算法竞赛 – 冠军DeepSmart团队分享

image.png

背景介绍

本次算法竞赛以聊天机器人中最常见的文本匹配算法为目标,通过语言适应技术构建跨语言的短文本匹配模型。在本次竞赛中,源语言为英语,目标语言为西班牙语。参赛选手可以根据主办方提供的数据,设计模型结构判断两个问句语义是否相同。最终,比赛主办方将在目标语言上测试模型的性能。在这次比赛中,主办方对外部资源进行了严格限制。训练数据集包含两种语言,主办方提供 20000 个标注好的英语问句对作为源数据,同时提供 1400 个标注好的西班牙语问句对,以及 55669 个未标注的西班牙语问句。所有的标注结果都由语言和领域专家人工标注。与此同时,也提供每种语言的翻译结果。


规则描述

主办方希望参赛选手关注在短文本匹配和语言适应的问题上,所有的参赛选手都需要注意以下限制:

1)模型训练中只能使用主办方提供的数据,包括有标注语料、无标注语料、翻译结果、词向量等。不得使用其它数据或预训练模型。

2)如果需要预训练词向量,只能使用 fastText 预训练的词向量模型。

3)如果需要使用翻译模型或翻译语料,只能使用主办方提供的翻译结果。

4)理论上选手们可以用主办方提供的平行语料训练出一个翻译模型,此类方法不禁止,但不推荐。

最终成绩由 5 项指标计算而来,阶段一线上成绩占比 20%,阶段二线上成绩占比 30%,创新性、系统性占比 20%,数据理解占比 10%,实用性占比 20%。

  • 阶段一成绩:初赛线上成绩。

  • 阶段二成绩:复赛线上成绩。

  • 创新性、系统性:设计思路新颖,从数据预处理到模型结果本地验证的整体设计独特;合理使用开源库,充分发挥开源模型的作用,不盲目拷贝;算法模型设计思路清晰,详细论述模型设计的优势,符合赛题数据应用特点;算法模式架构特征明显,阐明了作品中设计相关特征的目的,及其对于预测目标的优势;算法模型结果验证策略合理,能够证明最优的结果是经过仔细比对后得出,而非运气导致。

  • 数据理解:充分理解数据样本的字段含义,清晰阐明数据预处理方法。

  • 实用性:参赛作品的算法模型设计,对于真实业务具有实用性或启发。

image.png图:阶段二成绩排名

DeepSmart 团队成员介绍

罗志鹏(getmax): 微软 Bing 搜索广告算法工程师,北京大学软件工程专业硕士,专注于深度学习技术在 NLP, 广告相关性匹配,CTR 预估等方面的研究及应用。

黄坚强 (Jack Strong) : 北京大学软件工程专业硕士在读,擅长特征工程、自然语言处理、深度学习。

孙浩(fastdeep): 微软 Bing 搜索广告部门首席开发工程师,专注于机器学习与深度学习在搜索广告和推荐算法领域的创新和应用,致力于通过提高在线广告匹配算法、相关性模型和点击率预估模型等来推动广告收入增长。

刘志豪 (LZH0115) : 华中科技大学自动化学院控制科学与工程硕士在读,主要研究方向图像识别、zero-shot learning、深度学习。

image.png左一:微软 Bing 搜索广告部门首席开发工程师孙浩;左二:微软 Bing 搜索广告算法工程师罗志鹏

团队成员曾经获奖记录:

  • NeurIPS 2018 AutoML(Phase 1)                                           1st place

  • KDD Cup 2018(Second 24-Hour Prediction Track)               1st place

  • KDD Cup 2018(Last 10-Day Prediction Track)                      1st place

  • Weibo Heat Prediction                                                        1st place

  • Shanghai BOT Big Data Application Competition                1st place

  • Daguan text Classification                                                   1st place

数据预处理、特征工程

我们通过 LightGBM 模型来验证特征效果,对文本做不同的预处理后进行特征工程。经验证,不同的文本预处理后形成的特征进行混合非常有利于单个模型的泛化能力的提升。我们将两个问题称为 q1 与 q2,接下来列举用到的特征,并说明不同预处理方式所使用的特征。

使用的特征如下:

文本距离特征。文本距离能较简单地判断出不相似的文本,相似的文本往往字符数及单词数较为接近,会带有相同或相似的单词,并且编辑距离会较短。同时,使用了 tf-idf 后关键词的权重会高,使用它来代替 count 提取特征更有效。以下为使用的文本距离特征:

  • 字符距离:q1 与 q2 字符数的差值绝对值,比例。

  • 单词距离:相同单词 tf-idf 权重和占所有单词 tf-idf 权重和的比例,q1 与 q2 相同单词数占所有单词数的比例,q1 与 q2 单词的 jaccard 距离,q1 与 q2 单词的交集数,并集数,单词数的差值等。

  • 字符 fuzzywuzzy 距离:使用 fuzzywuzzy 计算字符的编辑距离等。

  • 单词 fuzzywuzzy 距离:使用 fuzzywuzzy 计算单词的编辑距离等。

词向量特征。共使用了三种词向量:官方提供的词向量,利用官方提供的训练数据、预测数据、无标签数据训练的词向量,以及去除停用词后训练的词向量。虽然训练集及测试集数据量小,但是使用它们训练得出的词向量更能体现出该数据的特性。由于两个问题的单词长度并不相等,并且相似句子的词序差异很大,要使用词向量计算问题相似性,需要将词向量转换为句向量,我们对问题的词向量进行了两种处理得到了与词向量相同维度的句向量,分别是所有单词的词向量取均值,所有单词的词向量和除以单词词向量的 2 范数,使用这两种句向量来计算相似度能从词向量的角度来计算出两个问题的相似性。我们使用词向量构建了以下特征:

  • q1 词向量均值与 q2 词向量均值的相似度,相似度计算包括 cosine, cityblock,canberra, euclidean, minkowski, braycurtis,这些不同的距离能从不同角度来度量相似度。

  • q1 词向量和除以 q1 词向量 2 范数与 q2 词向量和除以 q2 词向量 2 范数的相似度,相似度计算包括 cosine, cityblock,, canberra, euclidean, minkowski, braycurtis。

  • 使用词向量计算问题的 Word Mover's Distance。

  • 根据两个问题的单词的 tf-idf 值提取两个问题的关键词,对关键词的词向量计算余弦相似度。两个问题会由于最关键的单词不相似从而导致句子不相似,所以通过 tf-idf 先计算出问题的关键词,然后再计算关键词词向量的相似度。

主题模型特征。主题模型是常用的文本相似度计算模型,使用主题模型来提取文本相似度特征加入我们的模型对模型的泛化能力有很大的提升。我们采用 LSI 和 LDA 模型来将句子映射到低维度的主题向量空间,由于主题向量维度低,可以直接使用主题向量特征而且不容易导致模型的过拟合,同时可以根据两个问题的主题向量来得出相似性特征,主题向量的计算能直接体现出两个问题的主题是否相似,以下为使用到的主题模型特征:

  • q1,q2 主题数为 3,5,7,9 的 LSI、LDA 主题向量

  • q1,q2 主题向量差值的绝对值

  • q1,q2 主题向量的相似度

预处理方式如下:

  • 原文本:使用特征 1,2,3,4,两个问题文本距离相差大的样本更倾向于不相似。

  • 去标点符号+字母转小写:使用特征 1,2,3,4,5,6,7,8,9,10,11,有无标点符号基本不会改变短文本的语义,大小写字母对语义也不会有影响,所以去标点符号及转换为小写后提取的特征更为有效。

  • 去标点符号+字母转小写+单词 2 元组:使用特征 2,4,9,10,11,n 元模型是自然语言处理的常用模型,使用单词 n 元组来提取特征,给模型增加了单词间的词序信息。

  • 去标点符号+字母转小写+去停用词:使用特征 1,2,3,4,5,6,7,8,9,10,11,停用词往往没有实际含义,去掉停用词再提取特征给模型增强了非停用词的信息。

  • 去标点符号+字母转小写+去停用词+单词 2 元组:使用特征 2,4,11

  • 去标点符号+字母转小写+去问题交集词:使用特征 1,3,4,5,6,7,8,9,10,11,去掉问题交集词后提取特征能给模型增强非交集词的信息。

无标签数据的利用:

无标签数据中包含西班牙语到英文的翻译,且比赛规则说明了不能使用翻译接口,因此最初我们训练了一个翻译模型,但是由于训练数据太少,导致模型严重过拟合,最后我们放弃使用翻译模型。

经过数据分析发现无标签数据集中包含部分测试集的英文翻译,所以我们采用纯规则在无标签数据中对测试集西班牙语的英文翻译进行了提取,从而我们可以训练英文模型并且对部分测试集进行预测。实验中发现当我们使用弱匹配时虽然能匹配到更多的英文对,但是线上效果却不好,经过分析发现弱匹配会有映射错误,而一旦映射错误就很容易被预测成一个接近 0 的概率值,如果这样,原来这个样本的 label 是 1 的话,loss 就会变得很大,因此我们匹配时尽量做到精确匹配,尽管这样匹配的样本不多。

根据我们的较精确的匹配方法,在 A 榜测试集中,我们可以从 5000 个测试集中提取出 2888 个,在 B 榜测试集中,我们可以从 10000 个测试集中提取出 4334 个。在 A 榜中,使用英文训练的模型来预测这 2888 个测试集,经验证,使用西班牙语模型与英语模型融合在 A 榜评分上能提升 0.003~0.004,由于 B 榜匹配上的样本占比更少,效果提升可能会有所减少。

从实验中我们验证了英文模型的有效性,如果使用英文翻译接口肯定能够得到更好的效果,此外也可以使用多种语言进行翻译来做数据增强。

验证

我们采用了以下两种验证方式。

  • Holdout validation:

由于测试集都为原生的西班牙语,而给予的训练集分为两类,一类是 20000 对从英语翻译过来的西班牙语,一类是 1400 对从西班牙语翻译过来的英语。显然,1400 对西班牙语更适合用于做验证,由于验证集和线上测试正负比例不一致,所以我们复制 1400 对西班牙语样本并调整了正负样本的比重,最终得到 34061 对验证集,同时我们对模型的随机数种子进行多次更换,取多个模型对验证集预测的平均值来得到最终的验证集评分。经过与 A 榜得分的对照,对该验证集预测评分的提升与 A 榜分数的提升保持了较好的一致性。

  • k-fold validation:

由于数据集较小,只采用一种验证方式并不能保证模型的泛化能力,所以我们也对 21400 对训练集采用了十折交叉验证。在每一折,我们留出一个部分作为验证集,一个部分作为测试集,并且将其余部分作为训练集。同时考虑到单一的数据划分,可能划分后的数据分布与测试集的数据分布差异更大,使得线下验证的结果可能与线上不一致,因此,我们设定不同的随机种子来产生多种划分。通过这种方式来调节模型的超参数以获得更好的线下线上一致性。当大致确定了模型的超参数之后,我们再使用一般的交叉验证方式来训练模型,以使得每折有更多的训练数据。

模型选择、模型融合

在模型的选择上,我们主要考虑使用深度神经网络模型,主要包括 3 种网络结构。在实验中我们测试了多种词嵌入的形式,我们使用了给定的 300 维的词向量,并且通过给定的语料训练了 128 维的词向量。通过实验我们发现使用给定语料训练出来的词向量能够实现更低的 logloss,这可能是因为给定语料训练的词向量对问题本身根据有针对性,能够学习到针对该任务更好的表示;此外我们还测试过 tri-letter 和字符卷积,因实验效果不好最后未使用。

  • 模型一:M-CNN

该模型是由我们自主创新的一个语义匹配模型。首先使用 Embedding 对 q1,q2 进行编码提取每个 word 的语义特征,然后再经过 BN 对 word 的语义特征进行标准化,然后我们使用不同尺寸的 filter 建立卷积层,每一种 filter 用来提取一种局部语义特征,filter 越大局部语义跨度越大。这里我们使用 conv1-conv5 和 maxpooling 后得到 5 种不同的句子语义特征向量,再用 q1 和 q2 对应的局部语义特征向量计算余弦相似度,可以得到 5 个余弦相似度,我们也添加了交叉相似特征,包括 Cos1*Cos2, Cos1*Cos3, Cos1*Cos4, 然后 concat 连接起来形成新的表示层,最后再经过 Dense,PRelu, Dropout, BN,output 得到最后的匹配结果。此外我们进行了进一步优化,我们用 Embedding 后的 q1,q2 计算余弦相似矩阵,这里每个 word 的向量由该 word 与另一端的所有 word 余弦相似性组成,然后我们保留了 top10 的相似性作为该 word 的语义表达,然后经过卷积、maxpooling、dense 得到另一种匹配度,最后加入到 Cos 的 concat 中。由于 q1 和 q2 的顺序无关,所以这里的 Embedding,BatchNormlization 和所有的 convolution 层都是共享的。

image.png


  • 模型二:Decomposable Attention

该模型的核心是 alignment, 即词与词之间的对应关系,alignment 用在了两个地方,一个是 attend 部分,是用来计算两个句子之间的 attention 关系,另一个是 compare 部分,对两个句子之间的词进行比较,每次的处理都是以词为单位,最后用前馈神经网络去做预测,它并没有使用到词在句子中的时序关系,但是它参数量少且运行速度较块,在实验中也取得了不错的效果。

image.png


  • 模型三:ESIM

相对于 Decomposable Attention 模型来说,ESIM 在 Embedding 之后添加了 BatchNormlization 层,并把 project 层和 compare 层都从原来的 Dense 换成了 BiLSTM。这里的局部推理(Local Inference Modeling)也是一个 attention 过程,只是它是在 LSTM 输出序列上计算得到的。同样 Pooling 层也是在 LSTM 的每个时间步上进行 pooling 的,ESIM 模型有了很强的时序关系,在时序比较敏感的任务中一般能够取得很好的效果,在此次竞赛中 ESIM 也表现的很好。

image.png

使用 dense feature 作为 gate 的模型优化:

我们在 LightGBM 中使用了文本字距离、tf-idf、词向量相似度、LDA、LSI 等特征,同时我们把这些特征嵌入到了深度学习模型中,这部分特征我们称做 dense feature。在实验中发现把 dense feature 和 nn 模型某一层直接 concat 的效果并不好,我们参考了 product neural network 概念以及 LSTM 中的 Gate 设计,我们把 dense feature 做为 gate 来使用,使用中我们把 dense feature 经过全连接层得到和子模型维度一样的表示向量,然后加上 sigmoid 激活函数,再进行 element-wise-multiplication,这样 dense feature 就可以控制子模型的信息流通,通过实验发现这样的结构在每个子模型上都得到的很大的提升。优化后的模型结构如下:

image.pngGate-ESIM:

image.png

模型融合

这次比赛我们在模型融合上做的比较简单,最终结果融合了 4 种模型,包括 Gate-M-CNN, Gate-DA, Gate-ESIM 和 LightGBM,对于这 4 种模型我们训练了英文版本和西班牙语版本,首先按照两种语言分别加权融合,然后再融合两种语言的结果。

image.png

本文由 DeepSmart.AI 作者:DeepSmart 发表,其版权均为 DeepSmart 所有,文章内容系作者个人观点,不代表 DeepSmart.AI 对观点赞同或支持。如需转载,请注明文章来源。本文链接地址:http://www.deepsmart.ai/76.html

发表评论