这里介绍三种特殊的结构:spatial transformer layer,highway network & grid LSTM,还有recursive network。
本节介绍:recursive network
刚接触RNN的时候根本分不清recursive network和recurrent network,一个是递归神经网络,一个是循环神经网络,傻傻分不清。但是实际上,recursive network是recurrent network的一般形式。
如下图,我们以情感分析为例子,我们输入一个句子,判断这个句子的情感,是正面负面中性等等。在Recurrent Structure里面,句子会被表示成word vector,假如说情感有五类,最后输出的是一个五维向量。
那么如果用Recursive Structure,怎么去解决呢?在这里面,你需要先决定这四个input word
接下来我们将一个比较具体的例子:
假如我们现在要做情感分析,输入的句子是:not very good,machine要决定not very good是positive还是negative,首先先得到句子的文法结构,这不是我们这节课要讨论的;文法结构告诉我们very和good要先合并在一起,合起来的结果再跟not结合;然后我们要把输入向量(word embedding)输入到machine,接下来用函数,应用顺序和文法结构的结合顺序一致;假设word vector的维度是的话,输入就是2个,输出是。
那么当我们组合这两个vector的时候,那么这个意思是不是"very good"的意思么?这里我们可能要用到神经网络,因为very good的vector不会简单地等于very的vector和good的vector的加和,显然不会是这么单纯的:“not”: neutral ,“good”: positive,加和的结果是中性的,然而“not good”: negative,因此不会是简单的加和。
所以我们需要一个神经网络来帮我们处理这个问题。我们希望是这个神经网络要能处理 not和good放一起变成负面的意思,machine要自动学到假设他看到not所代表的vector,自动反转另一个输入的情感;machine也要自动学到假设他看到very所代表的vector,自动强调另一个输入的情感等等诸如此类。函数
透过training data自动学习出来的:
那么函数
最简单的就是上图上半部分所示:把蓝色和黄色向量串联起来,乘以一个权重矩阵
因此我们改装成下半部分的样子:加号后面就是上半部分的内容,加号前面是两次运算,权重矩阵不一样,得到情感。
注意:后面还是传统的做法,但是前面加上了一个vector。这个vector的元素就是来学习这些词之间的interaction,然后将这些interaction变成bias,因为recursive network的function都是不变的,因此这些bias就这样被传递下去了。那么这里有一个需要注意的就是,我们这里有几个词,那我们就需要多少个bias,而且每个bias中间的这个矩阵W都是不一样的。
如下图是实验结果:
接下来,他有很多版本:比如下一个 Matrix-Vector Recursive Network
这个模型设计的想法就是:
还有Tree LSTM
这种recursive network模型还有很多应用:句子关联