前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >携程实践丨深度学习在语义匹配模型中的应用

携程实践丨深度学习在语义匹配模型中的应用

作者头像
博文视点Broadview
发布2023-05-19 20:10:16
3610
发布2023-05-19 20:10:16
举报

如何正确理解用户的诉求是交互过程的核心,近几年随着机器学习和深度学习的发展,语义匹配模型在学术界也有质的飞跃。今天我们将结合携程业务应用案例聊聊如何把这些模型落地在旅游场景中的,同时结合旅游场景做相应的模型改进。

问题匹配模型是机器人进行交互的基础模型,对匹配率的要求较高。传统的做法是直接根据关键词检索或 BM25等算法计算相关性排序,但这种方法的缺点是需要维护大量的同义词典库和匹配规则。后来发展出了潜在语义分析技术( Latent Semantic Analysis,LSA),该技术将词句映射到低维连续空间,可在潜在的语义空间上计算相似度。接着又有了 PLSA(Probabilistic Latent Semantic Analysis)、 LDA(Latent Dirichlet Allocation)等概率模型,它们形成了非常火热的浅层主题模型技术。

些算法使文本的语义表示形式简洁,较好地弥补了传统词汇匹配方法的不足。不过从效果上来看,这些技术都无法完全替代基于字词的匹配技术。

随着深度学习技术的兴起,使用基于神经网络训练的 Word2vec模型进行文本匹配计算引起了人们的广泛关注,而且进一步加强了所得词语向量表示的语义的可计算性。但是无监督的 Word2vec 在句子匹配度计算的实用效果上还存在不足,而且本身没有解决短语、句子的语义表示问题。因此,研究者开始研究句子级别上的神经网络语言模型。例如,微软研究院提出了 DSSM 模型(Deep Structured Semantic Model);华为实验室提出了一些新的神经网络匹配模型变体 ,如基于二维交互匹配的卷积匹配模型;中科院等研究机构也提出了诸如多视角循环神经网络匹配模型( MV-LSTM)、基于矩阵匹配的层次化匹配模型( Match Pyramid)等更加精致的神经网络文本匹配模型。虽然模型的结构非常多,但是底层结构单元基本以全链接层、 LSTM、卷积层、池化层为主。

非交互的语义匹配模型以双向 LSTM为例,句子的特征向量可以利用双向 LSTM的最终输出作为表征向量,也可以利用自注意机制来表征,如下图所示。

上图所示是直接利用双向 LSTM的输出拼接成句子向量,自注意机制则利用加权方法计算句子的向量。在实验中我们发现采用自注意机制的模型效果往往优于传统的做法。后面我们还会详细介绍利用复杂的自注意机制来表征句子向量。

RNN(循环神经网络)计算的数学表达式如下: 

(1)

由公式( 1)可知,当句子长度过长时, RNN模型的计算性能会有所下降。而 CNN(卷积神经网络)模型在这方面有较大优势, CNN可以采用并行计算方法。

Google 于 2017年发表的  Attention is all you need 中引入的 transformer模型则打破了采用 RNN和 CNN进行句子 embedding的传统结构。这篇文章的编码器不是采用这两种结构来编码序列关系的,而是采用自注意机制来进行编码的。如下图所示,图中有一个重要的结构:多头注意力。

其数学表达式如下:

最终我们得到的输出是每个词的表征序列,然后可以根据我们的需求得到句子向量,当添加 LSTM或 CNN结构时,能够得到更强的句子表征向量。

不论哪种深度学习方法,我们看到最底层的单元结构是 word embedding,这是我们进行句子表征的基础。

但是前面几种方法都有一个缺陷,即在任何句子中,word embedding都是唯一的,不能随着上下文变化。ELMo模型克服了传统 embedding的这一缺点。ELMo模型通过在大量无监督语料中预训练双向 Language Model,其模型结构为 stacked-BiLSTM,然后将该模型用在特定任务中生成带上下文的词语表征。第 k个词的词向量用数学语言表示如下:

式中,sj表示归一化系数;hk,j表示第 j层 BiLSTM的词向量。这样每个词向量都是上下文相关的,相比原来直接使用 word embedding效果会有显著提升。

有了句子向量,接下来我们要做的就是如何利用句子向量来进行语义匹配。一般的做法是采用两种任务来描述,即分类任务和排序任务。

基于分类的模型结构的最后一层接的是多类别的 softmax,即输入是用户,分类结果是所属的标准用户类别,如下图所示。根据分类的特点,我们定义的损失函数是交叉熵。

如果把原问题看成排序问题,可以采用三种排序学习的方法来实现,即 point¬wise、pair-wise和 list-wise。

在 QA中我们常用的是 point-wise和 pair-wise,如下图所示。其中 point-wise方法直接把问题转换成二分类,先判断当前用户问题是否属于待匹配的问题,再根据隶属概率值得到问题的排序。

而 pair-wise方法学习的是 (UQ,SQ+)和 (UQ,SQ−)之间的排序关系,训练目标是最大化正样本对和负样本对的距离,数学表达式如下:

式中,f(  )表示某种距离度量。

有了句子向量编码器和优化目标,那么基础的语义匹配模型也就形成了。虽然前面介绍了几种常用的编码器,但具体的选择也依赖于对应的场景,如果场景本身的数据量较小或较为简单,采用简单的 CNN模型或 RNN模型即可(其中 word embedding建议采用公开训练的);而复杂场景或数据量较大的场景可以采用层数更复杂的 transformer-encoder结构。

几种基于交互的语义匹配模型

区别于关注文本表示学习的思想,交互建模则更加直接地建立文本的匹配模式,利用神经网络捕获文本之间的匹配特征。这在一定程度上更接近文本匹配的本质,通过字词级别、短语级别的匹配,扩展到句子级的整体语义匹配。目前文本交互形式主要有两种,一种是匹配矩阵,另一种是注意力机制。接下来将分别介绍基于直接交互建模的 MatchPyramid模型,以及结合文本表示和文本交互建模的 hCNN和 IR-Transformer模型。

1.文本交互匹配模型

MatchPyramid模型是由中科院提出的一种文本匹配模型,重新定义了文本之间的交互方式。该模型首先利用点积运算和同或运算构建两个句子之间的匹配矩阵;其次通过类似于图像处理的方式,基于二维卷积、池化操作提取矩阵中的特征;最后基于全连接网络预测句子间的相似度。MatchPyramid模型的整体网络架构如下图所示。

文本匹配模型以字或词作为基础单元, MatchPyramid模型利用最细粒度字词向量计算两两之间的相似度,构建一个二维的匹配矩阵,该矩阵包含所有最细粒度的匹配信息。MatchPyramid模型将匹配特征抽取问题看作图像识别问题,通过多层卷积网络提取语义层面的 n-gram特征,这些语义信息在文本匹配任务上具有良好的表现效果。 

2.电商QA 模型

Hybrid CNN模型(简称 hCNN模型)是 2017年由阿里提出的电商 QA模型 [18],考虑到基于 LSTM的模型参数复杂、比较耗时, hCNN模型采用两种不同类型的 CNN作为文本特征的编码器,一方面利用 BCNN模型的一维卷积提取每个句子的表示特征,另一方面采用 MatchPyramid模型的二维卷积提取匹配矩阵的交互特征。最后,这些特征被拼接在一起作为分类层的输入,通过特征的非线性组合预测语义的匹配度,如下图所示。

3.交互注意力模型

Transformer模型是由 Google提出的一种机器翻译模型,其最大的特点是利用一种 Multi-head Attention(多头注意力)机制代替 LSTM作为文本表示的特征编码器,具有良好的效果和较高的性能。在多项 NLP任务中取得较好效果的 Bert模型就是以 Transformer模型作为基础的单元模块。

我们仍然采用双向 LSTM作为文本表示建模的基础模型,提取句子的上下文特征。考虑到 Transformer模型的编码器和解码器不同,在 QA任务中主要利用 Multi-head Attention实现从用户问题到标准问题的单向文本对齐,提取文本之间的交互特征。在这种交互操作中,注意力层的输入包含两个文本的信息,使得标准问题的表示中包含用户问题的上下文信息,如下图所示。改进的注意力模型能够在一定程度上缓解基础 QA模型在语义表示和特征提取中的不足。 

以上内容选自携程技术团队新作《携程人工智能实践》

▼ 扫码获取本书详情 ▼

如果喜欢本文

欢迎 在看留言分享至朋友圈 三连

热文推荐 

▼ 点击阅读原文,获取本书详情~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档