刚接触RNN的时候根本分不清recursive network和recurrent network,一个是递归神经网络,一个是循环神经网络,傻傻分不清。但是实际上,recursive network是recurrent network的一般形式。递归神经网络(recursive neural network)被视为循环神经网络(recurrent neural network)的推广 。当递归神经网络的每个父节点都仅与一个子节点连接时,其结构等价于全连接的循环神经网络 。
Recursive Network是比RNN更一般型式的神经网路。
RNN来看情绪分析的案例,将Word Sequence输入神经网路,经过相同的function-f最后经过function-g得到结果。
如果是Recursive Network的话,必需先决定这几个Sequence的关联,上图下案例来看,我们将x1,x2丢到function-f得到h1再将x3,x4丢入相同的function-f,得到h2,再将h1,h2丢到function-f得到h3,再经过function-g得到最后结果。
在实作Recursive Network的时候要注意, x , h 的维度必需要相同(因为用的是同一个f)。
事实上RNN是Recursive Network的一种结构模式。
递归网络是一种RNN的扩展形式,他是空间的展开,且具有树形结构。
要决定这句话是好,还是坏。
从syntactic structure(文法结构)可以看的出这句话的结合方式
1:用词嵌入将每一个Word用Vectory来表示。
2:根据文法结构来结合:将Very, Good丢入function-f得到输出(词向量维等于| Z |)输入:| 2Z |,输出:| Z |
直观来看,我们希望得到的输出代表着『Very Good』
function-f是一个nn,它所处理的事情或许比想像中还要复杂一些,因此不会只是单纯的将两个向量相加而以。
举例来说,not是中性字,而good是正面,两个加起来并不是正面偏中性,而是一个负面字眼,因此这不可能是单纯的相加就可以达成的。
透过训练资料的学习,让『not very good』经过function-f的产出再经过function-g来得到最终的情绪等级,再依据与实际情绪的loss做优化。
那么function f到底应该是什么样子的呢?
最简单的就是上图上半部分所示:把蓝色和黄色向量串联起来,乘以一个权重矩阵 W ,经过一个激活函数激活,这样做的缺点是 a , b缺少交互,不能做到反转或者加重情感,因此无法满足我们上说明的需求期望,或者很难达到理想的效果。
改进:加号后面就是上半部分的内容,加号前面是两次运算,权重矩阵不一样,得到情感。
注意:后面还是传统的做法,但是前面加上了一个vector。这个vector的元素就是来学习这些词之间的interaction,然后将这些interaction变成bias,因为recursive network的function都是不变的,因此这些bias就这样被传递下去了。那么这里有一个需要注意的就是,我们这里有几个词,那我们就需要多少个bias,而且每个bias中间的这个矩阵W都是不一样的。
结果如下图:
接下来,他有很多版本:比如下一个 Matrix-Vector Recursive Network(矩阵向量递归网络)
该网络的核心思想:将词向量分成两部分,1是自己的部分,2是影响别人的部分。
这个方法感觉比较有道理,但实际上的Performance是较Recursive Network Tensor Network差。
LSTM(长短时记忆网络)是一种改进之后的循环神经网络,可以解决RNN无法处理长距离的依赖的问题。
典型的LSTM是这样的,如右上所示,有一个function,他会input一个h,一个m,然后output另一个h,另一个m。也可以把h和m组合起来变成一个向量,然后output另一个向量。但是h和m扮演了不同的角色,h的input和output差别会比较大,m的差别会比较小。
同样可以有tree的版本的LSTM,就是把f换成LSTM,如图所示,LSTM的input有两种向量,左右下角的f都换成LSTM,这样做左下角的LSTM的output就变成了向量h1和m1,右下角的LSTM的output就变成了向量h2和m2,然后输出就变成了h3和m3。反复的train就得到了tree的LSTM。
这种recursive network模型还有很多应用:句子关联,也就是可以侦测两句话讲的是不是同样的意思。
recursive network(递归网络)是recurrent network(循环网络)的一般形式。也就是说RNN是Recursive Network的一种结构模式。递归网络是一种RNN的扩展形式,他是空间的展开,且具有树形结构。这种模型有很多应用,比如可以甄别两句话的意思是否相同,也可以用于情绪分析,分析一句话的正面和负面情绪等等。