开发者社区> 技术小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

深度学习模型复现难?看看这篇句子对模型的复现论文

简介:
+关注继续查看

论文介绍

这篇文章是 COLING 2018 的 Best Reproduction Paper,文章主要对现有的做句子对任务的最好的几个模型进行了重现,并且作者实现出来的效果和原文章声称的效果相差不多,这点还是很厉害的,而且作者对语义理解的集中任务也做了相关梳理,文章简单易读,还是很值得一看的。

任务

句子对建模是 NLP,NLU 中比较基础,并扮演着重要角色的任务,主要集中在语义理解,语义交互上,这也是我自己的一个研究方向,大致有这几类任务:

1. Semantic Textual Similarity (STS) :判断两个句子的语义相似程度(measureing the degree of equivalence in the underlying semantics of paired snippets of text);

2. Natural Language Inference (NLI) :也叫 Recognizing Textual Entailment (RTE),判断两个句子在语义上是否存在推断关系,相对任务一更复杂一些,不仅仅是考虑相似,而且也考虑了推理;

3. Paraphrase Identification (PI) :判断两个句子是否表达同样的意思(identifing whether two sentences express the same meaning);

4. Question Answering (QA) :主要是指选择出来最符合问题的答案,是在给定的答案中进行选择,而不是生成;

5. Machine Comprehension (MC) :判断一个句子和一个段落之间的关系,从大段落中找出存在答案的小段落,对比的两个内容更加复杂一些。

论文模型

有了任务,作者选取了集中目前情况下最好的模型,因为原文中每个模型可能只针对了某些任务进行了很多优化,那这些模型是否真的有效呢,作者考虑这些模型在所有的任务上进行比较,在介绍模型之前,作者首先介绍了句子对建模的一般框架:

一般框架

1. 输入层:适用预训练或者参与训练的词向量对输入中的每个词进行向量表示,比较有名的 Word2Vec,GloVe,也可以使用子序列的方法,例如 character-level embedding;

2. 情境编码层:将句子所处的情境信息编码表示,从而更好的理解目标句子的语义,常用的例如 CNN,HighWay Network 等,如果是句子语义表示的方法,一般到这里就结束了,接下来会根据具体的任务直接使用这一层得到语义表示

3. 交互和注意力层:该层是可选的,句子语义表示有时候也会用到,但更多的是词匹配方法用到的,通过注意力机制建模两个句子在词层面的匹配对齐关系,从而在更细粒度上进行句子对建模,个人认为句子语义表示也会用到这些,只是句子语义表示最后会得到一个语义表示的向量,而词匹配的方法不一定得到句子语义的向量

4. 输出分类层:根据不同的任务,使用 CNN,LSTM,MLP 等进行分类判断。

下图展示了一些句子语义表示的模型的基本框架:

22fe037170f90966cca565483210c197a44f0a03

有了这个一般的框架,接下来作者选取了集中目前最好的模型进行重现。

模型选择

1. InferSent [1]:BiLSTM+max-pooling;

2. SSE [2]:如图 1,和 InferSent 比较类似;

3. DecAtt [3]:词匹配模型的代表,利用注意力机制得到句子 1 中的每个词和句子 2 中的所有词的紧密程度,然后用句子 2 中的所有词的隐层状态,做加权和表示句子 1 中的每个词;

4. ESIM [4]:考虑了一些词本身的特征信息,和 DecAtt 比较类似;

5. PWIM [5]:在得到每个词的隐层状态之后,通过不同的相似度计算方法得到词对之间相似关系,最后利用 CNN 进行分类。

数据

为了更好的展示每个数据的情况,在这里直接用下图展示作者使用到的数据集:

0f2b30927001c5f41b853d60c93bf9da4aec7381

结果

直接上结果,上图是原文章中的结果,下图是作者重现的结果:

91af0aa759f7115364bfa94c3aec642fa00aca99

从结果上看,作者实现的效果还是很厉害的,基本上跟原文章声明的不相上下,当然由于不是针对特定任务进行特别优化,所有效果还是有一点点差的,但基本上可以认为是实现了原来的效果,而且作者也发现了一些有意思的现象,例如:表现最好的就是 ESIM,个人感觉这里面加入了很多次本身的一些信息,例如近义词,反义词,上下位信息等,这些信息其实对句子语义理解十分重要。

以上就是这篇文章的整体介绍,作者完整实现了这些方法,并在不同的数据集上进行验证,工作量还是很大的,而且对句子对建模进行了比较完整的介绍,还是很有意思的。


原文发布时间为:2018-06-19

本文作者:张琨

本文来自云栖社区合作伙伴“PaperWeekly”,了解相关信息可以关注“PaperWeekly”。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
52 个深度学习目标检测模型汇总,论文、源码一应俱全!
52 个深度学习目标检测模型汇总,论文、源码一应俱全!
96 0
52 个深度学习目标检测模型汇总,论文、源码一应俱全!
52 个深度学习目标检测模型汇总,论文、源码一应俱全!
57 0
一周AI最火论文 | 使用图形界面就能搭建的强化学习模型
一周AI最火论文 | 使用图形界面就能搭建的强化学习模型
45 0
SAP CRM系统订单模型的设计与实现
SAP成都研究院的一个部门领导让我给他的团队做一个SAP CRM One Order框架的培训,这是我准备的培训内容。 在Jerry之前的文章 基于SAP Kyma的订单编排增强介绍,我表达了自己对SAP应用的理解:模型以及基于模型的增删改查。
1846 0
COLING 2018 最佳论文解读:序列标注经典模型复现
这篇论文是 COLING 2018 的 Most reproducible Paper。作者用 PyTorch 实现了一个统一的序列标注框架,重现了 CoNLL 2003 English NER、CoNLL 2000 Chunking 和 PTB POS tagging 这三个数据集上不同模型的的表现。
2570 0
我的深度学习论文阅读之旅(一)
0. 参考资料 Xception: Deep Learning with Depthwise Separable Convolutions. François Chollet, 2017. 如何评价谷歌的xception网络? MobileNet V2 论文初读 纵览轻量化卷积神经网络:Sque...
1674 0
学习笔记——基本光照模型简单实现
Lambert光照模型,根据光照向量与顶点发现的夹角来确定光照强度: Shader "James/VP Shader/LightModel-Lambert" { Properties { _MainTex ("MainTex", 2D) = "whi...
816 0
I/O复用——各种不同的IO模型
一、概述          我们看到上面的TCP客户同时处理两个输入:标准输入和TCP套接字。我们遇到的问题就是在客户阻塞于(标准输入上的)fgets调用期间,服务器进程会被杀死。服务器TCP虽然正确地给客户TCP发送一个FIN,但是既然客户进程阻塞于从标准输入读入的过程,它将看不到这个ROF,知道从套接字读时为止(可能已经过了很长时间)。
794 0
+关注
技术小能手
云栖运营小编~
7194
文章
9
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载