Esim:

ESIM(Enhanced Sequential Inference Model)是一个综合应用了BiLSTM和注意力机制的模型,在文本匹配中效果十分强大,也是目前为止非常最复杂的模型。

首先什么是文本匹配,简单来说就是分析两个句子是否具有某种关系,比如有一个问题,现在给出一个答案,我们就需要分析这个答案是否匹配这个问题,所以也可以看成是一个二分类问题(输出是或者不是)。现在主要基于SNIL和MutilNLI这两个语料库,它们包含两个句子premise和hypothesis以及一个label,label就是判断这两个句子的关系,接下来我们分析esim如何做的文本匹配的分析。

就像上面提到的,这个问题简单来说就是输入两个句子,输出一个label,这里一共有三个label(neutral(中性)、contradiction(矛盾)、entailment(蕴含)),那么我们就可以简单地用下图表示这个模型:

模型结构:

ESIM一共包含四部分,Input EncodingLocal Inference ModelingInference CompositionPrediction

Input Encoding

既然输入是两个句子,首先肯定是做word embedding了,方法有很多,这里假设直接用预训练的word2vec把句子转换成矩阵,注意,这时候我们得到的向量因为是基于word2vec预训练的向量得到的,并没有反映出句子中的前后文联系,所以我们这里继续利用BiLSTM再重新转换一下,得到最终的输入变量:

上面的ai、bi就是premise和hypothesis的某个单词的表示,这个过程就是ESIM中的input encoding过程。

我们先看一下这一层结构的输入内容,输入一般可以采用预训练好的词向量或者添加embedding层,接下来就是一个双向的LSTM,起作用主要在于对输入值做encoding,也可以理解为在做特征提取,最后把其隐藏状态的值保留下来,其中i与j分别表示的是不同的时刻,a与b表示的是上述提到的p与h。

Local Inference Modeling

这一层的任务主要是把上一轮拿到的特征值做差异性计算。这里作者采用了attention机制,其中attention weight的计算方法如下:

就是需要分析这两个句子之间的联系,具体怎么分析,首先要注意的是,我们现在得到的句子和单词的表示向量,是基于当前语境以及单词之间的意思综合分析得到的,那么如果两个单词之间联系越大,就意味着他们之间的距离和夹角就越少,比如(1,0)和(0,1)之间的联系,就没有(0.5,0.5)和(0.5,0.5)之间的联系大。在理解了这一点之后,我们再来看看ESIM是怎么分析的。

正如之前所说的,如果两个词向量联系较大,那么乘积也会较大,然后:

这两条公式是整个ESIM的精髓所在,上述几条公式的目的,简单来说可以这样理解,比如a中有一个单词"good",首先我分析这个词和另一句话中各个词之间的联系,计算得到的结果e{ij}标准化后作为权重,用另一句话中的各个词向量按照权重去表示"good",这样一个个分析对比,得到新的序列。以上过程称为Local Inference Modelling(本地推理模型)。

得到encoding值与加权encoding值之后,下一步是分别对这两个值做差异性计算,作者认为这样的操作有助于模型效果的提升,论文有两种计算方法,分别是对位相减对位相乘,最后把encoding两个状态的值与相减、相乘的值拼接起来。

很明显,这一步就是分析差异,从而判断两个句子之间的联系是否足够大了,ESIM主要是计算新旧序列之间的差和积,并把所有信息合并起来储存在一个序列中:

Inference Composition(合成推理)

为什么要把所有信息储存在一个序列中,因为ESIM最后还需要综合所有信息,做一个全局的分析,这个过程依然是通过BiLSTM处理这两个序列:

在这一层中,把之前的值再一次送到了BiLSTM中,这里的BiLSTM的作用和之前的并不一样,这里主要是用于捕获局部推理信息及其上下文,以便进行推理组合。

值得注意的是,F是一个单层神经网络(ReLU作为激活函数),主要用来减少模型的参数避免过拟合,另外,上面的t表示BiLSTM在t时刻的输出。

最后把BiLSTM得到的值进行池化操作,分别是最大池化与平均池化,并把池化之后的值再一次的拼接起来。

因为对于不同的句子,得到的向量v长度是不同的,为了方便最后一步的分析,这里进行了池化处理,把结果储存在一个固定长度的向量中。值得注意的是,因为考虑到求和运算对于序列长度是敏感的,因而降低了模型的鲁棒性,所以ESIM选择同时对两个序列进行average pooling和max pooling,再把结果放进一个向量中:

Prediction

最后把V 送入到全连接层,激活函数采用的是 tanh,得到的结果送到softmax层。

总结:

ESIM与BiMPM在相似度匹配任务中都是使用较多的模型,但是ESIM训练速度快,效果也并没有逊色太多,如果加入了语法树,其最终效果也能进一步的提升。

ESIM(Enhanced Sequential Inference Model)- 模型详解相关推荐

  1. sencha touch list(列表)、 store(数据源)、model(模型)详解

    先从model讲起 代码如下: 1 //求职 2 Ext.define('app.model.Staff', { 3 extend: 'Ext.data.Model', 4 config: { 5 f ...

  2. 文本匹配与ESIM模型详解

    ESIM(Enhanced Sequential Inference Model)是一个综合应用了BiLSTM和注意力机制的模型,在文本匹配中效果十分强大,也是目前为止我见过结构最复杂的模型,下面将会 ...

  3. 【深度学习】扩散模型(Diffusion Model)详解

    [深度学习]扩散模型(Diffusion Model)详解 文章目录 [深度学习]扩散模型(Diffusion Model)详解 1. 介绍 2. 具体方法 2.1 扩散过程 2.2 逆扩散过程 2. ...

  4. 数据库系统模式(schema)和模型(model)详解

     数据库系统模式(schema)和模型(model)详解 数据(data)是描述事物的符号记录. 模型(Model)是现实世界的抽象. 数据模型(Data Model)是数据特征的抽象,是数据库管 ...

  5. python训练模型函数参数_keras读取训练好的模型参数并把参数赋值给其它模型详解...

    介绍 本博文中的代码,实现的是加载训练好的模型model_halcon_resenet.h5,并把该模型的参数赋值给两个不同的新的model. 函数式模型 官网上给出的调用一个训练好模型,并输出任意层 ...

  6. Yolov5-v6.0模型详解

    Yolov5-v6.0模型详解 先看看yaml文件:可以知道6.0模型主要构成为conv.bottlenet.cs3.sppf.detect层 yaml文件如下: # YOLOv5 v6.0 back ...

  7. LeNet模型详解以及代码实现

    LeNet模型详解以及代码实现 一.卷积神经网络的构成 输入层 卷积层 激活函数 池化层(Pooling) 全连接层 二. LeNet-5详解及代码实现 1. LeNet模型详解 2. 代码实现 三. ...

  8. TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344 作者简介:汪剑,现在在出门问问负责推荐与个性化。曾在微软雅虎工作,

    TensorFlow Wide And Deep 模型详解与应用 TensorFlow Wide-And-Deep 阅读344  作者简介:汪剑,现在在出门问问负责推荐与个性化.曾在微软雅虎工作,从事 ...

  9. TensorFlow Wide And Deep 模型详解与应用

    Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右发布的一类用于分类和回归的模型,并应用到了 Google Play 的应用推荐中 [1].wide and dee ...

最新文章

  1. 在职研究生和全日制研究生的区别_在职研究生和全日制研究生的区别?
  2. 用Android Studio 出现的问题
  3. C++输出九九乘法表
  4. Codeforces 1042 D Petya and Array
  5. Springboot毕设项目基于springboot的小区旧物交易系统的设计与实现j8o94java+VUE+Mybatis+Maven+Mysql+sprnig)
  6. 完成例如12345转换为中文大写1万两千三百四十五
  7. 类的继承------C++
  8. 7-5 华氏度转摄氏度(四舍五入) (5分) java pta
  9. Python chain函数的用法
  10. 浮点运算方法和浮点运算器
  11. 【开源案例】基于机智云物联网平台的懒人版智能花盆
  12. Win10怎么录制高清的电脑屏幕?Win10屏幕录制工具哪个好?
  13. 浅谈什么是web应用防火墙(WAF)
  14. STM32学习(二)
  15. TSLAM室内定位系统详述(转载)
  16. mysql返回第n个值_【单选题】以下MySQL聚合函数,返回n个数值平均值的是( )。 A. MAX B. SUM C...
  17. linux下oracle11G DG搭建(三):围绕备库搭建操作
  18. 横板格斗类游戏实战:游戏数值策划表
  19. JAVA空字符串和Null的区别浅析
  20. 2小时超1.4亿人观看!AI解锁31年前Beyond演唱会,炸出一代人青春

热门文章

  1. UE4-PostProcessVolume(后期处理盒子)
  2. 【UE4】【笔记】7、照明阴影和后期处理
  3. mysql 截取身份证出生日期
  4. C++语言判断一个数是否为素数1/2
  5. background 背景属性详解
  6. Linux下利用nc命令来监控检测服务器的端口使用情况
  7. CocosCreator开发笔记(21)-cc.Sprite的动态加载和释放
  8. JAVA 时间戳与Date类型的相互转换、格式化日期、字符串日期转Date
  9. 2023美国大学生数学建模竞赛资料及思路
  10. 一维区间上高斯数值积分的MATLAB实现