IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【NLP】文本匹配——Enhanced LSTM for Natural Language Inference阅读与总结 -> 正文阅读

[人工智能]【NLP】文本匹配——Enhanced LSTM for Natural Language Inference阅读与总结

背景

这篇论文是来自于 ACL 2017,论文地址:https://arxiv.org/abs/1609.06038.

首先了解一下什么是, Natural Language Inference,自然语言推理。根据Natural language inference上的介绍:Natural language inference is the task of determining whether a “hypothesis” is true (entailment), false (contradiction), or undetermined (neutral) given a “premise”。也就是说它主要用来判断两个句子给定前提premise和假设hypothesis,判断语义上的关系,一般可以分为:Entailment(蕴含)、Contradiction(矛盾)、Neutral(中立)。看看下面的例子:

PremiseHypothesisLabel
A man inspects the uniform of a figure in some East Asian country.The man is sleeping.contradiction
An older and younger man smiling.Two men are smiling and laughing at the cats playing on the floor.neutral
A soccer game with multiple males playing.Some men are playing a sport.entailment

在NLP中,判断蕴含或是矛盾的关系十分必要,例如信息检索、语义分析、常识推理等方面都会用到。评价标准简单有效,可以直接在NLI中专注于语义理解和语义表示,如此生成好的句子就可以直接迁移应用到其他的任务。

那么在文本匹配任务,或者说文本相似度任务上也是可以处理的。

模型结构

该模型主要以下三个组件组成:

  • input encoding 输入编码
  • local inference modeling 局部推理建模
  • inference composition 组合推理

如下图所示:
在这里插入图片描述
在上图中,在垂直方向,左半部分就是我们常说的ESIM(Enhanced Sequential Inference Model)模型,这也是本文要介绍的内容,右边的则是tree LSTM模型。在实际使用中,左边的模型ESIM使用较多。

这个模型在文章自然语言推理入门:ESIM更加详细,如下:
在这里插入图片描述

现在我们有两个句子: a = ( a 1 , ? ? , a ? a ) \mathbf{a} = (\mathbf{a_1}, \cdots, \mathbf{a_{\ell_a}}) a=(a1?,?,a?a??) b = ( b 1 , ? ? , b ? b ) \mathbf{b} = (\mathbf{b_1}, \cdots, \mathbf{b_{\ell_{b}}}) b=(b1?,?,b?b??)。其中语句 a \mathbf{a} a是premise(前提) b \mathbf{b} b是hypothesis(假设). a i \mathbf{a_i} ai? b i \mathbf{b_i} bi? 都是维度为 l l l的Embedding 向量。任务的目标就是给 a \mathbf{a} a b \mathbf{b} b的逻辑关系打上一个标签 y y y

输入编码Inpute Encoding

模型使用BiLSTM对输入的假设和前提进行编码。编码的公式如下:
a  ̄ i = BiLSTM ? ( a , i ) , ? i ∈ [ 1 , … , ? a ] b  ̄ j = BiLSTM ? ( b , j ) , ? j ∈ [ 1 , … , ? b ] \begin{aligned} \overline{\mathbf{a}}_{i} &=\operatorname{BiLSTM}(\mathbf{a}, i), \forall i \in\left[1, \ldots, \ell_{a}\right] \\ \overline{\mathbf{b}}_{j} &=\operatorname{BiLSTM}(\mathbf{b}, j), \forall j \in\left[1, \ldots, \ell_{b}\right] \end{aligned} ai?bj??=BiLSTM(a,i),?i[1,,?a?]=BiLSTM(b,j),?j[1,,?b?]?
使用BiLSTM主要是对这两个语句中的词语进行上下文表示。其中 a  ̄ i \overline a_i ai? b  ̄ j \overline b_j bj?都是BiLSTM对应时间步上隐藏层的输出构成新的Embedding。

局部推理建模 Local Inference Modeling

局部推理的建模需要使用一些形式的硬或软对齐来关联前提和假设之间的相关子组件。在神经网络中经常使用则是软对齐。在软对齐层(soft alignment layer),去计算注意力权重(attention weights)去作为 < a  ̄ i , b  ̄ j > <\overline a_i, \overline b_j> <ai?,bj?>的相似性。如下:
e i j = a  ̄ i T b  ̄ j e_{ij} = \overline a_i^T\overline b_j eij?=aiT?bj?
然后再结合 a i  ̄ \overline \mathbf{a_i} ai?? b j  ̄ \overline \mathbf{b_j} bj?? e i j e_{ij} eij?,生成相似性加权后的向量,如下:
a ~ i = ∑ j = 1 ? b exp ? ( e i j ) ∑ k = 1 ? b exp ? ( e i k ) b  ̄ j , ? i ∈ [ 1 , … , ? a ] b ~ j = ∑ i = 1 ? a exp ? ( e i j ) ∑ k = 1 ? a exp ? ( e k j ) a  ̄ i , ? j ∈ [ 1 , … , ? b ] \begin{aligned} \tilde{\mathbf{a}}_{i} &=\sum_{j=1}^{\ell_{b}} \frac{\exp \left(e_{i j}\right)}{\sum_{k=1}^{\ell_{b}} \exp \left(e_{i k}\right)} \overline{\mathbf{b}}_{j}, \forall i \in\left[1, \ldots, \ell_{a}\right] \\ \tilde{\mathbf{b}}_{j} &=\sum_{i=1}^{\ell_{a}} \frac{\exp \left(e_{i j}\right)}{\sum_{k=1}^{\ell_{a}} \exp \left(e_{k j}\right)} \overline{\mathbf{a}}_{i}, \forall j \in\left[1, \ldots, \ell_{b}\right] \end{aligned} a~i?b~j??=j=1?b??k=1?b??exp(eik?)exp(eij?)?bj?,?i[1,,?a?]=i=1?a??k=1?a??exp(ekj?)exp(eij?)?ai?,?j[1,,?b?]?
接下来就是增强局部推理的信息(Enhancement of local inference information)了。其操作如下公式:
m a = [ a  ̄ ; a ~ ; a  ̄ ? a ~ ; a  ̄ ⊙ a ~ ] m b = [ b  ̄ ; b ~ ; b  ̄ ? b ~ ; b  ̄ ⊙ b ~ ] \begin{aligned} \mathbf{m}_{a} &=[\overline{\mathbf{a}} ; \tilde{\mathbf{a}} ; \overline{\mathbf{a}}-\tilde{\mathbf{a}} ; \overline{\mathbf{a}} \odot \tilde{\mathbf{a}}] \\ \mathbf{m}_{b} &=[\overline{\mathbf{b}} ; \tilde{\mathbf{b}} ; \overline{\mathbf{b}}-\tilde{\mathbf{b}} ; \overline{\mathbf{b}} \odot \tilde{\mathbf{b}}] \end{aligned} ma?mb??=[a;a~;a?a~;aa~]=[b;b~;b?b~;bb~]?
本质上来说就是对两个句子的表示做差和点积(element-wise product,每个元素单独相乘)。

组合推理 inference composition

这里继续使用BiLSTM来计算局部推理的信息,其目的是用于捕获局部推理信息 m a \mathbf{m}_{a} ma? m b \mathbf{m}_{b} mb?以及对应的上下文进行组合推理。

由于 m a \mathbf{m}_{a} ma? m b \mathbf{m}_{b} mb?数据维度已经比较打大了,为了降低模型的复杂度以及减少潜在的过拟合,使用了一个具有ReLU激活的1层前馈神经网络。分别得到 v a \mathbf{v_a} va? v b \mathbf{v_b} vb?,如下:
v a , i = BiLSTM ? ( m a , i ) , ? i ∈ [ 1 , … , ? a ] v b , j = BiLSTM ? ( m b , j ) , ? j ∈ [ 1 , … , ? b ] \begin{aligned} v_{a,i} &=\operatorname{BiLSTM}(\mathbf{m_a}, i), \forall i \in\left[1, \ldots, \ell_{a}\right] \\ v_{b,j} &=\operatorname{BiLSTM}(\mathbf{m_b}, j), \forall j \in\left[1, \ldots, \ell_{b}\right] \end{aligned} va,i?vb,j??=BiLSTM(ma?,i),?i[1,,?a?]=BiLSTM(mb?,j),?j[1,,?b?]?

接下来推理模型将上述获得的结果向量转换为一个具有池化的固定长度的向量,并将其提供给最终的分类器。具体操作中:计算平均池和最大池,并连接所有这些向量,形成最终的固定长度向量 v \mathbf{v} v,计算如下:

v a , ?ave? = ∑ i = 1 ? a v a , i ? a , v a , max ? = max ? i = 1 ? a v a , i v b , ?ave? = ∑ j = 1 ? b v b , j ? b , v b , max ? = max ? j = 1 ? b v b , j v = [ v a , ?ave? ; v a , max ? ; v b , ?ave? ; v b , max ? ] \begin{aligned} \mathbf{v}_{a, \text { ave }} &=\sum_{i=1}^{\ell_{a}} \frac{\mathbf{v}_{a, i}}{\ell_{a}}, \quad \mathbf{v}_{a, \max }=\max _{i=1}^{\ell_{a}} \mathbf{v}_{a, i} \\ \mathbf{v}_{b, \text { ave }} &=\sum_{j=1}^{\ell_{b}} \frac{\mathbf{v}_{b, j}}{\ell_{b}}, \quad \mathbf{v}_{b, \max }=\max _{j=1}^{\ell_{b}} \mathbf{v}_{b, j} \\ \mathbf{v} &=\left[\mathbf{v}_{a, \text { ave }} ; \mathbf{v}_{a, \max } ; \mathbf{v}_{b, \text { ave }} ; \mathbf{v}_{b, \max }\right] \end{aligned} va,?ave??vb,?ave??v?=i=1?a???a?va,i??,va,max?=i=1max?a??va,i?=j=1?b???b?vb,j??,vb,max?=j=1max?b??vb,j?=[va,?ave??;va,max?;vb,?ave??;vb,max?]?

然后再将 v \mathbf{v} v与一个全连接层相连,其中全连接层使用了tanh的激活函数,以及sofma激活函数作为输出层,以及使用了多类别的交叉熵计算损失。

总结

总体而言,大部分内容是通过BiLSTM构建去提取语句内部的特征,最后使用将两个语句的特征拼接在一起,再连接一个全连接层输出。其中,在软对齐方面,更有点attention的意思。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:43:23  更:2022-04-18 17:45:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/8 3:06:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码