RNN介绍
这里介绍slot fillng,可以使用Feedforward network。对于输入的词汇,可以采用1 of N编码或者其他方式,输入后,进行归类操作。但是,由于网络没有记忆力,所以对于前后语句有关联的问题,很难解决。需要采用recurrent neural network。每一次hidden layer的输出会被存储,然后作为共同输入进行网络操作。也就是说,输入的顺序会影响输出的结果。
当然,RNN可以采用deep structure的形式。RNN可以采用hidden layer的值进行存储而后续使用,称为Elman network,当然也可以采用Output layer输出值进行存储,称为Jordan Network。RNN可以采用双向的形式,如下图所示,其好处是RNN能够接触到的数据范围既包括正向的信息,也包括反向的信息,因此其信息利用率较高。
一个较为广泛的例子是LSTM,long short-term memory,其memory形式较为常用。包含三个部分,首先是input gate,如果网络的一部分想要写入memory,则需要通过input gate,该gate由signal control(scalar)进行控制,这个控制信号同样由网络的一部分进行控制,这些都是通过训练数据学习得到。对于memory数据读取,同样也存在一个output gate,决定其他网络是否可以从中读取数据。第三个部分是forget gate,可以决定memory cell什么时候檫除内部数据,进行format操作,这也是有网络其他部分决定的。因此,如下图所示,可以认为LSTM有四个输入,一个输出。
更详细的LSTM如下图所示,包含了输入信号z,输入控制信号zi,forget gate控制信号zf,输出控制信号zg。一般的三个控制信号多采用sigmoid function,值范围为0~1,代表gate打开的程度。
与神经网络的原形有所差异,LSTM需要四个输入,因此需要将输入乘以不同的权重,作为各个输入的情况,然后将LSTM作为神经元进行训练操作。
与RNN的关系是,可以将memroy cell里面数据表示成一个vector,表示为 ct−1 c t − 1 ;而对于输入数据,可以通过矩阵乘法转换为四个向量, z,zi,zo,zf z , z i , z o , z f 。
2018年2月8日
同样可以采用GD进行训练,对于RNN可以采用BPTT进行参数更新。但是很多情况下,RNN的误差曲线可能会出现不收敛的情况,其可能原因是程序出现bug或者是由于RNN的误差曲线存在问题。如下图所示,RNN的error surface很崎岖,要么非常平坦,要么非常陡峭。这种特性来自于memory效应,由于具有记忆效应,因此对于输入的一点变化,可能会造成 gradient explode或者gradient vanishing。
采用LSTM进行训练,可以解决gradient vanishing。LSTM存在一个forget gate,可以在适当时候将memory进行清空。
一个较为有趣的模型为Attention-based Model,对于能够操作reading head controller和writing head controller的情况,最终形成了neural turing machine。使用的场景包括reading comprehension。
Deep and structured learning的区别
Deep learning能够实现较好的功能。
二者可以结合,可以通过RNN进行预处理,然后进行structured learning。例如,语音处理可以如下图处理,将二者进行结合。还可以进行semantic tagging,
2018年2月9日