在NLP中深度学习模型何时需要树形结构?
在NLP中深度学习模型何时需要树形结构?
前段时间阅读了Jiwei Li等人[1]在EMNLP2015上发表的论文《When Are Tree Structures Necessary for Deep Learning of Representations?》,该文主要对比了基于树形结构的递归神经网络(Recursive neural network)和基于序列结构的循环神经网络(Recurrent neural network),在4类NLP任务上进行实验,来讨论深度学习模型何时需要树形结构。下面我将通过分享这篇论文以及查看的一些相关资料来讨论一下我们何时需要树形结构知识。
1 句法分析树
根据不同的标注树库,句法分析树主要有两种形式:1) 短语结构树(Constituent Tree) 和2) 依存结构树(Dependency Tree)。下面举个简单的例子,"My dog likes eating sausage." 使用Stanford parsing tool进行句法分析可以得到如下结果:
我们将其可视化后,短语结构树和依存树分别为:
论文[1]中指的树形结构即为NLP中句法分析后得到的句法树结构。
2 对比模型
在论文中,主要分了两大组模型进行对比实验,具体的是:
- Standard tree models (standard Recursive neural models), standard sequence models (standard Recurrent neural models), standard bi-directional sequence models (bi-directional recurrent neural models).
- LSTM tree models[2], LSTM sequence models vs LSTM bi-directional sequence models.
每组就是三个模型,树模型,单向序列模型和双向序列模型,具体的模型大家可以查阅文献,下面我只给出标准模型的结构图。
Standard Recursive/Tree Models
Standard Recurrent/Sequence Models
Bidirectional Recurrent Models
3 实验数据
该文在NLP领域中4种类型5个任务进行了实验,具体的实验数据大家可以从论文中查阅,这里我主要分析一下每个任务的特点,以及最后实验的结果:
- Sentiment Classification on the Stanford Sentiment Treebank
这是一个细粒度的情感分类问题,根据Stanford的句法树库,在每一个节点上都标注了情感类型,所以实验分为了句子级别和短语级别,从结果来看,树形结构对于句子级别有点帮助,对于短语级别并没什么作用。
- Binary Sentiment Classification
这同样是一个情感分类问题,与上面不同的是,它只有二元分类,并且只有在句子级别上进行了标注,且每个句子都比较长。实验结果是树形结构并没有起到什么作用,可能原因是句子较长,而且并没有丰富的短语级别标注,导致在长距离的学习中丢失了学习到的情感信息。
- Question-Answer Matching
这个任务是机智问答,就是给出一段描述一般由4~6句组成,然后根据描述给出一个短语级别的答案,例如地名,人名等。在这个任务上,树形结构也没有发挥作用。
- Semantic Relation Classification
这个任务是给出两个句子中的名词,然后判断这两个名词是什么语义关系。树形结构的方法在这个任务上有明显的提升。
- Discourse Parsing
是一个分类任务,特点是其输入的单元很短,树形结构也没有什么效果。
结论
通过上面的实验,作者总结出下面的结论。
需要树形结构:
- 需要长距离的语义依存信息的任务(例如上面的语义关系分类任务)Semantic relation extraction
- 输入为长序列,即复杂任务,且在片段有足够的标注信息的任务(例如句子级别的Stanford情感树库分类任务),此外,实验中作者还将这个任务先通过标点符号进行了切分,每个子片段使用一个双向的序列模型,然后总的再使用一个单向的序列模型得到的结果比树形结构的效果更好一些。
不需要树形结构:
- 长序列并且没有足够的片段标注任务(例如上面的二元情感分类,Q-A Matching任务)
- 简单任务(例如短语级别的情感分类和Discourse分析任务),每个输入片段都很短,句法分析可能没有改变输入的顺序。
此外,哈工大的车万翔在哈工大的微信公众号也发表了《自然语言处理中的深度学习模型是否依赖于树结构?》[3],其中提到了"即使面对的是复杂问题,只要我们能够获得足够的训练数据"也可以无需树形结构。
通过这篇论文和车老师的博文以及一些相关资料,句法树形结构是否需要值得我们关注,我们应该根据自己做的任务以及句法分析的优缺点进行判断,我自己总结如下:
句法分析能够带给我们什么?
- 长距离的语义依赖关系
- 包含语言学知识的序列片段
- 简化复杂句子提取核心
句法分析的缺点
- 自身分析存在错误,引入噪声
- 简单任务复杂化
- 句法分析时间长
主要参考文献
[1] J. Li, M.-T. Luong, D. Jurafsky, E. Hovy, When Are Tree Structures Necessary for Deep Learning of Representations?, EMNLP. (2015) 2304–2314.
[2] K.S. Tai, R. Socher, C.D. Manning, Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks, Acl-2015. (2015) 1556–1566.
[3] 哈工大车万翔:自然语言处理中的深度学习模型是否依赖于树结构?
在NLP中深度学习模型何时需要树形结构?的更多相关文章
- 深度学习模型调优方法(Deep Learning学习记录)
深度学习模型的调优,首先需要对各方面进行评估,主要包括定义函数.模型在训练集和测试集拟合效果.交叉验证.激活函数和优化算法的选择等. 那如何对我们自己的模型进行判断呢?——通过模型训练跑代码,我们可以 ...
- NLP与深度学习(四)Transformer模型
1. Transformer模型 在Attention机制被提出后的第3年,2017年又有一篇影响力巨大的论文由Google提出,它就是著名的Attention Is All You Need[1]. ...
- 『深度应用』NLP机器翻译深度学习实战课程·零(基础概念)
0.前言 深度学习用的有一年多了,最近开始NLP自然处理方面的研发.刚好趁着这个机会写一系列NLP机器翻译深度学习实战课程. 本系列课程将从原理讲解与数据处理深入到如何动手实践与应用部署,将包括以下内 ...
- 『深度应用』NLP机器翻译深度学习实战课程·壹(RNN base)
深度学习用的有一年多了,最近开始NLP自然处理方面的研发.刚好趁着这个机会写一系列NLP机器翻译深度学习实战课程. 本系列课程将从原理讲解与数据处理深入到如何动手实践与应用部署,将包括以下内容:(更新 ...
- NLP与深度学习(一)NLP任务流程
1. 自然语言处理简介 根据工业界的估计,仅有21% 的数据是以结构化的形式展现的[1].在日常生活中,大量的数据是以文本.语音的方式产生(例如短信.微博.录音.聊天记录等等),这种方式是高度无结构化 ...
- NLP与深度学习(五)BERT预训练模型
1. BERT简介 Transformer架构的出现,是NLP界的一个重要的里程碑.它激发了很多基于此架构的模型,其中一个非常重要的模型就是BERT. BERT的全称是Bidirectional En ...
- AI佳作解读系列(一)——深度学习模型训练痛点及解决方法
1 模型训练基本步骤 进入了AI领域,学习了手写字识别等几个demo后,就会发现深度学习模型训练是十分关键和有挑战性的.选定了网络结构后,深度学习训练过程基本大同小异,一般分为如下几个步骤 定义算法公 ...
- 『高性能模型』Roofline Model与深度学习模型的性能分析
转载自知乎:Roofline Model与深度学习模型的性能分析 在真实世界中,任何模型(例如 VGG / MobileNet 等)都必须依赖于具体的计算平台(例如CPU / GPU / ASIC 等 ...
- 利用 TFLearn 快速搭建经典深度学习模型
利用 TFLearn 快速搭建经典深度学习模型 使用 TensorFlow 一个最大的好处是可以用各种运算符(Ops)灵活构建计算图,同时可以支持自定义运算符(见本公众号早期文章<Tenso ...
随机推荐
- 【BZOJ2039】[2009国家集训队]employ人员雇佣 最小割
[BZOJ2039][2009国家集训队]employ人员雇佣 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作有一个贡献 ...
- 160801、BlockingQueue处理多线程
前面介绍过spring的taskExecutor,今天介绍一个jdk里处理多线程的方法 一.spring的配置文件(注入bean) <bean id="cmsClickButtonMn ...
- Oracle数据库的归档模式(archivelog mode)
Oracle数据库可以运行在2种模式下: 归档模式(archivelog) 归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,归档模式应该和相应的备份策略相结合,只有归档模 ...
- Properties 集合
Map Hashtable Properties 特点: 该集合中的键和值都是字符串类型 集合中的数据可以保存到流中, 或者从流中获取 应用: 通常该集合用于操作以键值对形式存在的配置文件 常用方法: ...
- python基础之类的内置__setattr__,__delattr__,__getattr__和 二次加工标准类型(包装)
一.内置attr:__setattr__,__delattr__,__getattr__ __setattr__ #添加/修改属性会触发它的执行 __delattr__ #删除属性的时候会触发 __g ...
- django 表单系统 之 forms.ModelForm
继承forms.ModelForm类实现django的表单系统 有时,我们在前端定义的<form>表单和后端定义的model结构基本上是一样的,那么我们可以直接在后端定义model后,定义 ...
- spring 实现定时任务
spring实现定时任务超级简单.比使用quartz简单,比使用timer强大.如下是一个简单的springboot任务,启用了定时任务 @SpringBootApplication@Componen ...
- 基本数据类型补充、set集合、深浅拷贝
一.基本数据类型补充 1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作 str.join(可迭代对象): li = ['李嘉诚','何炅','海峰','刘嘉玲 ...
- mysql聚合函数操作
1.mysql对中文进行排序 注:是用convert函数用gb2312编码转换 SELECT * FROM 表名 ORDER BY CONVERT(字段名 USING gb2312 ) ASC;
- java多线程总结(一)
在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口. 对于直接继承Thread的类来说,代码大致框架是: 1 2 3 4 5 6 7 8 9 10 11 ...