QRNN(Quasi-Recurrent Neural Networks)

keras代码:https://github.com/DingKe/qrnn

QRNN为LSTM加速算法,模型结构如下:
QRNN(Quasi-Recurrent Neural Networks)_第1张图片

qrnn第一层为卷积层,用于提取输入特征,第二层为pooling层,用于减少特征数目,但语常用的pooling层不同的是,qrnn采用fo-pool方法,具体计算如下.

卷积层:

对于输入X,分别通过三个卷积层和非线性层得到Z,F,O,公式如下:

Z=tanh(WzX)

F=σ(WfX)

O=σ(WoX)

这里 Wz,Wf,Wo Rkxnxm 大小的卷积滤波器,当滤波器宽度为2时,上述公式可以表示如下:

Z=tanh(W1zXt1+W2zXt)

F=σ(W1fXt1+W2fXt)

O=σ(W1oXt1+W2oXt)

即滤波器的宽度越大.越能计算更高的n-gram特征,因此为了考虑更多时刻的特征,可以适当增加滤波宽度.

pooling层:

f-pooling:

ht=ftht1+(1ft)zt

fo-pooling:

ct=ftct1+(1ft)zt

ht=otct

ifo-pooling:

it 为一个独立的输入

ct=ftct1+itzt

ht=otct

在每种情况下,初始化h,c为0.

GTMM

参考博客:http://www.dlworld.cn/XueXiSuanFa/3384.html

你可能感兴趣的:(NLP)