| |
|
开发:
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(中立)。看看下面的例子:
在NLP中,判断蕴含或是矛盾的关系十分必要,例如信息检索、语义分析、常识推理等方面都会用到。评价标准简单有效,可以直接在NLI中专注于语义理解和语义表示,如此生成好的句子就可以直接迁移应用到其他的任务。 那么在文本匹配任务,或者说文本相似度任务上也是可以处理的。 模型结构该模型主要以下三个组件组成:
如下图所示: 这个模型在文章自然语言推理入门: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对输入的假设和前提进行编码。编码的公式如下: 局部推理建模 Local Inference Modeling局部推理的建模需要使用一些形式的硬或软对齐来关联前提和假设之间的相关子组件。在神经网络中经常使用则是软对齐。在软对齐层(soft alignment layer),去计算注意力权重(attention weights)去作为
<
a
 ̄
i
,
b
 ̄
j
>
<\overline a_i, \overline b_j>
<ai?,bj?>的相似性。如下: 组合推理 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 \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的意思。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |