https://zhuanlan.zhihu.com/p/35252733

可以先看看上面知乎文章里面的例子

Socher 等人于2012和2013年分别提出了两种区分词或短语类型的模型,即SU-RNN(Syntactically-Untied RNN)和MV-RNN(Matrix-Vector RNN)。

1)SU-RNN对不同类型的组合节点使用不同的组合参数,如ADJ与NN组合时,使用WADJ-NN

但是,相同的节点类型也未必可以共享同一套组合参数,如同样是形容词,“好”和“坏”与其它词在组合时,获得的结果应该是不同的。

2)因此,MV-RNN将这种不同体现在每个节点上,而非不同种类的节点。它认为,每个节点除了需要使用向量表示外,还需要使用一个矩阵来表示,其中向量表示节点自身的属性,而矩阵则表示其在组合时,对另一个节点的操作。例如,“红”与“苹果”组合的结果是“红苹果”,它仍然是一种“苹果”,只是属性发生了一些改变,可以通过将“红”的矩阵与“苹果”的向量相乘获得“红苹果”的向量。

然而MV-RNN对每个节点除赋予一个向量外,还需要赋予一个矩阵,其中涉及到太多的参数需要学习,所以往往学习的并不充分。

3)为了获得更好的学习效果,Socher等人于2013年提出了RNTN(Recursive Neural Tensor Networks)模型,即使用张量(Tensor)来表示组合参数。常用的三阶张量可以被理解为多个矩阵构成的向量,其中每个矩阵可以被认为是某种类型的组合操作,最终组合在一起。通过张量,既可以减少所需学习的参数,也可以表示丰富的组合操作,因此RNTN模型也取得了较好的效果。在细粒度情感分析任务上,将MV-RNN获得的44.4%的准确率,提高到了45.7%。其中细粒度情感分类指的是将句子所表达的情感,如褒贬等划分为5个级别,对应的是评论网站对商品打分的星级。

Socher等人以上一系列的工作都充分利用了自然语言树结构的特性,因此事先需要对输入的文本进行句法分析操作,然而由于句法分析自身并不完美,其个别错误的分析结果必然对上述模型的应用带来不良的效果。

所以有一些学者,试图将模型构筑在非树结构之上,并取得了非常好的结果。

4)如Le and Mikolov于2014年提出了Paragraph Vector模型,将著名的word2vec模型扩展到更长的文本之上,并在相同的情感分类任务上,将准确率进一步提高到48.7%。Kim于同年使用了更简单的单层CNN(Convolutional Neural Networks)模型,在Dropout等技术的帮助下,也获得了48.0%的准确率。在其它自然语言处理任务上,Zeng等人(2014)以及Zhou和Xu(2015)也在不使用句法分析的条件下,超越了基于树结构的传统模型(非深度学习模型)。

以上的工作是否就证明了,面向自然语言处理的深度学习模型真的不需要树结构了呢?结论并没有那么简单,基于树结构的模型也在不断的发展

5)Tai等人2015年提出了Tree-LSTM模型,将序列的LSTM模型扩展到树结构上,即可以通过LSTM的忘记门机制,跳过(忘记)整棵对结果影响不大的子树,而不仅仅是一些可能没有语言学意义的子序列。由于有了树结构的帮助,就更容易对长距离节点之间的语义搭配关系进行学习,从而取得了更好的准确率(50.6%)。此工作也被Zhou和Xu(2015)所关注,并在其论文的最后说明,如果在其模型中使用树结构,也许会取得更好的效果。当然,是否会如其所愿还需要进一步的研究。

其中需要说明的是,在细粒度情感分类任务中,Li等提出可以使用标点符号这一简单的特征,将句子分割成小的片段,然后构建层次化Bi-LSTM模型,即对每个小片段使用Bi-LSTM建模,获得其表示。然后再使用一个Bi-LSTM模型将各个小片段的表示统一建模,获得整个句子的表示。经过这种简单的操作,一定程度上提高了序列模型的性能,使其又超过了树结构模型的性能。

可以参考的论文:

Socher 等人于2012和2013年分别提出了两种区分词或短语类型的模型,即SU-RNN(Syntactically-Untied RNN)和MV-RNN(Matrix-Vector RNN)。

Socher等人于2013年提出了RNTN(Recursive Neural Tensor Networks)模型,即使用张量(Tensor)来表示组合参数。

Le and Mikolov于2014年提出了Paragraph Vector模型,将著名的word2vec模型扩展到更长的文本之上,并在相同的情感分类任务上,将准确率进一步提高到48.7%。

Kim于2014年使用了更简单的单层CNN(Convolutional Neural Networks)模型,在Dropout等技术的帮助下,也获得了48.0%的准确率。

在其它自然语言处理任务上,Zeng等人(2014)以及Zhou和Xu(2015)也在不使用句法分析的条件下,超越了基于树结构的传统模型(非深度学习模型)。

Tai等人2015年提出了Tree-LSTM模型,将序列的LSTM模型扩展到树结构上,即可以通过LSTM的忘记门机制,跳过(忘记)整棵对结果影响不大的子树,而不仅仅是一些可能没有语言学意义的子序列。

此工作也被Zhou和Xu(2015)所关注,并在其论文的最后说明,如果在其模型中使用树结构,也许会取得更好的效果。

Li等人(2015)在多个自然语言处理任务中,对序列模型(如双向LSTM)和树模型(如Tree-LSTM)进行了深入的对比。

Bowman等人(2015)研究结果甚至一定程度上证明,序列模型(LSTM)能够发现隐含的树结构。

[5].Richard Socher, Cliff Lin, Andrew Y. Ng, and Christopher D. Manning. Parsing Natural Scenes and Natural Language with Recursive Neural Networks. ICML 2011.
[7].Richard Socher, Brody Huval, Christopher D. Manning and Andrew Y. Ng. Semantic Compositionality through Recursive Matrix-Vector Spaces. EMNLP 2012.
[8].Richard Socher, Danqi Chen, Christopher D. Manning, Andrew Y. Ng. Reasoning With Neural Tensor Networks for Knowledge Base Completion. NIPS 2013.

[6].Richard Socher, John Bauer, Christopher D. Manning and Andrew Y. Ng. Parsing with Compositional Vector Grammars. ACL 2013.

[9].Kai Sheng Tai, Richard Socher and Christopher D. Manning. Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks. ACL 2015.
[11].Jie Zhou and Wei Xu. End-to-end learning of semantic role labeling using recurrent neural networks. ACL 2015.
[1].Samuel R. Bowman, Christopher D. Manning, and Christopher Potts. Tree-structured composition in neural networks without tree-structured architectures. arXiv manuscript 1506.04834. 2015.

5)《Vinyals O, Kaiser L,Koo T, et al. Grammar as a foreign language[J]. arXiv preprint arXiv:1412.7449,2014.》

把LSTM用于句法分析任务,文章把树状的句法结构进行了线性表示,从而把句法分析问题转成翻译问题,然后套用机器翻译的seq2seq框架使用LSTM解决

tree-lstm初探的更多相关文章

  1. awesome-nlp

    awesome-nlp  A curated list of resources dedicated to Natural Language Processing Maintainers - Keon ...

  2. (转)Awesome PyTorch List

    Awesome-Pytorch-list 2018-08-10 09:25:16 This blog is copied from: https://github.com/Epsilon-Lee/Aw ...

  3. (zhuan) Recurrent Neural Network

    Recurrent Neural Network 2016年07月01日  Deep learning  Deep learning 字数:24235   this blog from: http:/ ...

  4. 26 THINGS I LEARNED IN THE DEEP LEARNING SUMMER SCHOOL

    26 THINGS I LEARNED IN THE DEEP LEARNING SUMMER SCHOOL In the beginning of August I got the chance t ...

  5. 《Graph Neural Networks: A Review of Methods and Applications》阅读笔记

    本文是对文献 <Graph Neural Networks: A Review of Methods and Applications> 的内容总结,详细内容请参照原文. 引言 大量的学习 ...

  6. 【ASE高级软件工程】第二次结对作业

    重现baseline 我们选择重现CODEnn模型(论文:Deep Code Search),因为它结构简单.端到端可训练,且相比其它方法拥有较高的性能. Baseline原理 为了根据给定的quer ...

  7. ASE第二次结对编程——Code Search

    复现极限模型 codenn 原理 其原理大致是将代码特征映射到一个向量,再将描述文字也映射到一个向量,将其cos距离作为loss训练. 对于代码特征,原论文提取了函数名.调用API序列和token集: ...

  8. 自然语言处理资源NLP

    转自:https://github.com/andrewt3000/DL4NLP Deep Learning for NLP resources State of the art resources ...

  9. Decision tree(决策树)算法初探

    0. 算法概述 决策树(decision tree)是一种基本的分类与回归方法.决策树模型呈树形结构(二分类思想的算法模型往往都是树形结构) 0x1:决策树模型的不同角度理解 在分类问题中,表示基于特 ...

  10. 蒙特卡罗方法、蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)初探

    1. 蒙特卡罗方法(Monte Carlo method) 0x1:从布丰投针实验说起 - 只要实验次数够多,我就能直到上帝的意图 18世纪,布丰提出以下问题:设我们有一个以平行且等距木纹铺成的地板( ...

随机推荐

  1. 剑指offer(11)二进制中1的个数

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目分析 首先我们要了解计算机中负数使用补码表示的,原码.补码的概念以及原理可以参考这里,这个题目我们应该从二进制入手,值得 ...

  2. 【Python64-tkinter_label组件】

    一.label组件用于在屏幕上显示文本活图像,Label组件仅能显示单一字体的文本,单文本可以跨越多行.另外还可以为其中的个别字符加上下划线 二.如何使用label组件 使用label组件,你可以指定 ...

  3. 牛客练习赛43C Tachibana Kanade Loves Review

    题目地址 Link 题解 虚点这种东西还是没有掌握好啊. 考虑建一个虚点,向已经学会的东西连一条边权为0的边,关系正常连边,单独学的从虚点连一条边过去. 然后做一遍最小生成树就得到答案了. 这题略卡常 ...

  4. WebApi请求原理

    一.路由: 1.首先执行Application_start 2 .注册路由 WebApiConfig,把路由规则写入一个容器 运行 请求会去容器匹配-找到控制器容器 一般不指定Action, rest ...

  5. Java使用Socket进行通信

    什么是Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以 ...

  6. jmeter+influxdb+grafana性能测试监控

    背景: 话说Jmeter原生的监控确实太丑了,听大佬们在讨论Jmeter+InfluxDb+Grafana的监控,于是,为了有一个漂亮的测试报告,就手动开始进行部署. 安装步骤: 1.influxdb ...

  7. excel加密文件破解代码

    1. AIT+F11  2. 代码   3. F5 Public Sub AllInternalPasswords()' Breaks worksheet and workbook structure ...

  8. 简单粗暴的上传项目至 Github

    嗯,写了一个项目,觉得还OK,就想放在 Github 继续维护和方便使用,那么如何简单快速的将代码上传至 Github 上? 1.  你得有自己的 Github账号,如何创建账号这里就不说了.因为.. ...

  9. Axure 页面内多组内容切换的实现 + 利用一个内联框架实现百度地图访问

    Axure  页面内多组内容切换的实现,场景:点击某个元件的时候,会显示响应的页面 操作:将显示的页面设置为动态面板,如图所示应该设置动态面板的状态为三个状态,分别为点击qq账号.手机账号.邮箱账号时 ...

  10. docker 安装mysql示例

    docker pull mysql 错误的启动: [root@localhost ~]# docker run --name mysql01 -d mysql 42f09819908bb72dd99a ...