深度学习笔记——基于双向RNN(LSTM、GRU)和Attention Model的句子对匹配方法

本文主要是介绍深度学习笔记——基于双向RNN(LSTM、GRU)和Attention Model的句子对匹配方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面写过用Word2vec和Doc2vec进行句子对匹配,以及基于传统机器学习方法进行句子对匹配的方法,本文主要介绍基于双向RNN(LSTM、GRU)和Attention Model的句子对匹配方法。

首先来看一下什么叫句子对匹配:

句子对匹配(Sentence Pair Matching)问题是NLP中非常常见的一类问题,所谓“句子对匹配”,就是说给定两个句子S1和S2,任务目标是判断这两个句子是否具备某种类型的关系。如果形式化地对这个问题定义,可以理解如下:

意思是给定两个句子,需要学习一个映射函数,输入是两个句子对,经过映射函数变换,输出是任务分类标签集合中的某类标签。
典型的例子就是Paraphrase任务,即要判断两个句子是否语义等价,所以它的分类标签集合就是个{等价,不等价}的二值集合。除此外,还有很多其它类型的任务都属于句子对匹配,比如问答系统中相似问题匹配和Answer Selection。

 

接下来我们来看一下深度学习中都有哪些句子对匹配的模型:

 

句子对匹配模型(一)

就是把两个句子S和T拼接起来,中间用一个特殊分隔符EOS分割,这里EOS不代表一个句子的结束,而是代表两个句子的分隔符号,如此就构造出了RNN的输入层。之后可以套上双向以及深层网络结构,在最高一层RNN层的输出之上,套上一个Attention Model层。这里的Attention Model层其实是一个静态的AM,具体做法就是首先计算BLSTM各个节点的注意力权重,然后对各个节点乘以注意力权重进行加和得到一个向量表示。

然后,在Attention Model之上,我们还可以套上一层SoftMax层,这样就可以实现最终的分类目的。

 

句子对匹配模型(二)

对于两个句子,分别套上一个RNN或者深层LSTM亦或双向深层LSTM等,每个RNN的目的是抽取出这个句子的特征,然后将两个句子抽取出的特征拼接成更上层的MLP多层神经网络的输入层,经过MLP的隐层使得两个句子发生非线性映射关系,最后再通过SoftMax分类层给出最后的分类结果。
这样就通过两个RNN实现了对两个句子是否具备某种关系作出分类判断的决策,使用训练数据可以获得网络参数,之后就可以将这个神经网络用来对现实任务进行分类的工作。

 

接下来,我们将MLP层之前添加一个Attention Model层,得到句子对匹配模型三

句子对匹配模型(三)


 

Attention Model层首先得到两个句子的向量表达,然后将得到的向量表达拼接起来作为MLP的输入,最终经过Softmax进行分类。

 

句子对匹配模型(四)


模型四与模型三的区别在于,模型三是对每一个句子经过深层BiLSTM得到的编码结果加上一个静态AM得到句子的一个向量表达,然后将两个句子的向量表达拼接起来。而模型四是通过Soft Attention Model得到两个句子之间的相互Attention向量,然后将这些向量进行MeanPooling,得到的结果输入MLP,最后经过Softmax得到分类结果。

 

最后:图中的BiLSTM还可以替换为BiGRU。

这篇关于深度学习笔记——基于双向RNN(LSTM、GRU)和Attention Model的句子对匹配方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/967618

相关文章

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S