递归神经网络怎么训练 递归神经网络实际应用_ni max不能连续采集图像


递归神经网络怎么训练 递归神经网络实际应用_结点_02


这篇论文是2011 ICML的 Distinguished Application Paper,论文的主页在:socher

  • 由于主要梳理NLP的发展脉络,故CV相关的内容一般略过;

1. Abstract

递归结构在不同形式的输入数据中是很常见的,比如自然场景的图像或者自然语言句子。发现这种递归结构有助于更好的区分和理解数据。作者将会介绍一个基于递归神经网络的max-margin结构预测框架,可以成功应用到图像和语言等场景。这个算法提供了一个很强的parser,在图像分割和注解上达到了SOTA,比原有SOTA提高了四个点。

2. Introduction

在这篇文章中作者介绍递归神经网络(RNNs)用于多种形式数据(图像和文本,通用的算法)来进行递归结构预测。


递归神经网络怎么训练 递归神经网络实际应用_结点_03


在图像中,如图所示,图像也可以是一个递归结构,通过分割可以提取到特征,然后通过神经网络将其投射到于一空间,使用这些语义表示作为输入,RNN进行三次计算,(1)当两个语义特征进行组合或者合并会得到一个更高的更高的分数,(当两个特征的标签相同的时候,这个时候分数会更高);(2)当两个特征进行合并得到更大的特征时,计算新的语义表示;(3) 计算标签,比如说建筑和街道。通过若干次合并,最后合并成原有的图像,而合并的这个过程也就定义了树结构,更高层的结点表示了图像的更高层语义特征。


递归神经网络怎么训练 递归神经网络实际应用_子树_04


同样的,单词投影到语义空间,然后按照句法结构和语义合并成短语,RNNs为每个结点计算三个输出,所谓计算标签,比如noun phrase(NP,名词短语)、verb phrase(VP,动词短语)。

Contribution

第一个在分割和注解等视觉领域达到SOTA的深度学习方法,另外,该算法在文本和图像都是可以通用的,在最大长度为15个句子的Wall Street Journal 数据集上取得了很好的性能,代码见:socher

3. Related Work

5个关键的research area对这个工作产生了很大的影响,分别是Scene Understanding、Syntactic parsing of natural language sentences、Using NLP techniques in computer vision、Using deep learning for NLP

Syntactic parsing of natural language sentences

句法解析由于处于语言表达和意义的中间地带,一直以来都是NLP的核心任务。RNN结构不仅学习到了如何解析还学习到了如何在连续的特征向量空间如何表示短语。这就允许作者将单个的词汇单元与可变大小的词组在句法结构上做到了统一,这样就可以学到句法和联合语义表示的信息,这可以很好的帮助作者做解析和发现词组和句子也就是高维特征和整个句子之间的联系。

Using deep learning for NLP

用DL做NLP应用,这个已经被Bengio 等几个人研究过了,大部分情况下,传给神经网络的输入通过卷积和max-pooling操作或者一种某个词周围可变大小的窗口这种操作使得输入的size被修改的一样大。而本文提出的方法并不同于前人的工作,可以很自然的处理可变大小的句子,可以捕捉自然语言的递归结构。另外,该方法联合学习了解析决策、每个短语的标签和抓住语义成分的词语的特征嵌入。该作者Socher 2010年提出了一个针对NLP的基于RNN的解析算法,是本篇文章提出算法的一个特例。

3. Mapping Segments and Words into Syntactic-Semantic Space

这部分讲一讲用于描述图像和句子的输入和他们是如何被投影到RNN操作的向量空间的。

Input Representation for Natural Language Sentences

在NLP中为了有效的利用神经网络,神经网络模型将单词投影成一个向量表示,用单词嵌入矩阵


,其中


是词表的长度,


是语义空间的维度。这个矩阵可以捕获到词的共现这样的统计特征。假设从句子


中可以得到数量为


的词汇列表,每个单词都能从嵌入矩阵中得到一个


,下面这个操作通过一个二进制01向量


(除了第k个索引以外都是0)可以得到第i个单词的语义表示可以看作是单层的投影:



4. Recursive Neural Networks for Structure Prediction

在判别式的解析结构中,目标是学习这样的一个函数


是所有可能的二叉解析树的集合。一个输入


包含两个部分,(1)激活向量,


,如上文的公式,表示输入的图像切割或单词。(2) 对称的邻居矩阵


,如果元素



相邻的话,


,这个矩阵定义了哪些元素可以被合并,对于句子来说,矩阵的形式比较特殊,对角线上下为1。如下图所示。


递归神经网络怎么训练 递归神经网络实际应用_子树_05


输入


,作者标记所有可能的解析树为


,对于图像来说,结构正确的树可能有很多种,如上图,但是对于文本数据来说,正确的解析树只有一种,


,如上图。


4.1 Max-Margin Estimation

定义一个结构间隔


,这个


如果两个非同标签元素合并发生在同标签元素之前就会变大,简单来说就是先合并同标签的元素/块,合并完之后再去合并非同一个标签的元素/块。其中


是非叶子节点的集合,因为叶子结点是没有子树吧,


是一个参数。



训练的过程也就是得到一个函数



是通过RNN来计算分数,如果RNN认为解析树


是越有可能正确的话,分数也就越高。


在最大间隔假设理论中,作者认为分数最高的树属于正确的树所在的集合


是标签。更进一步,作者希望通过定义


来最大化间隔,从而找到分数最高的正确的解析树,其中


:



其实感觉就是正确的树计算得到的分数大于不太正确的树加上损失,也就是让这二者相减越大越好。




最小化目标函数,最大化正确解析树的分数,下面作者将解释一下如何预测解析树和如何计算RNN的分数。

4.2 Greedy Structure Predicting RNNs

对于RNNs,作者用之前定义的向量


和邻接矩阵


,而可能存在的解析树是指数级的,还没有有效的动态规划算法来解决这个问题,作者将这个问题近似到一个贪心问题。根据邻居矩阵可以得到这样的一个结点对集合



递归神经网络怎么训练 递归神经网络实际应用_ni max不能连续采集图像_06


论文里面用c1,c2作拼接,个人感觉其实还是a1,a2

二者进行拼接送入RNN,


得到一个潜在的父节点语义表示


,然后通过


来计算得分,其中



每次计算完之后,从集合

中减去



这两个pair,然后再把集合



合并。


重复以上步骤直到合并成一个整体。

最后整个结构预测得到的分数就是将每个子树的分数简单相加,


4.3 Category Classifiers in the Tree

作者提出的这个方法的一个优点就是给每一个父结点都提供了分布式特征表示。那如何对每个结点进行分类呢?直接将上述计算得到的潜在的父结点的语义表示


,进行计算:


,然后通过反向传播来更新参数。


4.4 Improvements for Language Parsing

专门针对文本解析的一个提升,每个单词最多只有两个相邻的单词,这里使用CYK算法。因为这里每个单词是用连续的特征向量表示的,并非类似的类别向量,因此不能基于类别相等进行剪枝,作者的尝试是对于每个数据单元保留


个最好的子树,但是实验发现相比只保留一个子树并没有很大提升,大概是因为之前的最大间隔算法,只存在一个正确的子树,其他的树就直接被drop了。


是一种用来对 上下文无关文法(CFG,Context Free Grammar)进行语法分析(parsing)的算法。该算法最早由John Cocke, Daniel Younger and Tadao Kasami分别独立提出,其中John Cocke还是1987年度的图灵奖得主。CYK算法是基于动态规划思想设计的一种自底向上语法分析算法。

5. Learning

之前定义的目标函数不同于合页损失函数hinge loss,这里用的梯度下降也是类似一种递归结构,这里使用BPTS(back-propagation through structure) 算法,也就是沿结构反向传播,BPTT算法沿时间反向传播,BPTS将误差从根节点沿网络结构反向传播至各子节点。

7. Conclusion

作者提出了一个基于对原有特征进行深度语义变换的并且可以同时应用到图像和文本上的递归神经网络结构,在分割、注解和图像分类上取得了SOTA。